[U-Boot] [PATCH v3 02/28] sf: probe: Add new spi_flash_probe support
Simon Glass
sjg at chromium.org
Thu Sep 19 08:16:22 CEST 2013
Hi,
On Sun, Sep 15, 2013 at 12:15 PM, Jagannadha Sutradharudu Teki <
jagannadha.sutradharudu-teki at xilinx.com> wrote:
> Added new spi_flash_probe support, currently added N25Q*
> flash part attributes support.
>
> Updated the sector_size attributes as per the flash parts.
> Looks fine for with this sector_size for computing the size
> of flash.
>
> Defined CONFIG_SPI_FLASH_LEGACY for old probing style
> which is available on spi_flash_probe_legacy.c, this will
> removed soon once all flashes are supported in new spi_flash_probe.
>
> Signed-off-by: Jagannadha Sutradharudu Teki <jaganna at xilinx.com>
> ---
> Changes for v3:
> - Fix warning issue.
> Changes for v2:
> - Removed CONFIG_SPI_FLASH_NEW, add CONFIG_SPI_FLASH_LEGACY
> - Enable CONFIG_SPI_FLASH_STMICRO in spi_flash_params table
> - Updated few structure members
>
> drivers/mtd/spi/Makefile | 1 +
> drivers/mtd/spi/spi_flash_probe.c | 229 ++++++++++++-------------
> drivers/mtd/spi/spi_flash_probe_legacy.c | 276
> +++++++++++++++++++++++++++++++
> 3 files changed, 385 insertions(+), 121 deletions(-)
> create mode 100644 drivers/mtd/spi/spi_flash_probe_legacy.c
>
>
> ...
> +/*
> + * The following table holds all device probe functions
> + *
> + * shift: number of continuation bytes before the ID
> + * idcode: the expected IDCODE or 0xff for non JEDEC devices
> + * probe: the function to call
> + *
> + * Non JEDEC devices should be ordered in the table such that
> + * the probe functions with best detection algorithms come first.
> + *
> + * Several matching entries are permitted, they will be tried
> + * in sequence until a probe function returns non NULL.
> + *
> + * IDCODE_CONT_LEN may be redefined if a device needs to declare a
> + * larger "shift" value. IDCODE_PART_LEN generally shouldn't be
> + * changed. This is the max number of bytes probe functions may
> + * examine when looking up part-specific identification info.
> + *
> + * Probe functions will be given the idcode buffer starting at their
> + * manu id byte (the "idcode" in the table below). In other words,
> + * all of the continuation bytes will be skipped (the "shift" below).
> + */
> +#define IDCODE_CONT_LEN 0
> +#define IDCODE_PART_LEN 5
> +static const struct {
> + const u8 shift;
> + const u8 idcode;
> + struct spi_flash *(*probe) (struct spi_slave *spi, u8 *idcode);
> +} flashes[] = {
> + /* Keep it sorted by define name */
> +#ifdef CONFIG_SPI_FLASH_ATMEL
> + { 0, 0x1f, spi_flash_probe_atmel, },
> +#endif
> +#ifdef CONFIG_SPI_FLASH_EON
> + { 0, 0x1c, spi_flash_probe_eon, },
> +#endif
> +#ifdef CONFIG_SPI_FLASH_GIGADEVICE
> + { 0, 0xc8, spi_flash_probe_gigadevice, },
> +#endif
> +#ifdef CONFIG_SPI_FLASH_MACRONIX
> + { 0, 0xc2, spi_flash_probe_macronix, },
> +#endif
> +#ifdef CONFIG_SPI_FLASH_SPANSION
> + { 0, 0x01, spi_flash_probe_spansion, },
> +#endif
> +#ifdef CONFIG_SPI_FLASH_SST
> + { 0, 0xbf, spi_flash_probe_sst, },
> +#endif
> +#ifdef CONFIG_SPI_FLASH_STMICRO
> + { 0, 0x20, spi_flash_probe_stmicro, },
> +#endif
> +#ifdef CONFIG_SPI_FLASH_WINBOND
> + { 0, 0xef, spi_flash_probe_winbond, },
> +#endif
> +#ifdef CONFIG_SPI_FRAM_RAMTRON
> + { 6, 0xc2, spi_fram_probe_ramtron, },
> +# undef IDCODE_CONT_LEN
> +# define IDCODE_CONT_LEN 6
> +#endif
> + /* Keep it sorted by best detection */
> +#ifdef CONFIG_SPI_FLASH_STMICRO
> + { 0, 0xff, spi_flash_probe_stmicro, },
> +#endif
> +#ifdef CONFIG_SPI_FRAM_RAMTRON_NON_JEDEC
> + { 0, 0xff, spi_fram_probe_ramtron, },
> +#endif
>
Do you think it is worth using a linker list for this?
Regards,
Simon
More information about the U-Boot
mailing list