From: Jagannadha Sutradharudu Teki Date: Mon, 6 Aug 2012 15:34:38 +0000 (+0530) Subject: Xilinx: ARM: sf: spansion: Add support to program using dual qspi X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=882d65bc0167aaef76379e01d9d0f43ca832b972;p=thirdparty%2Fu-boot.git 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 --- 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; }