forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.1 KiB
121 lines
3.1 KiB
* 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@10015000 { |
|
compatible = "fsl,imx27-iomuxc"; |
|
reg = <0x10015000 0x600>; |
|
#address-cells = <1>; |
|
#size-cells = <1>; |
|
ranges; |
|
|
|
gpio1: gpio@10015000 { |
|
... |
|
}; |
|
|
|
... |
|
|
|
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@10015000 { |
|
compatible = "fsl,imx27-iomuxc"; |
|
reg = <0x10015000 0x600>; |
|
#address-cells = <1>; |
|
#size-cells = <1>; |
|
ranges; |
|
|
|
gpio1: gpio@10015000 { |
|
... |
|
}; |
|
|
|
... |
|
|
|
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 |
|
>; |
|
}; |
|
|
|
... |
|
}; |
|
};
|
|
|