]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
Xilinx: ARM: sf: spansion: Add support to program using dual qspi
authorJagannadha Sutradharudu Teki <jaganna@xilinx.com>
Mon, 6 Aug 2012 15:34:38 +0000 (21:04 +0530)
committerJagannadha Sutradharudu Teki <jaganna@xilinx.com>
Fri, 17 Aug 2012 11:31:21 +0000 (17:01 +0530)
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 <jaganna@xilinx.com>
drivers/mtd/spi/spansion.c

index 6301d871237d0b6c1d139cb086bb04b5a9282c15..250aa4e7f452e3858f1f790069b74f78023bc9c4 100755 (executable)
@@ -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;
 }