diff mbox series

[1/1] dt-bindings: gpio: Move fsl,mxs-pinctrl.txt into gpio-mxs.yaml

Message ID 20250523203159.570982-1-Frank.Li@nxp.com
State New
Headers show
Series [1/1] dt-bindings: gpio: Move fsl,mxs-pinctrl.txt into gpio-mxs.yaml | expand

Commit Message

Frank Li May 23, 2025, 8:31 p.m. UTC
Move mxs-pinctrl part into gpio-mxs.yaml and add pinctrl examples to fix
below CHECK_DTB warning:

arch/arm/boot/dts/nxp/mxs/imx28-xea.dtb: pinctrl@80018000 (fsl,imx28-pinctrl):
   'auart0-2pins@0', 'auart0@0',  ... 'usb1@1' do not match any of the regexes: 'gpio@[0-9]+$', 'pinctrl-[0-9]+'

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 .../devicetree/bindings/gpio/gpio-mxs.yaml    |  73 +++++++++-
 .../bindings/pinctrl/fsl,mxs-pinctrl.txt      | 127 ------------------
 2 files changed, 69 insertions(+), 131 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt

Comments

Rob Herring (Arm) May 27, 2025, 6:18 p.m. UTC | #1
On Fri, May 23, 2025 at 04:31:57PM -0400, Frank Li wrote:
> Move mxs-pinctrl part into gpio-mxs.yaml and add pinctrl examples to fix
> below CHECK_DTB warning:
> 
> arch/arm/boot/dts/nxp/mxs/imx28-xea.dtb: pinctrl@80018000 (fsl,imx28-pinctrl):
>    'auart0-2pins@0', 'auart0@0',  ... 'usb1@1' do not match any of the regexes: 'gpio@[0-9]+$', 'pinctrl-[0-9]+'
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  .../devicetree/bindings/gpio/gpio-mxs.yaml    |  73 +++++++++-
>  .../bindings/pinctrl/fsl,mxs-pinctrl.txt      | 127 ------------------
>  2 files changed, 69 insertions(+), 131 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
> 
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml b/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
> index b58e08c8ecd8a..b3cf4682be3fd 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
> +++ b/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
> @@ -18,9 +18,11 @@ description: |
>  
>  properties:
>    compatible:
> -    enum:
> -      - fsl,imx23-pinctrl
> -      - fsl,imx28-pinctrl
> +    items:
> +      - enum:
> +          - fsl,imx23-pinctrl
> +          - fsl,imx28-pinctrl
> +      - const: simple-bus

