From: Siva Durga Prasad Paladugu Date: Fri, 13 Apr 2018 06:38:54 +0000 (+0530) Subject: spi: spi_flash: Handle dualparallel case for macronix flash X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dd3bdcbf698aeb5dbfe6fb7c0f7516b51128e841;p=thirdparty%2Fu-boot.git spi: spi_flash: Handle dualparallel case for macronix flash This patch handles the dual parallel case while preserving the QEB bit for macronix flash devices. This fixes the issue of DMA timeout during probe of macronix flash devices in dual parallel mode. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek --- diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c index e44cdb7e8be..15d91a7f7e6 100644 --- a/drivers/mtd/spi/spi_flash.c +++ b/drivers/mtd/spi/spi_flash.c @@ -1349,10 +1349,24 @@ int spi_flash_scan(struct spi_flash *flash) (JEDEC_MFR(info) == SPI_FLASH_CFI_MFR_SST) || (JEDEC_MFR(info) == SPI_FLASH_CFI_MFR_MACRONIX)) { u8 sr = 0; +#ifdef CONFIG_SPI_GENERIC + u8 sr_up = 0; +#endif if (JEDEC_MFR(info) == SPI_FLASH_CFI_MFR_MACRONIX) { +#ifdef CONFIG_SPI_GENERIC + if (flash->spi->option & SF_DUAL_PARALLEL_FLASH) + flash->spi->flags |= SPI_XFER_LOWER; +#endif read_sr(flash, &sr); sr &= STATUS_QEB_MXIC; +#ifdef CONFIG_SPI_GENERIC + if (flash->spi->option & SF_DUAL_PARALLEL_FLASH) { + flash->spi->flags |= SPI_XFER_UPPER; + read_sr(flash, &sr_up); + sr_up &= STATUS_QEB_MXIC; + } +#endif } #ifdef CONFIG_SPI_GENERIC @@ -1364,7 +1378,7 @@ int spi_flash_scan(struct spi_flash *flash) #ifdef CONFIG_SPI_GENERIC if (flash->dual_flash & SF_DUAL_PARALLEL_FLASH) { flash->spi->flags |= SPI_XFER_UPPER; - write_sr(flash, 0); + write_sr(flash, sr_up); } #endif }