
On 28.09.2018 19:20, Jagan Teki wrote:
On Fri, Aug 17, 2018 at 12:23 PM Simon Goldschmidt simon.k.r.goldschmidt@gmail.com wrote:
The table of spi flash chips 'spi_flash_ids' currently includes chip names. The only usage of these is to print the name when the chip is probed.
Since this message is not shown in SPL, we can remove the names from the SPL binary.
Removing the chip names saves ~890 Byte from the SPL binary in my configuration (socfpga_socrates_defconfig, MACRONIX, SPANSION and STMICRO enabled).
Signed-off-by: Simon Goldschmidt simon.k.r.goldschmidt@gmail.com
drivers/mtd/spi/sf_internal.h | 10 ++ drivers/mtd/spi/spi_flash.c | 7 +- drivers/mtd/spi/spi_flash_ids.c | 270 +++++++++++++++++--------------- 3 files changed, 156 insertions(+), 131 deletions(-)
diff --git a/drivers/mtd/spi/sf_internal.h b/drivers/mtd/spi/sf_internal.h index 4f63cacc64..e5f91ca952 100644 --- a/drivers/mtd/spi/sf_internal.h +++ b/drivers/mtd/spi/sf_internal.h @@ -113,9 +113,18 @@ int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len, #define JEDEC_EXT(info) (((info)->id[3]) << 8 | ((info)->id[4])) #define SPI_FLASH_MAX_ID_LEN 6
+/* Exclude chip names for SPL to save space */ +#ifdef CONFIG_SPL_BUILD +#define SPI_FLASH_INCLUDE_NAME 0 +#else +#define SPI_FLASH_INCLUDE_NAME 1
No need for extra macro, define macros wherever needed and expand SPL and non-SPL?
So directly use #ifdef CONFIG_SPL_BUILD everywhere instead of SPI_FLASH_INCLUDE_NAME? No problem.
+#endif
- struct spi_flash_info {
+#if SPI_FLASH_INCLUDE_NAME /* Device name ([MANUFLETTER][DEVTYPE][DENSITY][EXTRAINFO]) */ const char *name; +#endif
/* * This array stores the ID bytes.
@@ -147,6 +156,7 @@ struct spi_flash_info { };
[snip]
{}, /* Empty entry to terminate the list */ /*
@@ -205,3 +213,5 @@ const struct spi_flash_info spi_flash_ids[] = { * (w25q256fw, w25q256fv_qpi) */ };
+const size_t spi_flash_ids_size = ARRAY_SIZE(spi_flash_ids);
Check array size directly in for loop.
That desn't work as the array is defined in spi_flash_ids.c and the for loop in spi_flash.c doesn't know its size at compile time.
I can change the code to check for 'info->sector_size != 0' instead of 'info->name != NULL' if this is preferred.
Simon