Merge branch 'u-boot-ti/master' into 'u-boot-arm/master'
[oweals/u-boot.git] / drivers / mtd / spi / sf_probe.c
index b9e14c5a2bb1ac45a2ef3e9b0d4147cbff2a8302..bc3cf6cc64aaa3bb324e3a360882a78725552696 100644 (file)
@@ -146,19 +146,22 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi,
        flash->read = spi_flash_cmd_read_ops;
 
        /* Compute the flash size */
-       flash->page_size = (ext_jedec == 0x4d00) ? 512 : 256;
-       flash->sector_size = params->sector_size;
-       flash->size = flash->sector_size * params->nr_sectors;
+       flash->shift = (flash->dual_flash & SF_DUAL_PARALLEL_FLASH) ? 1 : 0;
+       flash->page_size = ((ext_jedec == 0x4d00) ? 512 : 256) << flash->shift;
+       flash->sector_size = params->sector_size << flash->shift;
+       flash->size = flash->sector_size * params->nr_sectors << flash->shift;
+#ifdef CONFIG_SF_DUAL_FLASH
        if (flash->dual_flash & SF_DUAL_STACKED_FLASH)
                flash->size <<= 1;
+#endif
 
        /* Compute erase sector and command */
        if (params->flags & SECT_4K) {
                flash->erase_cmd = CMD_ERASE_4K;
-               flash->erase_size = 4096;
+               flash->erase_size = 4096 << flash->shift;
        } else if (params->flags & SECT_32K) {
                flash->erase_cmd = CMD_ERASE_32K;
-               flash->erase_size = 32768;
+               flash->erase_size = 32768 << flash->shift;
        } else {
                flash->erase_cmd = CMD_ERASE_64K;
                flash->erase_size = flash->sector_size;