diff mbox series

dt-bindings: pinctrl: fsl,imx6ul-pinctrl: Convert i.MX35/5x/6 to YAML

Message ID 20241015232107.100771-1-marex@denx.de
State Superseded
Headers show
Series dt-bindings: pinctrl: fsl,imx6ul-pinctrl: Convert i.MX35/5x/6 to YAML | expand

Commit Message

Marek Vasut Oct. 15, 2024, 11:20 p.m. UTC
The IOMUXC controller description is almost identical on i.MX35/5x/6 SoCs,
except for the configuration bits which differ across SoCs. Rename the
fsl,imx6ul-pinctrl.yaml to fsl,imx35-pinctrl.yaml, fill in compatible
strings for the other SoCs and fill in the various bits into desciption.
This way, i.MX35/5x/6 series SoCs can all be converted to YAML DT. Remove
the old text DT bindings description.

Signed-off-by: Marek Vasut <marex@denx.de>
---
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Dong Aisheng <aisheng.dong@nxp.com>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Jacky Bai <ping.bai@nxp.com>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Rob Herring <robh@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: devicetree@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: kernel@dh-electronics.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-gpio@vger.kernel.org
---
 .../bindings/pinctrl/fsl,imx35-pinctrl.txt    | 33 --------
 ...ul-pinctrl.yaml => fsl,imx35-pinctrl.yaml} | 79 +++++++++++++++++--
 .../bindings/pinctrl/fsl,imx50-pinctrl.txt    | 32 --------
 .../bindings/pinctrl/fsl,imx51-pinctrl.txt    | 32 --------
 .../bindings/pinctrl/fsl,imx53-pinctrl.txt    | 32 --------
 .../bindings/pinctrl/fsl,imx6dl-pinctrl.txt   | 38 ---------
 .../bindings/pinctrl/fsl,imx6q-pinctrl.txt    | 38 ---------
 .../bindings/pinctrl/fsl,imx6sl-pinctrl.txt   | 39 ---------
 .../bindings/pinctrl/fsl,imx6sll-pinctrl.txt  | 40 ----------
 .../bindings/pinctrl/fsl,imx6sx-pinctrl.txt   | 36 ---------
 10 files changed, 72 insertions(+), 327 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt
 rename Documentation/devicetree/bindings/pinctrl/{fsl,imx6ul-pinctrl.yaml => fsl,imx35-pinctrl.yaml} (51%)
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx50-pinctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6sl-pinctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6sll-pinctrl.txt
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6sx-pinctrl.txt

Comments

Alexander Stein Oct. 16, 2024, 6:58 a.m. UTC | #1
Hi Marek,

thanks for the conversion.

Am Mittwoch, 16. Oktober 2024, 01:20:51 CEST schrieb Marek Vasut:
> The IOMUXC controller description is almost identical on i.MX35/5x/6 SoCs,
> except for the configuration bits which differ across SoCs. Rename the
> fsl,imx6ul-pinctrl.yaml to fsl,imx35-pinctrl.yaml, fill in compatible
> strings for the other SoCs and fill in the various bits into desciption.
> This way, i.MX35/5x/6 series SoCs can all be converted to YAML DT. Remove
> the old text DT bindings description.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> ---
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Dong Aisheng <aisheng.dong@nxp.com>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Jacky Bai <ping.bai@nxp.com>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: devicetree@vger.kernel.org
> Cc: imx@lists.linux.dev
> Cc: kernel@dh-electronics.com
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-gpio@vger.kernel.org
> ---
>  .../bindings/pinctrl/fsl,imx35-pinctrl.txt    | 33 --------
>  ...ul-pinctrl.yaml => fsl,imx35-pinctrl.yaml} | 79 +++++++++++++++++--
>  .../bindings/pinctrl/fsl,imx50-pinctrl.txt    | 32 --------
>  .../bindings/pinctrl/fsl,imx51-pinctrl.txt    | 32 --------
>  .../bindings/pinctrl/fsl,imx53-pinctrl.txt    | 32 --------
>  .../bindings/pinctrl/fsl,imx6dl-pinctrl.txt   | 38 ---------
>  .../bindings/pinctrl/fsl,imx6q-pinctrl.txt    | 38 ---------
>  .../bindings/pinctrl/fsl,imx6sl-pinctrl.txt   | 39 ---------
>  .../bindings/pinctrl/fsl,imx6sll-pinctrl.txt  | 40 ----------
>  .../bindings/pinctrl/fsl,imx6sx-pinctrl.txt   | 36 ---------
>  10 files changed, 72 insertions(+), 327 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt
>  rename Documentation/devicetree/bindings/pinctrl/{fsl,imx6ul-pinctrl.yaml => fsl,imx35-pinctrl.yaml} (51%)
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx50-pinctrl.txt
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6sl-pinctrl.txt
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6sll-pinctrl.txt
>  delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6sx-pinctrl.txt
> 
> [snip]
> diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.yaml
> similarity index 51%
> rename from Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.yaml
> rename to Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.yaml
> index 906b264a9e3cd..780d5fe0137e5 100644
> --- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.yaml
> +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.yaml
> @@ -1,10 +1,10 @@
>  # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>  %YAML 1.2
>  ---
> -$id: http://devicetree.org/schemas/pinctrl/fsl,imx6ul-pinctrl.yaml#
> +$id: http://devicetree.org/schemas/pinctrl/fsl,imx35-pinctrl.yaml#
>  $schema: http://devicetree.org/meta-schemas/core.yaml#
>  
> -title: Freescale IMX6UL IOMUX Controller
> +title: Freescale IMX35/IMX5x/IMX6 IOMUX Controller
>  
>  maintainers:
>    - Dong Aisheng <aisheng.dong@nxp.com>
> @@ -19,6 +19,15 @@ allOf:
>  properties:
>    compatible:
>      enum:
> +      - fsl,imx35-iomuxc
> +      - fsl,imx50-iomuxc
> +      - fsl,imx51-iomuxc
> +      - fsl,imx53-iomuxc

