diff mbox series

dt-bindings: pinctrl: intel: Update to use generic bindings

Message ID 20191218062024.25475-1-rahul.tanwar@linux.intel.com
State New
Headers show
Series dt-bindings: pinctrl: intel: Update to use generic bindings | expand

Commit Message

Rahul Tanwar Dec. 18, 2019, 6:20 a.m. UTC
Kernel 5.5 adds generic pin mux & cfg node schema. Update pinctrl bindings
for LGM to use these newly added schemas. Also, rename filename to match
the compatible string.

Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
---
 .../devicetree/bindings/pinctrl/intel,lgm-io.yaml  |  76 ++++++++++++++
 .../bindings/pinctrl/intel,lgm-pinctrl.yaml        | 116 ---------------------
 2 files changed, 76 insertions(+), 116 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml

Comments

Linus Walleij Jan. 6, 2020, 11:21 p.m. UTC | #1
On Wed, Dec 18, 2019 at 7:20 AM Rahul Tanwar
<rahul.tanwar@linux.intel.com> wrote:

> Kernel 5.5 adds generic pin mux & cfg node schema. Update pinctrl bindings
> for LGM to use these newly added schemas. Also, rename filename to match
> the compatible string.
>
> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>

Thanks a lot for fixing this Rahul!

Patch applied.

Yours,
Linus Walleij
Rob Herring Jan. 13, 2020, 5:38 p.m. UTC | #2
On Wed, Dec 18, 2019 at 12:20 AM Rahul Tanwar
<rahul.tanwar@linux.intel.com> wrote:
>
> Kernel 5.5 adds generic pin mux & cfg node schema. Update pinctrl bindings
> for LGM to use these newly added schemas. Also, rename filename to match
> the compatible string.
>
> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
> ---
>  .../devicetree/bindings/pinctrl/intel,lgm-io.yaml  |  76 ++++++++++++++
>  .../bindings/pinctrl/intel,lgm-pinctrl.yaml        | 116 ---------------------
>  2 files changed, 76 insertions(+), 116 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml

Pretty sure I've said on multiple occasions to run 'make
dt_binding_check'... Linux-next is broken by this (and others).

> diff --git a/Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml b/Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
> new file mode 100644
> index 000000000000..a386fb520510
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
> @@ -0,0 +1,76 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/bindings/pinctrl/intel,lgm-io.yaml#

Drop 'bindings' from the path.

> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Intel Lightning Mountain SoC pinmux & GPIO controller binding
> +
> +maintainers:
> +  - Rahul Tanwar <rahul.tanwar@linux.intel.com>
> +
> +description: |
> +  Pinmux & GPIO controller controls pin multiplexing & configuration including
> +  GPIO function selection & GPIO attributes configuration.
> +
> +allOf:
> +  - $ref: pincfg-node.yaml#
> +  - $ref: pinmux-node.yaml#

This 'allOf' is at the wrong level...

> +
> +properties:
> +  compatible:
> +    const: intel,lgm-io
> +
> +  reg:
> +    maxItems: 1
> +
> +# Client device subnode's properties
> +patternProperties:
> +  '-pins$':
> +    type: object

...It should be here.

> +    description:
> +      Pinctrl node's client devices use subnodes for desired pin configuration.
> +      Client device subnodes use below standard properties.
> +
> +    properties:
> +      function: true
> +      group: true
> +      pins: true
> +      pinmux: true
> +      bias-pull-up: true
> +      bias-pull-down: true
> +      drive-strength: true
> +      slew-rate: true
> +      drive-open-drain: true
> +      output-enable: true
> +
> +    required:
> +      - function
> +      - group
> +
> +    additionalProperties: false
> +
> +required:
> +  - compatible
> +  - reg
> +
> +additionalProperties: false
> +
> +examples:
> +  # Pinmux controller node
> +  - |
> +    pinctrl: pinctrl@e2880000 {
> +        compatible = "intel,lgm-io";
> +        reg = <0xe2880000 0x100000>;
> +
> +        uart0-pins {
> +             pins = <64>, /* UART_RX0 */
> +                    <65>; /* UART_TX0 */
> +             function = "CONSOLE_UART0";
> +             pinmux = <1>,
> +                      <1>;
> +             groups = "CONSOLE_UART0";

'groups' is not a defined property. Should be 'group'.

> +          };
> +    };
> +
> +...
Linus Walleij Jan. 13, 2020, 9:25 p.m. UTC | #3
On Mon, Jan 13, 2020 at 6:38 PM Rob Herring <robh+dt@kernel.org> wrote:

> > +$id: http://devicetree.org/schemas/bindings/pinctrl/intel,lgm-io.yaml#
>
> Drop 'bindings' from the path.

I fixed this.

> > +allOf:
> > +  - $ref: pincfg-node.yaml#
> > +  - $ref: pinmux-node.yaml#
>
> This 'allOf' is at the wrong level...
(...)
> > +# Client device subnode's properties
> > +patternProperties:
> > +  '-pins$':
> > +    type: object
>
> ...It should be here.

I moved this.

> > +    properties:
> > +      function: true
> > +      group: true

This should have both groups and group.

> > +      pins: true
> > +      pinmux: true
> > +      bias-pull-up: true
> > +      bias-pull-down: true
> > +      drive-strength: true
> > +      slew-rate: true
> > +      drive-open-drain: true
> > +      output-enable: true
> > +
> > +    required:
> > +      - function
> > +      - group

This should have groups as compulsory.

