Re: [PATCH FIX] spi: bcm-qspi: switch back to reading flash using smaller chunks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 11 Oct 2018 09:42:17 +0200
Rafał Miłecki <zajec5@xxxxxxxxx> wrote:

> From: Rafał Miłecki <rafal@xxxxxxxxxx>
> 
> Fixing/optimizing bcm_qspi_bspi_read() performance introduced two
> changes:
> 1) It added a loop to read all requested data using multiple BSPI ops.
> 2) It bumped max size of a single BSPI block request from 256 to 512 B.
> 
> The later change resulted in occasional BSPI timeouts causing a
> regression.
> 
> For some unknown reason hardware doesn't always handle reads as expected
> when using 512 B chunks. In such cases it may happen that BSPI returns
> amount of requested bytes without the last 1-3 ones. It provides the
> remaining bytes later but doesn't raise an interrupt until another LR
> start.
> 
> Switching back to 256 B reads fixes that problem and regression.

Kamal, can you help Rafal with this issue? I mean, even if it seems to
solve the problem, switching back to 256bytes is not helping us
understanding what's going on here.

> 
> Fixes: 345309fa7c0c ("spi: bcm-qspi: Fix bcm_qspi_bspi_read() performance")
> Signed-off-by: Rafał Miłecki <rafal@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx # 4.11+
> ---
> This fixes a regression I reported 2,5 months ago in the e-mail thread:
> bcm-qspi: unstable bspi mode since the 345309fa7c0c ("spi: bcm-qspi: Fix bcm_qspi_bspi_read() performance")
> ---
>  drivers/spi/spi-bcm-qspi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/spi/spi-bcm-qspi.c b/drivers/spi/spi-bcm-qspi.c
> index eb3d67f01e8c..584bcb018a62 100644
> --- a/drivers/spi/spi-bcm-qspi.c
> +++ b/drivers/spi/spi-bcm-qspi.c
> @@ -89,7 +89,7 @@
>  #define BSPI_BPP_MODE_SELECT_MASK		BIT(8)
>  #define BSPI_BPP_ADDR_SELECT_MASK		BIT(16)
>  
> -#define BSPI_READ_LENGTH			512
> +#define BSPI_READ_LENGTH			256
>  
>  /* MSPI register offsets */
>  #define MSPI_SPCR0_LSB				0x000




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux