* [PATCH v2 0/2] spi: davinci: Convert bindings to DT schema and clean up DTS
@ 2026-08-15 22:23 Bhargav Joshi
2026-08-15 22:23 ` [PATCH v2 1/2] ARM: dts: ti: keystone-k2l: Rename ti,davinci-spi-num-cs to num-cs Bhargav Joshi
2026-08-15 22:23 ` [PATCH v2 2/2] dt-bindings: spi: ti,davinci-spi: convert to DT schema Bhargav Joshi
0 siblings, 2 replies; 4+ messages in thread
From: Bhargav Joshi @ 2026-08-15 22:23 UTC (permalink / raw)
To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Nishanth Menon, Santosh Shilimkar
Cc: linux-spi, devicetree, linux-kernel, linux-arm-kernel, goledhruva,
m-chawdhry, daniel.baluta, simona.toaca, j.bhargav.u
This series converts the TI DaVinci/Keystone SPI controller device tree
bindings from the legacy text format to DT schema.
- Patch 1 renames property ti,davinci-spi-num-cs from keystone-k2l.dtsi,
as the driver uses the standard num-cs property.
- Patch 2 Converts ti,davinci-spi from text to DT schema.
Signed-off-by: Bhargav Joshi <j.bhargav.u@gmail.com>
---
Changes in v2:
- patch 1: Instead of deleting ti,davinci-spi-num-cs, renamed it to
num-cs to properly preserve the hardware's intended chip select
limits
- patch 2: Removed maximum: 6 constraint from num-cs.
- patch 2: Add standalone support for ti,dm6441-spi in compatibles.
- Link to v1: https://lore.kernel.org/r/20260816-ti-davinci-spi-v1-0-a7f57dfd5262@gmail.com
---
Bhargav Joshi (2):
ARM: dts: ti: keystone-k2l: Rename ti,davinci-spi-num-cs to num-cs
dt-bindings: spi: ti,davinci-spi: convert to DT schema
.../devicetree/bindings/spi/spi-davinci.txt | 100 -----------------
.../bindings/spi/spi-peripheral-props.yaml | 1 +
.../spi/ti,davinci-spi-peripheral-props.yaml | 25 +++++
.../devicetree/bindings/spi/ti,davinci-spi.yaml | 118 +++++++++++++++++++++
arch/arm/boot/dts/ti/keystone/keystone-k2l.dtsi | 6 +-
5 files changed, 147 insertions(+), 103 deletions(-)
---
base-commit: 3eb40771c00a8488fa6ed2cc1fe203477908bf38
change-id: 20260816-ti-davinci-spi-e64e4e48b6b6
Best regards,
--
Bhargav
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] ARM: dts: ti: keystone-k2l: Rename ti,davinci-spi-num-cs to num-cs
2026-08-15 22:23 [PATCH v2 0/2] spi: davinci: Convert bindings to DT schema and clean up DTS Bhargav Joshi
@ 2026-08-15 22:23 ` Bhargav Joshi
2026-08-15 22:23 ` [PATCH v2 2/2] dt-bindings: spi: ti,davinci-spi: convert to DT schema Bhargav Joshi
1 sibling, 0 replies; 4+ messages in thread
From: Bhargav Joshi @ 2026-08-15 22:23 UTC (permalink / raw)
To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Nishanth Menon, Santosh Shilimkar
Cc: linux-spi, devicetree, linux-kernel, linux-arm-kernel, goledhruva,
m-chawdhry, daniel.baluta, simona.toaca, j.bhargav.u
Property ti,davinci-spi-num-cs is present in the SPI
nodes of keystone-k2l.dtsi, but it has never been documented in the
bindings or matched by driver. Driver relies on standard num-cs
property instead. Use standard property num-cs instad of
davinci-spi-num-cs.
Signed-off-by: Bhargav Joshi <j.bhargav.u@gmail.com>
---
arch/arm/boot/dts/ti/keystone/keystone-k2l.dtsi | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/ti/keystone/keystone-k2l.dtsi b/arch/arm/boot/dts/ti/keystone/keystone-k2l.dtsi
index 330b437b667f..39a846d7f8a4 100644
--- a/arch/arm/boot/dts/ti/keystone/keystone-k2l.dtsi
+++ b/arch/arm/boot/dts/ti/keystone/keystone-k2l.dtsi
@@ -401,15 +401,15 @@ mdio: mdio@26200f00 {
};
&spi0 {
- ti,davinci-spi-num-cs = <5>;
+ num-cs = <5>;
};
&spi1 {
- ti,davinci-spi-num-cs = <3>;
+ num-cs = <3>;
};
&spi2 {
- ti,davinci-spi-num-cs = <5>;
+ num-cs = <5>;
/* Pin muxed. Enabled and configured by Bootloader */
status = "disabled";
};
--
2.55.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] dt-bindings: spi: ti,davinci-spi: convert to DT schema
2026-08-15 22:23 [PATCH v2 0/2] spi: davinci: Convert bindings to DT schema and clean up DTS Bhargav Joshi
2026-08-15 22:23 ` [PATCH v2 1/2] ARM: dts: ti: keystone-k2l: Rename ti,davinci-spi-num-cs to num-cs Bhargav Joshi
@ 2026-08-15 22:23 ` Bhargav Joshi
2026-08-15 22:31 ` sashiko-bot
1 sibling, 1 reply; 4+ messages in thread
From: Bhargav Joshi @ 2026-08-15 22:23 UTC (permalink / raw)
To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartosz Golaszewski, Nishanth Menon, Santosh Shilimkar
Cc: linux-spi, devicetree, linux-kernel, linux-arm-kernel, goledhruva,
m-chawdhry, daniel.baluta, simona.toaca, j.bhargav.u
Convert the TI DaVinci/Keystone SPI controller binding from text format
to DT schema.
Changes during the conversion:
- Create a separate ti,davinci-spi-peripheral-props.yaml schema to
properly define the ti,spi-wdelay peripheral property.
- Add missing dmas and dma-names properties.
- Add constraints to ti,spi-wdelay based on the 6-bit width
of the SPIFMTn.WDELAY hardware register field.
Signed-off-by: Bhargav Joshi <j.bhargav.u@gmail.com>
---
.../devicetree/bindings/spi/spi-davinci.txt | 100 -----------------
.../bindings/spi/spi-peripheral-props.yaml | 1 +
.../spi/ti,davinci-spi-peripheral-props.yaml | 25 +++++
.../devicetree/bindings/spi/ti,davinci-spi.yaml | 118 +++++++++++++++++++++
4 files changed, 144 insertions(+), 100 deletions(-)
diff --git a/Documentation/devicetree/bindings/spi/spi-davinci.txt b/Documentation/devicetree/bindings/spi/spi-davinci.txt
deleted file mode 100644
index f012888656ec..000000000000
--- a/Documentation/devicetree/bindings/spi/spi-davinci.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-Davinci SPI controller device bindings
-
-Links on DM:
-Keystone 2 - https://www.ti.com/lit/ug/sprugp2a/sprugp2a.pdf
-dm644x - https://www.ti.com/lit/ug/sprue32a/sprue32a.pdf
-OMAP-L138/da830 - http://www.ti.com/lit/ug/spruh77a/spruh77a.pdf
-
-Required properties:
-- #address-cells: number of cells required to define a chip select
- address on the SPI bus. Should be set to 1.
-- #size-cells: should be zero.
-- compatible:
- - "ti,dm6441-spi" for SPI used similar to that on DM644x SoC family
- - "ti,da830-spi" for SPI used similar to that on DA8xx SoC family
- - "ti,keystone-spi" for SPI used similar to that on Keystone2 SoC
- family
-- reg: Offset and length of SPI controller register space
-- num-cs: Number of chip selects. This includes internal as well as
- GPIO chip selects.
-- ti,davinci-spi-intr-line: interrupt line used to connect the SPI
- IP to the interrupt controller within the SoC. Possible values
- are 0 and 1. Manual says one of the two possible interrupt
- lines can be tied to the interrupt controller. Set this
- based on a specific SoC configuration.
-- interrupts: interrupt number mapped to CPU.
-- clocks: spi clk phandle
- For 66AK2G this property should be set per binding,
- Documentation/devicetree/bindings/clock/ti,sci-clk.yaml
-
-SoC-specific Required Properties:
-
-The following are mandatory properties for Keystone 2 66AK2G SoCs only:
-
-- power-domains: Should contain a phandle to a PM domain provider node
- and an args specifier containing the SPI device id
- value. This property is as per the binding,
-
-Optional:
-- cs-gpios: gpio chip selects
- For example to have 3 internal CS and 2 GPIO CS, user could define
- cs-gpios = <0>, <0>, <0>, <&gpio1 30 0>, <&gpio1 31 0>;
- where first three are internal CS and last two are GPIO CS.
-
-Optional properties for slave devices:
-SPI slave nodes can contain the following properties.
-Not all SPI Peripherals from Texas Instruments support this.
-Please check SPI peripheral documentation for a device before using these.
-
-- ti,spi-wdelay : delay between transmission of words
- (SPIFMTn.WDELAY, SPIDAT1.WDEL) must be specified in number of SPI module
- clock periods.
-
- delay = WDELAY * SPI_module_clock_period + 2 * SPI_module_clock_period
-
-Below is timing diagram which shows functional meaning of
-"ti,spi-wdelay" parameter.
-
- +-+ +-+ +-+ +-+ +-+ +-+ +-+ +-+
-SPI_CLK | | | | | | | | | | | | | | | |
- +----------+ +-+ +-+ +-+ +-+ +---------------------------+ +-+ +-+ +-
-
-SPI_SOMI/SIMO+-----------------+ +-----------
- +----------+ word1 +---------------------------+word2
- +-----------------+ +-----------
- WDELAY
- <-------------------------->
-
-Example of a NOR flash slave device (n25q032) connected to DaVinci
-SPI controller device over the SPI bus.
-
-spi0:spi@20bf0000 {
- #address-cells = <1>;
- #size-cells = <0>;
- compatible = "ti,dm6446-spi";
- reg = <0x20BF0000 0x1000>;
- num-cs = <4>;
- ti,davinci-spi-intr-line = <0>;
- interrupts = <338>;
- clocks = <&clkspi>;
-
- flash: flash@0 {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "st,m25p32";
- spi-max-frequency = <25000000>;
- reg = <0>;
- ti,spi-wdelay = <8>;
-
- partition@0 {
- label = "u-boot-spl";
- reg = <0x0 0x80000>;
- read-only;
- };
-
- partition@1 {
- label = "test";
- reg = <0x80000 0x380000>;
- };
- };
-};
diff --git a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml
index 880a9f624566..cb5d608998e1 100644
--- a/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml
+++ b/Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml
@@ -155,5 +155,6 @@ allOf:
- $ref: fsl,dspi-peripheral-props.yaml#
- $ref: samsung,spi-peripheral-props.yaml#
- $ref: nvidia,tegra210-quad-peripheral-props.yaml#
+ - $ref: ti,davinci-spi-peripheral-props.yaml#
additionalProperties: true
diff --git a/Documentation/devicetree/bindings/spi/ti,davinci-spi-peripheral-props.yaml b/Documentation/devicetree/bindings/spi/ti,davinci-spi-peripheral-props.yaml
new file mode 100644
index 000000000000..1060f176c6cb
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/ti,davinci-spi-peripheral-props.yaml
@@ -0,0 +1,25 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spi/ti,davinci-spi-peripheral-props.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI DaVinci/Keystone SPI Peripheral Properties
+
+maintainers:
+ - Bartosz Golaszewski <brgl@kernel.org>
+
+description:
+ Peripheral-specific properties for SPI devices attached to a TI
+ DaVinci/Keystone SPI controller.
+
+properties:
+ ti,spi-wdelay:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ minimum: 0
+ maximum: 63
+ description:
+ delay between transmission of words (SPIFMTn.WDELAY, SPIDAT1.WDEL)
+ must be specified in number of SPI module clock periods.
+
+additionalProperties: true
diff --git a/Documentation/devicetree/bindings/spi/ti,davinci-spi.yaml b/Documentation/devicetree/bindings/spi/ti,davinci-spi.yaml
new file mode 100644
index 000000000000..b685082de721
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/ti,davinci-spi.yaml
@@ -0,0 +1,118 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spi/ti,davinci-spi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI DaVinci/Keystone SPI Controller
+
+maintainers:
+ - Bartosz Golaszewski <brgl@kernel.org>
+
+properties:
+ compatible:
+ oneOf:
+ - enum:
+ - ti,da830-spi
+ - ti,keystone-spi
+ - ti,dm6441-spi
+ - items:
+ - const: ti,keystone-spi
+ - const: ti,dm6441-spi
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ power-domains:
+ maxItems: 1
+ description:
+ Should contain a phandle to a PM domain provider node
+ and an args specifier containing the SPI device id
+ value.
+
+ num-cs:
+ minimum: 1
+ default: 1
+ description:
+ Number of chip selects supported by the controller. This
+ includes both internal and GPIO chip selects.
+
+ ti,davinci-spi-intr-line:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [0, 1]
+ description:
+ Interrupt line used to connect the SPI IP to the interrupt
+ controller within the SoC. The SPI peripheral can route its
+ interrupt output to one of two lines (INT0 or INT1). Set
+ this based on the SoC-specific wiring to the interrupt
+ controller.
+
+ dmas:
+ items:
+ - description: RX DMA channel
+ - description: TX DMA channel
+
+ dma-names:
+ items:
+ - const: rx
+ - const: tx
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - ti,davinci-spi-intr-line
+
+allOf:
+ - $ref: spi-controller.yaml#
+ - if:
+ properties:
+ compatible:
+ const: ti,keystone-spi
+ then:
+ required:
+ - power-domains
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ spi@20bf0000 {
+ compatible = "ti,keystone-spi","ti,dm6441-spi";
+ reg = <0x20bf0000 0x1000>;
+ num-cs = <4>;
+ ti,davinci-spi-intr-line = <0>;
+ interrupts = <338>;
+ clocks = <&clkspi>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ spi-max-frequency = <25000000>;
+ reg = <0>;
+ ti,spi-wdelay = <8>;
+ };
+ };
+
+ - |
+ spi@41000 {
+ compatible = "ti,da830-spi";
+ reg = <0x41000 0x1000>;
+ num-cs = <6>;
+ ti,davinci-spi-intr-line = <1>;
+ interrupts = <20>;
+ dmas = <&edma0 14 0>, <&edma0 15 0>;
+ dma-names = "rx", "tx";
+ clocks = <&psc0 4>;
+ power-domains = <&psc0 4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
--
2.55.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 2/2] dt-bindings: spi: ti,davinci-spi: convert to DT schema
2026-08-15 22:23 ` [PATCH v2 2/2] dt-bindings: spi: ti,davinci-spi: convert to DT schema Bhargav Joshi
@ 2026-08-15 22:31 ` sashiko-bot
0 siblings, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-08-15 22:31 UTC (permalink / raw)
To: Bhargav Joshi; +Cc: conor+dt, robh, devicetree
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Schema validation conditional uses `const` instead of `contains: const`, bypassing requirements for compatible string arrays.
--
--- Patch [2]: [PATCH v2 2/2] dt-bindings: spi: ti,davinci-spi: convert to DT schema ---
commit d0abc65d99912b6ce06eea7206590c61cb52b6de
Author: Bhargav Joshi <j.bhargav.u@gmail.com>
dt-bindings: spi: ti,davinci-spi: convert to DT schema
This commit converts the TI DaVinci/Keystone SPI controller binding from text
format to DT schema. It creates a separate schema for peripheral properties,
adds missing DMA properties, and introduces constraints to the ti,spi-wdelay
property.
> diff --git a/Documentation/devicetree/bindings/spi/ti,davinci-spi.yaml b/Documentation/devicetree/bindings/spi/ti,davinci-spi.yaml
> new file mode 100644
> index 0000000000000..b685082de721c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/spi/ti,davinci-spi.yaml
[ ... ]
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - clocks
> + - ti,davinci-spi-intr-line
> +
> +allOf:
> + - $ref: spi-controller.yaml#
> + - if:
> + properties:
> + compatible:
> + const: ti,keystone-spi
[Severity: Medium]
Should this use contains: const instead of just const?
Because dt-schema evaluates this strictly based on JSON Schema rules, an array
value will not match the scalar const. As a result, when the compatible
property is an array, this conditional is bypassed.
This allows device tree configurations to silently pass dt_binding_check even
if they erroneously omit the mandatory power-domains property.
> + then:
> + required:
> + - power-domains
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + spi@20bf0000 {
> + compatible = "ti,keystone-spi","ti,dm6441-spi";
> + reg = <0x20bf0000 0x1000>;
> + num-cs = <4>;
> + ti,davinci-spi-intr-line = <0>;
> + interrupts = <338>;
> + clocks = <&clkspi>;
> + #address-cells = <1>;
> + #size-cells = <0>;
Does the lack of contains: const explain why this example passes validation
despite omitting the power-domains property?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260816-ti-davinci-spi-v2-0-6c6f5171422b@gmail.com?part=2
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-08-15 22:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-15 22:23 [PATCH v2 0/2] spi: davinci: Convert bindings to DT schema and clean up DTS Bhargav Joshi
2026-08-15 22:23 ` [PATCH v2 1/2] ARM: dts: ti: keystone-k2l: Rename ti,davinci-spi-num-cs to num-cs Bhargav Joshi
2026-08-15 22:23 ` [PATCH v2 2/2] dt-bindings: spi: ti,davinci-spi: convert to DT schema Bhargav Joshi
2026-08-15 22:31 ` sashiko-bot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.