1Imagination Technologies Pistachio SoC pin controllers 2====================================================== 3 4The pin controllers on Pistachio are a combined GPIO controller, (GPIO) 5interrupt controller, and pinmux + pinconf device. The system ("east") pin 6controller on Pistachio has 99 pins, 90 of which are MFIOs which can be 7configured as GPIOs. The 90 GPIOs are divided into 6 banks of up to 16 GPIOs 8each. The GPIO banks are represented as sub-nodes of the pad controller node. 9 10Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and 11../interrupt-controller/interrupts.txt for generic information regarding 12pin controller, GPIO, and interrupt bindings. 13 14Required properties for pin controller node: 15-------------------------------------------- 16 - compatible: "img,pistachio-system-pinctrl". 17 - reg: Address range of the pinctrl registers. 18 19Required properties for GPIO bank sub-nodes: 20-------------------------------------------- 21 - interrupts: Interrupt line for the GPIO bank. 22 - gpio-controller: Indicates the device is a GPIO controller. 23 - #gpio-cells: Must be two. The first cell is the GPIO pin number and the 24 second cell indicates the polarity. See <dt-bindings/gpio/gpio.h> for 25 a list of possible values. 26 - interrupt-controller: Indicates the device is an interrupt controller. 27 - #interrupt-cells: Must be two. The first cell is the GPIO pin number and 28 the second cell encodes the interrupt flags. See 29 <dt-bindings/interrupt-controller/irq.h> for a list of valid flags. 30 31Note that the N GPIO bank sub-nodes *must* be named gpio0, gpio1, ... gpioN-1. 32 33Required properties for pin configuration sub-nodes: 34---------------------------------------------------- 35 - pins: List of pins to which the configuration applies. See below for a 36 list of possible pins. 37 38Optional properties for pin configuration sub-nodes: 39---------------------------------------------------- 40 - function: Mux function for the specified pins. This is not applicable for 41 non-MFIO pins. See below for a list of valid functions for each pin. 42 - bias-high-impedance: Enable high-impedance mode. 43 - bias-pull-up: Enable weak pull-up. 44 - bias-pull-down: Enable weak pull-down. 45 - bias-bus-hold: Enable bus-keeper mode. 46 - drive-strength: Drive strength in mA. Supported values: 2, 4, 8, 12. 47 - input-schmitt-enable: Enable Schmitt trigger. 48 - input-schmitt-disable: Disable Schmitt trigger. 49 - slew-rate: Slew rate control. 0 for slow, 1 for fast. 50 51Pin Functions 52--- --------- 53mfio0 spim1 54mfio1 spim1, spim0, uart1 55mfio2 spim1, spim0, uart1 56mfio3 spim1 57mfio4 spim1 58mfio5 spim1 59mfio6 spim1 60mfio7 spim1 61mfio8 spim0 62mfio9 spim0 63mfio10 spim0 64mfio11 spis 65mfio12 spis 66mfio13 spis 67mfio14 spis 68mfio15 sdhost, mips_trace_clk, mips_trace_data 69mfio16 sdhost, mips_trace_dint, mips_trace_data 70mfio17 sdhost, mips_trace_trigout, mips_trace_data 71mfio18 sdhost, mips_trace_trigin, mips_trace_data 72mfio19 sdhost, mips_trace_dm, mips_trace_data 73mfio20 sdhost, mips_trace_probe_n, mips_trace_data 74mfio21 sdhost, mips_trace_data 75mfio22 sdhost, mips_trace_data 76mfio23 sdhost 77mfio24 sdhost 78mfio25 sdhost 79mfio26 sdhost 80mfio27 sdhost 81mfio28 i2c0, spim0 82mfio29 i2c0, spim0 83mfio30 i2c1, spim0 84mfio31 i2c1, spim1 85mfio32 i2c2 86mfio33 i2c2 87mfio34 i2c3 88mfio35 i2c3 89mfio36 i2s_out, audio_clk_in 90mfio37 i2s_out, debug_raw_cca_ind 91mfio38 i2s_out, debug_ed_sec20_cca_ind 92mfio39 i2s_out, debug_ed_sec40_cca_ind 93mfio40 i2s_out, debug_agc_done_0 94mfio41 i2s_out, debug_agc_done_1 95mfio42 i2s_out, debug_ed_cca_ind 96mfio43 i2s_out, debug_s2l_done 97mfio44 i2s_out 98mfio45 i2s_dac_clk, audio_sync 99mfio46 audio_trigger 100mfio47 i2s_in 101mfio48 i2s_in 102mfio49 i2s_in 103mfio50 i2s_in 104mfio51 i2s_in 105mfio52 i2s_in 106mfio53 i2s_in 107mfio54 i2s_in, spdif_in 108mfio55 uart0, spim0, spim1 109mfio56 uart0, spim0, spim1 110mfio57 uart0, spim0, spim1 111mfio58 uart0, spim1 112mfio59 uart1 113mfio60 uart1 114mfio61 spdif_out 115mfio62 spdif_in 116mfio63 eth, mips_trace_clk, mips_trace_data 117mfio64 eth, mips_trace_dint, mips_trace_data 118mfio65 eth, mips_trace_trigout, mips_trace_data 119mfio66 eth, mips_trace_trigin, mips_trace_data 120mfio67 eth, mips_trace_dm, mips_trace_data 121mfio68 eth, mips_trace_probe_n, mips_trace_data 122mfio69 eth, mips_trace_data 123mfio70 eth, mips_trace_data 124mfio71 eth 125mfio72 ir 126mfio73 pwmpdm, mips_trace_clk, sram_debug 127mfio74 pwmpdm, mips_trace_dint, sram_debug 128mfio75 pwmpdm, mips_trace_trigout, rom_debug 129mfio76 pwmpdm, mips_trace_trigin, rom_debug 130mfio77 mdc_debug, mips_trace_dm, rpu_debug 131mfio78 mdc_debug, mips_trace_probe_n, rpu_debug 132mfio79 ddr_debug, mips_trace_data, mips_debug 133mfio80 ddr_debug, mips_trace_data, mips_debug 134mfio81 dreq0, mips_trace_data, eth_debug 135mfio82 dreq1, mips_trace_data, eth_debug 136mfio83 mips_pll_lock, mips_trace_data, usb_debug 137mfio84 audio_pll_lock, mips_trace_data, usb_debug 138mfio85 rpu_v_pll_lock, mips_trace_data, sdhost_debug 139mfio86 rpu_l_pll_lock, mips_trace_data, sdhost_debug 140mfio87 sys_pll_lock, dreq2, socif_debug 141mfio88 wifi_pll_lock, dreq3, socif_debug 142mfio89 bt_pll_lock, dreq4, dreq5 143tck 144trstn 145tdi 146tms 147tdo 148jtag_comply 149safe_mode 150por_disable 151resetn 152 153Example: 154-------- 155pinctrl@18101C00 { 156 compatible = "img,pistachio-system-pinctrl"; 157 reg = <0x18101C00 0x400>; 158 159 gpio0: gpio0 { 160 interrupts = <GIC_SHARED 71 IRQ_TYPE_LEVEL_HIGH>; 161 162 gpio-controller; 163 #gpio-cells = <2>; 164 165 interrupt-controller; 166 #interrupt-cells = <2>; 167 }; 168 169 ... 170 171 gpio5: gpio5 { 172 interrupts = <GIC_SHARED 76 IRQ_TYPE_LEVEL_HIGH>; 173 174 gpio-controller; 175 #gpio-cells = <2>; 176 177 interrupt-controller; 178 #interrupt-cells = <2>; 179 }; 180 181 ... 182 183 uart0_xfer: uart0-xfer { 184 uart0-rxd { 185 pins = "mfio55"; 186 function = "uart0"; 187 }; 188 uart0-txd { 189 pins = "mfio56"; 190 function = "uart0"; 191 }; 192 }; 193 194 uart0_rts_cts: uart0-rts-cts { 195 uart0-rts { 196 pins = "mfio57"; 197 function = "uart0"; 198 }; 199 uart0-cts { 200 pins = "mfio58"; 201 function = "uart0"; 202 }; 203 }; 204}; 205 206uart@... { 207 ... 208 pinctrl-names = "default"; 209 pinctrl-0 = <&uart0_xfer>, <&uart0_rts_cts>; 210 ... 211}; 212 213usb_vbus: fixed-regulator { 214 ... 215 gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>; 216 ... 217}; 218