From 32c4c18045599ddfed36f52b276166ce932b1bf7 Mon Sep 17 00:00:00 2001
From: Spencer Oliver <spen@spen-soft.co.uk>
Date: Mon, 20 Jan 2014 15:03:24 +0000
Subject: [PATCH] flash: declare fixed arrays const

Change-Id: Id06b8b53ec59a7b3182f60f51dde5b16563aaeef
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/1887
Tested-by: jenkins
---
 contrib/gen-stellaris-part-header.pl | 2 +-
 src/flash/nand/lpc32xx.c             | 8 ++++----
 src/flash/nor/at91sam4l.c            | 8 ++++----
 src/flash/nor/at91sam7.c             | 8 ++++----
 src/flash/nor/avrf.c                 | 6 +++---
 src/flash/nor/fm3.c                  | 2 +-
 src/flash/nor/kinetis.c              | 2 +-
 src/flash/nor/lpcspifi.c             | 8 ++++----
 src/flash/nor/nuc1x.c                | 2 +-
 src/flash/nor/spi.c                  | 2 +-
 src/flash/nor/spi.h                  | 2 +-
 src/flash/nor/stellaris.c            | 4 ++--
 src/flash/nor/stmsmi.c               | 8 ++++----
 src/flash/nor/str7x.c                | 4 ++--
 14 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/contrib/gen-stellaris-part-header.pl b/contrib/gen-stellaris-part-header.pl
index 0cc567f72..68f2889b3 100755
--- a/contrib/gen-stellaris-part-header.pl
+++ b/contrib/gen-stellaris-part-header.pl
@@ -6,7 +6,7 @@
 $comment = "// Autogenerated by contrib/gen-stellaris-part-header.pl
 // From Stellaris Firmware Development Package revision";
 
-$struct_header = "static struct {
+$struct_header = "static const struct {
 	uint8_t class;
 	uint8_t partno;
 	const char *partname;
