diff options
| author | Jagannadha Sutradharudu Teki <jaganna@xilinx.com> | 2013-10-02 19:37:43 +0530 | 
|---|---|---|
| committer | Jagannadha Sutradharudu Teki <jaganna@xilinx.com> | 2013-10-07 17:55:45 +0530 | 
| commit | 0f6232801cee4f45dbdb0cec45f71172c9b617ca (patch) | |
| tree | 075f1204f284977aebdfbbc46e0c973c8ec48768 | |
| parent | f4f51a8ff894d34eb332f0d11f6c73c7bf509848 (diff) | |
| download | olio-uboot-2014.01-0f6232801cee4f45dbdb0cec45f71172c9b617ca.tar.xz olio-uboot-2014.01-0f6232801cee4f45dbdb0cec45f71172c9b617ca.zip | |
sf: probe: Add support for flag status polling
From Micron, 512MB onwards, flash requires to poll flag status
instead of read status- hence added E_FSR flag on spectific
flash parts.
Signed-off-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
| -rw-r--r-- | drivers/mtd/spi/spi_flash_probe.c | 16 | ||||
| -rw-r--r-- | include/spi_flash.h | 1 | 
2 files changed, 12 insertions, 5 deletions
| diff --git a/drivers/mtd/spi/spi_flash_probe.c b/drivers/mtd/spi/spi_flash_probe.c index 9c2e11521..8ea69158e 100644 --- a/drivers/mtd/spi/spi_flash_probe.c +++ b/drivers/mtd/spi/spi_flash_probe.c @@ -94,10 +94,10 @@ static const struct spi_flash_params spi_flash_params_table[] = {  	{"N25Q128A",	   0x20bb18, 0x0,       64 * 1024,   256,	       SECT_4K},  	{"N25Q256",	   0x20ba19, 0x0,       64 * 1024,   512,	       SECT_4K},  	{"N25Q256A",	   0x20bb19, 0x0,       64 * 1024,   512,	       SECT_4K}, -	{"N25Q512",	   0x20ba20, 0x0,       64 * 1024,  1024,	       SECT_4K}, -	{"N25Q512A",	   0x20bb20, 0x0,       64 * 1024,  1024,	       SECT_4K}, -	{"N25Q1024",	   0x20ba21, 0x0,       64 * 1024,  2048,	       SECT_4K}, -	{"N25Q1024A",	   0x20bb21, 0x0,       64 * 1024,  2048,	       SECT_4K}, +	{"N25Q512",	   0x20ba20, 0x0,       64 * 1024,  1024,      E_FSR | SECT_4K}, +	{"N25Q512A",	   0x20bb20, 0x0,       64 * 1024,  1024,      E_FSR | SECT_4K}, +	{"N25Q1024",	   0x20ba21, 0x0,       64 * 1024,  2048,      E_FSR | SECT_4K}, +	{"N25Q1024A",	   0x20bb21, 0x0,       64 * 1024,  2048,      E_FSR | SECT_4K},  #endif  #ifdef CONFIG_SPI_FLASH_SST		/* SST */  	{"SST25VF040B",	   0xbf258d, 0x0,	64 * 1024,     8,     SECT_4K | SST_WP}, @@ -187,7 +187,6 @@ struct spi_flash *spi_flash_validate_ids(struct spi_slave *spi, u8 *idcode)  	flash->spi = spi;  	flash->name = params->name; -	flash->poll_cmd = CMD_READ_STATUS;  	/* Assign spi_flash ops */  	flash->write = spi_flash_cmd_write_multi; @@ -215,6 +214,13 @@ struct spi_flash *spi_flash_validate_ids(struct spi_slave *spi, u8 *idcode)  		flash->erase_size = flash->sector_size;  	} +	/* Poll cmd seclection */ +	flash->poll_cmd = CMD_READ_STATUS; +#ifdef CONFIG_SPI_FLASH_STMICRO +	if (params->flags & E_FSR) +		flash->poll_cmd = CMD_FLAG_STATUS; +#endif +  	/* Flash powers up read-only, so clear BP# bits */  #if defined(CONFIG_SPI_FLASH_ATMEL) || \  	defined(CONFIG_SPI_FLASH_MACRONIX) || \ diff --git a/include/spi_flash.h b/include/spi_flash.h index 0d40e6c97..09af55dee 100644 --- a/include/spi_flash.h +++ b/include/spi_flash.h @@ -20,6 +20,7 @@  /* SECT flags */  #define SECT_4K		(1 << 1)  #define SECT_32K		(1 << 2) +#define E_FSR			(1 << 3)  /* SST specific macros */  #ifdef CONFIG_SPI_FLASH_SST |