[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251201-spi-add-multi-bus-support-v3-7-34e05791de83@baylibre.com>
Date: Mon, 01 Dec 2025 20:20:45 -0600
From: David Lechner <dlechner@...libre.com>
To: Mark Brown <broonie@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Marcelo Schmitt <marcelo.schmitt@...log.com>,
Michael Hennerich <michael.hennerich@...log.com>,
Nuno Sá <nuno.sa@...log.com>,
Jonathan Cameron <jic23@...nel.org>, Andy Shevchenko <andy@...nel.org>
Cc: Sean Anderson <sean.anderson@...ux.dev>, linux-spi@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-iio@...r.kernel.org, David Lechner <dlechner@...libre.com>
Subject: [PATCH v3 7/7] dt-bindings: iio: adc: adi,ad4030: add data-lanes
property
Add data-lanes property to specify the number of data lanes used on the
ad463x chips that support reading two samples at the same time using
two data lanes with a capable SPI controller.
Signed-off-by: David Lechner <dlechner@...libre.com>
---
v3 changes: new patch
I added this one to give a real-world use case where spi-rx-bus-width
was not sufficient to fully describe the hardware configuration.
spi-rx-bus-width = <4>; alone could be be interpreted as either:
+--------------+ +----------+
| SPI | | AD4630 |
| Controller | | ADC |
| | | |
| SDIA0 |<---| SDOA0 |
| SDIA1 |<---| SDOA1 |
| SDIA2 |<---| SDOA2 |
| SDIA3 |<---| SDOA3 |
| | | |
| SDIB0 |x | SDOB0 |
| SDIB1 |x | SDOB1 |
| SDIB2 |x | SDOB2 |
| SDIB3 |x | SDOB3 |
| | | |
+--------------+ +---------+
or
+--------------+ +----------+
| SPI | | AD4630 |
| Controller | | ADC |
| | | |
| SDIA0 |<---| SDOA0 |
| SDIA1 |<---| SDOA1 |
| SDIA2 |x | SDOA2 |
| SDIA3 |x | SDOA3 |
| | | |
| SDIB0 |<---| SDOB0 |
| SDIB1 |<---| SDOB1 |
| SDIB2 |x | SDOB2 |
| SDIB3 |x | SDOB3 |
| | | |
+--------------+ +---------+
Now, with data-lanes having a default value of [0] (inherited from
spi-peripheral-props.yaml), specifying:
spi-rx-bus-width = <4>;
is unambiguously the first case and the example given in the binding
documentation is the second case:
spi-rx-bus-width = <2>;
data-lanes = <0>, <1>;
---
.../devicetree/bindings/iio/adc/adi,ad4030.yaml | 36 ++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad4030.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad4030.yaml
index 54e7349317b77f032ecafde0102bf3a09f140f03..315ebcfbfa28888a4518073c1b286f0993f83673 100644
--- a/Documentation/devicetree/bindings/iio/adc/adi,ad4030.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/adi,ad4030.yaml
@@ -39,6 +39,10 @@ properties:
spi-rx-bus-width:
enum: [1, 2, 4]
+ data-lanes:
+ minItems: 1
+ maxItems: 2
+
vdd-5v-supply: true
vdd-1v8-supply: true
vio-supply: true
@@ -88,6 +92,17 @@ oneOf:
unevaluatedProperties: false
+allOf:
+ - if:
+ properties:
+ compatible:
+ enum:
+ - adi,ad4030-24
+ - adi,ad4032-24
+ then:
+ properties:
+ data-lanes: false
+
examples:
- |
#include <dt-bindings/gpio/gpio.h>
@@ -108,3 +123,24 @@ examples:
reset-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
};
};
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ spi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ adc@0 {
+ compatible = "adi,ad4630-24";
+ reg = <0>;
+ spi-max-frequency = <80000000>;
+ spi-rx-bus-width = <2>;
+ data-lanes = <0>, <1>;
+ vdd-5v-supply = <&supply_5V>;
+ vdd-1v8-supply = <&supply_1_8V>;
+ vio-supply = <&supply_1_8V>;
+ ref-supply = <&supply_5V>;
+ cnv-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+ };
+ };
--
2.43.0
Powered by blists - more mailing lists