From: Jagannadha Sutradharudu Teki Date: Fri, 12 Apr 2013 14:01:27 +0000 (+0530) Subject: sf: Add extended address register reading support for winbond and stmicro X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7bece763d50429b4eb910f9d560df29f3ed6e211;p=thirdparty%2Fu-boot.git sf: Add extended address register reading support for winbond and stmicro This patch provides support to read a flash extended address register for winbond and stmicro SPI flashes. Signed-off-by: Jagannadha Sutradharudu Teki Signed-off-by: Michal Simek --- diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c index fb9331a2225..035dd38ab11 100644 --- a/drivers/mtd/spi/spi_flash.c +++ b/drivers/mtd/spi/spi_flash.c @@ -380,8 +380,25 @@ int spi_flash_cmd_bankaddr_write(struct spi_flash *flash, u8 ear) int spi_flash_cmd_bankaddr_read(struct spi_flash *flash, void *data) { u8 cmd; + u8 idcode0; + int ret; + + ret = spi_flash_cmd(flash->spi, CMD_READ_ID, &idcode0, 1); + if (ret) { + debug("SF: fail to read read id\n"); + return ret; + } + + if (idcode0 == 0x01) { + cmd = CMD_BANKADDR_BRRD; + } else if ((idcode0 == 0xef) || (idcode0 == 0x20)) { + cmd = CMD_EXT_RDEAR; + } else { + printf("SF: unable to support extended addr reg read" + " for %s flash\n", flash->name); + return -1; + } - cmd = CMD_BANKADDR_BRRD; return spi_flash_read_common(flash, &cmd, 1, data, 1); } diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h index 37770e25e37..2a54288e3e7 100644 --- a/drivers/mtd/spi/spi_flash_internal.h +++ b/drivers/mtd/spi/spi_flash_internal.h @@ -32,6 +32,7 @@ #define CMD_BANKADDR_BRWR 0x17 #define CMD_BANKADDR_BRRD 0x16 #define CMD_EXT_WREAR 0xC5 +#define CMD_EXT_RDEAR 0xC8 /* Common status */ #define STATUS_WIP 0x01