imx50.dtsi is using
> "fsl,imx50-iomuxc", "fsl,imx53-iomuxc";

So either the .dtsi or this schema needs to be adjusted.

> +      - fsl,imx6dl-iomuxc
> +      - fsl,imx6q-iomuxc
> +      - fsl,imx6sl-iomuxc
> +      - fsl,imx6sll-iomuxc
> +      - fsl,imx6sx-iomuxc
>        - fsl,imx6ul-iomuxc
>        - fsl,imx6ull-iomuxc-snvs
>  
> @@ -39,9 +48,9 @@ patternProperties:
>            each entry consists of 6 integers and represents the mux and config
>            setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
>            mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
> -          be found in <arch/arm/boot/dts/imx6ul-pinfunc.h>. The last integer
> +          be found in <arch/arm/boot/dts/nxp/imx/imx*-pinfunc.h>. The last integer
>            CONFIG is the pad setting value like pull-up on this pin. Please
> -          refer to i.MX6UL Reference Manual for detailed CONFIG settings.
> +          refer to matching i.MX Reference Manual for detailed CONFIG settings.
>          $ref: /schemas/types.yaml#/definitions/uint32-matrix
>          items:
>            items:
> @@ -56,7 +65,41 @@ patternProperties:
>              - description: |
>                  "input_val" indicates the select input value to be applied.
>              - description: |
> -                "pad_setting" indicates the pad configuration value to be applied:
> +                "pad_setting" indicates the pad configuration value to be applied.
> +                Common i.MX35
> +                  PAD_CTL_DRIVE_VOLAGAGE_18       (1 << 13)
> +                  PAD_CTL_DRIVE_VOLAGAGE_33       (0 << 13)
> +                  PAD_CTL_HYS                     (1 << 8)
> +                  PAD_CTL_PKE                     (1 << 7)
> +                  PAD_CTL_PUE                     (1 << 6)
> +                  PAD_CTL_PUS_100K_DOWN           (0 << 4)
> +                  PAD_CTL_PUS_47K_UP              (1 << 4)
> +                  PAD_CTL_PUS_100K_UP             (2 << 4)
> +                  PAD_CTL_PUS_22K_UP              (3 << 4)
> +                  PAD_CTL_ODE_CMOS                (0 << 3)
> +                  PAD_CTL_ODE_OPENDRAIN           (1 << 3)
> +                  PAD_CTL_DSE_NOMINAL             (0 << 1)
> +                  PAD_CTL_DSE_HIGH                (1 << 1)
> +                  PAD_CTL_DSE_MAX                 (2 << 1)
> +                  PAD_CTL_SRE_FAST                (1 << 0)
> +                  PAD_CTL_SRE_SLOW                (0 << 0)
> +                Common i.MX50/i.MX51/i.MX53 bits
> +                  PAD_CTL_HVE                     (1 << 13)
> +                  PAD_CTL_HYS                     (1 << 8)
> +                  PAD_CTL_PKE                     (1 << 7)
> +                  PAD_CTL_PUE                     (1 << 6)
> +                  PAD_CTL_PUS_100K_DOWN           (0 << 4)
> +                  PAD_CTL_PUS_47K_UP              (1 << 4)
> +                  PAD_CTL_PUS_100K_UP             (2 << 4)
> +                  PAD_CTL_PUS_22K_UP              (3 << 4)
> +                  PAD_CTL_ODE                     (1 << 3)
> +                  PAD_CTL_DSE_LOW                 (0 << 1)
> +                  PAD_CTL_DSE_MED                 (1 << 1)
> +                  PAD_CTL_DSE_HIGH                (2 << 1)
> +                  PAD_CTL_DSE_MAX                 (3 << 1)
> +                  PAD_CTL_SRE_FAST                (1 << 0)
> +                  PAD_CTL_SRE_SLOW                (0 << 0)
> +                Common i.MX6 bits
>                    PAD_CTL_HYS                     (1 << 16)
>                    PAD_CTL_PUS_100K_DOWN           (0 << 14)
>                    PAD_CTL_PUS_47K_UP              (1 << 14)
> @@ -69,6 +112,11 @@ patternProperties:
>                    PAD_CTL_SPEED_MED               (1 << 6)
>                    PAD_CTL_SPEED_HIGH              (3 << 6)
>                    PAD_CTL_DSE_DISABLE             (0 << 3)
> +                  PAD_CTL_SRE_FAST                (1 << 0)
> +                  PAD_CTL_SRE_SLOW                (0 << 0)
> +                i.MX6SL/MX6SLL specific bits
> +                  PAD_CTL_LVE                     (1 << 22) (MX6SL/SLL only)

