]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
Xilinx: ARM: sf: winbond: Update the flash memory size at runtime
authorJagannadha Sutradharudu Teki <jaganna@xilinx.com>
Sat, 25 Aug 2012 15:50:30 +0000 (21:20 +0530)
committerJohn Linn <john.linn@xilinx.com>
Wed, 29 Aug 2012 23:11:06 +0000 (16:11 -0700)
This patch adds support to update the flash memory size based on
the runtime detection of dual qspi flash.
So removed the conditional compilation for dual qspi flash.

Signed-off-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
drivers/mtd/spi/winbond.c [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index ffa2142..add792a
@@ -139,13 +139,6 @@ 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;
 
@@ -157,15 +150,18 @@ 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;
-       if (flash->addr_width == 3)
+
+       /* address width is 4 for dual and 3 for single qspi */
+       if (flash->spi->is_dual == 1) {
+               flash->addr_width = 4;
                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");
+                               * (2 * params->nr_blocks);
+       } else if (flash->spi->is_dual == 0) {
+               flash->addr_width = 3;
                flash->size = page_size * params->pages_per_sector
                                * params->sectors_per_block
-                               * (2 * params->nr_blocks);
+                               * params->nr_blocks;
        }
 
        return flash;