I don't think the use of simple-bus is correct here. The addresses are 
not MMIO (there's no size), and I would guess the child nodes are 
dependent on the parent.

>  
>    '#address-cells':
>      const: 1
> @@ -31,6 +33,61 @@ properties:
>      maxItems: 1
>  
>  patternProperties:
> +  "^(?!gpio).*@[0-9]+$":

Unit-address should be hex? If not, then another reason this is not a 
simple-bus.

> +    type: object
> +    properties:
> +      fsl,pinmux-ids:
> +        $ref: /schemas/types.yaml#/definitions/uint32-array
> +        description: |
> +          An integer array.  Each integer in the array specify a pin
> +          with given mux function, with bank, pin and mux packed as below.
> +
> +          [15..12] : bank number
> +          [11..4]  : pin number
> +          [3..0]   : mux selection
> +
> +          This integer with mux selection packed is used as an entity by both group
> +          and config nodes to identify a pin.  The mux selection in the integer takes
> +          effects only on group node, and will get ignored by driver with config node,
> +          since config node is only meant to set up pin configurations.
> +
> +          Valid values for these integers are listed below.
> +
> +      reg:
> +        maxItems: 1

Would be good to say what 'reg' represents here.

> +
> +      fsl,drive-strength:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        enum: [0, 1, 2, 3]
> +        description: |
> +          0: MXS_DRIVE_4mA
> +          1: MXS_DRIVE_8mA
> +          2: MXS_DRIVE_12mA
> +          3: MXS_DRIVE_16mA
> +
> +      fsl,voltage:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        enum: [0, 1]
> +        description: |
> +          0: MXS_VOLTAGE_LOW  - 1.8 V
> +          1: MXS_VOLTAGE_HIGH - 3.3 V
> +
> +      fsl,pull-up:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        enum: [0, 1]
> +        description: |
> +          0: MXS_PULL_DISABLE - Disable the internal pull-up
> +          1: MXS_PULL_ENABLE  - Enable the internal pull-up
> +
> +          Note that when enabling the pull-up, the internal pad keeper gets disabled.
> +          Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
> +          will only disable the internal pad keeper.
> +
> +    required:
> +      - fsl,pinmux-ids
> +
> +    additionalProperties: false
> +
>    "gpio@[0-9]+$":
>      type: object
>      properties:
> @@ -80,7 +137,7 @@ examples:
>      pinctrl@80018000 {
>          #address-cells = <1>;
>          #size-cells = <0>;
> -        compatible = "fsl,imx28-pinctrl";
> +        compatible = "fsl,imx28-pinctrl", "simple-bus";
>          reg = <0x80018000 0x2000>;
>  
>          gpio@0 {
> @@ -132,4 +189,12 @@ examples:
>              interrupt-controller;
>              #interrupt-cells = <2>;
>          };
> +
> +        lcdif-apx4@5 {
> +            reg = <5>;
> +            fsl,pinmux-ids = <0x1181 0x1191>;
> +            fsl,drive-strength = <0>;
> +            fsl,voltage = <0>;
> +            fsl,pull-up = <0>;
> +        };
>      };
Frank Li May 28, 2025, 3:27 p.m. UTC | #2
On Tue, May 27, 2025 at 01:18:03PM -0500, Rob Herring wrote:
> On Fri, May 23, 2025 at 04:31:57PM -0400, Frank Li wrote:
> > Move mxs-pinctrl part into gpio-mxs.yaml and add pinctrl examples to fix
> > below CHECK_DTB warning:
> >
> > arch/arm/boot/dts/nxp/mxs/imx28-xea.dtb: pinctrl@80018000 (fsl,imx28-pinctrl):
> >    'auart0-2pins@0', 'auart0@0',  ... 'usb1@1' do not match any of the regexes: 'gpio@[0-9]+$', 'pinctrl-[0-9]+'
> >
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > ---
> >  .../devicetree/bindings/gpio/gpio-mxs.yaml    |  73 +++++++++-
> >  .../bindings/pinctrl/fsl,mxs-pinctrl.txt      | 127 ------------------
> >  2 files changed, 69 insertions(+), 131 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
> >
> > diff --git a/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml b/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
> > index b58e08c8ecd8a..b3cf4682be3fd 100644
> > --- a/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
> > +++ b/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
> > @@ -18,9 +18,11 @@ description: |
> >
> >  properties:
> >    compatible:
> > -    enum:
> > -      - fsl,imx23-pinctrl
> > -      - fsl,imx28-pinctrl
> > +    items:
> > +      - enum:
> > +          - fsl,imx23-pinctrl
> > +          - fsl,imx28-pinctrl
> > +      - const: simple-bus
>
> I don't think the use of simple-bus is correct here. The addresses are
> not MMIO (there's no size), and I would guess the child nodes are
> dependent on the parent.

This is legency device, which more than 10 years. It use simple-bus
to probe children gpio devices. pinctrl have not use it.

>
> >
> >    '#address-cells':
> >      const: 1
> > @@ -31,6 +33,61 @@ properties:
> >      maxItems: 1
> >
> >  patternProperties:
> > +  "^(?!gpio).*@[0-9]+$":
>
> Unit-address should be hex? If not, then another reason this is not a
> simple-bus.

Yes, it is wrong to use simple-bus in old driver and dts
drivers/gpio/gpio-mxs.c

It is not worth to fix driver and dts for such old lagency devices. Although
chip is still shipping, we have not board to test it.

>
> > +    type: object
> > +    properties:
> > +      fsl,pinmux-ids:
> > +        $ref: /schemas/types.yaml#/definitions/uint32-array
> > +        description: |
> > +          An integer array.  Each integer in the array specify a pin
> > +          with given mux function, with bank, pin and mux packed as below.
> > +
> > +          [15..12] : bank number
> > +          [11..4]  : pin number
> > +          [3..0]   : mux selection
> > +
> > +          This integer with mux selection packed is used as an entity by both group
> > +          and config nodes to identify a pin.  The mux selection in the integer takes
> > +          effects only on group node, and will get ignored by driver with config node,
> > +          since config node is only meant to set up pin configurations.
> > +
> > +          Valid values for these integers are listed below.
> > +
> > +      reg:
> > +        maxItems: 1
>
> Would be good to say what 'reg' represents here.

It is just a index, which are not use by drivers. But need it to dts build
issue.

Frank
>
> > +
> > +      fsl,drive-strength:
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +        enum: [0, 1, 2, 3]
> > +        description: |
> > +          0: MXS_DRIVE_4mA
> > +          1: MXS_DRIVE_8mA
> > +          2: MXS_DRIVE_12mA
> > +          3: MXS_DRIVE_16mA
> > +
> > +      fsl,voltage:
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +        enum: [0, 1]
> > +        description: |
> > +          0: MXS_VOLTAGE_LOW  - 1.8 V
> > +          1: MXS_VOLTAGE_HIGH - 3.3 V
> > +
> > +      fsl,pull-up:
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +        enum: [0, 1]
> > +        description: |
> > +          0: MXS_PULL_DISABLE - Disable the internal pull-up
> > +          1: MXS_PULL_ENABLE  - Enable the internal pull-up
> > +
> > +          Note that when enabling the pull-up, the internal pad keeper gets disabled.
> > +          Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
> > +          will only disable the internal pad keeper.
> > +
> > +    required:
> > +      - fsl,pinmux-ids
> > +
> > +    additionalProperties: false
> > +
> >    "gpio@[0-9]+$":
> >      type: object
> >      properties:
> > @@ -80,7 +137,7 @@ examples:
> >      pinctrl@80018000 {
> >          #address-cells = <1>;
> >          #size-cells = <0>;
> > -        compatible = "fsl,imx28-pinctrl";
> > +        compatible = "fsl,imx28-pinctrl", "simple-bus";
> >          reg = <0x80018000 0x2000>;
> >
> >          gpio@0 {
> > @@ -132,4 +189,12 @@ examples:
> >              interrupt-controller;
> >              #interrupt-cells = <2>;
> >          };
> > +
> > +        lcdif-apx4@5 {
> > +            reg = <5>;
> > +            fsl,pinmux-ids = <0x1181 0x1191>;
> > +            fsl,drive-strength = <0>;
> > +            fsl,voltage = <0>;
> > +            fsl,pull-up = <0>;
> > +        };
> >      };
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml b/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
index b58e08c8ecd8a..b3cf4682be3fd 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-mxs.yaml
@@ -18,9 +18,11 @@  description: |
 
 properties:
   compatible:
-    enum:
-      - fsl,imx23-pinctrl
-      - fsl,imx28-pinctrl
+    items:
+      - enum:
+          - fsl,imx23-pinctrl
+          - fsl,imx28-pinctrl
+      - const: simple-bus
 
   '#address-cells':
     const: 1
@@ -31,6 +33,61 @@  properties:
     maxItems: 1
 
 patternProperties:
+  "^(?!gpio).*@[0-9]+$":
+    type: object
+    properties:
+      fsl,pinmux-ids:
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        description: |
+          An integer array.  Each integer in the array specify a pin
+          with given mux function, with bank, pin and mux packed as below.
+
+          [15..12] : bank number
+          [11..4]  : pin number
+          [3..0]   : mux selection
+
+          This integer with mux selection packed is used as an entity by both group
+          and config nodes to identify a pin.  The mux selection in the integer takes
+          effects only on group node, and will get ignored by driver with config node,
+          since config node is only meant to set up pin configurations.
+
+          Valid values for these integers are listed below.
+
+      reg:
+        maxItems: 1
+
+      fsl,drive-strength:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1, 2, 3]
+        description: |
+          0: MXS_DRIVE_4mA
+          1: MXS_DRIVE_8mA
+          2: MXS_DRIVE_12mA
+          3: MXS_DRIVE_16mA
+
+      fsl,voltage:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1]
+        description: |
+          0: MXS_VOLTAGE_LOW  - 1.8 V
+          1: MXS_VOLTAGE_HIGH - 3.3 V
+
+      fsl,pull-up:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [0, 1]
+        description: |
+          0: MXS_PULL_DISABLE - Disable the internal pull-up
+          1: MXS_PULL_ENABLE  - Enable the internal pull-up
+
+          Note that when enabling the pull-up, the internal pad keeper gets disabled.
+          Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
+          will only disable the internal pad keeper.
+
+    required:
+      - fsl,pinmux-ids
+
+    additionalProperties: false
+
   "gpio@[0-9]+$":
     type: object
     properties:
