081-spi-bcm-qspi-switch-back-to-reading-flash-using-smal.patch 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. From 940ec770c295682993d1cccce3081fd7c74fece8 Mon Sep 17 00:00:00 2001
  2. From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <[email protected]>
  3. Date: Thu, 11 Oct 2018 09:42:17 +0200
  4. Subject: [PATCH] spi: bcm-qspi: switch back to reading flash using smaller
  5. chunks
  6. MIME-Version: 1.0
  7. Content-Type: text/plain; charset=UTF-8
  8. Content-Transfer-Encoding: 8bit
  9. Fixing/optimizing bcm_qspi_bspi_read() performance introduced two
  10. changes:
  11. 1) It added a loop to read all requested data using multiple BSPI ops.
  12. 2) It bumped max size of a single BSPI block request from 256 to 512 B.
  13. The later change resulted in occasional BSPI timeouts causing a
  14. regression.
  15. For some unknown reason hardware doesn't always handle reads as expected
  16. when using 512 B chunks. In such cases it may happen that BSPI returns
  17. amount of requested bytes without the last 1-3 ones. It provides the
  18. remaining bytes later but doesn't raise an interrupt until another LR
  19. start.
  20. Switching back to 256 B reads fixes that problem and regression.
  21. Fixes: 345309fa7c0c ("spi: bcm-qspi: Fix bcm_qspi_bspi_read() performance")
  22. Signed-off-by: Rafał Miłecki <[email protected]>
  23. Signed-off-by: Mark Brown <[email protected]>
  24. Cc: [email protected]
  25. ---
  26. drivers/spi/spi-bcm-qspi.c | 2 +-
  27. 1 file changed, 1 insertion(+), 1 deletion(-)
  28. --- a/drivers/spi/spi-bcm-qspi.c
  29. +++ b/drivers/spi/spi-bcm-qspi.c
  30. @@ -88,7 +88,7 @@
  31. #define BSPI_BPP_MODE_SELECT_MASK BIT(8)
  32. #define BSPI_BPP_ADDR_SELECT_MASK BIT(16)
  33. -#define BSPI_READ_LENGTH 512
  34. +#define BSPI_READ_LENGTH 256
  35. /* MSPI register offsets */
  36. #define MSPI_SPCR0_LSB 0x000