From: David Lechner <dlechner@baylibre.com>
To: "Mark Brown" <broonie@kernel.org>,
"Jonathan Cameron" <jic23@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Nuno Sá" <nuno.sa@analog.com>
Cc: David Lechner <dlechner@baylibre.com>,
Michael Hennerich <Michael.Hennerich@analog.com>,
Lars-Peter Clausen <lars@metafoo.de>,
David Jander <david@protonic.nl>,
Martin Sperl <kernel@martin.sperl.org>,
linux-spi@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org
Subject: [PATCH RFC v3 5/9] spi: dt-bindings: axi-spi-engine: document spi-offloads
Date: Mon, 22 Jul 2024 16:57:12 -0500 [thread overview]
Message-ID: <20240722-dlech-mainline-spi-engine-offload-2-v3-5-7420e45df69b@baylibre.com> (raw)
In-Reply-To: <20240722-dlech-mainline-spi-engine-offload-2-v3-0-7420e45df69b@baylibre.com>
The AXI SPI Engine has support for hardware offloading capabilities.
There can be up to 32 offload instances per SPI controller, so the
bindings limit the value accordingly.
Signed-off-by: David Lechner <dlechner@baylibre.com>
---
RFC: I have a few questions about this one...
1. The trigger-source properties are borrowed from the leds bindings.
Do we want to promote this to a generic binding that can be used by
any type of device?
2. Some folks are working on adding DMA to TX stream support to the
AXI SPI Engine hardware. I assume that the `dmas` property is like
others where the order/index in the phandle array matters. So this
would mean that for device that only uses 1 out of the 32 offloads
and only uses 1 TX DMA channel, we would have to have 32 <0>s for
each of the possible RX dmas in the array. Any way to do some kind
of mapping to avoid this?
3. In v2, we discussed about having some sort of data processing unit
between the AXI SPI Engine RX stream interface and the DMA channel
interface on the DMA controller. I haven't included this in the
bindings yet because we don't have a user yet. But it was suggested
that we could use the graph bindings for this. So here is what that
might look like:
Additional property for the AXI SPI Engine controller bindings:
out-ports:
$ref: /schemas/graph.yaml#/properties/ports
unevaluatedProperties: false
patternProperties:
"^port@1?[0-9a-f]$":
$ref: /schemas/graph.yaml#/properties/port
unevaluatedProperties: false
And this would be connected to a device node similar to this:
ip-block@3000 {
// Something similar to, but not exactly like
// http://analogdevicesinc.github.io/hdl/library/util_extract/index.html
compatible = "adi,crc-check";
// clock that runs this IP block
clocks = <&sysclk 15>;
// interrupt raised on bad CRC
interrupts = <&intc 99>;
interrupt-names = "crc";
// output stream with CRC byte removed piped to DMA
dmas = <&adc_dma 0>;
dma-names = "rx";
port {
adc_crc_check: endpoint {
remote-endpoint: <&offload0_rx>;
};
};
};
Does this sound reasonable?
v3 changes:
* Added #spi-offload-cells property.
* Added properties for triggers and RX data stream connected to DMA.
v2 changes:
This is basically a new patch. It partially replaces "dt-bindings: iio:
offload: add binding for PWM/DMA triggered buffer".
The controller no longer has an offloads object node and the
spi-offloads property is now a standard SPI peripheral property.
---
.../bindings/spi/adi,axi-spi-engine.yaml | 41 ++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/Documentation/devicetree/bindings/spi/adi,axi-spi-engine.yaml b/Documentation/devicetree/bindings/spi/adi,axi-spi-engine.yaml
index d48faa42d025..ec18eabb993a 100644
--- a/Documentation/devicetree/bindings/spi/adi,axi-spi-engine.yaml
+++ b/Documentation/devicetree/bindings/spi/adi,axi-spi-engine.yaml
@@ -41,6 +41,42 @@ properties:
- const: s_axi_aclk
- const: spi_clk
+ '#spi-offload-cells':
+ description: The cell value is the offload instance number.
+ const: 1
+
+ trigger-sources:
+ description:
+ An array of trigger source phandles for offload instances. The index in
+ the array corresponds to the offload instance number.
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+
+ dmas:
+ description:
+ DMA channels connected to the output stream interface of an offload instance.
+ minItems: 1
+ maxItems: 32
+
+ dma-names:
+ minItems: 1
+ maxItems: 32
+ items:
+ pattern: "^offload(?:[12]?[0-9]|3[01])-rx$"
+
+patternProperties:
+ "^.*@[0-9a-f]+$":
+ type: object
+ $ref: spi-peripheral-props.yaml
+ additionalProperties: true
+ properties:
+ spi-offloads:
+ description:
+ An array of 1 or more offload instance numbers assigned to this
+ peripheral.
+ items:
+ minimum: 0
+ maximum: 31
+
required:
- compatible
- reg
@@ -59,6 +95,11 @@ examples:
clocks = <&clkc 15>, <&clkc 15>;
clock-names = "s_axi_aclk", "spi_clk";
+ #spi-offload-cells = <1>;
+ trigger-sources = <&trigger_clock>;
+ dmas = <&dma 0>;
+ dma-names = "offload0-rx";
+
#address-cells = <1>;
#size-cells = <0>;
--
2.43.0
next prev parent reply other threads:[~2024-07-22 22:01 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-22 21:57 [PATCH RFC v3 0/9] spi: axi-spi-engine: add offload support David Lechner
2024-07-22 21:57 ` [PATCH RFC v3 1/9] spi: dt-bindings: add spi-offload properties David Lechner
2024-07-26 11:47 ` Rob Herring
2024-07-22 21:57 ` [PATCH RFC v3 2/9] spi: add basic support for SPI offloading David Lechner
2024-07-23 7:44 ` Nuno Sá
2024-07-27 13:15 ` Jonathan Cameron
2024-07-30 19:35 ` David Lechner
2024-08-03 9:58 ` Jonathan Cameron
2024-07-22 21:57 ` [PATCH RFC v3 3/9] spi: add support for hardware triggered offload David Lechner
2024-07-23 7:53 ` Nuno Sá
2024-07-23 14:30 ` David Lechner
2024-07-24 12:59 ` Nuno Sá
2024-07-27 13:26 ` Jonathan Cameron
2024-07-22 21:57 ` [PATCH RFC v3 4/9] spi: add offload TX/RX streaming APIs David Lechner
2024-07-22 21:57 ` David Lechner [this message]
2024-07-26 12:38 ` [PATCH RFC v3 5/9] spi: dt-bindings: axi-spi-engine: document spi-offloads Rob Herring
2024-07-26 19:17 ` David Lechner
2024-08-14 15:58 ` Conor Dooley
2024-08-14 17:14 ` David Lechner
2024-07-22 21:57 ` [PATCH RFC v3 6/9] spi: axi-spi-engine: implement offload support David Lechner
2024-07-23 8:01 ` Nuno Sá
2024-07-23 14:19 ` David Lechner
2024-07-24 13:07 ` Nuno Sá
2024-07-22 21:57 ` [PATCH RFC v3 7/9] iio: buffer-dmaengine: generalize requesting DMA channel David Lechner
2024-07-27 13:43 ` Jonathan Cameron
2024-07-22 21:57 ` [PATCH RFC v3 8/9] dt-bindings: iio: adc: adi,ad7944: add SPI offload properties David Lechner
2024-07-22 21:57 ` [PATCH RFC v3 9/9] iio: adc: ad7944: add support for SPI offload David Lechner
2024-07-23 8:22 ` Nuno Sá
2024-07-27 13:50 ` Jonathan Cameron
2024-07-23 7:35 ` [PATCH RFC v3 0/9] spi: axi-spi-engine: add offload support Nuno Sá
2024-07-23 13:48 ` David Lechner
2024-07-24 13:16 ` Nuno Sá
2024-07-23 8:58 ` Conor Dooley
2024-08-14 16:06 ` Conor Dooley
2024-09-05 11:33 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240722-dlech-mainline-spi-engine-offload-2-v3-5-7420e45df69b@baylibre.com \
--to=dlechner@baylibre.com \
--cc=Michael.Hennerich@analog.com \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=david@protonic.nl \
--cc=devicetree@vger.kernel.org \
--cc=jic23@kernel.org \
--cc=kernel@martin.sperl.org \
--cc=krzk+dt@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).