#include "config.h"
#endif
-#include "tms470.h"
#include "imp.h"
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;
+ char * part_name;
+
+};
+
+static const struct flash_sector TMS470R1A256_SECTORS[] = {
{0x00000000, 0x00002000, -1, -1},
{0x00002000, 0x00002000, -1, -1},
{0x00004000, 0x00002000, -1, -1},
#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},
#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},
#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},
#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},
#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},
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
/* ---------------------------------------------------------------------- */
-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;
/* ---------------------------------------------------------------------- */
-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;
.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,
};