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