[U-Boot] [PATCH v2 1/3] spi: spi_flash: Dont set quad enable for micron in all cases

Michal Simek michal.simek at xilinx.com
Thu May 26 13:02:30 CEST 2016


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 <sivadur at xilinx.com>
> ---
> 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 <michal.simek at xilinx.com>

Thanks,
Michal



More information about the U-Boot mailing list