> > +        uart0-pins {
> > +             pins = <64>, /* UART_RX0 */
> > +                    <65>; /* UART_TX0 */
> > +             function = "CONSOLE_UART0";
> > +             pinmux = <1>,
> > +                      <1>;
> > +             groups = "CONSOLE_UART0";
>
> 'groups' is not a defined property. Should be 'group'.

Actually not in this case.

There was an error in commit 3af50e548019f6ee26d0ed4340f4ab980f884696
"dt-bindings: pinctrl: Convert generic pin mux and config properties to schema"

A function has a 1-to-many relationship to groups so it should be "groups"
for the multiplexing (pluralis).

A pin config on the other hand, such as "set slewrate for all the pins in
this pin group" has a 1-to-1 relationship to a group (singularis).

I am trying to fix it all up in one patch.

Yours,
Linus Walleij
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml b/Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
new file mode 100644
index 000000000000..a386fb520510
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
@@ -0,0 +1,76 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/bindings/pinctrl/intel,lgm-io.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Intel Lightning Mountain SoC pinmux & GPIO controller binding
+
+maintainers:
+  - Rahul Tanwar <rahul.tanwar@linux.intel.com>
+
+description: |
+  Pinmux & GPIO controller controls pin multiplexing & configuration including
+  GPIO function selection & GPIO attributes configuration.
+
+allOf:
+  - $ref: pincfg-node.yaml#
+  - $ref: pinmux-node.yaml#
+
+properties:
+  compatible:
+    const: intel,lgm-io
+
+  reg:
+    maxItems: 1
+
+# Client device subnode's properties
+patternProperties:
+  '-pins$':
+    type: object
+    description:
+      Pinctrl node's client devices use subnodes for desired pin configuration.
+      Client device subnodes use below standard properties.
+
+    properties:
+      function: true
+      group: true
+      pins: true
+      pinmux: true
+      bias-pull-up: true
+      bias-pull-down: true
+      drive-strength: true
+      slew-rate: true
+      drive-open-drain: true
+      output-enable: true
+
+    required:
+      - function
+      - group
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  # Pinmux controller node
+  - |
+    pinctrl: pinctrl@e2880000 {
+        compatible = "intel,lgm-io";
+        reg = <0xe2880000 0x100000>;
+
+        uart0-pins {
+             pins = <64>, /* UART_RX0 */
+                    <65>; /* UART_TX0 */
+             function = "CONSOLE_UART0";
+             pinmux = <1>,
+                      <1>;
+             groups = "CONSOLE_UART0";
+          };
+    };
+
+...
diff --git a/Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml
deleted file mode 100644
index 240d429f773b..000000000000
--- a/Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml
+++ /dev/null
@@ -1,116 +0,0 @@ 
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/bindings/pinctrl/intel,lgm-pinctrl.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Intel Lightning Mountain SoC pinmux & GPIO controller binding
-
-maintainers:
-  - Rahul Tanwar <rahul.tanwar@linux.intel.com>
-
-description: |
-  Pinmux & GPIO controller controls pin multiplexing & configuration including
-  GPIO function selection & GPIO attributes configuration.
-
-  Please refer to [1] for details of the common pinctrl bindings used by the
-  client devices.
-
-  [1] Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
-
-properties:
-  compatible:
-    const: intel,lgm-io
-
-  reg:
-    maxItems: 1
-
-# Client device subnode's properties
-patternProperties:
-  '-pins$':
-    type: object
-    description:
-      Pinctrl node's client devices use subnodes for desired pin configuration.
-      Client device subnodes use below standard properties.
-
-    properties:
-      function:
-        $ref: /schemas/types.yaml#/definitions/string
-        description:
-          A string containing the name of the function to mux to the group.
-
-      groups:
-        $ref: /schemas/types.yaml#/definitions/string-array
-        description:
-          An array of strings identifying the list of groups.
-
-      pins:
-        $ref: /schemas/types.yaml#/definitions/uint32-array
-        description:
-          List of pins to select with this function.
-
-      pinmux:
-        description: The applicable mux group.
-        allOf:
-          - $ref: "/schemas/types.yaml#/definitions/uint32-array"
-
-      bias-pull-up:
-        type: boolean
-
-      bias-pull-down:
-        type: boolean
-
-      drive-strength:
-        description: |
-          Selects the drive strength for the specified pins in mA.
-          0: 2 mA
-          1: 4 mA
-          2: 8 mA
-          3: 12 mA
-        allOf:
-          - $ref: /schemas/types.yaml#/definitions/uint32
-          - enum: [0, 1, 2, 3]
-
-      slew-rate:
-        type: boolean
-        description: |
-          Sets slew rate for specified pins.
-          0: slow slew
-          1: fast slew
-
-      drive-open-drain:
-        type: boolean
-
-      output-enable:
-        type: boolean
-
-    required:
-      - function
-      - groups
-
-    additionalProperties: false
-
-required:
-  - compatible
-  - reg
-
-additionalProperties: false
-
-examples:
-  # Pinmux controller node
-  - |
-    pinctrl: pinctrl@e2880000 {
-        compatible = "intel,lgm-pinctrl";
-        reg = <0xe2880000 0x100000>;
-
-        uart0-pins {
-             pins = <64>, /* UART_RX0 */
-                    <65>; /* UART_TX0 */
-             function = "CONSOLE_UART0";
-             pinmux = <1>,
-                      <1>;
-             groups = "CONSOLE_UART0";
-          };
-    };
-
-...