]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
sf: Fix the remain_len calculation in Dual stacked
authorSiva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Mon, 26 May 2014 06:36:29 +0000 (12:06 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 29 May 2014 08:04:49 +0000 (10:04 +0200)
The bank_sel should be increased by total banks in first
chip, if accessing the second chip in Dual stacked mode.
This fixes the wrong remain_len calculation if two 16MB
chips connected in Dual stacked and accessing the second
chip.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/mtd/spi/sf_ops.c

index f9bd4ad7e6f4ab83977972925a0f353f208d7a10..f46e1633e2ae4e1b860ca4b3d8958836d954e59d 100644 (file)
@@ -417,6 +417,9 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
                bank_sel = spi_flash_bank(flash, bank_addr);
                if (bank_sel < 0)
                        return ret;
+               if ((flash->dual_flash == SF_DUAL_STACKED_FLASH) &&
+                   (flash->spi->flags & SPI_XFER_U_PAGE))
+                       bank_sel += (flash->size >> 1)/SPI_FLASH_16MB_BOUN;
 #endif
                remain_len = ((SPI_FLASH_16MB_BOUN << flash->shift) *
                                (bank_sel + 1)) - offset;