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 |
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
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'. > + }; > + }; > + > +...
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 --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"; - }; - }; - -...
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