Is this comment 'MX6SL/SLL only' really needed? This bit is already in the
i.MX6SL/MX6SLL only section.

Despite that, this looks good.
Best regards,
Alexander

> +                i.MX6SLL/i.MX6SX/i.MX6UL/i.MX6ULL specific bits
>                    PAD_CTL_DSE_260ohm              (1 << 3)
>                    PAD_CTL_DSE_130ohm              (2 << 3)
>                    PAD_CTL_DSE_87ohm               (3 << 3)
> @@ -76,8 +124,14 @@ patternProperties:
>                    PAD_CTL_DSE_52ohm               (5 << 3)
>                    PAD_CTL_DSE_43ohm               (6 << 3)
>                    PAD_CTL_DSE_37ohm               (7 << 3)
> -                  PAD_CTL_SRE_FAST                (1 << 0)
> -                  PAD_CTL_SRE_SLOW                (0 << 0)
> +                i.MX6DL/i.MX6Q/i.MX6SL specific bits
> +                  PAD_CTL_DSE_240ohm              (1 << 3)
> +                  PAD_CTL_DSE_120ohm              (2 << 3)
> +                  PAD_CTL_DSE_80ohm               (3 << 3)
> +                  PAD_CTL_DSE_60ohm               (4 << 3)
> +                  PAD_CTL_DSE_48ohm               (5 << 3)
> +                  PAD_CTL_DSE_40ohm               (6 << 3)
> +                  PAD_CTL_DSE_34ohm               (7 << 3)
>  
>      required:
>        - fsl,pins
> [snip]
Rob Herring Oct. 16, 2024, 5:26 p.m. UTC | #2
On Wed, Oct 16, 2024 at 01:20:51AM +0200, Marek Vasut wrote:
> The IOMUXC controller description is almost identical on i.MX35/5x/6 SoCs,
> except for the configuration bits which differ across SoCs. Rename the
> fsl,imx6ul-pinctrl.yaml to fsl,imx35-pinctrl.yaml, fill in compatible
> strings for the other SoCs and fill in the various bits into desciption.
> This way, i.MX35/5x/6 series SoCs can all be converted to YAML DT. Remove
> the old text DT bindings description.

Just a nit, but I prefer 'DT schema' over using 'YAML DT' or just 
'YAML'. YAML is just the file format we use and YAML is a lot of things 
that's not DT schema including other uses/attempts with DT. 

This generates lots of warnings (patchwork has the output) for pincfg 
nodes which don't match 'grp$' node name convention. Do we really want 
to "fix" all of those? We could allow anything, but then we don't 
enforce anything on new stuff. Or this could be split between new and 
old platforms. If we decide to fix any old ones, then just have to move 
them to the "new" schema.

Rob
Marek Vasut Oct. 16, 2024, 11:13 p.m. UTC | #3
On 10/16/24 8:58 AM, Alexander Stein wrote:
> Hi Marek,

Hi,

> thanks for the conversion.

Sure

[...]

>> @@ -19,6 +19,15 @@ allOf:
>>   properties:
>>     compatible:
>>       enum:
>> +      - fsl,imx35-iomuxc
>> +      - fsl,imx50-iomuxc
>> +      - fsl,imx51-iomuxc
>> +      - fsl,imx53-iomuxc
> 
> imx50.dtsi is using
>> "fsl,imx50-iomuxc", "fsl,imx53-iomuxc";
> 
> So either the .dtsi or this schema needs to be adjusted.

I'll be special-casing this in V2, thanks.

>> +      - fsl,imx6dl-iomuxc
>> +      - fsl,imx6q-iomuxc
>> +      - fsl,imx6sl-iomuxc
>> +      - fsl,imx6sll-iomuxc
>> +      - fsl,imx6sx-iomuxc
>>         - fsl,imx6ul-iomuxc
>>         - fsl,imx6ull-iomuxc-snvs
>>   

[...]

