[PATCH v3 2/2] dt-bindings: mmc: ti,omap2430-sdhci: convert to DT schema

Charan Pedumuru posted 2 patches 2 months, 1 week ago
There is a newer version of this series
[PATCH v3 2/2] dt-bindings: mmc: ti,omap2430-sdhci: convert to DT schema
Posted by Charan Pedumuru 2 months, 1 week ago
Convert TI OMAP SDHCI Controller binding to YAML format.
Changes during Conversion:
- Define new properties like "clocks", "clock-names",
  "ti,needs-special-reset", "ti,needs-special-hs-handling",
  "pbias-supply", "cap-mmc-dual-data-rate" and "power-domains" to
  resolve dtb_check errors.
- Remove "pinctrl-names" and "pinctrl-<n>"
  from required as they are not necessary for all DTS files.
- Remove "ti,hwmods" property entirely from the YAML as the
  DTS doesn't contain this property for the given compatibles and the
  text binding is misleading.
- Add "clocks", "clock-names", "max-frequency" and "ti,needs-special-reset"
  to the required properties based on the compatible and the text binding
  doesn't mention these properties as required.
- Add missing strings like "default-rev11", "sdr12-rev11", "sdr25-rev11",
  "hs-rev11", "sdr25-rev11" and "sleep" to pinctrl-names string array
  to resolve errors detected by dtb_check.

Signed-off-by: Charan Pedumuru <charan.pedumuru@gmail.com>
---
 .../devicetree/bindings/mmc/sdhci-omap.txt         |  43 -----
 .../devicetree/bindings/mmc/ti,omap2430-sdhci.yaml | 202 +++++++++++++++++++++
 2 files changed, 202 insertions(+), 43 deletions(-)

