1. 20 Sep, 2024 2 commits
    • Alexander Dahl's avatar
      spi: atmel-quadspi: Avoid overwriting delay register settings · 329ca3ee
      Alexander Dahl authored
      Previously the MR and SCR registers were just set with the supposedly
      required values, from cached register values (cached reg content
      initialized to zero).
      
      All parts fixed here did not consider the current register (cache)
      content, which would make future support of cs_setup, cs_hold, and
      cs_inactive impossible.
      
      Setting SCBR in atmel_qspi_setup() erases a possible DLYBS setting from
      atmel_qspi_set_cs_timing().  The DLYBS setting is applied by ORing over
      the current setting, without resetting the bits first.  All writes to MR
      did not consider possible settings of DLYCS and DLYBCT.
      Signed-off-by: default avatarAlexander Dahl <ada@thorsis.com>
      Fixes: f732646d ("spi: atmel-quadspi: Add support for configuring CS timing")
      Link: https://patch.msgid.link/20240918082744.379610-2-ada@thorsis.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      329ca3ee
    • Lorenzo Bianconi's avatar
      spi: airoha: remove read cache in airoha_snand_dirmap_read() · fffca269
      Lorenzo Bianconi authored
      Current upstream driver reports errors running mtd_oobtest kernel module
      test:
      
      root@OpenWrt:/# insmod mtd_test.ko
      root@OpenWrt:/# insmod mtd_oobtest.ko dev=5
      [ 7023.730584] =================================================
      [ 7023.736399] mtd_oobtest: MTD device: 5
      [ 7023.740160] mtd_oobtest: MTD device size 3670016, eraseblock size 131072, page size 2048, count of eraseblocks 28, pages per eraseblock 64, OOB size 128
      [ 7023.753837] mtd_test: scanning for bad eraseblocks
      [ 7023.758636] mtd_test: scanned 28 eraseblocks, 0 are bad
      [ 7023.763861] mtd_oobtest: test 1 of 5
      [ 7024.042076] mtd_oobtest: writing OOBs of whole device
      [ 7024.682069] mtd_oobtest: written up to eraseblock 0
      [ 7041.962077] mtd_oobtest: written 28 eraseblocks
      [ 7041.966626] mtd_oobtest: verifying all eraseblocks
      [ 7041.972276] mtd_oobtest: error @addr[0x0:0x0] 0xff -> 0xe diff 0xf1
      [ 7041.978550] mtd_oobtest: error @addr[0x0:0x1] 0xff -> 0x10 diff 0xef
      [ 7041.984932] mtd_oobtest: error @addr[0x0:0x2] 0xff -> 0x82 diff 0x7d
      [ 7041.991293] mtd_oobtest: error @addr[0x0:0x3] 0xff -> 0x10 diff 0xef
      [ 7041.997659] mtd_oobtest: error @addr[0x0:0x4] 0xff -> 0x0 diff 0xff
      [ 7042.003942] mtd_oobtest: error @addr[0x0:0x5] 0xff -> 0x8a diff 0x75
      [ 7042.010294] mtd_oobtest: error @addr[0x0:0x6] 0xff -> 0x20 diff 0xdf
      [ 7042.016659] mtd_oobtest: error @addr[0x0:0x7] 0xff -> 0x1 diff 0xfe
      [ 7042.022935] mtd_oobtest: error @addr[0x0:0x8] 0xff -> 0x2e diff 0xd1
      [ 7042.029295] mtd_oobtest: error @addr[0x0:0x9] 0xff -> 0x40 diff 0xbf
      [ 7042.035661] mtd_oobtest: error @addr[0x0:0xa] 0xff -> 0x0 diff 0xff
      [ 7042.041935] mtd_oobtest: error @addr[0x0:0xb] 0xff -> 0x89 diff 0x76
      [ 7042.048300] mtd_oobtest: error @addr[0x0:0xc] 0xff -> 0x82 diff 0x7d
      [ 7042.054662] mtd_oobtest: error @addr[0x0:0xd] 0xff -> 0x15 diff 0xea
      [ 7042.061014] mtd_oobtest: error @addr[0x0:0xe] 0xff -> 0x90 diff 0x6f
      [ 7042.067380] mtd_oobtest: error @addr[0x0:0xf] 0xff -> 0x0 diff 0xff
      ....
      [ 7432.421369] mtd_oobtest: error @addr[0x237800:0x36] 0xff -> 0x5f diff 0xa0
      [ 7432.428242] mtd_oobtest: error @addr[0x237800:0x37] 0xff -> 0x21 diff 0xde
      [ 7432.435118] mtd_oobtest: error: verify failed at 0x237800
      [ 7432.440510] mtd_oobtest: error: too many errors
      [ 7432.445053] mtd_oobtest: error -1 occurred
      
      The above errors are due to the buggy logic in the 'read cache' available
      in airoha_snand_dirmap_read() routine since there are some corner cases
      where we are missing data updates. Since we do not get any read/write speed
      improvement using the cache (according to the mtd_speedtest kernel
      module test), in order to fix the mtd_oobtest test, remove the 'read cache'
      in airoha_snand_dirmap_read routine. Now the driver is passing all the
      tests available in mtd_test suite.
      
      Fixes: a403997c ("spi: airoha: add SPI-NAND Flash controller driver")
      Tested-by: default avatarChristian Marangi <ansuelsmth@gmail.com>
      Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
      Link: https://patch.msgid.link/20240919-airoha-spi-fixes-v2-1-cb0f0ed9920a@kernel.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      fffca269
  2. 19 Sep, 2024 2 commits
  3. 18 Sep, 2024 2 commits
  4. 12 Sep, 2024 2 commits
  5. 10 Sep, 2024 7 commits
  6. 09 Sep, 2024 2 commits
  7. 05 Sep, 2024 6 commits
  8. 04 Sep, 2024 1 commit
  9. 03 Sep, 2024 5 commits
  10. 02 Sep, 2024 4 commits
  11. 30 Aug, 2024 4 commits
  12. 29 Aug, 2024 3 commits