>> +                Common i.MX6 bits
>>                     PAD_CTL_HYS                     (1 << 16)
>>                     PAD_CTL_PUS_100K_DOWN           (0 << 14)
>>                     PAD_CTL_PUS_47K_UP              (1 << 14)
>> @@ -69,6 +112,11 @@ patternProperties:
>>                     PAD_CTL_SPEED_MED               (1 << 6)
>>                     PAD_CTL_SPEED_HIGH              (3 << 6)
>>                     PAD_CTL_DSE_DISABLE             (0 << 3)
>> +                  PAD_CTL_SRE_FAST                (1 << 0)
>> +                  PAD_CTL_SRE_SLOW                (0 << 0)
>> +                i.MX6SL/MX6SLL specific bits
>> +                  PAD_CTL_LVE                     (1 << 22) (MX6SL/SLL only)
> 
> Is this comment 'MX6SL/SLL only' really needed? This bit is already in the
> i.MX6SL/MX6SLL only section.
I think yes, because this particular bit is MX6SL/MX6SLL-only specific.
Marek Vasut Oct. 17, 2024, 12:23 a.m. UTC | #4
On 10/17/24 1:16 AM, Marek Vasut wrote:
> On 10/16/24 7:26 PM, Rob Herring wrote:
>> On Wed, Oct 16, 2024 at 01:20:51AM +0200, Marek Vasut wrote:
>>> The IOMUXC controller description is almost identical on i.MX35/5x/6 
>>> SoCs,
>>> except for the configuration bits which differ across SoCs. Rename the
>>> fsl,imx6ul-pinctrl.yaml to fsl,imx35-pinctrl.yaml, fill in compatible
>>> strings for the other SoCs and fill in the various bits into desciption.
>>> This way, i.MX35/5x/6 series SoCs can all be converted to YAML DT. 
>>> Remove
>>> the old text DT bindings description.
>>
>> Just a nit, but I prefer 'DT schema' over using 'YAML DT' or just
>> 'YAML'. YAML is just the file format we use and YAML is a lot of things
>> that's not DT schema including other uses/attempts with DT.
> 
> Fixed in V2 and also in the LTC3676 conversion, thanks.
> 
>> This generates lots of warnings (patchwork has the output) for pincfg
>> nodes which don't match 'grp$' node name convention. Do we really want
>> to "fix" all of those?
> 
> I had a look and many of those are simple, so I would say yes.
> 
>> We could allow anything, but then we don't
>> enforce anything on new stuff.
> 
> We do enforce grp$ on iMX8M , it just wasn't enforced on old DTs yet.
> 
>> Or this could be split between new and
>> old platforms. If we decide to fix any old ones, then just have to move
>> them to the "new" schema.
> Strictly speaking, iMX6 and older are all old platforms, but I think it 
> should be easy to fix them up.

So, it seems like fixing most of them DTs up wasn't that hard.
But I am worried I might've broken a few in the process. I guess users 
will complain and then we fix them up ?
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt
deleted file mode 100644
index c083dfd25db93..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.txt
+++ /dev/null
@@ -1,33 +0,0 @@ 
-* Freescale IMX35 IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx35-iomuxc"
-- fsl,pins: two integers array, represents a group of pins mux and config
-  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
-  pin working on a specific function, CONFIG is the pad setting value like
-  pull-up for this pin. Please refer to imx35 datasheet for the valid pad
-  config settings.
-
-CONFIG bits definition:
-PAD_CTL_DRIVE_VOLAGAGE_18	(1 << 13)
-PAD_CTL_DRIVE_VOLAGAGE_33	(0 << 13)
-PAD_CTL_HYS			(1 << 8)
-PAD_CTL_PKE			(1 << 7)
-PAD_CTL_PUE			(1 << 6)
-PAD_CTL_PUS_100K_DOWN		(0 << 4)
-PAD_CTL_PUS_47K_UP		(1 << 4)
-PAD_CTL_PUS_100K_UP		(2 << 4)
-PAD_CTL_PUS_22K_UP		(3 << 4)
-PAD_CTL_ODE_CMOS		(0 << 3)
-PAD_CTL_ODE_OPENDRAIN		(1 << 3)
-PAD_CTL_DSE_NOMINAL		(0 << 1)
-PAD_CTL_DSE_HIGH		(1 << 1)
-PAD_CTL_DSE_MAX			(2 << 1)
-PAD_CTL_SRE_FAST		(1 << 0)
-PAD_CTL_SRE_SLOW		(0 << 0)
-
-Refer to imx35-pinfunc.h in device tree source folder for all available
-imx35 PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.yaml
similarity index 51%
rename from Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.yaml
rename to Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.yaml
index 906b264a9e3cd..780d5fe0137e5 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx35-pinctrl.yaml
@@ -1,10 +1,10 @@ 
 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/pinctrl/fsl,imx6ul-pinctrl.yaml#
+$id: http://devicetree.org/schemas/pinctrl/fsl,imx35-pinctrl.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Freescale IMX6UL IOMUX Controller
+title: Freescale IMX35/IMX5x/IMX6 IOMUX Controller
 
 maintainers:
   - Dong Aisheng <aisheng.dong@nxp.com>
@@ -19,6 +19,15 @@  allOf:
 properties:
   compatible:
     enum:
+      - fsl,imx35-iomuxc
+      - fsl,imx50-iomuxc
+      - fsl,imx51-iomuxc
+      - fsl,imx53-iomuxc
+      - fsl,imx6dl-iomuxc
+      - fsl,imx6q-iomuxc
+      - fsl,imx6sl-iomuxc
+      - fsl,imx6sll-iomuxc
+      - fsl,imx6sx-iomuxc
       - fsl,imx6ul-iomuxc
       - fsl,imx6ull-iomuxc-snvs
 
@@ -39,9 +48,9 @@  patternProperties:
           each entry consists of 6 integers and represents the mux and config
           setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
           mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
