X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fflash%2Fnor%2Ftms470.c;h=dd9ff5b414f7fabb9785d86a4e811875d8d9a6b4;hb=eea91f71f918caa5e4ef571c76f60c579533b0f6;hp=af635d424c7f29d25aacf41e1936ef81704ff3f8;hpb=303b493c229475df26d69d102bbaf5ae5e5e7a3f;p=openocd.git diff --git a/src/flash/nor/tms470.c b/src/flash/nor/tms470.c index af635d424c..dd9ff5b414 100644 --- a/src/flash/nor/tms470.c +++ b/src/flash/nor/tms470.c @@ -21,7 +21,6 @@ #include "config.h" #endif -#include "tms470.h" #include "imp.h" @@ -29,7 +28,21 @@ Internal Support, Helpers ---------------------------------------------------------------------- */ -const struct flash_sector TMS470R1A256_SECTORS[] = { +struct tms470_flash_bank +{ + unsigned ordinal; + + /* device identification register */ + uint32_t device_ident_reg; + uint32_t silicon_version; + uint32_t technology_family; + uint32_t rom_flash; + uint32_t part_number; + const char * part_name; + +}; + +static const struct flash_sector TMS470R1A256_SECTORS[] = { {0x00000000, 0x00002000, -1, -1}, {0x00002000, 0x00002000, -1, -1}, {0x00004000, 0x00002000, -1, -1}, @@ -49,7 +62,7 @@ const struct flash_sector TMS470R1A256_SECTORS[] = { #define TMS470R1A256_NUM_SECTORS \ ARRAY_SIZE(TMS470R1A256_SECTORS) -const struct flash_sector TMS470R1A288_BANK0_SECTORS[] = { +static const struct flash_sector TMS470R1A288_BANK0_SECTORS[] = { {0x00000000, 0x00002000, -1, -1}, {0x00002000, 0x00002000, -1, -1}, {0x00004000, 0x00002000, -1, -1}, @@ -59,7 +72,7 @@ const struct flash_sector TMS470R1A288_BANK0_SECTORS[] = { #define TMS470R1A288_BANK0_NUM_SECTORS \ ARRAY_SIZE(TMS470R1A288_BANK0_SECTORS) -const struct flash_sector TMS470R1A288_BANK1_SECTORS[] = { +static const struct flash_sector TMS470R1A288_BANK1_SECTORS[] = { {0x00040000, 0x00010000, -1, -1}, {0x00050000, 0x00010000, -1, -1}, {0x00060000, 0x00010000, -1, -1}, @@ -69,7 +82,7 @@ const struct flash_sector TMS470R1A288_BANK1_SECTORS[] = { #define TMS470R1A288_BANK1_NUM_SECTORS \ ARRAY_SIZE(TMS470R1A288_BANK1_SECTORS) -const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = { +static const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = { {0x00000000, 0x00002000, -1, -1}, {0x00002000, 0x00002000, -1, -1}, {0x00004000, 0x00004000, -1, -1}, @@ -85,7 +98,7 @@ const struct flash_sector TMS470R1A384_BANK0_SECTORS[] = { #define TMS470R1A384_BANK0_NUM_SECTORS \ ARRAY_SIZE(TMS470R1A384_BANK0_SECTORS) -const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = { +static const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = { {0x00020000, 0x00008000, -1, -1}, {0x00028000, 0x00008000, -1, -1}, {0x00030000, 0x00008000, -1, -1}, @@ -95,7 +108,7 @@ const struct flash_sector TMS470R1A384_BANK1_SECTORS[] = { #define TMS470R1A384_BANK1_NUM_SECTORS \ ARRAY_SIZE(TMS470R1A384_BANK1_SECTORS) -const struct flash_sector TMS470R1A384_BANK2_SECTORS[] = { +static const struct flash_sector TMS470R1A384_BANK2_SECTORS[] = { {0x00040000, 0x00008000, -1, -1}, {0x00048000, 0x00008000, -1, -1}, {0x00050000, 0x00008000, -1, -1}, @@ -116,7 +129,7 @@ static int tms470_read_part_info(struct flash_bank *bank) uint32_t technology_family; uint32_t rom_flash; uint32_t part_number; - char *part_name; + const char *part_name; /* we shall not rely on the caller in this test, this function allocates memory, thus and executing the code more than once may cause memory leak */ @@ -139,6 +152,12 @@ static int tms470_read_part_info(struct flash_bank *bank) rom_flash = (device_ident_reg >> 10) & 1; part_number = (device_ident_reg >> 3) & 0x7f; + if (bank->sectors) + { + free(bank->sectors); + bank->sectors = NULL; + } + /* * If the part number is known, determine if the flash bank is valid * based on the base address being within the known flash bank @@ -667,7 +686,7 @@ static int tms470_flash_initialize_internal_state_machine(struct flash_bank *ban /* ---------------------------------------------------------------------- */ -int tms470_flash_status(struct flash_bank *bank) +static int tms470_flash_status(struct flash_bank *bank) { struct target *target = bank->target; int result = ERROR_OK; @@ -1209,7 +1228,7 @@ static int tms470_protect_check(struct flash_bank *bank) /* ---------------------------------------------------------------------- */ -static int tms470_info(struct flash_bank *bank, char *buf, int buf_size) +static int get_tms470_info(struct flash_bank *bank, char *buf, int buf_size) { int used = 0; struct tms470_flash_bank *tms470_info = bank->driver_priv; @@ -1264,9 +1283,10 @@ struct flash_driver tms470_flash = { .erase = tms470_erase, .protect = tms470_protect, .write = tms470_write, + .read = default_flash_read, .probe = tms470_probe, .auto_probe = tms470_auto_probe, .erase_check = tms470_erase_check, .protect_check = tms470_protect_check, - .info = tms470_info, + .info = get_tms470_info, };