Thread (81 messages) 81 messages, 10 authors, 2020-06-03

Re: [PATCH 19/28] dt-bindings: mmc: Convert sdhci-pxa to json-schema

From: Lubomir Rintel <lkundrak@v3.sk>
Date: 2020-05-17 18:35:50
Also in: linux-gpio, linux-i2c, linux-media, linux-mmc, linux-rtc, linux-serial, linux-spi, linux-usb, lkml

On Wed, Mar 18, 2020 at 04:37:55PM -0600, Rob Herring wrote:
On Tue, Mar 17, 2020 at 3:40 AM Lubomir Rintel [off-list ref] wrote:
quoted
Convert the sdhci-pxa binding to DT schema format using json-schema.
Ignore what my bot said, I see you addressed that earlier in the series.
quoted
At the same time, fix a couple of issues with the examples discovered by
the validation tool -- a semicolon instead of a comma and wrong node names.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
---
 .../devicetree/bindings/mmc/sdhci-pxa.txt     |  50 ---------
 .../devicetree/bindings/mmc/sdhci-pxa.yaml    | 101 ++++++++++++++++++
 2 files changed, 101 insertions(+), 50 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
 create mode 100644 Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
deleted file mode 100644
index 3d1b449d6097d..0000000000000
--- a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-* Marvell sdhci-pxa v2/v3 controller
-
-This file documents differences between the core properties in mmc.txt
-and the properties used by the sdhci-pxav2 and sdhci-pxav3 drivers.
-
-Required properties:
-- compatible: Should be "mrvl,pxav2-mmc", "mrvl,pxav3-mmc" or
-  "marvell,armada-380-sdhci".
-- reg:
-  * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for
-    the SDHCI registers.
-
-  * for "marvell,armada-380-sdhci", three register areas. The first
-    one for the SDHCI registers themselves, the second one for the
-    AXI/Mbus bridge registers of the SDHCI unit, the third one for the
-    SDIO3 Configuration register
-- reg names: should be "sdhci", "mbus", "conf-sdio3". only mandatory
-  for "marvell,armada-380-sdhci"
-- clocks: Array of clocks required for SDHCI; requires at least one for
-    I/O clock.
-- clock-names: Array of names corresponding to clocks property; shall be
-    "io" for I/O clock and "core" for optional core clock.
-
-Optional properties:
-- mrvl,clk-delay-cycles: Specify a number of cycles to delay for tuning.
-
-Example:
-
-sdhci@d4280800 {
-       compatible = "mrvl,pxav3-mmc";
-       reg = <0xd4280800 0x800>;
-       bus-width = <8>;
-       interrupts = <27>;
-       clocks = <&chip CLKID_SDIO1XIN>, <&chip CLKID_SDIO1>;
-       clock-names = "io", "core";
-       non-removable;
-       mrvl,clk-delay-cycles = <31>;
-};
-
-sdhci@d8000 {
-       compatible = "marvell,armada-380-sdhci";
-       reg-names = "sdhci", "mbus", "conf-sdio3";
-       reg = <0xd8000 0x1000>,
-               <0xdc000 0x100>;
-               <0x18454 0x4>;
-       interrupts = <0 25 0x4>;
-       clocks = <&gateclk 17>;
-       clock-names = "io";
-       mrvl,clk-delay-cycles = <0x1F>;
-};
diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml b/Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml
new file mode 100644
index 0000000000000..4ae0926ac294f
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml
@@ -0,0 +1,101 @@
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/sdhci-pxa.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell PXA SDHCI v2/v3 bindings
+
+maintainers:
+  - devicetree@vger.kernel.org
+
+allOf:
+  - $ref: mmc-controller.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: marvell,armada-380-sdhci
+    then:
+      properties:
+        regs:
+          minItems: 3
+          maxItems: 3
Here, you just need minItems.
quoted
+        reg-names:
+          items:
+            - const: sdhci
+            - const: mbus
+            - const: conf-sdio3
This should be under the main definition of 'reg-names' and then just
'minItems: 3' here.
quoted
+      required:
+        - reg-names
+    else:
+      properties:
+        regs:
+          minItems: 1
+          maxItems: 1
Just 'maxItems' is sufficient.
quoted
+        reg-names:
+          minItems: 1
+          maxItems: 1
+
+properties:
+  compatible:
+    enum:
+      - mrvl,pxav2-mmc
+      - mrvl,pxav3-mmc
+      - marvell,armada-380-sdhci
+
+  reg: true
Here you should have:

minItems: 1
maxItems: 3
quoted
+
+  reg-names: true
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    maxItems: 2
+    items:
+      - const: io
+      - const: core
+
+  mrvl,clk-delay-cycles:
+    description: Specify a number of cycles to delay for tuning.
+    $ref: /schemas/types.yaml#/definitions/uint32
No range of valid values?
No. The document I'm converting didn't specify a range. For some of the
hardware supported Marvell doesn't provide documentation, and the
drivers that use this seem to accept any u32 number.

If this needs a range, then I need to make something up. I can do that,
but it will be difficult to defend that number if anyone asks.

Lubo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help