-          be found in <arch/arm/boot/dts/imx6ul-pinfunc.h>. The last integer
+          be found in <arch/arm/boot/dts/nxp/imx/imx*-pinfunc.h>. The last integer
           CONFIG is the pad setting value like pull-up on this pin. Please
-          refer to i.MX6UL Reference Manual for detailed CONFIG settings.
+          refer to matching i.MX Reference Manual for detailed CONFIG settings.
         $ref: /schemas/types.yaml#/definitions/uint32-matrix
         items:
           items:
@@ -56,7 +65,41 @@  patternProperties:
             - description: |
                 "input_val" indicates the select input value to be applied.
             - description: |
-                "pad_setting" indicates the pad configuration value to be applied:
+                "pad_setting" indicates the pad configuration value to be applied.
+                Common i.MX35
+                  PAD_CTL_DRIVE_VOLAGAGE_18       (1 << 13)
+                  PAD_CTL_DRIVE_VOLAGAGE_33       (0 << 13)
+                  PAD_CTL_HYS                     (1 << 8)
+                  PAD_CTL_PKE                     (1 << 7)
+                  PAD_CTL_PUE                     (1 << 6)
+                  PAD_CTL_PUS_100K_DOWN           (0 << 4)
+                  PAD_CTL_PUS_47K_UP              (1 << 4)
+                  PAD_CTL_PUS_100K_UP             (2 << 4)
+                  PAD_CTL_PUS_22K_UP              (3 << 4)
+                  PAD_CTL_ODE_CMOS                (0 << 3)
+                  PAD_CTL_ODE_OPENDRAIN           (1 << 3)
+                  PAD_CTL_DSE_NOMINAL             (0 << 1)
+                  PAD_CTL_DSE_HIGH                (1 << 1)
+                  PAD_CTL_DSE_MAX                 (2 << 1)
+                  PAD_CTL_SRE_FAST                (1 << 0)
+                  PAD_CTL_SRE_SLOW                (0 << 0)
+                Common i.MX50/i.MX51/i.MX53 bits
+                  PAD_CTL_HVE                     (1 << 13)
+                  PAD_CTL_HYS                     (1 << 8)
+                  PAD_CTL_PKE                     (1 << 7)
+                  PAD_CTL_PUE                     (1 << 6)
+                  PAD_CTL_PUS_100K_DOWN           (0 << 4)
+                  PAD_CTL_PUS_47K_UP              (1 << 4)
+                  PAD_CTL_PUS_100K_UP             (2 << 4)
+                  PAD_CTL_PUS_22K_UP              (3 << 4)
+                  PAD_CTL_ODE                     (1 << 3)
+                  PAD_CTL_DSE_LOW                 (0 << 1)
+                  PAD_CTL_DSE_MED                 (1 << 1)
+                  PAD_CTL_DSE_HIGH                (2 << 1)
+                  PAD_CTL_DSE_MAX                 (3 << 1)
+                  PAD_CTL_SRE_FAST                (1 << 0)
+                  PAD_CTL_SRE_SLOW                (0 << 0)
+                Common i.MX6 bits
                   PAD_CTL_HYS                     (1 << 16)
                   PAD_CTL_PUS_100K_DOWN           (0 << 14)
                   PAD_CTL_PUS_47K_UP              (1 << 14)
@@ -69,6 +112,11 @@  patternProperties:
                   PAD_CTL_SPEED_MED               (1 << 6)
                   PAD_CTL_SPEED_HIGH              (3 << 6)
                   PAD_CTL_DSE_DISABLE             (0 << 3)
+                  PAD_CTL_SRE_FAST                (1 << 0)
+                  PAD_CTL_SRE_SLOW                (0 << 0)
+                i.MX6SL/MX6SLL specific bits
+                  PAD_CTL_LVE                     (1 << 22) (MX6SL/SLL only)
+                i.MX6SLL/i.MX6SX/i.MX6UL/i.MX6ULL specific bits
                   PAD_CTL_DSE_260ohm              (1 << 3)
                   PAD_CTL_DSE_130ohm              (2 << 3)
                   PAD_CTL_DSE_87ohm               (3 << 3)
@@ -76,8 +124,14 @@  patternProperties:
                   PAD_CTL_DSE_52ohm               (5 << 3)
                   PAD_CTL_DSE_43ohm               (6 << 3)
                   PAD_CTL_DSE_37ohm               (7 << 3)
-                  PAD_CTL_SRE_FAST                (1 << 0)
-                  PAD_CTL_SRE_SLOW                (0 << 0)
+                i.MX6DL/i.MX6Q/i.MX6SL specific bits
+                  PAD_CTL_DSE_240ohm              (1 << 3)
+                  PAD_CTL_DSE_120ohm              (2 << 3)
+                  PAD_CTL_DSE_80ohm               (3 << 3)
+                  PAD_CTL_DSE_60ohm               (4 << 3)
+                  PAD_CTL_DSE_48ohm               (5 << 3)
+                  PAD_CTL_DSE_40ohm               (6 << 3)
+                  PAD_CTL_DSE_34ohm               (7 << 3)
 
     required:
       - fsl,pins
