[U-Boot] [PATCH 1/2] sf: stmicro: support JEDEC standard two-byte signature

There are more than the M25Pxx serial flashs that can be used with the stmicro driver, for example: the M25PXxx or N25Qxx serie. All these chips have burned in the original stmicro manufacture id 0x20 together with a standard two-byte signature.
In preperation to support all these chips the stmicro driver have to decode the full two-byte signature.
Signed-off-by: Stephan Linz linz@li-pro.net --- drivers/mtd/spi/stmicro.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c index a9b33cf..4bee9ce 100644 --- a/drivers/mtd/spi/stmicro.c +++ b/drivers/mtd/spi/stmicro.c @@ -47,7 +47,7 @@ #define CMD_M25PXX_RES 0xab /* Release from DP, and Read Signature */
struct stmicro_spi_flash_params { - u8 idcode1; + u16 id; u16 page_size; u16 pages_per_sector; u16 nr_sectors; @@ -56,56 +56,56 @@ struct stmicro_spi_flash_params {
static const struct stmicro_spi_flash_params stmicro_spi_flash_table[] = { { - .idcode1 = 0x11, + .id = 0x2011, .page_size = 256, .pages_per_sector = 128, .nr_sectors = 4, .name = "M25P10", }, { - .idcode1 = 0x15, + .id = 0x2015, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 32, .name = "M25P16", }, { - .idcode1 = 0x12, + .id = 0x2012, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 4, .name = "M25P20", }, { - .idcode1 = 0x16, + .id = 0x2016, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 64, .name = "M25P32", }, { - .idcode1 = 0x13, + .id = 0x2013, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 8, .name = "M25P40", }, { - .idcode1 = 0x17, + .id = 0x2017, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 128, .name = "M25P64", }, { - .idcode1 = 0x14, + .id = 0x2014, .page_size = 256, .pages_per_sector = 256, .nr_sectors = 16, .name = "M25P80", }, { - .idcode1 = 0x18, + .id = 0x2018, .page_size = 256, .pages_per_sector = 1024, .nr_sectors = 64, @@ -139,13 +139,13 @@ struct spi_flash *spi_flash_probe_stmicro(struct spi_slave *spi, u8 * idcode)
for (i = 0; i < ARRAY_SIZE(stmicro_spi_flash_table); i++) { params = &stmicro_spi_flash_table[i]; - if (params->idcode1 == idcode[2]) { + if (params->id == ((idcode[1] << 8) | idcode[2])) break; - } }
if (i == ARRAY_SIZE(stmicro_spi_flash_table)) { - debug("SF: Unsupported STMicro ID %02x\n", idcode[1]); + debug("SF: Unsupported STMicro ID %02x%02x\n", + idcode[1], idcode[2]); return NULL; }

Adds support for Numonyx's N25Q128 SPI flash. These devices are used on (among others) Avnet Spartan-6 LX9 micro-evaluation boards. Tested with "sf" commands and CONFIG_ENV_IS_IN_SPI_FLASH.
Signed-off-by: Stephan Linz linz@li-pro.net --- drivers/mtd/spi/stmicro.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c index 4bee9ce..50b8aad 100644 --- a/drivers/mtd/spi/stmicro.c +++ b/drivers/mtd/spi/stmicro.c @@ -111,6 +111,13 @@ static const struct stmicro_spi_flash_params stmicro_spi_flash_table[] = { .nr_sectors = 64, .name = "M25P128", }, + { + .id = 0xba18, + .page_size = 256, + .pages_per_sector = 256, + .nr_sectors = 256, + .name = "N25Q128", + }, };
static int stmicro_erase(struct spi_flash *flash, u32 offset, size_t len)

On Friday 13 July 2012 14:07:19 Stephan Linz wrote:
Adds support for Numonyx's N25Q128 SPI flash. These devices are used on (among others) Avnet Spartan-6 LX9 micro-evaluation boards. Tested with "sf" commands and CONFIG_ENV_IS_IN_SPI_FLASH.
needs to be rebased onto mainline. looks fine otherwise. -mike

Am Mittwoch, den 01.08.2012, 13:53 -0400 schrieb Mike Frysinger:
On Friday 13 July 2012 14:07:19 Stephan Linz wrote:
Adds support for Numonyx's N25Q128 SPI flash. These devices are used on (among others) Avnet Spartan-6 LX9 micro-evaluation boards. Tested with "sf" commands and CONFIG_ENV_IS_IN_SPI_FLASH.
needs to be rebased onto mainline. looks fine otherwise. -mike
Hi Mike,
I'll do it at weekend together with the things you commented in the second patch ...
br, Stephan

On Friday 13 July 2012 14:07:18 Stephan Linz wrote:
There are more than the M25Pxx serial flashs that can be used with the stmicro driver, for example: the M25PXxx or N25Qxx serie. All these chips have burned in the original stmicro manufacture id 0x20 together with a standard two-byte signature.
can you rebase onto mainline and re-post ?
--- a/drivers/mtd/spi/stmicro.c +++ b/drivers/mtd/spi/stmicro.c
for (i = 0; i < ARRAY_SIZE(stmicro_spi_flash_table); i++) { params = &stmicro_spi_flash_table[i];
if (params->idcode1 == idcode[2]) {
if (params->id == ((idcode[1] << 8) | idcode[2])) break;
}}
can you add a local u16 variable and store the computation of the idcode here to that above the for loop ?
if (i == ARRAY_SIZE(stmicro_spi_flash_table)) {
debug("SF: Unsupported STMicro ID %02x\n", idcode[1]);
debug("SF: Unsupported STMicro ID %02x%02x\n",
idcode[1], idcode[2]);
then here you can simply change: %02x -> %04x idcode[1] -> <new var> -mike
participants (2)
-
Mike Frysinger
-
Stephan Linz