Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[linux-drm-fsl-dcu.git] / Documentation / devicetree / bindings / pinctrl / fsl,imx27-pinctrl.txt
1 * Freescale IMX27 IOMUX Controller
2
3 Required properties:
4 - compatible: "fsl,imx27-iomuxc"
5
6 The iomuxc driver node should define subnodes containing of pinctrl configuration subnodes.
7
8 Required properties for pin configuration node:
9 - fsl,pins: three integers array, represents a group of pins mux and config
10   setting. The format is fsl,pins = <PIN MUX_ID CONFIG>.
11
12   PIN is an integer between 0 and 0xbf. imx27 has 6 ports with 32 configurable
13   configurable pins each. PIN is PORT * 32 + PORT_PIN, PORT_PIN is the pin
14   number on the specific port (between 0 and 31).
15
16   MUX_ID is
17     function + (direction << 2) + (gpio_oconf << 4) + (gpio_iconfa << 8) + (gpio_iconfb << 10)
18
19       function value is used to select the pin function.
20       Possible values:
21           0 - Primary function
22           1 - Alternate function
23           2 - GPIO
24       Registers: GIUS (GPIO In Use), GPR (General Purpose Register)
25
26       direction defines the data direction of the pin.
27       Possible values:
28           0 - Input
29           1 - Output
30       Register: DDIR
31
32       gpio_oconf configures the gpio submodule output signal. This does not
33       have any effect unless GPIO function is selected. A/B/C_IN are output
34       signals of function blocks A,B and C. Specific function blocks are
35       described in the reference manual.
36       Possible values:
37           0 - A_IN
38           1 - B_IN
39           2 - C_IN
40           3 - Data Register
41       Registers: OCR1, OCR2
42
43       gpio_iconfa/b configures the gpio submodule input to functionblocks A and
44       B. GPIO function should be selected if this is configured.
45       Possible values:
46           0 - GPIO_IN
47           1 - Interrupt Status Register
48           2 - Pulldown
49           3 - Pullup
50       Registers ICONFA1, ICONFA2, ICONFB1 and ICONFB2
51
52   CONFIG can be 0 or 1, meaning Pullup disable/enable.
53
54
55
56 Example:
57
58 iomuxc: iomuxc@10015000 {
59         compatible = "fsl,imx27-iomuxc";
60         reg = <0x10015000 0x600>;
61
62         uart {
63                 pinctrl_uart1: uart-1 {
64                         fsl,pins = <
65                                 0x8c 0x004 0x0 /* UART1_TXD__UART1_TXD */
66                                 0x8d 0x000 0x0 /* UART1_RXD__UART1_RXD */
67                                 0x8e 0x004 0x0 /* UART1_CTS__UART1_CTS */
68                                 0x8f 0x000 0x0 /* UART1_RTS__UART1_RTS */
69                         >;
70                 };
71
72                 ...
73         };
74 };
75
76
77 For convenience there are macros defined in imx27-pinfunc.h which provide PIN
78 and MUX_ID. They are structured as MX27_PAD_<Pad name>__<Signal name>. The names
79 are defined in the i.MX27 reference manual.
80
81 The above example using macros:
82
83 iomuxc: iomuxc@10015000 {
84         compatible = "fsl,imx27-iomuxc";
85         reg = <0x10015000 0x600>;
86
87         uart {
88                 pinctrl_uart1: uart-1 {
89                         fsl,pins = <
90                                 MX27_PAD_UART1_TXD__UART1_TXD 0x0
91                                 MX27_PAD_UART1_RXD__UART1_RXD 0x0
92                                 MX27_PAD_UART1_CTS__UART1_CTS 0x0
93                                 MX27_PAD_UART1_RTS__UART1_RTS 0x0
94                         >;
95                 };
96
97                 ...
98         };
99 };