@@ -114,3 +168,14 @@  examples:
         >;
       };
     };
+  - |
+    iomuxc_mx6q: pinctrl@20e0000 {
+        compatible = "fsl,imx6q-iomuxc";
+        reg = <0x20e0000 0x4000>;
+
+        pinctrl_uart4: uart4grp {
+            fsl,pins =
+                <0x288 0x658 0x000 0x3 0x0	0x140>,
+                <0x28c 0x65c 0x938 0x3 0x3	0x140>;
+        };
+    };
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx50-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx50-pinctrl.txt
deleted file mode 100644
index 6da01d619d33e..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx50-pinctrl.txt
+++ /dev/null
@@ -1,32 +0,0 @@ 
-* Freescale IMX50 IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx50-iomuxc"
-- fsl,pins: two integers array, represents a group of pins mux and config
-  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
-  pin working on a specific function, CONFIG is the pad setting value like
-  pull-up for this pin. Please refer to imx50 datasheet for the valid pad
-  config settings.
-
-CONFIG bits definition:
-PAD_CTL_HVE			(1 << 13)
-PAD_CTL_HYS			(1 << 8)
-PAD_CTL_PKE			(1 << 7)
-PAD_CTL_PUE			(1 << 6)
-PAD_CTL_PUS_100K_DOWN		(0 << 4)
-PAD_CTL_PUS_47K_UP		(1 << 4)
-PAD_CTL_PUS_100K_UP		(2 << 4)
-PAD_CTL_PUS_22K_UP		(3 << 4)
-PAD_CTL_ODE			(1 << 3)
-PAD_CTL_DSE_LOW			(0 << 1)
-PAD_CTL_DSE_MED			(1 << 1)
-PAD_CTL_DSE_HIGH		(2 << 1)
-PAD_CTL_DSE_MAX			(3 << 1)
-PAD_CTL_SRE_FAST		(1 << 0)
-PAD_CTL_SRE_SLOW		(0 << 0)
-
-Refer to imx50-pinfunc.h in device tree source folder for all available
-imx50 PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
deleted file mode 100644
index 4d1408fcc99cf..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx51-pinctrl.txt
+++ /dev/null
@@ -1,32 +0,0 @@ 
-* Freescale IMX51 IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx51-iomuxc"
-- fsl,pins: two integers array, represents a group of pins mux and config
-  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
-  pin working on a specific function, CONFIG is the pad setting value like
-  pull-up for this pin. Please refer to imx51 datasheet for the valid pad
-  config settings.
-
-CONFIG bits definition:
-PAD_CTL_HVE			(1 << 13)
-PAD_CTL_HYS			(1 << 8)
-PAD_CTL_PKE			(1 << 7)
-PAD_CTL_PUE			(1 << 6)
-PAD_CTL_PUS_100K_DOWN		(0 << 4)
-PAD_CTL_PUS_47K_UP		(1 << 4)
-PAD_CTL_PUS_100K_UP		(2 << 4)
-PAD_CTL_PUS_22K_UP		(3 << 4)
-PAD_CTL_ODE			(1 << 3)
-PAD_CTL_DSE_LOW			(0 << 1)
-PAD_CTL_DSE_MED			(1 << 1)
-PAD_CTL_DSE_HIGH		(2 << 1)
-PAD_CTL_DSE_MAX			(3 << 1)
-PAD_CTL_SRE_FAST		(1 << 0)
-PAD_CTL_SRE_SLOW		(0 << 0)
-
-Refer to imx51-pinfunc.h in device tree source folder for all available
-imx51 PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt
deleted file mode 100644
index 25dcb77cfaf74..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx53-pinctrl.txt
+++ /dev/null
@@ -1,32 +0,0 @@ 
-* Freescale IMX53 IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx53-iomuxc"
-- fsl,pins: two integers array, represents a group of pins mux and config
-  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
-  pin working on a specific function, CONFIG is the pad setting value like
-  pull-up for this pin. Please refer to imx53 datasheet for the valid pad
-  config settings.
-
-CONFIG bits definition:
-PAD_CTL_HVE			(1 << 13)
-PAD_CTL_HYS			(1 << 8)
-PAD_CTL_PKE			(1 << 7)
-PAD_CTL_PUE			(1 << 6)
-PAD_CTL_PUS_100K_DOWN		(0 << 4)
-PAD_CTL_PUS_47K_UP		(1 << 4)
-PAD_CTL_PUS_100K_UP		(2 << 4)
-PAD_CTL_PUS_22K_UP		(3 << 4)
-PAD_CTL_ODE			(1 << 3)
-PAD_CTL_DSE_LOW			(0 << 1)
-PAD_CTL_DSE_MED			(1 << 1)
-PAD_CTL_DSE_HIGH		(2 << 1)
-PAD_CTL_DSE_MAX			(3 << 1)
-PAD_CTL_SRE_FAST		(1 << 0)
-PAD_CTL_SRE_SLOW		(0 << 0)
-
-Refer to imx53-pinfunc.h in device tree source folder for all available
-imx53 PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt
deleted file mode 100644
index 0ac5bee875056..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt
+++ /dev/null
@@ -1,38 +0,0 @@ 
-* Freescale IMX6 DualLite/Solo IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx6dl-iomuxc"
-- fsl,pins: two integers array, represents a group of pins mux and config
-  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
-  pin working on a specific function, CONFIG is the pad setting value like
-  pull-up for this pin. Please refer to imx6dl datasheet for the valid pad
-  config settings.
-
-CONFIG bits definition:
-PAD_CTL_HYS                     (1 << 16)
-PAD_CTL_PUS_100K_DOWN           (0 << 14)
-PAD_CTL_PUS_47K_UP              (1 << 14)
-PAD_CTL_PUS_100K_UP             (2 << 14)
-PAD_CTL_PUS_22K_UP              (3 << 14)
-PAD_CTL_PUE                     (1 << 13)
-PAD_CTL_PKE                     (1 << 12)
-PAD_CTL_ODE                     (1 << 11)
-PAD_CTL_SPEED_LOW               (1 << 6)
-PAD_CTL_SPEED_MED               (2 << 6)
-PAD_CTL_SPEED_HIGH              (3 << 6)
-PAD_CTL_DSE_DISABLE             (0 << 3)
-PAD_CTL_DSE_240ohm              (1 << 3)
-PAD_CTL_DSE_120ohm              (2 << 3)
-PAD_CTL_DSE_80ohm               (3 << 3)
-PAD_CTL_DSE_60ohm               (4 << 3)
-PAD_CTL_DSE_48ohm               (5 << 3)
-PAD_CTL_DSE_40ohm               (6 << 3)
-PAD_CTL_DSE_34ohm               (7 << 3)
-PAD_CTL_SRE_FAST                (1 << 0)
-PAD_CTL_SRE_SLOW                (0 << 0)
-
-Refer to imx6dl-pinfunc.h in device tree source folder for all available
-imx6dl PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
deleted file mode 100644
index 546610cf2ae71..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6q-pinctrl.txt
+++ /dev/null
@@ -1,38 +0,0 @@ 
-* Freescale IMX6Q IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx6q-iomuxc"
-- fsl,pins: two integers array, represents a group of pins mux and config
-  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
-  pin working on a specific function, CONFIG is the pad setting value like
-  pull-up for this pin. Please refer to imx6q datasheet for the valid pad
-  config settings.
-
-CONFIG bits definition:
-PAD_CTL_HYS                     (1 << 16)
-PAD_CTL_PUS_100K_DOWN           (0 << 14)
-PAD_CTL_PUS_47K_UP              (1 << 14)
-PAD_CTL_PUS_100K_UP             (2 << 14)
-PAD_CTL_PUS_22K_UP              (3 << 14)
-PAD_CTL_PUE                     (1 << 13)
-PAD_CTL_PKE                     (1 << 12)
-PAD_CTL_ODE                     (1 << 11)
-PAD_CTL_SPEED_LOW               (1 << 6)
-PAD_CTL_SPEED_MED               (2 << 6)
-PAD_CTL_SPEED_HIGH              (3 << 6)
-PAD_CTL_DSE_DISABLE             (0 << 3)
-PAD_CTL_DSE_240ohm              (1 << 3)
-PAD_CTL_DSE_120ohm              (2 << 3)
-PAD_CTL_DSE_80ohm               (3 << 3)
-PAD_CTL_DSE_60ohm               (4 << 3)
-PAD_CTL_DSE_48ohm               (5 << 3)
-PAD_CTL_DSE_40ohm               (6 << 3)
-PAD_CTL_DSE_34ohm               (7 << 3)
-PAD_CTL_SRE_FAST                (1 << 0)
-PAD_CTL_SRE_SLOW                (0 << 0)
-
-Refer to imx6q-pinfunc.h in device tree source folder for all available
-imx6q PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6sl-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6sl-pinctrl.txt
deleted file mode 100644
index e5f6d1f065a42..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6sl-pinctrl.txt
+++ /dev/null
@@ -1,39 +0,0 @@ 
-* Freescale IMX6 SoloLite IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx6sl-iomuxc"
-- fsl,pins: two integers array, represents a group of pins mux and config
-  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
-  pin working on a specific function, CONFIG is the pad setting value like
-  pull-up for this pin. Please refer to imx6sl datasheet for the valid pad
-  config settings.
-
-CONFIG bits definition:
-PAD_CTL_LVE                     (1 << 22)
-PAD_CTL_HYS                     (1 << 16)
-PAD_CTL_PUS_100K_DOWN           (0 << 14)
-PAD_CTL_PUS_47K_UP              (1 << 14)
-PAD_CTL_PUS_100K_UP             (2 << 14)
-PAD_CTL_PUS_22K_UP              (3 << 14)
-PAD_CTL_PUE                     (1 << 13)
-PAD_CTL_PKE                     (1 << 12)
-PAD_CTL_ODE                     (1 << 11)
-PAD_CTL_SPEED_LOW               (1 << 6)
-PAD_CTL_SPEED_MED               (2 << 6)
-PAD_CTL_SPEED_HIGH              (3 << 6)
-PAD_CTL_DSE_DISABLE             (0 << 3)
-PAD_CTL_DSE_240ohm              (1 << 3)
-PAD_CTL_DSE_120ohm              (2 << 3)
-PAD_CTL_DSE_80ohm               (3 << 3)
-PAD_CTL_DSE_60ohm               (4 << 3)
-PAD_CTL_DSE_48ohm               (5 << 3)
-PAD_CTL_DSE_40ohm               (6 << 3)
-PAD_CTL_DSE_34ohm               (7 << 3)
-PAD_CTL_SRE_FAST                (1 << 0)
-PAD_CTL_SRE_SLOW                (0 << 0)
-
-Refer to imx6sl-pinfunc.h in device tree source folder for all available
-imx6sl PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6sll-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6sll-pinctrl.txt
deleted file mode 100644
index 175e8939a3018..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6sll-pinctrl.txt
+++ /dev/null
@@ -1,40 +0,0 @@ 
-* Freescale i.MX6 SLL IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx6sll-iomuxc"
-- fsl,pins: each entry consists of 6 integers and represents the mux and config
-  setting for one pin.  The first 5 integers <mux_reg conf_reg input_reg mux_val
-  input_val> are specified using a PIN_FUNC_ID macro, which can be found in
-  imx6sll-pinfunc.h under device tree source folder.  The last integer CONFIG is
-  the pad setting value like pull-up on this pin.  Please refer to i.MX6SLL
-  Reference Manual for detailed CONFIG settings.
-
-CONFIG bits definition:
-PAD_CTL_LVE			(1 << 22)
-PAD_CTL_HYS                     (1 << 16)
-PAD_CTL_PUS_100K_DOWN           (0 << 14)
-PAD_CTL_PUS_47K_UP              (1 << 14)
-PAD_CTL_PUS_100K_UP             (2 << 14)
-PAD_CTL_PUS_22K_UP              (3 << 14)
-PAD_CTL_PUE                     (1 << 13)
-PAD_CTL_PKE                     (1 << 12)
-PAD_CTL_ODE                     (1 << 11)
-PAD_CTL_SPEED_LOW               (0 << 6)
-PAD_CTL_SPEED_MED               (1 << 6)
-PAD_CTL_SPEED_HIGH              (3 << 6)
-PAD_CTL_DSE_DISABLE             (0 << 3)
-PAD_CTL_DSE_260ohm              (1 << 3)
-PAD_CTL_DSE_130ohm              (2 << 3)
-PAD_CTL_DSE_87ohm               (3 << 3)
-PAD_CTL_DSE_65ohm               (4 << 3)
-PAD_CTL_DSE_52ohm               (5 << 3)
-PAD_CTL_DSE_43ohm               (6 << 3)
-PAD_CTL_DSE_37ohm               (7 << 3)
-PAD_CTL_SRE_FAST                (1 << 0)
-PAD_CTL_SRE_SLOW                (0 << 0)
-
-Refer to imx6sll-pinfunc.h in device tree source folder for all available
-imx6sll PIN_FUNC_ID.
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6sx-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6sx-pinctrl.txt
deleted file mode 100644
index b1b595220f1bd..0000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx6sx-pinctrl.txt
+++ /dev/null
@@ -1,36 +0,0 @@ 
-* Freescale i.MX6 SoloX IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,imx6sx-iomuxc"
-- fsl,pins: each entry consists of 6 integers and represents the mux and config
-  setting for one pin.  The first 5 integers <mux_reg conf_reg input_reg mux_val
-  input_val> are specified using a PIN_FUNC_ID macro, which can be found in
-  imx6sx-pinfunc.h under device tree source folder.  The last integer CONFIG is
-  the pad setting value like pull-up on this pin.  Please refer to i.MX6 SoloX
-  Reference Manual for detailed CONFIG settings.
-
-CONFIG bits definition:
-PAD_CTL_HYS                     (1 << 16)
-PAD_CTL_PUS_100K_DOWN           (0 << 14)
-PAD_CTL_PUS_47K_UP              (1 << 14)
-PAD_CTL_PUS_100K_UP             (2 << 14)
-PAD_CTL_PUS_22K_UP              (3 << 14)
-PAD_CTL_PUE                     (1 << 13)
-PAD_CTL_PKE                     (1 << 12)
-PAD_CTL_ODE                     (1 << 11)
-PAD_CTL_SPEED_LOW               (0 << 6)
-PAD_CTL_SPEED_MED               (1 << 6)
-PAD_CTL_SPEED_HIGH              (3 << 6)
-PAD_CTL_DSE_DISABLE             (0 << 3)
-PAD_CTL_DSE_260ohm              (1 << 3)
-PAD_CTL_DSE_130ohm              (2 << 3)
-PAD_CTL_DSE_87ohm               (3 << 3)
-PAD_CTL_DSE_65ohm               (4 << 3)
-PAD_CTL_DSE_52ohm               (5 << 3)
-PAD_CTL_DSE_43ohm               (6 << 3)
-PAD_CTL_DSE_37ohm               (7 << 3)
-PAD_CTL_SRE_FAST                (1 << 0)
-PAD_CTL_SRE_SLOW                (0 << 0)