diff --git a/Documentation/devicetree/bindings/mmc/sdhci-omap.txt b/Documentation/devicetree/bindings/mmc/sdhci-omap.txt
deleted file mode 100644
index f91e341e6b36c410275e6f993dd08400be3fc1f8..0000000000000000000000000000000000000000
--- a/Documentation/devicetree/bindings/mmc/sdhci-omap.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-* TI OMAP SDHCI Controller
-
-Refer to mmc.txt for standard MMC bindings.
-
-For UHS devices which require tuning, the device tree should have a "cpu_thermal" node which maps to the appropriate thermal zone. This is used to get the temperature of the zone during tuning.
-
-Required properties:
-- compatible: Should be "ti,omap2430-sdhci" for omap2430 controllers
-	      Should be "ti,omap3-sdhci" for omap3 controllers
-	      Should be "ti,omap4-sdhci" for omap4 and ti81 controllers
-	      Should be "ti,omap5-sdhci" for omap5 controllers
-	      Should be "ti,dra7-sdhci" for DRA7 and DRA72 controllers
-	      Should be "ti,k2g-sdhci" for K2G
-	      Should be "ti,am335-sdhci" for am335x controllers
-	      Should be "ti,am437-sdhci" for am437x controllers
-- ti,hwmods: Must be "mmc<n>", <n> is controller instance starting 1
-	     (Not required for K2G).
-- pinctrl-names: Should be subset of "default", "hs", "sdr12", "sdr25", "sdr50",
-		 "ddr50-rev11", "sdr104-rev11", "ddr50", "sdr104",
-		 "ddr_1_8v-rev11", "ddr_1_8v" or "ddr_3_3v", "hs200_1_8v-rev11",
-		 "hs200_1_8v",
-- pinctrl-<n> : Pinctrl states as described in bindings/pinctrl/pinctrl-bindings.txt
-
-Optional properties:
-- dmas:		List of DMA specifiers with the controller specific format as described
-		in the generic DMA client binding. A tx and rx specifier is required.
-- dma-names:	List of DMA request names. These strings correspond 1:1 with the
-		DMA specifiers listed in dmas. The string naming is to be "tx"
-		and "rx" for TX and RX DMA requests, respectively.
-
-Deprecated properties:
-- ti,non-removable: Compatible with the generic non-removable property
-
-Example:
-	mmc1: mmc@4809c000 {
-		compatible = "ti,dra7-sdhci";
-		reg = <0x4809c000 0x400>;
-		ti,hwmods = "mmc1";
-		bus-width = <4>;
-		vmmc-supply = <&vmmc>; /* phandle to regulator node */
-		dmas = <&sdma 61 &sdma 62>;
-		dma-names = "tx", "rx";
-	};
diff --git a/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml b/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7683481204b2e222847244b67f9ae2684db93028
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml
@@ -0,0 +1,202 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/ti,omap2430-sdhci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI OMAP SDHCI Controller
+
+maintainers:
+  - Kishon Vijay Abraham I <kishon@ti.com>
+
+description:
+  For UHS devices which require tuning, the device tree should have a
+  cpu_thermal node which maps to the appropriate thermal zone. This
+  is used to get the temperature of the zone during tuning.
+
+properties:
+  compatible:
+    enum:
+      - ti,omap2430-sdhci
+      - ti,omap3-sdhci
+      - ti,omap4-sdhci
+      - ti,omap5-sdhci
+      - ti,dra7-sdhci
+      - ti,k2g-sdhci
+      - ti,am335-sdhci
+      - ti,am437-sdhci
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: fck
+      - const: mmchsdb_fck
+
+  dmas:
+    maxItems: 2
+
+  dma-names:
+    items:
+      - const: tx
+      - const: rx
+
+  pinctrl-names:
+    $ref: /schemas/types.yaml#/definitions/string-array
+    minItems: 1
+    maxItems: 14
+    items:
+      enum:
+        - default
+        - default-rev11
+        - hs
+        - sdr12
+        - sdr12-rev11
+        - sdr25
+        - sdr25-rev11
+        - sdr50
+        - ddr50-rev11
+        - sdr104-rev11
+        - ddr50
+        - sdr104
+        - ddr_1_8v-rev11
+        - ddr_1_8v
+        - ddr_3_3v
+        - hs-rev11
+        - hs200_1_8v-rev11
+        - hs200_1_8v
+        - sleep
+
+  pinctrl-0:
+    maxItems: 1
+
+  pinctrl-1:
+    maxItems: 1
+
+  pinctrl-2:
+    maxItems: 1
+
+  pinctrl-3:
+    maxItems: 1
+
+  pinctrl-4:
+    maxItems: 1
+
+  pinctrl-5:
+    maxItems: 1
+
+  pinctrl-6:
+    maxItems: 1
+
+  pinctrl-7:
+    maxItems: 1
+
+  pinctrl-8:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  pbias-supply:
+    description:
+      It is used to specify the voltage regulator that provides the bias
+      voltage for certain analog or I/O pads.
+
+  cap-mmc-dual-data-rate:
+    description:
+      A characteristic or capability associated with MultiMediaCard (MMC)
+      interfaces, specifically indicating that the MMC controller
+      supports Dual Data Rate (DDR) mode.
+    type: boolean
+
+  ti,needs-special-reset:
+    description:
+      It indicates that a specific soft reset sequence is required for
+      certain Texas Instruments devices, particularly those with
+      HSMMC (High-Speed MultiMediaCard) controllers.
+    type: boolean
+
+  ti,needs-special-hs-handling:
+    description:
+      It's presence in an MMC controller's DT node signals to the Linux kernel's
+      omap_hsmmc driver that this particular IP block requires special software
+      handling or workarounds to correctly manage High-Speed (HS) modes like
+      SDR25, SDR50, SDR104, DDR50.
+    type: boolean
+
+  ti,non-removable:
+    description:
+      It indicates that a component is not meant to be easily removed or
+      replaced by the user, such as an embedded battery or a non-removable
+      storage slot like eMMC.
+    type: boolean
+    deprecated: true
+
+  clock-frequency:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      It represents the speed at which a clock signal associated with a device
+      or bus operates, measured in Hertz (Hz). This value is crucial for configuring
+      hardware components that require a specific clock speed.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+allOf:
+  - $ref: sdhci-common.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - ti,dra7-sdhci
+              - ti,k2g-sdhci
+    then:
+      required:
+        - max-frequency
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: ti,k2g-sdhci
+    then:
+      required:
+        - clocks
+        - clock-names
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - ti,am335-sdhci
+              - ti,am437-sdhci
+    then:
+      required:
+        - ti,needs-special-reset
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    mmc@4809c000 {
+        compatible = "ti,dra7-sdhci";
+        reg = <0x4809c000 0x400>;
+        interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+        max-frequency = <192000000>;
+        sdhci-caps-mask = <0x0 0x400000>;
+        bus-width = <4>;
+        vmmc-supply = <&vmmc>; /* phandle to regulator node */
+        dmas = <&sdma 61>, <&sdma 62>;
+        dma-names = "tx", "rx";
+    };
+...

