Add spi-tx-lane-map and spi-rx-lane-map properties to the SPI peripheral
device tree binding. These properties allow specifying the mapping of
peripheral data lanes to controller data lanes. This is needed e.g. when
some lanes are skipped on the controller side so that the controller
can correctly route data to/from the peripheral.
Signed-off-by: David Lechner <dlechner@baylibre.com>
---
v4 changes:
- This replaces the data-lanes property from the previous revision. Now
there are separate properties for tx and rx lane maps. And instead of
being the primary property for determining the number of lanes, this
is only needed in special cases where the mapping is non-trivial.
---
.../devicetree/bindings/spi/spi-peripheral-props.yaml | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml
index 59ddead7da14..2f278f145f78 100644
--- a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml
+++ b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml
@@ -75,6 +75,13 @@ properties:
enum: [0, 1, 2, 4, 8]
default: [1]
+ spi-rx-lane-map:
+ description: Mapping of peripheral RX lanes to controller RX lanes.
+ Each index in the array represents a peripheral RX lane, and the value
+ at that index represents the corresponding controller RX lane.
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ default: [0, 1, 2, 3, 4, 5, 6, 7]
+
spi-rx-delay-us:
description:
Delay, in microseconds, after a read transfer.
@@ -99,6 +106,13 @@ properties:
enum: [0, 1, 2, 4, 8]
default: [1]
+ spi-tx-lane-map:
+ description: Mapping of peripheral TX lanes to controller TX lanes.
+ Each index in the array represents a peripheral TX lane, and the value
+ at that index represents the corresponding controller TX lane.
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ default: [0, 1, 2, 3, 4, 5, 6, 7]
+
spi-tx-delay-us:
description:
Delay, in microseconds, after a write transfer.
--
2.43.0
On 12/19, David Lechner wrote: > Add spi-tx-lane-map and spi-rx-lane-map properties to the SPI peripheral > device tree binding. These properties allow specifying the mapping of > peripheral data lanes to controller data lanes. This is needed e.g. when > some lanes are skipped on the controller side so that the controller > can correctly route data to/from the peripheral. > > Signed-off-by: David Lechner <dlechner@baylibre.com> > --- > > v4 changes: > - This replaces the data-lanes property from the previous revision. Now > there are separate properties for tx and rx lane maps. And instead of > being the primary property for determining the number of lanes, this > is only needed in special cases where the mapping is non-trivial. > --- > .../devicetree/bindings/spi/spi-peripheral-props.yaml | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml > index 59ddead7da14..2f278f145f78 100644 > --- a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml > +++ b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml > @@ -75,6 +75,13 @@ properties: > enum: [0, 1, 2, 4, 8] > default: [1] > > + spi-rx-lane-map: > + description: Mapping of peripheral RX lanes to controller RX lanes. > + Each index in the array represents a peripheral RX lane, and the value > + at that index represents the corresponding controller RX lane. These are peripheral props so I guess RX is from peripheral perspective. In that case, those would be routed to controller TX lanes, no? Could maybe use MISO/MOSI or COPI/CIPO (Controller Out Peripheral In) nomenclature but that might become too verboragic. > + $ref: /schemas/types.yaml#/definitions/uint32-array > + default: [0, 1, 2, 3, 4, 5, 6, 7] > + > spi-rx-delay-us: > description: > Delay, in microseconds, after a read transfer. > @@ -99,6 +106,13 @@ properties: > enum: [0, 1, 2, 4, 8] > default: [1] > > + spi-tx-lane-map: > + description: Mapping of peripheral TX lanes to controller TX lanes. > + Each index in the array represents a peripheral TX lane, and the value > + at that index represents the corresponding controller TX lane. Similar thoughts about the tx side.
On Thu, Jan 8, 2026 at 6:28 AM Marcelo Schmitt <marcelo.schmitt1@gmail.com> wrote: > > On 12/19, David Lechner wrote: > > Add spi-tx-lane-map and spi-rx-lane-map properties to the SPI peripheral > > device tree binding. These properties allow specifying the mapping of > > peripheral data lanes to controller data lanes. This is needed e.g. when > > some lanes are skipped on the controller side so that the controller > > can correctly route data to/from the peripheral. > > > > Signed-off-by: David Lechner <dlechner@baylibre.com> > > --- > > > > v4 changes: > > - This replaces the data-lanes property from the previous revision. Now > > there are separate properties for tx and rx lane maps. And instead of > > being the primary property for determining the number of lanes, this > > is only needed in special cases where the mapping is non-trivial. > > --- > > .../devicetree/bindings/spi/spi-peripheral-props.yaml | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml > > index 59ddead7da14..2f278f145f78 100644 > > --- a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml > > +++ b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml > > @@ -75,6 +75,13 @@ properties: > > enum: [0, 1, 2, 4, 8] > > default: [1] > > > > + spi-rx-lane-map: > > + description: Mapping of peripheral RX lanes to controller RX lanes. > > + Each index in the array represents a peripheral RX lane, and the value > > + at that index represents the corresponding controller RX lane. > These are peripheral props so I guess RX is from peripheral perspective. > In that case, those would be routed to controller TX lanes, no? I'm pretty sure it's the input to the controller like the other rx properties. Like rx-delay is for reads. I guess "peripheral RX lanes to controller RX lanes" is a bit oddly worded. Rob
On Fri, 19 Dec 2025 15:32:10 -0600, David Lechner wrote: > Add spi-tx-lane-map and spi-rx-lane-map properties to the SPI peripheral > device tree binding. These properties allow specifying the mapping of > peripheral data lanes to controller data lanes. This is needed e.g. when > some lanes are skipped on the controller side so that the controller > can correctly route data to/from the peripheral. > > Signed-off-by: David Lechner <dlechner@baylibre.com> > --- > > v4 changes: > - This replaces the data-lanes property from the previous revision. Now > there are separate properties for tx and rx lane maps. And instead of > being the primary property for determining the number of lanes, this > is only needed in special cases where the mapping is non-trivial. > --- > .../devicetree/bindings/spi/spi-peripheral-props.yaml | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
On Fri, 19 Dec 2025 15:32:10 -0600, David Lechner wrote: > Add spi-tx-lane-map and spi-rx-lane-map properties to the SPI peripheral > device tree binding. These properties allow specifying the mapping of > peripheral data lanes to controller data lanes. This is needed e.g. when > some lanes are skipped on the controller side so that the controller > can correctly route data to/from the peripheral. > > Signed-off-by: David Lechner <dlechner@baylibre.com> > --- > > v4 changes: > - This replaces the data-lanes property from the previous revision. Now > there are separate properties for tx and rx lane maps. And instead of > being the primary property for determining the number of lanes, this > is only needed in special cases where the mapping is non-trivial. > --- > .../devicetree/bindings/spi/spi-peripheral-props.yaml | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/spi/andestech,ae350-spi.example.dtb: spi@f0b00000 (andestech,ae350-spi): flash@0:spi-rx-bus-width: [4] is not one of [1, 4] from schema $id: http://devicetree.org/schemas/spi/andestech,ae350-spi.yaml /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/spi/andestech,ae350-spi.example.dtb: spi@f0b00000 (andestech,ae350-spi): flash@0:spi-tx-bus-width: [4] is not one of [1, 4] from schema $id: http://devicetree.org/schemas/spi/andestech,ae350-spi.yaml doc reference errors (make refcheckdocs): See https://patchwork.kernel.org/project/devicetree/patch/20251219-spi-add-multi-bus-support-v4-2-145dc5204cd8@baylibre.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
© 2016 - 2026 Red Hat, Inc.