@@ -80,7 +137,7 @@  examples:
     pinctrl@80018000 {
         #address-cells = <1>;
         #size-cells = <0>;
-        compatible = "fsl,imx28-pinctrl";
+        compatible = "fsl,imx28-pinctrl", "simple-bus";
         reg = <0x80018000 0x2000>;
 
         gpio@0 {
@@ -132,4 +189,12 @@  examples:
             interrupt-controller;
             #interrupt-cells = <2>;
         };
+
+        lcdif-apx4@5 {
+            reg = <5>;
+            fsl,pinmux-ids = <0x1181 0x1191>;
+            fsl,drive-strength = <0>;
+            fsl,voltage = <0>;
+            fsl,pull-up = <0>;
+        };
     };
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
deleted file mode 100644
index 1e70a8aff2600..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
+++ /dev/null
@@ -1,127 +0,0 @@ 
-* Freescale MXS Pin Controller
-
-The pins controlled by mxs pin controller are organized in banks, each bank
-has 32 pins.  Each pin has 4 multiplexing functions, and generally, the 4th
-function is GPIO.  The configuration on the pins includes drive strength,
-voltage and pull-up.
-
-Required properties:
-- compatible: "fsl,imx23-pinctrl" or "fsl,imx28-pinctrl"
-- reg: Should contain the register physical address and length for the
-  pin controller.
-
-Please refer to pinctrl-bindings.txt in this directory for details of the
-common pinctrl bindings used by client devices.
-
-The node of mxs pin controller acts as a container for an arbitrary number of
-subnodes.  Each of these subnodes represents some desired configuration for
-a group of pins, and only affects those parameters that are explicitly listed.
-In other words, a subnode that describes a drive strength parameter implies no
-information about pull-up. For this reason, even seemingly boolean values are
-actually tristates in this binding: unspecified, off, or on. Unspecified is
-represented as an absent property, and off/on are represented as integer
-values 0 and 1.
-
-Those subnodes under mxs pin controller node will fall into two categories.
-One is to set up a group of pins for a function, both mux selection and pin
-configurations, and it's called group node in the binding document.   The other
-one is to adjust the pin configuration for some particular pins that need a
-different configuration than what is defined in group node.  The binding
-document calls this type of node config node.
-
-On mxs, there is no hardware pin group. The pin group in this binding only
-means a group of pins put together for particular peripheral to work in
-particular function, like SSP0 functioning as mmc0-8bit.  That said, the
-group node should include all the pins needed for one function rather than
-having these pins defined in several group nodes.  It also means each of
-"pinctrl-*" phandle in client device node should only have one group node
-pointed in there, while the phandle can have multiple config node referenced
-there to adjust configurations for some pins in the group.
-
-Required subnode-properties:
-- fsl,pinmux-ids: An integer array.  Each integer in the array specify a pin
-  with given mux function, with bank, pin and mux packed as below.
-
-    [15..12] : bank number
-    [11..4]  : pin number
-    [3..0]   : mux selection
-
-  This integer with mux selection packed is used as an entity by both group
-  and config nodes to identify a pin.  The mux selection in the integer takes
-  effects only on group node, and will get ignored by driver with config node,
-  since config node is only meant to set up pin configurations.
-
-  Valid values for these integers are listed below.
-
-- reg: Should be the index of the group nodes for same function.  This property
-  is required only for group nodes, and should not be present in any config
-  nodes.
-
-Optional subnode-properties:
-- fsl,drive-strength: Integer.
-    0: MXS_DRIVE_4mA
-    1: MXS_DRIVE_8mA
-    2: MXS_DRIVE_12mA
-    3: MXS_DRIVE_16mA
-- fsl,voltage: Integer.
-    0: MXS_VOLTAGE_LOW  - 1.8 V
-    1: MXS_VOLTAGE_HIGH - 3.3 V
-- fsl,pull-up: Integer.
-    0: MXS_PULL_DISABLE - Disable the internal pull-up
-    1: MXS_PULL_ENABLE  - Enable the internal pull-up
-
-Note that when enabling the pull-up, the internal pad keeper gets disabled.
-Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
-will only disable the internal pad keeper.
-
-Examples:
-
-pinctrl@80018000 {
-	#address-cells = <1>;
-	#size-cells = <0>;
-	compatible = "fsl,imx28-pinctrl";
-	reg = <0x80018000 2000>;
-
-	mmc0_8bit_pins_a: mmc0-8bit@0 {
-		reg = <0>;
-		fsl,pinmux-ids = <
-			MX28_PAD_SSP0_DATA0__SSP0_D0
-			MX28_PAD_SSP0_DATA1__SSP0_D1
-			MX28_PAD_SSP0_DATA2__SSP0_D2
-			MX28_PAD_SSP0_DATA3__SSP0_D3
-			MX28_PAD_SSP0_DATA4__SSP0_D4
-			MX28_PAD_SSP0_DATA5__SSP0_D5
-			MX28_PAD_SSP0_DATA6__SSP0_D6
-			MX28_PAD_SSP0_DATA7__SSP0_D7
-			MX28_PAD_SSP0_CMD__SSP0_CMD
-			MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT
-			MX28_PAD_SSP0_SCK__SSP0_SCK
-		>;
-		fsl,drive-strength = <MXS_DRIVE_4mA>;
-		fsl,voltage = <MXS_VOLTAGE_HIGH>;
-		fsl,pull-up = <MXS_PULL_ENABLE>;
-	};
-
-	mmc_cd_cfg: mmc-cd-cfg {
-		fsl,pinmux-ids = <MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT>;
-		fsl,pull-up = <MXS_PULL_DISABLE>;
-	};
-
-	mmc_sck_cfg: mmc-sck-cfg {
-		fsl,pinmux-ids = <MX28_PAD_SSP0_SCK__SSP0_SCK>;
-		fsl,drive-strength = <MXS_DRIVE_12mA>;
-		fsl,pull-up = <MXS_PULL_DISABLE>;
-	};
-};
-
-In this example, group node mmc0-8bit defines a group of pins for mxs SSP0
-to function as a 8-bit mmc device, with 8mA, 3.3V and pull-up configurations
-applied on all these pins.  And config nodes mmc-cd-cfg and mmc-sck-cfg are
-adjusting the configuration for pins card-detection and clock from what group
-node mmc0-8bit defines.  Only the configuration properties to be adjusted need
-to be listed in the config nodes.
-
-Valid values for i.MX28/i.MX23 pinmux-id are defined in
-arch/arm/boot/dts/imx28-pinfunc.h and arch/arm/boot/dts/imx23-pinfunc.h.
-The definitions for the padconfig properties can be found in
-arch/arm/boot/dts/mxs-pinfunc.h.