-- 
2.51.0
Re: [PATCH v3 2/2] dt-bindings: mmc: ti,omap2430-sdhci: convert to DT schema
Posted by Rob Herring 2 months ago
On Sat, Oct 11, 2025 at 08:40:24AM +0000, Charan Pedumuru wrote:
> Convert TI OMAP SDHCI Controller binding to YAML format.
> Changes during Conversion:
> - Define new properties like "clocks", "clock-names",
>   "ti,needs-special-reset", "ti,needs-special-hs-handling",
>   "pbias-supply", "cap-mmc-dual-data-rate" and "power-domains" to
>   resolve dtb_check errors.
> - Remove "pinctrl-names" and "pinctrl-<n>"
>   from required as they are not necessary for all DTS files.
> - Remove "ti,hwmods" property entirely from the YAML as the
>   DTS doesn't contain this property for the given compatibles and the
>   text binding is misleading.
> - Add "clocks", "clock-names", "max-frequency" and "ti,needs-special-reset"
>   to the required properties based on the compatible and the text binding
>   doesn't mention these properties as required.
> - Add missing strings like "default-rev11", "sdr12-rev11", "sdr25-rev11",
>   "hs-rev11", "sdr25-rev11" and "sleep" to pinctrl-names string array
>   to resolve errors detected by dtb_check.
> 
> Signed-off-by: Charan Pedumuru <charan.pedumuru@gmail.com>
> ---
>  .../devicetree/bindings/mmc/sdhci-omap.txt         |  43 -----
>  .../devicetree/bindings/mmc/ti,omap2430-sdhci.yaml | 202 +++++++++++++++++++++
>  2 files changed, 202 insertions(+), 43 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/mmc/sdhci-omap.txt b/Documentation/devicetree/bindings/mmc/sdhci-omap.txt
> deleted file mode 100644
> index f91e341e6b36c410275e6f993dd08400be3fc1f8..0000000000000000000000000000000000000000
> --- a/Documentation/devicetree/bindings/mmc/sdhci-omap.txt
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -* TI OMAP SDHCI Controller
> -
> -Refer to mmc.txt for standard MMC bindings.
> -
> -For UHS devices which require tuning, the device tree should have a "cpu_thermal" node which maps to the appropriate thermal zone. This is used to get the temperature of the zone during tuning.
> -
> -Required properties:
> -- compatible: Should be "ti,omap2430-sdhci" for omap2430 controllers
> -	      Should be "ti,omap3-sdhci" for omap3 controllers
> -	      Should be "ti,omap4-sdhci" for omap4 and ti81 controllers
> -	      Should be "ti,omap5-sdhci" for omap5 controllers
> -	      Should be "ti,dra7-sdhci" for DRA7 and DRA72 controllers
> -	      Should be "ti,k2g-sdhci" for K2G
> -	      Should be "ti,am335-sdhci" for am335x controllers
> -	      Should be "ti,am437-sdhci" for am437x controllers
> -- ti,hwmods: Must be "mmc<n>", <n> is controller instance starting 1
> -	     (Not required for K2G).
> -- pinctrl-names: Should be subset of "default", "hs", "sdr12", "sdr25", "sdr50",
> -		 "ddr50-rev11", "sdr104-rev11", "ddr50", "sdr104",
> -		 "ddr_1_8v-rev11", "ddr_1_8v" or "ddr_3_3v", "hs200_1_8v-rev11",
> -		 "hs200_1_8v",
> -- pinctrl-<n> : Pinctrl states as described in bindings/pinctrl/pinctrl-bindings.txt
> -
> -Optional properties:
> -- dmas:		List of DMA specifiers with the controller specific format as described
> -		in the generic DMA client binding. A tx and rx specifier is required.
> -- dma-names:	List of DMA request names. These strings correspond 1:1 with the
> -		DMA specifiers listed in dmas. The string naming is to be "tx"
> -		and "rx" for TX and RX DMA requests, respectively.
> -
> -Deprecated properties:
> -- ti,non-removable: Compatible with the generic non-removable property
> -
> -Example:
> -	mmc1: mmc@4809c000 {
> -		compatible = "ti,dra7-sdhci";
> -		reg = <0x4809c000 0x400>;
> -		ti,hwmods = "mmc1";
> -		bus-width = <4>;
> -		vmmc-supply = <&vmmc>; /* phandle to regulator node */
> -		dmas = <&sdma 61 &sdma 62>;
> -		dma-names = "tx", "rx";
> -	};
> diff --git a/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml b/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..7683481204b2e222847244b67f9ae2684db93028
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml
> @@ -0,0 +1,202 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mmc/ti,omap2430-sdhci.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: TI OMAP SDHCI Controller
> +
> +maintainers:
> +  - Kishon Vijay Abraham I <kishon@ti.com>
> +
> +description:
> +  For UHS devices which require tuning, the device tree should have a
> +  cpu_thermal node which maps to the appropriate thermal zone. This
> +  is used to get the temperature of the zone during tuning.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - ti,omap2430-sdhci
> +      - ti,omap3-sdhci
> +      - ti,omap4-sdhci
> +      - ti,omap5-sdhci
> +      - ti,dra7-sdhci
> +      - ti,k2g-sdhci
> +      - ti,am335-sdhci
> +      - ti,am437-sdhci
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 2
> +
> +  clock-names:
> +    items:
> +      - const: fck
> +      - const: mmchsdb_fck
> +
> +  dmas:
> +    maxItems: 2
> +
> +  dma-names:
> +    items:
> +      - const: tx
> +      - const: rx
> +
> +  pinctrl-names:
> +    $ref: /schemas/types.yaml#/definitions/string-array

