[PATCH 0/7] [U-Boot] spi: atmel-quadspi: Refresh and add classic mode support

Eugen Hristev eugen.hristev at linaro.org
Thu Jan 30 15:53:14 CET 2025



On 1/30/25 16:49, Tom Rini wrote:
> On Thu, Jan 30, 2025 at 04:07:27PM +0200, Eugen Hristev wrote:
>>
>>
>> On 1/23/25 14:12, Alexander Dahl wrote:
>>> 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.ambarus at microchip.com>
>>> Cc: Yoshitaka Ikeda <ikeda at nskint.co.jp>
>>> Cc: Csókás Bence <csokas.bence at 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
>>
>> Hello Alex,
>>
>> I had a quick look over your patches, but it would require to get a
>> review from SPI maintainers to apply these.
> 
> Our SPI maintainer is currently not very responsive. Would you be OK
> taking this via the atmel tree since it's an atmel platform driver and
> not core changes? Thanks!
> 

Yes, that is fine. However the review would be to the best of my ability
only.


More information about the U-Boot mailing list