From 089a65f85b50a4231fec1deccb057d1b27281748 Mon Sep 17 00:00:00 2001 From: Jagannadha Sutradharudu Teki Date: Fri, 17 Aug 2012 17:03:54 +0530 Subject: [PATCH] Xilinx: ARM: sf: winbond: Add support to program using dual qspi This patch enables programming of winbond flash devices using dual qspi. winbond 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/winbond.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/spi/winbond.c b/drivers/mtd/spi/winbond.c index 4719aca070d..ffa2142c221 100755 --- a/drivers/mtd/spi/winbond.c +++ b/drivers/mtd/spi/winbond.c @@ -139,6 +139,13 @@ struct spi_flash *spi_flash_probe_winbond(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; @@ -150,9 +157,16 @@ struct spi_flash *spi_flash_probe_winbond(struct spi_slave *spi, u8 *idcode) flash->read = spi_flash_cmd_read_fast; flash->page_size = page_size; flash->sector_size = page_size * params->pages_per_sector; - flash->size = page_size * params->pages_per_sector + if (flash->addr_width == 3) + flash->size = page_size * params->pages_per_sector * params->sectors_per_block * params->nr_blocks; + else if (flash->addr_width == 4) { + printf("Dual Flash\n"); + flash->size = page_size * params->pages_per_sector + * params->sectors_per_block + * (2 * params->nr_blocks); + } return flash; } -- 2.47.3