FreeCalypso > hg > freecalypso-tools
diff loadtools/flash.h @ 0:e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 11 Jun 2016 00:13:35 +0000 |
parents | |
children | 0dd2c87c1b63 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loadtools/flash.h Sat Jun 11 00:13:35 2016 +0000 @@ -0,0 +1,73 @@ +/* this header file contains definitions for fc-loadtool flash support */ + +/* + * The following structures represent an "abstract" + * description of flash devices. + * + * A "region" is a consecutive group of erase units of the same size. + */ + +struct flash_region_desc { + uint32_t sector_size; + unsigned nsectors; +}; + +#define CFI_MAX_REGIONS 4 + +/* + * The info in struct flash_geom can be either + * gathered from CFI or hard-coded. + */ +struct flash_geom { + uint32_t total_size; + unsigned nregions; + struct flash_region_desc regions[CFI_MAX_REGIONS]; + unsigned total_sectors; +}; + +struct flash_idcheck { + uint16_t offset; + uint16_t expect_val; +}; + +struct flash_bank_desc { + uint32_t align_size; + struct flash_geom *geom; + struct flash_idcheck *idcheck_table; + unsigned idcheck_num; +}; + +struct flash_device_desc { + char *name; + struct flash_bank_desc *bank_desc; + unsigned nbanks; + struct flash_cmdset *cmdset; +}; + +/* the following structures describe flash banks as accessible to us */ + +struct sector_info { + uint32_t start; + uint32_t size; +}; + +struct flash_cmdset { + char *cmdset_name; + int (*reset_cmd)(); + int (*status_cmd)(); + int (*unlock_sector)(); + int (*erase_sector)(); + int (*prep_for_program)(); + char *loadagent_setbase_cmd; + char *loadagent_program_cmd; + int needs_unlock; +}; + +struct flash_bank_info { + uint32_t base_addr; + struct flash_bank_desc *bank_desc; + struct flash_geom *geom; + struct flash_cmdset *ops; + struct sector_info *sectors; + int idcheck_done; +};