diff --git a/src/flash/nand/lpc32xx.c b/src/flash/nand/lpc32xx.c
index 38c7e3350..c310f9040 100644
--- a/src/flash/nand/lpc32xx.c
+++ b/src/flash/nand/lpc32xx.c
@@ -52,10 +52,10 @@ extern int nand_correct_data(struct nand_device *nand, u_char *dat,
 #define SPARE_OFFS 0x140
 #define DATA_OFFS  0x200
 
-static int sp_ooblayout[] = {
+static const int sp_ooblayout[] = {
 	10, 11, 12, 13, 14, 15
 };
-static int lp_ooblayout[] = {
+static const int lp_ooblayout[] = {
 	40, 41, 42, 43, 44, 45,
 	46, 47, 48, 49, 50, 51,
 	52, 53, 54, 55, 56, 57,
@@ -1148,7 +1148,7 @@ static int lpc32xx_write_page_slc(struct nand_device *nand,
 		/* Copy to oob, at correct offsets */
 		static uint8_t ecc[24];
 		slc_ecc_copy_to_buffer(ecc, hw_ecc, ecc_count);
-		int *layout = nand->page_size == 2048 ? lp_ooblayout : sp_ooblayout;
+		const int *layout = nand->page_size == 2048 ? lp_ooblayout : sp_ooblayout;
 		int i;
 		for (i = 0; i < ecc_count * 3; i++)
 			foob[layout[i]] = ecc[i];
@@ -1549,7 +1549,7 @@ static int lpc32xx_read_page_slc(struct nand_device *nand,
 	slc_ecc_copy_to_buffer(ecc, hw_ecc, ecc_count);
 	/* Copy ECC from flash using correct layout */
 	static uint8_t fecc[24];/* max size */
-	int *layout = nand->page_size == 2048 ? lp_ooblayout : sp_ooblayout;
+	const int *layout = nand->page_size == 2048 ? lp_ooblayout : sp_ooblayout;
 	int i;
 	for (i = 0; i < ecc_count * 3; i++)
 		fecc[i] = foob[layout[i]];
diff --git a/src/flash/nor/at91sam4l.c b/src/flash/nor/at91sam4l.c
index bb8418520..d3bdbfe67 100644
--- a/src/flash/nor/at91sam4l.c
+++ b/src/flash/nor/at91sam4l.c
@@ -82,7 +82,7 @@ struct sam4l_chip_info {
 };
 
 /* These are taken from Table 9-1 in 42023E-SAM-07/2013 */
-static struct sam4l_chip_info sam4l_known_chips[] = {
+static const struct sam4l_chip_info sam4l_known_chips[] = {
 	{ 0xAB0B0AE0, 0x1400000F, "ATSAM4LC8C" },
 	{ 0xAB0A09E0, 0x0400000F, "ATSAM4LC4C" },
 	{ 0xAB0A07E0, 0x0400000F, "ATSAM4LC2C" },
@@ -104,13 +104,13 @@ static struct sam4l_chip_info sam4l_known_chips[] = {
 };
 
 /* Meaning of SRAMSIZ field in CHIPID, see 9.3.1 in 42023E-SAM-07/2013 */
-static uint16_t sam4l_ram_sizes[16] = { 48, 1, 2, 6, 24, 4, 80, 160, 8, 16, 32, 64, 128, 256, 96, 512 };
+static const uint16_t sam4l_ram_sizes[16] = { 48, 1, 2, 6, 24, 4, 80, 160, 8, 16, 32, 64, 128, 256, 96, 512 };
 
 /* Meaning of PSZ field in FPR, see 14.10.4 in 42023E-SAM-07/2013 */
 static const uint16_t sam4l_page_sizes[8] = { 32, 64, 128, 256, 512, 1024, 2048, 4096 };
 
 struct sam4l_info {
-	struct sam4l_chip_info *details;
+	const struct sam4l_chip_info *details;
 
 	uint32_t flash_kb;
 	uint32_t ram_kb;
@@ -230,7 +230,7 @@ FLASH_BANK_COMMAND_HANDLER(sam4l_flash_bank_command)
 	return ERROR_OK;
 }
 
-static struct sam4l_chip_info *sam4l_find_chip_name(uint32_t id, uint32_t exid)
+static const struct sam4l_chip_info *sam4l_find_chip_name(uint32_t id, uint32_t exid)
 {
 	unsigned int i;
 
diff --git a/src/flash/nor/at91sam7.c b/src/flash/nor/at91sam7.c
index 7d0de3aaf..9cda3f2d7 100644
--- a/src/flash/nor/at91sam7.c
+++ b/src/flash/nor/at91sam7.c
@@ -106,11 +106,11 @@ static void at91sam7_set_flash_mode(struct flash_bank *bank, int mode);
 static uint32_t at91sam7_wait_status_busy(struct flash_bank *bank, uint32_t waitbits, int timeout);
 static int at91sam7_flash_command(struct flash_bank *bank, uint8_t cmd, uint16_t pagen);
 
-static uint32_t MC_FMR[4] = { 0xFFFFFF60, 0xFFFFFF70, 0xFFFFFF80, 0xFFFFFF90 };
-static uint32_t MC_FCR[4] = { 0xFFFFFF64, 0xFFFFFF74, 0xFFFFFF84, 0xFFFFFF94 };
-static uint32_t MC_FSR[4] = { 0xFFFFFF68, 0xFFFFFF78, 0xFFFFFF88, 0xFFFFFF98 };
+static const uint32_t MC_FMR[4] = { 0xFFFFFF60, 0xFFFFFF70, 0xFFFFFF80, 0xFFFFFF90 };
+static const uint32_t MC_FCR[4] = { 0xFFFFFF64, 0xFFFFFF74, 0xFFFFFF84, 0xFFFFFF94 };
+static const uint32_t MC_FSR[4] = { 0xFFFFFF68, 0xFFFFFF78, 0xFFFFFF88, 0xFFFFFF98 };
 
-static char *EPROC[8] = {
+static const char *EPROC[8] = {
 	"Unknown", "ARM946-E", "ARM7TDMI", "Unknown", "ARM920T", "ARM926EJ-S", "Unknown", "Unknown"
 };
 
diff --git a/src/flash/nor/avrf.c b/src/flash/nor/avrf.c
index 393798a9f..e408282b5 100644
--- a/src/flash/nor/avrf.c
+++ b/src/flash/nor/avrf.c
@@ -63,7 +63,7 @@ struct avrf_flash_bank {
 	int probed;
 };
 
-static struct avrf_type avft_chips_info[] = {
+static const struct avrf_type avft_chips_info[] = {
 /*	name, chip_id,	flash_page_size, flash_page_num,
  *			eeprom_page_size, eeprom_page_num
  */
@@ -293,7 +293,7 @@ static int avrf_probe(struct flash_bank *bank)
 	struct target *target = bank->target;
 	struct avrf_flash_bank *avrf_info = bank->driver_priv;
 	struct avr_common *avr = target->arch_info;
-	struct avrf_type *avr_info = NULL;
+	const struct avrf_type *avr_info = NULL;
 	int i;
 	uint32_t device_id;
 
@@ -370,7 +370,7 @@ static int avrf_info(struct flash_bank *bank, char *buf, int buf_size)
 {
 	struct target *target = bank->target;
 	struct avr_common *avr = target->arch_info;
-	struct avrf_type *avr_info = NULL;
+	const struct avrf_type *avr_info = NULL;
 	int i;
 	uint32_t device_id;
 
diff --git a/src/flash/nor/fm3.c b/src/flash/nor/fm3.c
index 09ce31738..5ec2f60ac 100644
--- a/src/flash/nor/fm3.c
+++ b/src/flash/nor/fm3.c
@@ -332,7 +332,7 @@ static int fm3_write_block(struct flash_bank *bank, uint8_t *buffer,
 	/* R4 keeps Flash Sequence address 2     (u32FlashSeq2)    */
 	/* R5 returns result value               (u32FlashResult)  */
 
-	const uint8_t fm3_flash_write_code[] = {
+	static const uint8_t fm3_flash_write_code[] = {
 								/*    fm3_FLASH_IF->FASZ &= 0xFFFD;           */
 	0x5F, 0xF0, 0x80, 0x45,		/*        MOVS.W   R5, #(fm3_FLASH_IF->FASZ)  */
 	0x2D, 0x68,					/*        LDR      R5, [R5]                   */
diff --git a/src/flash/nor/kinetis.c b/src/flash/nor/kinetis.c
index c2ea1d8cb..bc39772dd 100644
--- a/src/flash/nor/kinetis.c
+++ b/src/flash/nor/kinetis.c
@@ -86,7 +86,7 @@
  *
  */
 
-const struct {
+static const struct {
 	unsigned pflash_sector_size_bytes;
 	unsigned nvm_sector_size_bytes;
 	unsigned num_blocks;
diff --git a/src/flash/nor/lpcspifi.c b/src/flash/nor/lpcspifi.c
index b30a2d93b..7566c275f 100644
--- a/src/flash/nor/lpcspifi.c
+++ b/src/flash/nor/lpcspifi.c
@@ -51,7 +51,7 @@ struct lpcspifi_flash_bank {
 	uint32_t ioconfig_base;
 	uint32_t bank_num;
 	uint32_t max_spi_clock_mhz;
-	struct flash_device *dev;
+	const struct flash_device *dev;
 };
 
 struct lpcspifi_target {
@@ -63,7 +63,7 @@ struct lpcspifi_target {
 	uint32_t ioconfig_base; /* base address for the port word pin registers */
 };
 
-static struct lpcspifi_target target_devices[] = {
+static const struct lpcspifi_target target_devices[] = {
 	/* name,          tap_idcode, spifi_base, ssp_base,   io_base,    ioconfig_base */
 	{ "LPC43xx/18xx", 0x4ba00477, 0x14000000, 0x40083000, 0x400F4000, 0x40086000 },
 	{ NULL,           0,          0,          0,          0,          0 }
@@ -848,7 +848,7 @@ static int lpcspifi_probe(struct flash_bank *bank)
 	uint32_t ioconfig_base;
 	struct flash_sector *sectors;
 	uint32_t id = 0; /* silence uninitialized warning */
-	struct lpcspifi_target *target_device;
+	const struct lpcspifi_target *target_device;
 	int retval;
 
 	/* If we've already probed, we should be fine to skip this time. */
@@ -886,7 +886,7 @@ static int lpcspifi_probe(struct flash_bank *bank)
 		return retval;
 
 	lpcspifi_info->dev = NULL;
-	for (struct flash_device *p = flash_devices; p->name ; p++)
+	for (const struct flash_device *p = flash_devices; p->name ; p++)
 		if (p->device_id == id) {
 			lpcspifi_info->dev = p;
 			break;
diff --git a/src/flash/nor/nuc1x.c b/src/flash/nor/nuc1x.c
index da88134da..6ca858ec9 100644
--- a/src/flash/nor/nuc1x.c
+++ b/src/flash/nor/nuc1x.c
@@ -76,7 +76,7 @@
 #define LOCK 0x00
 
 /* part structs */
-static struct {
+static const struct {
 	const char *partname;
 	uint32_t partno;
 	uint16_t num_page;
diff --git a/src/flash/nor/spi.c b/src/flash/nor/spi.c
index 2eef63263..e87f6754f 100644
--- a/src/flash/nor/spi.c
+++ b/src/flash/nor/spi.c
@@ -31,7 +31,7 @@
 
  /* Shared table of known SPI flash devices for SPI-based flash drivers. Taken
   * from device datasheets and Linux SPI flash drivers. */
-struct flash_device flash_devices[] = {
+const struct flash_device flash_devices[] = {
 	/* name, erase_cmd, chip_erase_cmd, device_id, pagesize, sectorsize, size_in_bytes */
 	FLASH_ID("st m25p05",      0xd8, 0xc7, 0x00102020, 0x80,  0x8000,  0x10000),
 	FLASH_ID("st m25p10",      0xd8, 0xc7, 0x00112020, 0x80,  0x8000,  0x20000),
diff --git a/src/flash/nor/spi.h b/src/flash/nor/spi.h
index e397a6be4..6e939b769 100644
--- a/src/flash/nor/spi.h
+++ b/src/flash/nor/spi.h
@@ -43,7 +43,7 @@ struct flash_device {
 	.size_in_bytes = size   \
 }
 
-extern struct flash_device flash_devices[];
+extern const struct flash_device flash_devices[];
 
 /* fields in SPI flash status register */
 #define SPIFLASH_BSY_BIT		0x00000001 /* WIP Bit of SPI SR on SMI SR */
diff --git a/src/flash/nor/stellaris.c b/src/flash/nor/stellaris.c
index 71debdc7a..8886c195a 100644
--- a/src/flash/nor/stellaris.c
+++ b/src/flash/nor/stellaris.c
@@ -125,7 +125,7 @@ struct stellaris_flash_bank {
 
 /* Autogenerated by contrib/gen-stellaris-part-header.pl */
 /* From Stellaris Firmware Development Package revision 9453 */
-static struct {
+static const struct {
 	uint8_t class;
 	uint8_t partno;
 	const char *partname;
@@ -417,7 +417,7 @@ static struct {
 	{0xFF, 0x00, "Unknown Part"}
 };
 
-static char *StellarisClassname[7] = {
+static const char *StellarisClassname[7] = {
 	"Sandstorm",
 	"Fury",
 	"Unknown",
diff --git a/src/flash/nor/stmsmi.c b/src/flash/nor/stmsmi.c
index 9a715ef94..eea1d9f48 100644
--- a/src/flash/nor/stmsmi.c
+++ b/src/flash/nor/stmsmi.c
@@ -120,7 +120,7 @@ struct stmsmi_flash_bank {
 	int probed;
 	uint32_t io_base;
 	uint32_t bank_num;
-	struct flash_device *dev;
+	const struct flash_device *dev;
 };
 
 struct stmsmi_target {
@@ -130,7 +130,7 @@ struct stmsmi_target {
 	uint32_t io_base;
 };
 
-static struct stmsmi_target target_devices[] = {
+static const struct stmsmi_target target_devices[] = {
 	/* name,          tap_idcode, smi_base,   io_base */
 	{ "SPEAr3xx/6xx", 0x07926041, 0xf8000000, 0xfc000000 },
 	{ "STR75x",       0x4f1f0041, 0x80000000, 0x90000000 },
@@ -529,7 +529,7 @@ static int stmsmi_probe(struct flash_bank *bank)
 	uint32_t io_base;
 	struct flash_sector *sectors;
 	uint32_t id = 0; /* silence uninitialized warning */
-	struct stmsmi_target *target_device;
+	const struct stmsmi_target *target_device;
 	int retval;
 
 	if (stmsmi_info->probed)
@@ -575,7 +575,7 @@ static int stmsmi_probe(struct flash_bank *bank)
 		return retval;
 
 	stmsmi_info->dev = NULL;
-	for (struct flash_device *p = flash_devices; p->name ; p++)
+	for (const struct flash_device *p = flash_devices; p->name ; p++)
 		if (p->device_id == id) {
 			stmsmi_info->dev = p;
 			break;
diff --git a/src/flash/nor/str7x.c b/src/flash/nor/str7x.c
index cbd8928e4..32c8ebd5e 100644
--- a/src/flash/nor/str7x.c
+++ b/src/flash/nor/str7x.c
@@ -113,7 +113,7 @@ enum str7x_status_codes {
 	STR7X_BUSY = 11
 };
 
-static struct str7x_mem_layout mem_layout_str7bank0[] = {
+static const struct str7x_mem_layout mem_layout_str7bank0[] = {
 	{0x00000000, 0x02000, 0x01},
 	{0x00002000, 0x02000, 0x02},
 	{0x00004000, 0x02000, 0x04},
@@ -124,7 +124,7 @@ static struct str7x_mem_layout mem_layout_str7bank0[] = {
 	{0x00030000, 0x10000, 0x80}
 };
 
-static struct str7x_mem_layout mem_layout_str7bank1[] = {
+static const struct str7x_mem_layout mem_layout_str7bank1[] = {
 	{0x00000000, 0x02000, 0x10000},
 	{0x00002000, 0x02000, 0x20000}
 };
-- 
GitLab