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