summaryrefslogtreecommitdiff
path: root/romdb.h
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-06-07 23:06:14 -0700
committerMichael Pavone <pavone@retrodev.com>2017-06-07 23:06:14 -0700
commitfe57a3c58febaad9c9469fcf7e63073c43a35d29 (patch)
tree5b292cb38c57f49bbb68dc4bb2101782326b9f97 /romdb.h
parenta051322e49249d9a2a276346d4b3bd76968c5117 (diff)
Initial work to support parallel NOR flash and the Magistr 16
Diffstat (limited to 'romdb.h')
-rw-r--r--romdb.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/romdb.h b/romdb.h
index a87bd2f..02145aa 100644
--- a/romdb.h
+++ b/romdb.h
@@ -10,6 +10,7 @@
#define RAM_FLAG_BOTH 0x00
#define RAM_FLAG_MASK RAM_FLAG_ODD
#define SAVE_I2C 0x01
+#define SAVE_NOR 0x02
#define SAVE_NONE 0xFF
#include "tern.h"
@@ -34,6 +35,20 @@ typedef struct {
uint8_t latch;
} eeprom_state;
+typedef struct {
+ uint8_t *buffer;
+ uint8_t *page_buffer;
+ uint32_t size;
+ uint32_t page_size;
+ uint32_t current_page;
+ uint32_t last_write_cycle;
+ uint16_t product_id;
+ uint8_t mode;
+ uint8_t cmd_state;
+ uint8_t alt_cmd;
+ uint8_t bus_flags;
+} nor_state;
+
typedef struct rom_info rom_info;
@@ -52,8 +67,11 @@ struct rom_info {
uint32_t map_chunks;
uint32_t save_size;
uint32_t save_mask;
+ uint32_t save_page_size;
+ uint16_t save_product_id;
uint16_t mapper_start_index;
uint8_t save_type;
+ uint8_t save_bus; //only used for NOR currently
uint8_t regions;
};
@@ -65,5 +83,7 @@ rom_info configure_rom(tern_node *rom_db, void *vrom, uint32_t rom_size, void *l
rom_info configure_rom_heuristics(uint8_t *rom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks);
uint8_t translate_region_char(uint8_t c);
void eeprom_init(eeprom_state *state, uint8_t *buffer, uint32_t size);
+void nor_flash_init(nor_state *state, uint8_t *buffer, uint32_t size, uint32_t page_size, uint16_t product_id, uint8_t bus_flags);
+char const *save_type_name(uint8_t save_type);
#endif //ROMDB_H_