From 882d65bc0167aaef76379e01d9d0f43ca832b972 Mon Sep 17 00:00:00 2001 From: Jagannadha Sutradharudu Teki Date: Mon, 6 Aug 2012 21:04:38 +0530 Subject: [PATCH] Xilinx: ARM: sf: spansion: Add support to program using dual qspi This patch enables programming of spansion flash devices using dual qspi. spansion flash driver is updated to detect the size of the flash based on the board header macro. Signed-off-by: Jagannadha Sutradharudu Teki --- drivers/mtd/spi/spansion.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/spi/spansion.c b/drivers/mtd/spi/spansion.c index 6301d871237..250aa4e7f45 100755 --- a/drivers/mtd/spi/spansion.c +++ b/drivers/mtd/spi/spansion.c @@ -165,6 +165,13 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode) return NULL; } + /* address width is 4 for dual and 3 for single qspi */ +#ifdef CONFIG_XILINX_PSS_QSPI_USE_DUAL_FLASH + flash->addr_width = 4; +#else + flash->addr_width = 3; +#endif + flash->spi = spi; flash->name = params->name; @@ -173,7 +180,13 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode) flash->read = spi_flash_cmd_read_fast; flash->page_size = params->page_size; flash->sector_size = params->page_size * params->pages_per_sector; - flash->size = flash->sector_size * params->nr_sectors; + + if (flash->addr_width == 3) + flash->size = flash->sector_size * params->nr_sectors; + else if (flash->addr_width == 4) { + printf("Dual Flash\n"); + flash->size = flash->sector_size * (2 * params->nr_sectors); + } return flash; } -- 2.47.3