[U-Boot] [PATCH v2] sf: always read 5 bytes for the idcode
Mike Frysinger
vapier at gentoo.org
Sun Mar 29 21:37:49 CEST 2009
Some SPI flash drivers like to have extended id information available
(like the spansion flash), so rather than making it re-issue the ID cmd
to get at the last 2 bytes, have the common code read 5 bytes rather than
just 3. This also matches the Linux behavior where it always reads 5 id
bytes from all flashes.
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
Acked-by: Haavard Skinnemoen <haavard.skinnemoen at atmel.com>
CC: Mingkai Hu <Mingkai.hu at freescale.com>
---
v2
- display all 5 bytes in the debug() output
drivers/mtd/spi/spansion.c | 10 ++--------
drivers/mtd/spi/spi_flash.c | 6 +++---
2 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/drivers/mtd/spi/spansion.c b/drivers/mtd/spi/spansion.c
index 9de4b7b..b9746fd 100644
--- a/drivers/mtd/spi/spansion.c
+++ b/drivers/mtd/spi/spansion.c
@@ -310,15 +310,9 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)
struct spansion_spi_flash *spsn;
unsigned int i;
unsigned short jedec, ext_jedec;
- int ret;
- u8 id[5] = {0};
-
- ret = spi_flash_cmd(spi, CMD_READ_ID, id, sizeof(id));
- if (ret)
- return NULL;
- jedec = id[1] << 8 | id[2];
- ext_jedec = id[3] << 8 | id[4];
+ jedec = idcode[1] << 8 | idcode[2];
+ ext_jedec = idcode[3] << 8 | idcode[4];
for (i = 0; i < ARRAY_SIZE(spansion_spi_flash_table); i++) {
params = &spansion_spi_flash_table[i];
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 1902960..c8c460b 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -101,7 +101,7 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
struct spi_slave *spi;
struct spi_flash *flash;
int ret;
- u8 idcode[3];
+ u8 idcode[5];
spi = spi_setup_slave(bus, cs, max_hz, spi_mode);
if (!spi) {
@@ -120,8 +120,8 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
if (ret)
goto err_read_id;
- debug("SF: Got idcode %02x %02x %02x\n", idcode[0],
- idcode[1], idcode[2]);
+ debug("SF: Got idcode %02x %02x %02x %02x %02x\n", idcode[0],
+ idcode[1], idcode[2], idcode[3], idcode[4]);
switch (idcode[0]) {
#ifdef CONFIG_SPI_FLASH_SPANSION
--
1.6.2
More information about the U-Boot
mailing list