From: Siva Durga Prasad Paladugu Date: Mon, 24 Feb 2014 06:06:55 +0000 (+0530) Subject: sf: Set QUAD enable of upper flash in Dual Stacked X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=eddc2f05217ecf465cf5bc43be86a5cc16edad80;p=thirdparty%2Fu-boot.git sf: Set QUAD enable of upper flash in Dual Stacked Sets the QUAD enable bit for upper flash incase of dual stacked mode. This fixes the issue of where the quad enable bit of the upperflash was not set and hence not able to access the upperflash using quad commands in Dual stacked mode. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek --- diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c index 970a415127c..114627052a5 100644 --- a/drivers/mtd/spi/sf_probe.c +++ b/drivers/mtd/spi/sf_probe.c @@ -197,6 +197,27 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi, /* Go for default supported write cmd */ flash->write_cmd = CMD_PAGE_PROGRAM; + /* Set the quad enable bit - only for quad commands */ + if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) || + (flash->read_cmd == CMD_READ_QUAD_IO_FAST) || + (flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) { + if (spi_flash_set_qeb(flash, idcode[0])) { + debug("SF: Fail to set QEB for %02x\n", idcode[0]); + return NULL; + } +#ifdef CONFIG_SF_DUAL_FLASH + if (flash->dual_flash & SF_DUAL_STACKED_FLASH) { + flash->spi->flags |= SPI_XFER_U_PAGE; + if (spi_flash_set_qeb(flash, idcode[0])) { + debug("SF: Fail to set QEB Upper Flash %02x\n", + idcode[0]); + return NULL; + } + flash->spi->flags &= ~SPI_XFER_U_PAGE; + } +#endif + } + /* Read dummy_byte: dummy byte is determined based on the * dummy cycles of a particular command. * Fast commands - dummy_byte = dummy_cycles/8