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