]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
Xilinx: ARM: sf: winbond: Add support to program using dual qspi
authorJagannadha Sutradharudu Teki <jaganna@xilinx.com>
Fri, 17 Aug 2012 11:33:54 +0000 (17:03 +0530)
committerJagannadha Sutradharudu Teki <jaganna@xilinx.com>
Fri, 17 Aug 2012 11:33:54 +0000 (17:03 +0530)
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 <jaganna@xilinx.com>
drivers/mtd/spi/winbond.c

index 4719aca070d74f8e5148f4fef03eedd699162694..ffa2142c2211b137e52ee23968f61d920452533a 100755 (executable)
@@ -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;
 }