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