[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20260211-imx2_iomux_warning-v1-1-1c5233771b32@nxp.com>
Date: Wed, 11 Feb 2026 16:00:00 -0500
From: Frank Li <Frank.Li@....com>
To: Dong Aisheng <aisheng.dong@....com>, Fabio Estevam <festevam@...il.com>,
Jacky Bai <ping.bai@....com>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
NXP S32 Linux Team <s32@....com>, Linus Walleij <linusw@...nel.org>,
Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Sascha Hauer <s.hauer@...gutronix.de>
Cc: linux-gpio@...r.kernel.org, devicetree@...r.kernel.org,
imx@...ts.linux.dev, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org, Frank Li <Frank.Li@....com>
Subject: [PATCH 1/4] dt-bindings: pinctrl: convert fsl,imx27-pinctrl.txt to
YAML
Convert fsl,imx27-pinctrl.txt to YAML format.
Additional changes:
- Add the compatible string "fsl,imx1-iomuxc".
- Add gpio@... child nodes.
- Add ranges property.
- Remove the redundant intermediate node between pinmux and group nodes.
Signed-off-by: Frank Li <Frank.Li@....com>
---
.../bindings/pinctrl/fsl,imx27-iomuxc.yaml | 126 +++++++++++++++++++++
.../bindings/pinctrl/fsl,imx27-pinctrl.txt | 121 --------------------
2 files changed, 126 insertions(+), 121 deletions(-)
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx27-iomuxc.yaml b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-iomuxc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1254bfcaa7cb6b2d3c66cb0e0e47b968a951d9f4
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-iomuxc.yaml
@@ -0,0 +1,126 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/fsl,imx27-iomuxc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX1/i.MX25/i.MX27 IOMUX Controller
+
+maintainers:
+ - Frank Li <Frank.Li@....com>
+
+description:
+ Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
+ for common binding part and usage.
+
+properties:
+ compatible:
+ enum:
+ - fsl,imx1-iomuxc
+ - fsl,imx27-iomuxc
+
+ reg:
+ maxItems: 1
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 1
+
+ ranges: true
+
+patternProperties:
+ '^gpio@[0-9a-f]+$':
+ type: object
+ $ref: /schemas/gpio/fsl-imx-gpio.yaml
+ unevaluatedProperties: false
+
+ 'grp$':
+ type: object
+ description:
+ Pinctrl node's client devices use subnodes for desired pin configuration.
+ Client device subnodes use below standard properties.
+
+ properties:
+ fsl,pins:
+ description:
+ three integers array, represents a group of pins mux and config
+ setting. The format is fsl,pins = <PIN MUX_ID CONFIG>.
+ $ref: /schemas/types.yaml#/definitions/uint32-matrix
+ items:
+ items:
+ - description:
+ PIN is an integer between 0 and 0xbf. imx27 has 6 ports with 32
+ configurable pins each. PIN is PORT * 32 + PORT_PIN, PORT_PIN
+ is the pin number on the specific port (between 0 and 31)
+ - description: |
+ MUX_ID is function + (direction << 2) + (gpio_oconf << 4)
+ + (gpio_iconfa << 8) + (gpio_iconfb << 10)
+
+ function value is used to select the pin function.
+ Possible values:
+ 0 - Primary function
+ 1 - Alternate function
+ 2 - GPIO
+ Registers: GIUS (GPIO In Use), GPR (General Purpose Register)
+
+ direction defines the data direction of the pin.
+ Possible values:
+ 0 - Input
+ 1 - Output
+ Register: DDIR
+
+ gpio_oconf configures the gpio submodule output signal.
+ This does not have any effect unless GPIO function is
+ selected. A/B/C_IN are output signals of function blocks
+ A,B and C. Specific function blocks are described in the
+ reference manual.
+ Possible values:
+ 0 - A_IN
+ 1 - B_IN
+ 2 - C_IN
+ 3 - Data Register
+ Registers: OCR1, OCR2
+
+ gpio_iconfa/b configures the gpio submodule input to
+ functionblocks A and B. GPIO function should be selected if
+ this is configured.
+ Possible values:
+ 0 - GPIO_IN
+ 1 - Interrupt Status Register
+ 2 - Pulldown
+ 3 - Pullup
+ Registers ICONFA1, ICONFA2, ICONFB1 and ICONFB2
+
+ - description:
+ CONFIG can be 0 or 1, meaning Pullup disable/enable.
+ required:
+ - fsl,pins
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - reg
+
+allOf:
+ - $ref: pinctrl.yaml#
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ pinmux@...15000 {
+ compatible = "fsl,imx27-iomuxc";
+ reg = <0x10015000 0x600>;
+
+ uartgrp {
+ fsl,pins = <
+ 0x8c 0x004 0x0 /* UART1_TXD__UART1_TXD */
+ 0x8d 0x000 0x0 /* UART1_RXD__UART1_RXD */
+ 0x8e 0x004 0x0 /* UART1_CTS__UART1_CTS */
+ 0x8f 0x000 0x0 /* UART1_RTS__UART1_RTS */
+ >;
+ };
+ };
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt
deleted file mode 100644
index d1706ea8257230121f2843bd7684faccd160198b..0000000000000000000000000000000000000000
--- a/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-* Freescale IMX27 IOMUX Controller
-
-Required properties:
-- compatible: "fsl,imx27-iomuxc"
-
-The iomuxc driver node should define subnodes containing of pinctrl configuration subnodes.
-
-Required properties for pin configuration node:
-- fsl,pins: three integers array, represents a group of pins mux and config
- setting. The format is fsl,pins = <PIN MUX_ID CONFIG>.
-
- PIN is an integer between 0 and 0xbf. imx27 has 6 ports with 32 configurable
- configurable pins each. PIN is PORT * 32 + PORT_PIN, PORT_PIN is the pin
- number on the specific port (between 0 and 31).
-
- MUX_ID is
- function + (direction << 2) + (gpio_oconf << 4) + (gpio_iconfa << 8) + (gpio_iconfb << 10)
-
- function value is used to select the pin function.
- Possible values:
- 0 - Primary function
- 1 - Alternate function
- 2 - GPIO
- Registers: GIUS (GPIO In Use), GPR (General Purpose Register)
-
- direction defines the data direction of the pin.
- Possible values:
- 0 - Input
- 1 - Output
- Register: DDIR
-
- gpio_oconf configures the gpio submodule output signal. This does not
- have any effect unless GPIO function is selected. A/B/C_IN are output
- signals of function blocks A,B and C. Specific function blocks are
- described in the reference manual.
- Possible values:
- 0 - A_IN
- 1 - B_IN
- 2 - C_IN
- 3 - Data Register
- Registers: OCR1, OCR2
-
- gpio_iconfa/b configures the gpio submodule input to functionblocks A and
- B. GPIO function should be selected if this is configured.
- Possible values:
- 0 - GPIO_IN
- 1 - Interrupt Status Register
- 2 - Pulldown
- 3 - Pullup
- Registers ICONFA1, ICONFA2, ICONFB1 and ICONFB2
-
- CONFIG can be 0 or 1, meaning Pullup disable/enable.
-
-
-The iomux controller has gpio child nodes which are embedded in the iomux
-control registers. They have to be defined as child nodes of the iomux device
-node. If gpio subnodes are defined "#address-cells", "#size-cells" and "ranges"
-properties for the iomux device node are required.
-
-Example:
-
-iomuxc: iomuxc@...15000 {
- compatible = "fsl,imx27-iomuxc";
- reg = <0x10015000 0x600>;
- #address-cells = <1>;
- #size-cells = <1>;
- ranges;
-
- gpio1: gpio@...15000 {
- ...
- };
-
- ...
-
- uart {
- pinctrl_uart1: uart-1 {
- fsl,pins = <
- 0x8c 0x004 0x0 /* UART1_TXD__UART1_TXD */
- 0x8d 0x000 0x0 /* UART1_RXD__UART1_RXD */
- 0x8e 0x004 0x0 /* UART1_CTS__UART1_CTS */
- 0x8f 0x000 0x0 /* UART1_RTS__UART1_RTS */
- >;
- };
-
- ...
- };
-};
-
-
-For convenience there are macros defined in imx27-pinfunc.h which provide PIN
-and MUX_ID. They are structured as MX27_PAD_<Pad name>__<Signal name>. The names
-are defined in the i.MX27 reference manual.
-
-The above example using macros:
-
-iomuxc: iomuxc@...15000 {
- compatible = "fsl,imx27-iomuxc";
- reg = <0x10015000 0x600>;
- #address-cells = <1>;
- #size-cells = <1>;
- ranges;
-
- gpio1: gpio@...15000 {
- ...
- };
-
- ...
-
- uart {
- pinctrl_uart1: uart-1 {
- fsl,pins = <
- MX27_PAD_UART1_TXD__UART1_TXD 0x0
- MX27_PAD_UART1_RXD__UART1_RXD 0x0
- MX27_PAD_UART1_CTS__UART1_CTS 0x0
- MX27_PAD_UART1_RTS__UART1_RTS 0x0
- >;
- };
-
- ...
- };
-};
--
2.43.0
Powered by blists - more mailing lists