On Fri, 2024-05-10 at 19:44 -0500, David Lechner wrote: > SPI offloading is a feature that allows the SPI controller to perform > complex transfers without CPU intervention. This is useful, e.g. for > high-speed data acquisition. > > This patch adds the basic infrastructure to support SPI offloading. It > introduces new callbacks that are to be implemented by controllers with > offload capabilities. > > On SPI device probe, the standard spi-offloads devicetree property is > parsed and passed to the controller driver to reserve the resources > requested by the peripheral via the map_channel() callback. > > The peripheral driver can then use spi_offload_prepare() to load a SPI > message into the offload hardware. > > If the controller supports it, this message can then be passed to the > SPI message queue as if it was a normal message. Future patches will > will also implement a way to use a hardware trigger to start the message > transfers rather than going through the message queue. > > Signed-off-by: David Lechner <dlechner@xxxxxxxxxxxx> > --- > > v2 changes: > > This is a rework of "spi: add core support for controllers with offload > capabilities" from v1. > > The spi_offload_get() function that Nuno didn't like is gone. Instead, > there is now a mapping callback that uses the new generic devicetree > binding to request resources automatically when a SPI device is probed. > Yeah, what I disliked the most was adding the platform devices from spi-engine driver and then the complexity in the IIO trigger part of it. I also didn't like (as you said) for the peripheral to have to explicitly request an offload but, IIRC, Mark was actually ok with the spi_offload_get/put() mechanism so let's see what he has to say. He's main point (I think) was for the controllers to have a way to know which offload instance is busy or not (but I guess controllers can keep track of that as well with this approach and using the enable/disable callbacks or the prepare/unprepare). THB, I do like this approach (and it is what I had in mind) and it's simple enough while covering what we know about this feature atm. - Nuno Sá