From 67f6167a0f808ca7051a337858e0db237ce2b972 Mon Sep 17 00:00:00 2001 From: Siva Durga Prasad Paladugu Date: Mon, 26 May 2014 12:06:29 +0530 Subject: [PATCH] sf: Fix the remain_len calculation in Dual stacked 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 Signed-off-by: Michal Simek --- drivers/mtd/spi/sf_ops.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c index f9bd4ad7e6f..f46e1633e2a 100644 --- a/drivers/mtd/spi/sf_ops.c +++ b/drivers/mtd/spi/sf_ops.c @@ -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; -- 2.47.3