From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Simek Date: Thu, 26 May 2016 13:02:30 +0200 Subject: [U-Boot] [PATCH v2 1/3] spi: spi_flash: Dont set quad enable for micron in all cases In-Reply-To: <1464245901-3983-1-git-send-email-sivadur@xilinx.com> References: <1464245901-3983-1-git-send-email-sivadur@xilinx.com> Message-ID: <5746D7C6.4020004@xilinx.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 26.5.2016 08:58, Siva Durga Prasad Paladugu wrote: > Dont set quad enable for micron devices in all cases > Setting the quad enable bit in micron expects all other > commands like register reads on quad lines which may > not be supported by some controllers. Hence, dont > set the quad enable if controller driver sets the > no_all_quad. > > Signed-off-by: Siva Durga Prasad Paladugu > --- > Changes for v2: > - Newly added in series. > --- > drivers/mtd/spi/spi_flash.c | 13 ++++++++++++- > include/spi.h | 2 +- > 2 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c > index 5451725..5b22ae2 100644 > --- a/drivers/mtd/spi/spi_flash.c > +++ b/drivers/mtd/spi/spi_flash.c > @@ -926,6 +926,8 @@ static int micron_quad_enable(struct spi_flash *flash) > > static int set_quad_mode(struct spi_flash *flash, u8 idcode0) > { > + struct spi_slave *spi = flash->spi; > + > switch (idcode0) { > #ifdef CONFIG_SPI_FLASH_MACRONIX > case SPI_FLASH_CFI_MFR_MACRONIX: > @@ -938,7 +940,16 @@ static int set_quad_mode(struct spi_flash *flash, u8 idcode0) > #endif > #ifdef CONFIG_SPI_FLASH_STMICRO > case SPI_FLASH_CFI_MFR_STMICRO: > - return micron_quad_enable(flash); > + /* > + * Set quad enable for micron only > + * if controller supports sending of > + * all commands on quad lines, otherwise > + * dont enable it > + */ > + if (spi->no_all_quad) > + return 0; > + else > + return micron_quad_enable(flash); > #endif > default: > printf("SF: Need set QEB func for %02x flash\n", idcode0); > diff --git a/include/spi.h b/include/spi.h > index 4b88d39..17c6e4d 100644 > --- a/include/spi.h > +++ b/include/spi.h > @@ -117,7 +117,7 @@ struct spi_slave { > unsigned int max_write_size; > void *memory_map; > u8 option; > - > + u8 no_all_quad; > u8 flags; > #define SPI_XFER_BEGIN BIT(0) /* Assert CS before transfer */ > #define SPI_XFER_END BIT(1) /* Deassert CS after transfer */ > Tested-by: Michal Simek Thanks, Michal