Drop. Already has a type.

> +    minItems: 1
> +    maxItems: 14
> +    items:
> +      enum:
> +        - default
> +        - default-rev11
> +        - hs
> +        - sdr12
> +        - sdr12-rev11
> +        - sdr25
> +        - sdr25-rev11
> +        - sdr50
> +        - ddr50-rev11
> +        - sdr104-rev11
> +        - ddr50
> +        - sdr104
> +        - ddr_1_8v-rev11
> +        - ddr_1_8v
> +        - ddr_3_3v
> +        - hs-rev11
> +        - hs200_1_8v-rev11
> +        - hs200_1_8v
> +        - sleep
Re: [PATCH v3 2/2] dt-bindings: mmc: ti,omap2430-sdhci: convert to DT schema
Posted by Charan Pedumuru 2 months ago

On 15-10-2025 18:41, Rob Herring wrote:
> On Sat, Oct 11, 2025 at 08:40:24AM +0000, Charan Pedumuru wrote:
>> Convert TI OMAP SDHCI Controller binding to YAML format.
>> Changes during Conversion:
>> - Define new properties like "clocks", "clock-names",
>>   "ti,needs-special-reset", "ti,needs-special-hs-handling",
>>   "pbias-supply", "cap-mmc-dual-data-rate" and "power-domains" to
>>   resolve dtb_check errors.
>> - Remove "pinctrl-names" and "pinctrl-<n>"
>>   from required as they are not necessary for all DTS files.
>> - Remove "ti,hwmods" property entirely from the YAML as the
>>   DTS doesn't contain this property for the given compatibles and the
>>   text binding is misleading.
>> - Add "clocks", "clock-names", "max-frequency" and "ti,needs-special-reset"
>>   to the required properties based on the compatible and the text binding
>>   doesn't mention these properties as required.
>> - Add missing strings like "default-rev11", "sdr12-rev11", "sdr25-rev11",
>>   "hs-rev11", "sdr25-rev11" and "sleep" to pinctrl-names string array
>>   to resolve errors detected by dtb_check.
>>
>> Signed-off-by: Charan Pedumuru <charan.pedumuru@gmail.com>
>> ---
>>  .../devicetree/bindings/mmc/sdhci-omap.txt         |  43 -----
>>  .../devicetree/bindings/mmc/ti,omap2430-sdhci.yaml | 202 +++++++++++++++++++++
>>  2 files changed, 202 insertions(+), 43 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/mmc/sdhci-omap.txt b/Documentation/devicetree/bindings/mmc/sdhci-omap.txt
>> deleted file mode 100644
>> index f91e341e6b36c410275e6f993dd08400be3fc1f8..0000000000000000000000000000000000000000
>> --- a/Documentation/devicetree/bindings/mmc/sdhci-omap.txt
>> +++ /dev/null
>> @@ -1,43 +0,0 @@
>> -* TI OMAP SDHCI Controller
>> -
>> -Refer to mmc.txt for standard MMC bindings.
>> -
>> -For UHS devices which require tuning, the device tree should have a "cpu_thermal" node which maps to the appropriate thermal zone. This is used to get the temperature of the zone during tuning.
>> -
>> -Required properties:
>> -- compatible: Should be "ti,omap2430-sdhci" for omap2430 controllers
>> -	      Should be "ti,omap3-sdhci" for omap3 controllers
>> -	      Should be "ti,omap4-sdhci" for omap4 and ti81 controllers
>> -	      Should be "ti,omap5-sdhci" for omap5 controllers
>> -	      Should be "ti,dra7-sdhci" for DRA7 and DRA72 controllers
>> -	      Should be "ti,k2g-sdhci" for K2G
>> -	      Should be "ti,am335-sdhci" for am335x controllers
>> -	      Should be "ti,am437-sdhci" for am437x controllers
>> -- ti,hwmods: Must be "mmc<n>", <n> is controller instance starting 1
>> -	     (Not required for K2G).
>> -- pinctrl-names: Should be subset of "default", "hs", "sdr12", "sdr25", "sdr50",
>> -		 "ddr50-rev11", "sdr104-rev11", "ddr50", "sdr104",
>> -		 "ddr_1_8v-rev11", "ddr_1_8v" or "ddr_3_3v", "hs200_1_8v-rev11",
>> -		 "hs200_1_8v",
>> -- pinctrl-<n> : Pinctrl states as described in bindings/pinctrl/pinctrl-bindings.txt
>> -
>> -Optional properties:
>> -- dmas:		List of DMA specifiers with the controller specific format as described
>> -		in the generic DMA client binding. A tx and rx specifier is required.
>> -- dma-names:	List of DMA request names. These strings correspond 1:1 with the
>> -		DMA specifiers listed in dmas. The string naming is to be "tx"
>> -		and "rx" for TX and RX DMA requests, respectively.
>> -
>> -Deprecated properties:
>> -- ti,non-removable: Compatible with the generic non-removable property
>> -
>> -Example:
>> -	mmc1: mmc@4809c000 {
>> -		compatible = "ti,dra7-sdhci";
>> -		reg = <0x4809c000 0x400>;
>> -		ti,hwmods = "mmc1";
>> -		bus-width = <4>;
>> -		vmmc-supply = <&vmmc>; /* phandle to regulator node */
>> -		dmas = <&sdma 61 &sdma 62>;
>> -		dma-names = "tx", "rx";
>> -	};
>> diff --git a/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml b/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..7683481204b2e222847244b67f9ae2684db93028
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mmc/ti,omap2430-sdhci.yaml
>> @@ -0,0 +1,202 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/mmc/ti,omap2430-sdhci.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: TI OMAP SDHCI Controller
>> +
>> +maintainers:
>> +  - Kishon Vijay Abraham I <kishon@ti.com>
>> +
>> +description:
>> +  For UHS devices which require tuning, the device tree should have a
>> +  cpu_thermal node which maps to the appropriate thermal zone. This
>> +  is used to get the temperature of the zone during tuning.
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - ti,omap2430-sdhci
>> +      - ti,omap3-sdhci
>> +      - ti,omap4-sdhci
>> +      - ti,omap5-sdhci
>> +      - ti,dra7-sdhci
>> +      - ti,k2g-sdhci
>> +      - ti,am335-sdhci
>> +      - ti,am437-sdhci
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +
>> +  clocks:
>> +    maxItems: 2
>> +
>> +  clock-names:
>> +    items:
>> +      - const: fck
>> +      - const: mmchsdb_fck
>> +
>> +  dmas:
>> +    maxItems: 2
>> +
>> +  dma-names:
>> +    items:
>> +      - const: tx
>> +      - const: rx
>> +
>> +  pinctrl-names:
>> +    $ref: /schemas/types.yaml#/definitions/string-array
> 
> Drop. Already has a type.

Sure, I will remove the type.

> 
>> +    minItems: 1
>> +    maxItems: 14
>> +    items:
>> +      enum:
>> +        - default
>> +        - default-rev11
>> +        - hs
>> +        - sdr12
>> +        - sdr12-rev11
>> +        - sdr25
>> +        - sdr25-rev11
>> +        - sdr50
>> +        - ddr50-rev11
>> +        - sdr104-rev11
>> +        - ddr50
>> +        - sdr104
>> +        - ddr_1_8v-rev11
>> +        - ddr_1_8v
>> +        - ddr_3_3v
>> +        - hs-rev11
>> +        - hs200_1_8v-rev11
>> +        - hs200_1_8v
>> +        - sleep

-- 
Best Regards,
Charan.