blob: a72dc3178179e1a854952b990ed7e671e4674163 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001Imagination 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};