Hello everyone,

this patch series is for U-Boot, although Linux might be affected.

The quadspi controller on microchip (former atmel) sama5d2, sam9x60 and
other soc variants of the at91 family is usually used in hardware
accelerated spi-mem mode.  It also supports a classic mode for
interfacing all kinds of SPI peripherals like ADCs, IO expanders,
displays, you name it.  However the drivers in Linux and U-Boot did not
support that mode, yet.

While spi-mem subsystem interface is comparable between Linux and
U-Boot, SPI subsystem interface is rather different in Linux and U-Boot.
So there's no previously written Linux support just ported here.  I
tried that, but the simple implementation for U-Boot's .xfer() used here
does not work for Linux' .transfer_one() because of the OVRES flag set
all the time.  I guess a more sophisticated approach has to be taken in
Linux with interrupts, completions and/or dma?

According to commit 24c8ff4684c5 ("spi: Add Atmel QuadSPI driver")
message, the initial U-Boot variant of this driver was ported from Linux
v5.1-rc5 back then.  I hope it's okay to squash the fixes added to Linux
after that into patch 2 and 3 of this series?

Patch 4 and 5 come from my efforts to hack this feature into the Linux
driver.  (Not sure if those should be added to the Linux driver
anyways, even if nobody ever implements transfer_one() over there?)

Patch 5 is the actual work, very much inspired by the current U-Boot
driver atmel_spi for the generic SPI controllers on at91 family.

Patch 1 is copied from my other spi series for U-Boot, just added it
here for better build results.

Patch 6 is optional, because not portable towards Linux.

Tested on top of v2024.10, because v2025.01 won't build as debug
for sam9x60 as described in another thread.  But there are almost no
changes related to at91 socs, boards, and drivers in the last months
here, so it should be comparable.

Greets
Alex

(Cc-ing the contributors of the Linux fixes here.)
Cc: Tudor Ambarus <tudor.amba...@microchip.com>
Cc: Yoshitaka Ikeda <ik...@nskint.co.jp>
Cc: Csókás Bence <csokas.be...@prolan.hu>

Alexander Dahl (7):
  spi: atmel-quadspi: Depend on SPI_MEM
  spi: atmel-quadspi: Port collected fixes from Linux v5.10 and v5.15
  spi: atmel-quadspi: Avoid overwriting MR register settings
  spi: atmel-quadspi: Remove default mode setting at probe time
  spi: atmel-quadspi: Allow setting SMM to classic SPI mode
  spi: atmel-quadspi: Add support for classic SPI mode
  spi: atmel-quadspi: Improve probe debugging

 drivers/spi/Kconfig         |   2 +-
 drivers/spi/atmel-quadspi.c | 294 ++++++++++++++++++++++++++++--------
 2 files changed, 228 insertions(+), 68 deletions(-)


base-commit: 2eed5a1ff36217372e19f7513bd07077fc76718a
-- 
2.39.5

Reply via email to