diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-06-24 22:21:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-06-24 22:21:02 -0400 |
commit | 93a4b1b9465d92e8be031b57166afa3d5611e142 (patch) | |
tree | 0ac95e35f24a754e01bdc40c56d71068eed49e4c | |
parent | d59b92f93df2d545d87d2341eb0705cc926ea22a (diff) | |
parent | daecdc66968f122fe53038ded8cb7abe93e0aa8c (diff) |
Merge tag 'pinctrl-v4.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control updates from Linus Walleij:
"Here is the bulk of pin control changes for the v4.2 series: Quite a
lot of new SoC subdrivers and two new main drivers this time, apart
from that business as usual.
Details:
Core functionality:
- Enable exclusive pin ownership: it is possible to flag a pin
controller so that GPIO and other functions cannot use a single pin
simultaneously.
New drivers:
- NXP LPC18xx System Control Unit pin controller
- Imagination Pistachio SoC pin controller
New subdrivers:
- Freescale i.MX7d SoC
- Intel Sunrisepoint-H PCH
- Renesas PFC R8A7793
- Renesas PFC R8A7794
- Mediatek MT6397, MT8127
- SiRF Atlas 7
- Allwinner A33
- Qualcomm MSM8660
- Marvell Armada 395
- Rockchip RK3368
Cleanups:
- A big cleanup of the Marvell MVEBU driver rectifying it to
correspond to reality
- Drop platform device probing from the SH PFC driver, we are now a
DT only shop for SuperH
- Drop obsolte multi-platform check for SH PFC
- Various janitorial: constification, grammar etc
Improvements:
- The AT91 GPIO portions now supports the set_multiple() feature
- Split out SPI pins on the Xilinx Zynq
- Support DTs without specific function nodes in the i.MX driver"
* tag 'pinctrl-v4.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (99 commits)
pinctrl: rockchip: add support for the rk3368
pinctrl: rockchip: generalize perpin driver-strength setting
pinctrl: sh-pfc: r8a7794: add SDHI pin groups
pinctrl: sh-pfc: r8a7794: add MMCIF pin groups
pinctrl: sh-pfc: add R8A7794 PFC support
pinctrl: make pinctrl_register() return proper error code
pinctrl: mvebu: armada-39x: add support for Armada 395 variant
pinctrl: mvebu: armada-39x: add missing SATA functions
pinctrl: mvebu: armada-39x: add missing PCIe functions
pinctrl: mvebu: armada-38x: add ptp functions
pinctrl: mvebu: armada-38x: add ua1 functions
pinctrl: mvebu: armada-38x: add nand functions
pinctrl: mvebu: armada-38x: add sata functions
pinctrl: mvebu: armada-xp: add dram functions
pinctrl: mvebu: armada-xp: add nand rb function
pinctrl: mvebu: armada-xp: add spi1 function
pinctrl: mvebu: armada-39x: normalize ref clock naming
pinctrl: mvebu: armada-xp: rename spi to spi0
pinctrl: mvebu: armada-370: align spi1 clock pin naming
pinctrl: mvebu: armada-370: align VDD cpu-pd pin naming with datasheet
...
113 files changed, 18261 insertions, 843 deletions
diff --git a/Documentation/devicetree/bindings/gpio/gpio-atlas7.txt b/Documentation/devicetree/bindings/gpio/gpio-atlas7.txt new file mode 100644 index 000000000000..d7e123fc90b5 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-atlas7.txt | |||
@@ -0,0 +1,50 @@ | |||
1 | CSR SiRFatlas7 GPIO controller bindings | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "sirf,atlas7-gpio" | ||
5 | - reg : Address range of the pinctrl registers | ||
6 | - interrupts : Interrupts used by every GPIO group | ||
7 | - gpio-banks : How many gpio banks on this controller | ||
8 | - gpio-controller : Indicates this device is a GPIO controller | ||
9 | - interrupt-controller : Marks the device node as an interrupt controller | ||
10 | |||
11 | The GPIO controller also acts as an interrupt controller. It uses the default | ||
12 | two cells specifier as described in Documentation/devicetree/bindings/ | ||
13 | interrupt-controller/interrupts.txt. | ||
14 | |||
15 | Example: | ||
16 | |||
17 | gpio_0: gpio_mediam@17040000 { | ||
18 | compatible = "sirf,atlas7-gpio"; | ||
19 | reg = <0x17040000 0x1000>; | ||
20 | interrupts = <0 13 0>, <0 14 0>; | ||
21 | |||
22 | #gpio-cells = <2>; | ||
23 | #interrupt-cells = <2>; | ||
24 | |||
25 | gpio-controller; | ||
26 | interrupt-controller; | ||
27 | |||
28 | gpio-banks = <2>; | ||
29 | gpio-ranges = <&pinctrl 0 0 0>, | ||
30 | <&pinctrl 32 0 0>; | ||
31 | gpio-ranges-group-names = "lvds_gpio_grp", | ||
32 | "uart_nand_gpio_grp"; | ||
33 | }; | ||
34 | |||
35 | leds { | ||
36 | compatible = "gpio-leds"; | ||
37 | |||
38 | led1 { | ||
39 | gpios = <&gpio_1 15 0>; | ||
40 | ... | ||
41 | }; | ||
42 | |||
43 | led2 { | ||
44 | gpios = <&gpio_2 34 0>; | ||
45 | ... | ||
46 | }; | ||
47 | }; | ||
48 | |||
49 | Please refer to gpio.txt in this directory for details of the common | ||
50 | gpio properties used by devices. | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt index fdd8046e650a..9462ab7ddd1f 100644 --- a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt | |||
@@ -16,6 +16,8 @@ Required properties: | |||
16 | "allwinner,sun7i-a20-pinctrl" | 16 | "allwinner,sun7i-a20-pinctrl" |
17 | "allwinner,sun8i-a23-pinctrl" | 17 | "allwinner,sun8i-a23-pinctrl" |
18 | "allwinner,sun8i-a23-r-pinctrl" | 18 | "allwinner,sun8i-a23-r-pinctrl" |
19 | "allwinner,sun8i-a33-pinctrl" | ||
20 | |||
19 | - reg: Should contain the register physical address and length for the | 21 | - reg: Should contain the register physical address and length for the |
20 | pin controller. | 22 | pin controller. |
21 | 23 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/img,pistachio-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/img,pistachio-pinctrl.txt new file mode 100644 index 000000000000..08a4a32c8eb0 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/img,pistachio-pinctrl.txt | |||
@@ -0,0 +1,217 @@ | |||
1 | Imagination Technologies Pistachio SoC pin controllers | ||
2 | ====================================================== | ||
3 | |||
4 | The pin controllers on Pistachio are a combined GPIO controller, (GPIO) | ||
5 | interrupt controller, and pinmux + pinconf device. The system ("east") pin | ||
6 | controller on Pistachio has 99 pins, 90 of which are MFIOs which can be | ||
7 | configured as GPIOs. The 90 GPIOs are divided into 6 banks of up to 16 GPIOs | ||
8 | each. The GPIO banks are represented as sub-nodes of the pad controller node. | ||
9 | |||
10 | Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and | ||
11 | ../interrupt-controller/interrupts.txt for generic information regarding | ||
12 | pin controller, GPIO, and interrupt bindings. | ||
13 | |||
14 | Required properties for pin controller node: | ||
15 | -------------------------------------------- | ||
16 | - compatible: "img,pistachio-system-pinctrl". | ||
17 | - reg: Address range of the pinctrl registers. | ||
18 | |||
19 | Required 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 | |||
31 | Note that the N GPIO bank sub-nodes *must* be named gpio0, gpio1, ... gpioN-1. | ||
32 | |||
33 | Required 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 | |||
38 | Optional 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 | |||
51 | Pin Functions | ||
52 | --- --------- | ||
53 | mfio0 spim1 | ||
54 | mfio1 spim1, spim0, uart1 | ||
55 | mfio2 spim1, spim0, uart1 | ||
56 | mfio3 spim1 | ||
57 | mfio4 spim1 | ||
58 | mfio5 spim1 | ||
59 | mfio6 spim1 | ||
60 | mfio7 spim1 | ||
61 | mfio8 spim0 | ||
62 | mfio9 spim0 | ||
63 | mfio10 spim0 | ||
64 | mfio11 spis | ||
65 | mfio12 spis | ||
66 | mfio13 spis | ||
67 | mfio14 spis | ||
68 | mfio15 sdhost, mips_trace_clk, mips_trace_data | ||
69 | mfio16 sdhost, mips_trace_dint, mips_trace_data | ||
70 | mfio17 sdhost, mips_trace_trigout, mips_trace_data | ||
71 | mfio18 sdhost, mips_trace_trigin, mips_trace_data | ||
72 | mfio19 sdhost, mips_trace_dm, mips_trace_data | ||
73 | mfio20 sdhost, mips_trace_probe_n, mips_trace_data | ||
74 | mfio21 sdhost, mips_trace_data | ||
75 | mfio22 sdhost, mips_trace_data | ||
76 | mfio23 sdhost | ||
77 | mfio24 sdhost | ||
78 | mfio25 sdhost | ||
79 | mfio26 sdhost | ||
80 | mfio27 sdhost | ||
81 | mfio28 i2c0, spim0 | ||
82 | mfio29 i2c0, spim0 | ||
83 | mfio30 i2c1, spim0 | ||
84 | mfio31 i2c1, spim1 | ||
85 | mfio32 i2c2 | ||
86 | mfio33 i2c2 | ||
87 | mfio34 i2c3 | ||
88 | mfio35 i2c3 | ||
89 | mfio36 i2s_out, audio_clk_in | ||
90 | mfio37 i2s_out, debug_raw_cca_ind | ||
91 | mfio38 i2s_out, debug_ed_sec20_cca_ind | ||
92 | mfio39 i2s_out, debug_ed_sec40_cca_ind | ||
93 | mfio40 i2s_out, debug_agc_done_0 | ||
94 | mfio41 i2s_out, debug_agc_done_1 | ||
95 | mfio42 i2s_out, debug_ed_cca_ind | ||
96 | mfio43 i2s_out, debug_s2l_done | ||
97 | mfio44 i2s_out | ||
98 | mfio45 i2s_dac_clk, audio_sync | ||
99 | mfio46 audio_trigger | ||
100 | mfio47 i2s_in | ||
101 | mfio48 i2s_in | ||
102 | mfio49 i2s_in | ||
103 | mfio50 i2s_in | ||
104 | mfio51 i2s_in | ||
105 | mfio52 i2s_in | ||
106 | mfio53 i2s_in | ||
107 | mfio54 i2s_in, spdif_in | ||
108 | mfio55 uart0, spim0, spim1 | ||
109 | mfio56 uart0, spim0, spim1 | ||
110 | mfio57 uart0, spim0, spim1 | ||
111 | mfio58 uart0, spim1 | ||
112 | mfio59 uart1 | ||
113 | mfio60 uart1 | ||
114 | mfio61 spdif_out | ||
115 | mfio62 spdif_in | ||
116 | mfio63 eth, mips_trace_clk, mips_trace_data | ||
117 | mfio64 eth, mips_trace_dint, mips_trace_data | ||
118 | mfio65 eth, mips_trace_trigout, mips_trace_data | ||
119 | mfio66 eth, mips_trace_trigin, mips_trace_data | ||
120 | mfio67 eth, mips_trace_dm, mips_trace_data | ||
121 | mfio68 eth, mips_trace_probe_n, mips_trace_data | ||
122 | mfio69 eth, mips_trace_data | ||
123 | mfio70 eth, mips_trace_data | ||
124 | mfio71 eth | ||
125 | mfio72 ir | ||
126 | mfio73 pwmpdm, mips_trace_clk, sram_debug | ||
127 | mfio74 pwmpdm, mips_trace_dint, sram_debug | ||
128 | mfio75 pwmpdm, mips_trace_trigout, rom_debug | ||
129 | mfio76 pwmpdm, mips_trace_trigin, rom_debug | ||
130 | mfio77 mdc_debug, mips_trace_dm, rpu_debug | ||
131 | mfio78 mdc_debug, mips_trace_probe_n, rpu_debug | ||
132 | mfio79 ddr_debug, mips_trace_data, mips_debug | ||
133 | mfio80 ddr_debug, mips_trace_data, mips_debug | ||
134 | mfio81 dreq0, mips_trace_data, eth_debug | ||
135 | mfio82 dreq1, mips_trace_data, eth_debug | ||
136 | mfio83 mips_pll_lock, mips_trace_data, usb_debug | ||
137 | mfio84 sys_pll_lock, mips_trace_data, usb_debug | ||
138 | mfio85 wifi_pll_lock, mips_trace_data, sdhost_debug | ||
139 | mfio86 bt_pll_lock, mips_trace_data, sdhost_debug | ||
140 | mfio87 rpu_v_pll_lock, dreq2, socif_debug | ||
141 | mfio88 rpu_l_pll_lock, dreq3, socif_debug | ||
142 | mfio89 audio_pll_lock, dreq4, dreq5 | ||
143 | tck | ||
144 | trstn | ||
145 | tdi | ||
146 | tms | ||
147 | tdo | ||
148 | jtag_comply | ||
149 | safe_mode | ||
150 | por_disable | ||
151 | resetn | ||
152 | |||
153 | Example: | ||
154 | -------- | ||
155 | pinctrl@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 | |||
206 | uart@... { | ||
207 | ... | ||
208 | pinctrl-names = "default"; | ||
209 | pinctrl-0 = <&uart0_xfer>, <&uart0_rts_cts>; | ||
210 | ... | ||
211 | }; | ||
212 | |||
213 | usb_vbus: fixed-regulator { | ||
214 | ... | ||
215 | gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>; | ||
216 | ... | ||
217 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt index adda2a8d1d52..add7c38ec7d8 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt | |||
@@ -17,10 +17,10 @@ mpp0 0 gpio, uart0(rxd) | |||
17 | mpp1 1 gpo, uart0(txd) | 17 | mpp1 1 gpo, uart0(txd) |
18 | mpp2 2 gpio, i2c0(sck), uart0(txd) | 18 | mpp2 2 gpio, i2c0(sck), uart0(txd) |
19 | mpp3 3 gpio, i2c0(sda), uart0(rxd) | 19 | mpp3 3 gpio, i2c0(sda), uart0(rxd) |
20 | mpp4 4 gpio, cpu_pd(vdd) | 20 | mpp4 4 gpio, vdd(cpu-pd) |
21 | mpp5 5 gpo, ge0(txclko), uart1(txd), spi1(clk), audio(mclk) | 21 | mpp5 5 gpo, ge0(txclkout), uart1(txd), spi1(sck), audio(mclk) |
22 | mpp6 6 gpio, ge0(txd0), sata0(prsnt), tdm(rst), audio(sdo) | 22 | mpp6 6 gpio, ge0(txd0), sata0(prsnt), tdm(rst), audio(sdo) |
23 | mpp7 7 gpo, ge0(txd1), tdm(tdx), audio(lrclk) | 23 | mpp7 7 gpo, ge0(txd1), tdm(dtx), audio(lrclk) |
24 | mpp8 8 gpio, ge0(txd2), uart0(rts), tdm(drx), audio(bclk) | 24 | mpp8 8 gpio, ge0(txd2), uart0(rts), tdm(drx), audio(bclk) |
25 | mpp9 9 gpo, ge0(txd3), uart1(txd), sd0(clk), audio(spdifo) | 25 | mpp9 9 gpo, ge0(txd3), uart1(txd), sd0(clk), audio(spdifo) |
26 | mpp10 10 gpio, ge0(txctl), uart0(cts), tdm(fsync), audio(sdi) | 26 | mpp10 10 gpio, ge0(txctl), uart0(cts), tdm(fsync), audio(sdi) |
@@ -52,8 +52,8 @@ mpp30 30 gpio, ge0(rxd7), ge1(rxclk), i2c1(sck) | |||
52 | mpp31 31 gpio, tclk, ge0(txerr) | 52 | mpp31 31 gpio, tclk, ge0(txerr) |
53 | mpp32 32 gpio, spi0(cs0) | 53 | mpp32 32 gpio, spi0(cs0) |
54 | mpp33 33 gpio, dev(bootcs), spi0(cs0) | 54 | mpp33 33 gpio, dev(bootcs), spi0(cs0) |
55 | mpp34 34 gpo, dev(wen0), spi0(mosi) | 55 | mpp34 34 gpo, dev(we0), spi0(mosi) |
56 | mpp35 35 gpo, dev(oen), spi0(sck) | 56 | mpp35 35 gpo, dev(oe), spi0(sck) |
57 | mpp36 36 gpo, dev(a1), spi0(miso) | 57 | mpp36 36 gpo, dev(a1), spi0(miso) |
58 | mpp37 37 gpo, dev(a0), sata0(prsnt) | 58 | mpp37 37 gpo, dev(a0), sata0(prsnt) |
59 | mpp38 38 gpio, dev(ready), uart1(cts), uart0(cts) | 59 | mpp38 38 gpio, dev(ready), uart1(cts), uart0(cts) |
@@ -86,11 +86,11 @@ mpp57 57 gpio, dev(cs3), uart1(rxd), tdm(fsync), sata0(prsnt), | |||
86 | mpp58 58 gpio, dev(cs0), uart1(rts), tdm(int), audio(extclk), | 86 | mpp58 58 gpio, dev(cs0), uart1(rts), tdm(int), audio(extclk), |
87 | uart0(rts) | 87 | uart0(rts) |
88 | mpp59 59 gpo, dev(ale0), uart1(rts), uart0(rts), audio(bclk) | 88 | mpp59 59 gpo, dev(ale0), uart1(rts), uart0(rts), audio(bclk) |
89 | mpp60 60 gpio, dev(ale1), uart1(rxd), sata0(prsnt), pcie(rst-out), | 89 | mpp60 60 gpio, dev(ale1), uart1(rxd), sata0(prsnt), pcie(rstout), |
90 | audio(sdi) | 90 | audio(sdi) |
91 | mpp61 61 gpo, dev(wen1), uart1(txd), audio(rclk) | 91 | mpp61 61 gpo, dev(we1), uart1(txd), audio(lrclk) |
92 | mpp62 62 gpio, dev(a2), uart1(cts), tdm(drx), pcie(clkreq0), | 92 | mpp62 62 gpio, dev(a2), uart1(cts), tdm(drx), pcie(clkreq0), |
93 | audio(mclk), uart0(cts) | 93 | audio(mclk), uart0(cts) |
94 | mpp63 63 gpo, spi0(sck), tclk | 94 | mpp63 63 gpo, spi0(sck), tclk |
95 | mpp64 64 gpio, spi0(miso), spi0-1(cs1) | 95 | mpp64 64 gpio, spi0(miso), spi0(cs1) |
96 | mpp65 65 gpio, spi0(mosi), spi0-1(cs2) | 96 | mpp65 65 gpio, spi0(mosi), spi0(cs2) |
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt index 7de0cda4a379..06e5bb0367f5 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt | |||
@@ -15,24 +15,24 @@ name pins functions | |||
15 | ================================================================================ | 15 | ================================================================================ |
16 | mpp0 0 gpio, dev(ad2), spi0(cs1), spi1(cs1) | 16 | mpp0 0 gpio, dev(ad2), spi0(cs1), spi1(cs1) |
17 | mpp1 1 gpio, dev(ad3), spi0(mosi), spi1(mosi) | 17 | mpp1 1 gpio, dev(ad3), spi0(mosi), spi1(mosi) |
18 | mpp2 2 gpio, dev(ad4), ptp(eventreq), led(c0), audio(sdi) | 18 | mpp2 2 gpio, dev(ad4), ptp(evreq), led(c0), audio(sdi) |
19 | mpp3 3 gpio, dev(ad5), ptp(triggen), led(p3), audio(mclk) | 19 | mpp3 3 gpio, dev(ad5), ptp(trig), led(p3), audio(mclk) |
20 | mpp4 4 gpio, dev(ad6), spi0(miso), spi1(miso) | 20 | mpp4 4 gpio, dev(ad6), spi0(miso), spi1(miso) |
21 | mpp5 5 gpio, dev(ad7), spi0(cs2), spi1(cs2) | 21 | mpp5 5 gpio, dev(ad7), spi0(cs2), spi1(cs2) |
22 | mpp6 6 gpio, dev(ad0), led(p1), audio(rclk) | 22 | mpp6 6 gpio, dev(ad0), led(p1), audio(lrclk) |
23 | mpp7 7 gpio, dev(ad1), ptp(clk), led(p2), audio(extclk) | 23 | mpp7 7 gpio, dev(ad1), ptp(clk), led(p2), audio(extclk) |
24 | mpp8 8 gpio, dev (bootcs), spi0(cs0), spi1(cs0) | 24 | mpp8 8 gpio, dev (bootcs), spi0(cs0), spi1(cs0) |
25 | mpp9 9 gpio, nf(wen), spi0(sck), spi1(sck) | 25 | mpp9 9 gpio, spi0(sck), spi1(sck), nand(we) |
26 | mpp10 10 gpio, nf(ren), dram(vttctrl), led(c1) | 26 | mpp10 10 gpio, dram(vttctrl), led(c1), nand(re) |
27 | mpp11 11 gpio, dev(a0), led(c2), audio(sdo) | 27 | mpp11 11 gpio, dev(a0), led(c2), audio(sdo) |
28 | mpp12 12 gpio, dev(a1), audio(bclk) | 28 | mpp12 12 gpio, dev(a1), audio(bclk) |
29 | mpp13 13 gpio, dev(readyn), pcie0(rstoutn), pcie1(rstoutn) | 29 | mpp13 13 gpio, dev(ready), pcie0(rstout), pcie1(rstout) |
30 | mpp14 14 gpio, i2c0(sda), uart1(txd) | 30 | mpp14 14 gpio, i2c0(sda), uart1(txd) |
31 | mpp15 15 gpio, i2c0(sck), uart1(rxd) | 31 | mpp15 15 gpio, i2c0(sck), uart1(rxd) |
32 | mpp16 16 gpio, uart0(txd) | 32 | mpp16 16 gpio, uart0(txd) |
33 | mpp17 17 gpio, uart0(rxd) | 33 | mpp17 17 gpio, uart0(rxd) |
34 | mpp18 18 gpio, tdm(intn) | 34 | mpp18 18 gpio, tdm(int) |
35 | mpp19 19 gpio, tdm(rstn) | 35 | mpp19 19 gpio, tdm(rst) |
36 | mpp20 20 gpio, tdm(pclk) | 36 | mpp20 20 gpio, tdm(pclk) |
37 | mpp21 21 gpio, tdm(fsync) | 37 | mpp21 21 gpio, tdm(fsync) |
38 | mpp22 22 gpio, tdm(drx) | 38 | mpp22 22 gpio, tdm(drx) |
@@ -45,12 +45,12 @@ mpp28 28 gpio, led(p3), ge1(txctl), sd(clk) | |||
45 | mpp29 29 gpio, pcie1(clkreq), ge1(rxclk), sd(d3) | 45 | mpp29 29 gpio, pcie1(clkreq), ge1(rxclk), sd(d3) |
46 | mpp30 30 gpio, ge1(txd0), spi1(cs0) | 46 | mpp30 30 gpio, ge1(txd0), spi1(cs0) |
47 | mpp31 31 gpio, ge1(txd1), spi1(mosi) | 47 | mpp31 31 gpio, ge1(txd1), spi1(mosi) |
48 | mpp32 32 gpio, ge1(txd2), spi1(sck), ptp(triggen) | 48 | mpp32 32 gpio, ge1(txd2), spi1(sck), ptp(trig) |
49 | mpp33 33 gpio, ge1(txd3), spi1(miso) | 49 | mpp33 33 gpio, ge1(txd3), spi1(miso) |
50 | mpp34 34 gpio, ge1(txclkout), spi1(sck) | 50 | mpp34 34 gpio, ge1(txclkout), spi1(sck) |
51 | mpp35 35 gpio, ge1(rxctl), spi1(cs1), spi0(cs2) | 51 | mpp35 35 gpio, ge1(rxctl), spi1(cs1), spi0(cs2) |
52 | mpp36 36 gpio, pcie0(clkreq) | 52 | mpp36 36 gpio, pcie0(clkreq) |
53 | mpp37 37 gpio, pcie0(clkreq), tdm(intn), ge(mdc) | 53 | mpp37 37 gpio, pcie0(clkreq), tdm(int), ge(mdc) |
54 | mpp38 38 gpio, pcie1(clkreq), ge(mdio) | 54 | mpp38 38 gpio, pcie1(clkreq), ge(mdio) |
55 | mpp39 39 gpio, ref(clkout) | 55 | mpp39 39 gpio, ref(clkout) |
56 | mpp40 40 gpio, uart1(txd) | 56 | mpp40 40 gpio, uart1(txd) |
@@ -58,25 +58,25 @@ mpp41 41 gpio, uart1(rxd) | |||
58 | mpp42 42 gpio, spi1(cs2), led(c0) | 58 | mpp42 42 gpio, spi1(cs2), led(c0) |
59 | mpp43 43 gpio, sata0(prsnt), dram(vttctrl) | 59 | mpp43 43 gpio, sata0(prsnt), dram(vttctrl) |
60 | mpp44 44 gpio, sata0(prsnt) | 60 | mpp44 44 gpio, sata0(prsnt) |
61 | mpp45 45 gpio, spi0(cs2), pcie0(rstoutn) | 61 | mpp45 45 gpio, spi0(cs2), pcie0(rstout) |
62 | mpp46 46 gpio, led(p0), ge0(txd0), ge1(txd0) | 62 | mpp46 46 gpio, led(p0), ge0(txd0), ge1(txd0), dev(we1) |
63 | mpp47 47 gpio, led(p1), ge0(txd1), ge1(txd1) | 63 | mpp47 47 gpio, led(p1), ge0(txd1), ge1(txd1) |
64 | mpp48 48 gpio, led(p2), ge0(txd2), ge1(txd2) | 64 | mpp48 48 gpio, led(p2), ge0(txd2), ge1(txd2) |
65 | mpp49 49 gpio, led(p3), ge0(txd3), ge1(txd3) | 65 | mpp49 49 gpio, led(p3), ge0(txd3), ge1(txd3) |
66 | mpp50 50 gpio, led(c0), ge0(rxd0), ge1(rxd0) | 66 | mpp50 50 gpio, led(c0), ge0(rxd0), ge1(rxd0) |
67 | mpp51 51 gpio, led(c1), ge0(rxd1), ge1(rxd1) | 67 | mpp51 51 gpio, led(c1), ge0(rxd1), ge1(rxd1) |
68 | mpp52 52 gpio, led(c2), ge0(rxd2), ge1(rxd2) | 68 | mpp52 52 gpio, led(c2), ge0(rxd2), ge1(rxd2) |
69 | mpp53 53 gpio, pcie1(rstoutn), ge0(rxd3), ge1(rxd3) | 69 | mpp53 53 gpio, pcie1(rstout), ge0(rxd3), ge1(rxd3) |
70 | mpp54 54 gpio, pcie0(rstoutn), ge0(rxctl), ge1(rxctl) | 70 | mpp54 54 gpio, pcie0(rstout), ge0(rxctl), ge1(rxctl) |
71 | mpp55 55 gpio, ge0(rxclk), ge1(rxclk) | 71 | mpp55 55 gpio, ge0(rxclk), ge1(rxclk) |
72 | mpp56 56 gpio, ge0(txclkout), ge1(txclkout) | 72 | mpp56 56 gpio, ge0(txclkout), ge1(txclkout) |
73 | mpp57 57 gpio, ge0(txctl), ge1(txctl) | 73 | mpp57 57 gpio, ge0(txctl), ge1(txctl), dev(we0) |
74 | mpp58 58 gpio, led(c0) | 74 | mpp58 58 gpio, led(c0) |
75 | mpp59 59 gpio, led(c1) | 75 | mpp59 59 gpio, led(c1) |
76 | mpp60 60 gpio, uart1(txd), led(c2) | 76 | mpp60 60 gpio, uart1(txd), led(c2) |
77 | mpp61 61 gpio, i2c1(sda), uart1(rxd), spi1(cs2), led(p0) | 77 | mpp61 61 gpio, i2c1(sda), uart1(rxd), spi1(cs2), led(p0) |
78 | mpp62 62 gpio, i2c1(sck), led(p1) | 78 | mpp62 62 gpio, i2c1(sck), led(p1) |
79 | mpp63 63 gpio, ptp(triggen), led(p2) | 79 | mpp63 63 gpio, ptp(trig), led(p2), dev(burst/last) |
80 | mpp64 64 gpio, dram(vttctrl), led(p3) | 80 | mpp64 64 gpio, dram(vttctrl), led(p3) |
81 | mpp65 65 gpio, sata1(prsnt) | 81 | mpp65 65 gpio, sata1(prsnt) |
82 | mpp66 66 gpio, ptp(eventreq), spi1(cs3) | 82 | mpp66 66 gpio, ptp(evreq), spi1(cs3) |
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt index b17c96849fc9..54ec4c0a0d0e 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt | |||
@@ -27,16 +27,16 @@ mpp8 8 gpio, ge0(txd1), dev(ad10) | |||
27 | mpp9 9 gpio, ge0(txd2), dev(ad11) | 27 | mpp9 9 gpio, ge0(txd2), dev(ad11) |
28 | mpp10 10 gpio, ge0(txd3), dev(ad12) | 28 | mpp10 10 gpio, ge0(txd3), dev(ad12) |
29 | mpp11 11 gpio, ge0(txctl), dev(ad13) | 29 | mpp11 11 gpio, ge0(txctl), dev(ad13) |
30 | mpp12 12 gpio, ge0(rxd0), pcie0(rstout), pcie1(rstout) [1], spi0(cs1), dev(ad14) | 30 | mpp12 12 gpio, ge0(rxd0), pcie0(rstout), spi0(cs1), dev(ad14), pcie3(clkreq) |
31 | mpp13 13 gpio, ge0(rxd1), pcie0(clkreq), pcie1(clkreq) [1], spi0(cs2), dev(ad15) | 31 | mpp13 13 gpio, ge0(rxd1), pcie0(clkreq), pcie1(clkreq) [1], spi0(cs2), dev(ad15), pcie2(clkreq) |
32 | mpp14 14 gpio, ge0(rxd2), ptp(clk), m(vtt_ctrl), spi0(cs3), dev(wen1) | 32 | mpp14 14 gpio, ge0(rxd2), ptp(clk), dram(vttctrl), spi0(cs3), dev(we1), pcie3(clkreq) |
33 | mpp15 15 gpio, ge0(rxd3), ge(mdc slave), pcie0(rstout), spi0(mosi), pcie1(rstout) [1] | 33 | mpp15 15 gpio, ge0(rxd3), ge(mdc slave), pcie0(rstout), spi0(mosi) |
34 | mpp16 16 gpio, ge0(rxctl), ge(mdio slave), m(decc_err), spi0(miso), pcie0(clkreq) | 34 | mpp16 16 gpio, ge0(rxctl), ge(mdio slave), dram(deccerr), spi0(miso), pcie0(clkreq), pcie1(clkreq) [1] |
35 | mpp17 17 gpio, ge0(rxclk), ptp(clk), ua1(rxd), spi0(sck), sata1(prsnt) | 35 | mpp17 17 gpio, ge0(rxclk), ptp(clk), ua1(rxd), spi0(sck), sata1(prsnt), sata0(prsnt) |
36 | mpp18 18 gpio, ge0(rxerr), ptp(trig_gen), ua1(txd), spi0(cs0), pcie1(rstout) [1] | 36 | mpp18 18 gpio, ge0(rxerr), ptp(trig), ua1(txd), spi0(cs0) |
37 | mpp19 19 gpio, ge0(col), ptp(event_req), pcie0(clkreq), sata1(prsnt), ua0(cts) | 37 | mpp19 19 gpio, ge0(col), ptp(evreq), ge0(txerr), sata1(prsnt), ua0(cts) |
38 | mpp20 20 gpio, ge0(txclk), ptp(clk), pcie1(rstout) [1], sata0(prsnt), ua0(rts) | 38 | mpp20 20 gpio, ge0(txclk), ptp(clk), sata0(prsnt), ua0(rts) |
39 | mpp21 21 gpio, spi0(cs1), ge1(rxd0), sata0(prsnt), sd0(cmd), dev(bootcs) | 39 | mpp21 21 gpio, spi0(cs1), ge1(rxd0), sata0(prsnt), sd0(cmd), dev(bootcs), sata1(prsnt) |
40 | mpp22 22 gpio, spi0(mosi), dev(ad0) | 40 | mpp22 22 gpio, spi0(mosi), dev(ad0) |
41 | mpp23 23 gpio, spi0(sck), dev(ad2) | 41 | mpp23 23 gpio, spi0(sck), dev(ad2) |
42 | mpp24 24 gpio, spi0(miso), ua0(cts), ua1(rxd), sd0(d4), dev(ready) | 42 | mpp24 24 gpio, spi0(miso), ua0(cts), ua1(rxd), sd0(d4), dev(ready) |
@@ -45,36 +45,36 @@ mpp26 26 gpio, spi0(cs2), i2c1(sck), sd0(d6), dev(cs1) | |||
45 | mpp27 27 gpio, spi0(cs3), ge1(txclkout), i2c1(sda), sd0(d7), dev(cs2) | 45 | mpp27 27 gpio, spi0(cs3), ge1(txclkout), i2c1(sda), sd0(d7), dev(cs2) |
46 | mpp28 28 gpio, ge1(txd0), sd0(clk), dev(ad5) | 46 | mpp28 28 gpio, ge1(txd0), sd0(clk), dev(ad5) |
47 | mpp29 29 gpio, ge1(txd1), dev(ale0) | 47 | mpp29 29 gpio, ge1(txd1), dev(ale0) |
48 | mpp30 30 gpio, ge1(txd2), dev(oen) | 48 | mpp30 30 gpio, ge1(txd2), dev(oe) |
49 | mpp31 31 gpio, ge1(txd3), dev(ale1) | 49 | mpp31 31 gpio, ge1(txd3), dev(ale1) |
50 | mpp32 32 gpio, ge1(txctl), dev(wen0) | 50 | mpp32 32 gpio, ge1(txctl), dev(we0) |
51 | mpp33 33 gpio, m(decc_err), dev(ad3) | 51 | mpp33 33 gpio, dram(deccerr), dev(ad3) |
52 | mpp34 34 gpio, dev(ad1) | 52 | mpp34 34 gpio, dev(ad1) |
53 | mpp35 35 gpio, ref(clk_out1), dev(a1) | 53 | mpp35 35 gpio, ref(clk_out1), dev(a1) |
54 | mpp36 36 gpio, ptp(trig_gen), dev(a0) | 54 | mpp36 36 gpio, ptp(trig), dev(a0) |
55 | mpp37 37 gpio, ptp(clk), ge1(rxclk), sd0(d3), dev(ad8) | 55 | mpp37 37 gpio, ptp(clk), ge1(rxclk), sd0(d3), dev(ad8) |
56 | mpp38 38 gpio, ptp(event_req), ge1(rxd1), ref(clk_out0), sd0(d0), dev(ad4) | 56 | mpp38 38 gpio, ptp(evreq), ge1(rxd1), ref(clk_out0), sd0(d0), dev(ad4) |
57 | mpp39 39 gpio, i2c1(sck), ge1(rxd2), ua0(cts), sd0(d1), dev(a2) | 57 | mpp39 39 gpio, i2c1(sck), ge1(rxd2), ua0(cts), sd0(d1), dev(a2) |
58 | mpp40 40 gpio, i2c1(sda), ge1(rxd3), ua0(rts), sd0(d2), dev(ad6) | 58 | mpp40 40 gpio, i2c1(sda), ge1(rxd3), ua0(rts), sd0(d2), dev(ad6) |
59 | mpp41 41 gpio, ua1(rxd), ge1(rxctl), ua0(cts), spi1(cs3), dev(burst/last) | 59 | mpp41 41 gpio, ua1(rxd), ge1(rxctl), ua0(cts), spi1(cs3), dev(burst/last), nand(rb0) |
60 | mpp42 42 gpio, ua1(txd), ua0(rts), dev(ad7) | 60 | mpp42 42 gpio, ua1(txd), ua0(rts), dev(ad7) |
61 | mpp43 43 gpio, pcie0(clkreq), m(vtt_ctrl), m(decc_err), pcie0(rstout), dev(clkout) | 61 | mpp43 43 gpio, pcie0(clkreq), dram(vttctrl), dram(deccerr), spi1(cs2), dev(clkout), nand(rb1) |
62 | mpp44 44 gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [3], pcie0(rstout) | 62 | mpp44 44 gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [3] |
63 | mpp45 45 gpio, ref(clk_out0), pcie0(rstout), pcie1(rstout) [1], pcie2(rstout), pcie3(rstout) | 63 | mpp45 45 gpio, ref(clk_out0), pcie0(rstout), ua1(rxd) |
64 | mpp46 46 gpio, ref(clk_out1), pcie0(rstout), pcie1(rstout) [1], pcie2(rstout), pcie3(rstout) | 64 | mpp46 46 gpio, ref(clk_out1), pcie0(rstout), ua1(txd) |
65 | mpp47 47 gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], spi1(cs2), sata3(prsnt) [2] | 65 | mpp47 47 gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [2] |
66 | mpp48 48 gpio, sata0(prsnt), m(vtt_ctrl), tdm2c(pclk), audio(mclk), sd0(d4) | 66 | mpp48 48 gpio, sata0(prsnt), dram(vttctrl), tdm(pclk), audio(mclk), sd0(d4), pcie0(clkreq) |
67 | mpp49 49 gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm2c(fsync), audio(lrclk), sd0(d5) | 67 | mpp49 49 gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm(fsync), audio(lrclk), sd0(d5), pcie1(clkreq) |
68 | mpp50 50 gpio, pcie0(rstout), pcie1(rstout) [1], tdm2c(drx), audio(extclk), sd0(cmd) | 68 | mpp50 50 gpio, pcie0(rstout), tdm(drx), audio(extclk), sd0(cmd) |
69 | mpp51 51 gpio, tdm2c(dtx), audio(sdo), m(decc_err) | 69 | mpp51 51 gpio, tdm(dtx), audio(sdo), dram(deccerr), ptp(trig) |
70 | mpp52 52 gpio, pcie0(rstout), pcie1(rstout) [1], tdm2c(intn), audio(sdi), sd0(d6) | 70 | mpp52 52 gpio, pcie0(rstout), tdm(int), audio(sdi), sd0(d6), ptp(clk) |
71 | mpp53 53 gpio, sata1(prsnt), sata0(prsnt), tdm2c(rstn), audio(bclk), sd0(d7) | 71 | mpp53 53 gpio, sata1(prsnt), sata0(prsnt), tdm(rst), audio(bclk), sd0(d7), ptp(evreq) |
72 | mpp54 54 gpio, sata0(prsnt), sata1(prsnt), pcie0(rstout), pcie1(rstout) [1], sd0(d3) | 72 | mpp54 54 gpio, sata0(prsnt), sata1(prsnt), pcie0(rstout), ge0(txerr), sd0(d3) |
73 | mpp55 55 gpio, ua1(cts), ge(mdio), pcie1(clkreq) [1], spi1(cs1), sd0(d0) | 73 | mpp55 55 gpio, ua1(cts), ge(mdio), pcie1(clkreq) [1], spi1(cs1), sd0(d0), ua1(rxd) |
74 | mpp56 56 gpio, ua1(rts), ge(mdc), m(decc_err), spi1(mosi) | 74 | mpp56 56 gpio, ua1(rts), ge(mdc), dram(deccerr), spi1(mosi), ua1(txd) |
75 | mpp57 57 gpio, spi1(sck), sd0(clk) | 75 | mpp57 57 gpio, spi1(sck), sd0(clk), ua1(txd) |
76 | mpp58 58 gpio, pcie1(clkreq) [1], i2c1(sck), pcie2(clkreq), spi1(miso), sd0(d1) | 76 | mpp58 58 gpio, pcie1(clkreq) [1], i2c1(sck), pcie2(clkreq), spi1(miso), sd0(d1), ua1(rxd) |
77 | mpp59 59 gpio, pcie0(rstout), i2c1(sda), pcie1(rstout) [1], spi1(cs0), sd0(d2) | 77 | mpp59 59 gpio, pcie0(rstout), i2c1(sda), spi1(cs0), sd0(d2) |
78 | 78 | ||
79 | [1]: only available on 88F6820 and 88F6828 | 79 | [1]: only available on 88F6820 and 88F6828 |
80 | [2]: only available on 88F6828 | 80 | [2]: only available on 88F6828 |
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-39x-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-39x-pinctrl.txt index 5b1a9dc004f4..a40b60f1ca4c 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-39x-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-39x-pinctrl.txt | |||
@@ -4,8 +4,9 @@ Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding | |||
4 | part and usage. | 4 | part and usage. |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: "marvell,88f6920-pinctrl", "marvell,88f6928-pinctrl" | 7 | - compatible: "marvell,88f6920-pinctrl", "marvell,88f6925-pinctrl" or |
8 | depending on the specific variant of the SoC being used. | 8 | "marvell,88f6928-pinctrl" depending on the specific variant of the |
9 | SoC being used. | ||
9 | - reg: register specifier of MPP registers | 10 | - reg: register specifier of MPP registers |
10 | 11 | ||
11 | Available mpp pins/groups and functions: | 12 | Available mpp pins/groups and functions: |
@@ -24,55 +25,60 @@ mpp6 6 gpio, dev(cs3), xsmi(mdio) | |||
24 | mpp7 7 gpio, dev(ad9), xsmi(mdc) | 25 | mpp7 7 gpio, dev(ad9), xsmi(mdc) |
25 | mpp8 8 gpio, dev(ad10), ptp(trig) | 26 | mpp8 8 gpio, dev(ad10), ptp(trig) |
26 | mpp9 9 gpio, dev(ad11), ptp(clk) | 27 | mpp9 9 gpio, dev(ad11), ptp(clk) |
27 | mpp10 10 gpio, dev(ad12), ptp(event) | 28 | mpp10 10 gpio, dev(ad12), ptp(evreq) |
28 | mpp11 11 gpio, dev(ad13), led(clk) | 29 | mpp11 11 gpio, dev(ad13), led(clk) |
29 | mpp12 12 gpio, pcie0(rstout), dev(ad14), led(stb) | 30 | mpp12 12 gpio, pcie0(rstout), dev(ad14), led(stb) |
30 | mpp13 13 gpio, dev(ad15), led(data) | 31 | mpp13 13 gpio, dev(ad15), pcie2(clkreq), led(data) |
31 | mpp14 14 gpio, m(vtt), dev(wen1), ua1(txd) | 32 | mpp14 14 gpio, dram(vttctrl), dev(we1), ua1(txd) |
32 | mpp15 15 gpio, pcie0(rstout), spi0(mosi), i2c1(sck) | 33 | mpp15 15 gpio, pcie0(rstout), spi0(mosi), i2c1(sck) |
33 | mpp16 16 gpio, m(decc), spi0(miso), i2c1(sda) | 34 | mpp16 16 gpio, dram(deccerr), spi0(miso), pcie0(clkreq), i2c1(sda) |
34 | mpp17 17 gpio, ua1(rxd), spi0(sck), smi(mdio) | 35 | mpp17 17 gpio, ua1(rxd), spi0(sck), sata1(prsnt) [1], sata0(prsnt) [1], smi(mdio) |
35 | mpp18 18 gpio, ua1(txd), spi0(cs0), i2c2(sck) | 36 | mpp18 18 gpio, ua1(txd), spi0(cs0), i2c2(sck) |
36 | mpp19 19 gpio, sata1(present) [1], ua0(cts), ua1(rxd), i2c2(sda) | 37 | mpp19 19 gpio, sata1(prsnt) [1], ua0(cts), ua1(rxd), i2c2(sda) |
37 | mpp20 20 gpio, sata0(present) [1], ua0(rts), ua1(txd), smi(mdc) | 38 | mpp20 20 gpio, sata0(prsnt) [1], ua0(rts), ua1(txd), smi(mdc) |
38 | mpp21 21 gpio, spi0(cs1), sata0(present) [1], sd(cmd), dev(bootcs), ge(rxd0) | 39 | mpp21 21 gpio, spi0(cs1), sata0(prsnt) [1], sd0(cmd), dev(bootcs), |
40 | sata1(prsnt) [1], ge(rxd0) | ||
39 | mpp22 22 gpio, spi0(mosi), dev(ad0) | 41 | mpp22 22 gpio, spi0(mosi), dev(ad0) |
40 | mpp23 23 gpio, spi0(sck), dev(ad2) | 42 | mpp23 23 gpio, spi0(sck), dev(ad2) |
41 | mpp24 24 gpio, spi0(miso), ua0(cts), ua1(rxd), sd(d4), dev(readyn) | 43 | mpp24 24 gpio, spi0(miso), ua0(cts), ua1(rxd), sd0(d4), dev(ready) |
42 | mpp25 25 gpio, spi0(cs0), ua0(rts), ua1(txd), sd(d5), dev(cs0) | 44 | mpp25 25 gpio, spi0(cs0), ua0(rts), ua1(txd), sd0(d5), dev(cs0) |
43 | mpp26 26 gpio, spi0(cs2), i2c1(sck), sd(d6), dev(cs1) | 45 | mpp26 26 gpio, spi0(cs2), i2c1(sck), sd0(d6), dev(cs1) |
44 | mpp27 27 gpio, spi0(cs3), i2c1(sda), sd(d7), dev(cs2), ge(txclkout) | 46 | mpp27 27 gpio, spi0(cs3), i2c1(sda), sd0(d7), dev(cs2), ge(txclkout) |
45 | mpp28 28 gpio, sd(clk), dev(ad5), ge(txd0) | 47 | mpp28 28 gpio, sd0(clk), dev(ad5), ge(txd0) |
46 | mpp29 29 gpio, dev(ale0), ge(txd1) | 48 | mpp29 29 gpio, dev(ale0), ge(txd1) |
47 | mpp30 30 gpio, dev(oen), ge(txd2) | 49 | mpp30 30 gpio, dev(oe), ge(txd2) |
48 | mpp31 31 gpio, dev(ale1), ge(txd3) | 50 | mpp31 31 gpio, dev(ale1), ge(txd3) |
49 | mpp32 32 gpio, dev(wen0), ge(txctl) | 51 | mpp32 32 gpio, dev(we0), ge(txctl) |
50 | mpp33 33 gpio, m(decc), dev(ad3) | 52 | mpp33 33 gpio, dram(deccerr), dev(ad3) |
51 | mpp34 34 gpio, dev(ad1) | 53 | mpp34 34 gpio, dev(ad1) |
52 | mpp35 35 gpio, ref(clk), dev(a1) | 54 | mpp35 35 gpio, ref(clk), dev(a1) |
53 | mpp36 36 gpio, dev(a0) | 55 | mpp36 36 gpio, dev(a0) |
54 | mpp37 37 gpio, sd(d3), dev(ad8), ge(rxclk) | 56 | mpp37 37 gpio, sd0(d3), dev(ad8), ge(rxclk) |
55 | mpp38 38 gpio, ref(clk), sd(d0), dev(ad4), ge(rxd1) | 57 | mpp38 38 gpio, ref(clk), sd0(d0), dev(ad4), ge(rxd1) |
56 | mpp39 39 gpio, i2c1(sck), ua0(cts), sd(d1), dev(a2), ge(rxd2) | 58 | mpp39 39 gpio, i2c1(sck), ua0(cts), sd0(d1), dev(a2), ge(rxd2) |
57 | mpp40 40 gpio, i2c1(sda), ua0(rts), sd(d2), dev(ad6), ge(rxd3) | 59 | mpp40 40 gpio, i2c1(sda), ua0(rts), sd0(d2), dev(ad6), ge(rxd3) |
58 | mpp41 41 gpio, ua1(rxd), ua0(cts), spi1(cs3), dev(burstn), nd(rbn0), ge(rxctl) | 60 | mpp41 41 gpio, ua1(rxd), ua0(cts), spi1(cs3), dev(burst/last), nand(rb0), ge(rxctl) |
59 | mpp42 42 gpio, ua1(txd), ua0(rts), dev(ad7) | 61 | mpp42 42 gpio, ua1(txd), ua0(rts), dev(ad7) |
60 | mpp43 43 gpio, pcie0(clkreq), m(vtt), m(decc), spi1(cs2), dev(clkout), nd(rbn1) | 62 | mpp43 43 gpio, pcie0(clkreq), dram(vttctrl), dram(deccerr), spi1(cs2), dev(clkout), nand(rb1) |
61 | mpp44 44 gpio, sata0(present) [1], sata1(present) [1], led(clk) | 63 | mpp44 44 gpio, sata0(prsnt) [1], sata1(prsnt) [1], sata2(prsnt) [2], |
64 | sata3(prsnt) [2], led(clk) | ||
62 | mpp45 45 gpio, ref(clk), pcie0(rstout), ua1(rxd) | 65 | mpp45 45 gpio, ref(clk), pcie0(rstout), ua1(rxd) |
63 | mpp46 46 gpio, ref(clk), pcie0(rstout), ua1(txd), led(stb) | 66 | mpp46 46 gpio, ref(clk), pcie0(rstout), ua1(txd), led(stb) |
64 | mpp47 47 gpio, sata0(present) [1], sata1(present) [1], led(data) | 67 | mpp47 47 gpio, sata0(prsnt) [1], sata1(prsnt) [1], sata2(prsnt) [2], |
65 | mpp48 48 gpio, sata0(present) [1], m(vtt), tdm(pclk) [1], audio(mclk) [1], sd(d4), pcie0(clkreq), ua1(txd) | 68 | sata3(prsnt) [2], led(data) |
66 | mpp49 49 gpio, tdm(fsync) [1], audio(lrclk) [1], sd(d5), ua2(rxd) | 69 | mpp48 48 gpio, sata0(prsnt) [1], dram(vttctrl), tdm(pclk) [2], audio(mclk) [2], sd0(d4), pcie0(clkreq), ua1(txd) |
67 | mpp50 50 gpio, pcie0(rstout), tdm(drx) [1], audio(extclk) [1], sd(cmd), ua2(rxd) | 70 | mpp49 49 gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm(fsync) [2], |
68 | mpp51 51 gpio, tdm(dtx) [1], audio(sdo) [1], m(decc), ua2(txd) | 71 | audio(lrclk) [2], sd0(d5), ua2(rxd) |
69 | mpp52 52 gpio, pcie0(rstout), tdm(intn) [1], audio(sdi) [1], sd(d6), i2c3(sck) | 72 | mpp50 50 gpio, pcie0(rstout), tdm(drx) [2], audio(extclk) [2], sd0(cmd), ua2(rxd) |
70 | mpp53 53 gpio, sata1(present) [1], sata0(present) [1], tdm(rstn) [1], audio(bclk) [1], sd(d7), i2c3(sda) | 73 | mpp51 51 gpio, tdm(dtx) [2], audio(sdo) [2], dram(deccerr), ua2(txd) |
71 | mpp54 54 gpio, sata0(present) [1], sata1(present) [1], pcie0(rstout), sd(d3), ua3(txd) | 74 | mpp52 52 gpio, pcie0(rstout), tdm(int) [2], audio(sdi) [2], sd0(d6), i2c3(sck) |
72 | mpp55 55 gpio, ua1(cts), spi1(cs1), sd(d0), ua1(rxd), ua3(rxd) | 75 | mpp53 53 gpio, sata1(prsnt) [1], sata0(prsnt) [1], tdm(rst) [2], audio(bclk) [2], sd0(d7), i2c3(sda) |
73 | mpp56 56 gpio, ua1(rts), m(decc), spi1(mosi), ua1(txd) | 76 | mpp54 54 gpio, sata0(prsnt) [1], sata1(prsnt) [1], pcie0(rstout), sd0(d3), ua3(txd) |
74 | mpp57 57 gpio, spi1(sck), sd(clk), ua1(txd) | 77 | mpp55 55 gpio, ua1(cts), spi1(cs1), sd0(d0), ua1(rxd), ua3(rxd) |
75 | mpp58 58 gpio, i2c1(sck), pcie2(clkreq), spi1(miso), sd(d1), ua1(rxd) | 78 | mpp56 56 gpio, ua1(rts), dram(deccerr), spi1(mosi), ua1(txd) |
76 | mpp59 59 gpio, pcie0(rstout), i2c1(sda), spi1(cs0), sd(d2) | 79 | mpp57 57 gpio, spi1(sck), sd0(clk), ua1(txd) |
80 | mpp58 58 gpio, i2c1(sck), pcie2(clkreq), spi1(miso), sd0(d1), ua1(rxd) | ||
81 | mpp59 59 gpio, pcie0(rstout), i2c1(sda), spi1(cs0), sd0(d2) | ||
77 | 82 | ||
78 | [1]: only available on 88F6928 | 83 | [1]: only available on 88F6925/88F6928 |
84 | [2]: only available on 88F6928 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt index 373dbccd7ab0..76da7222ff92 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt | |||
@@ -18,7 +18,7 @@ only for more detailed description in this document. | |||
18 | 18 | ||
19 | name pins functions | 19 | name pins functions |
20 | ================================================================================ | 20 | ================================================================================ |
21 | mpp0 0 gpio, ge0(txclko), lcd(d0) | 21 | mpp0 0 gpio, ge0(txclkout), lcd(d0) |
22 | mpp1 1 gpio, ge0(txd0), lcd(d1) | 22 | mpp1 1 gpio, ge0(txd0), lcd(d1) |
23 | mpp2 2 gpio, ge0(txd1), lcd(d2) | 23 | mpp2 2 gpio, ge0(txd1), lcd(d2) |
24 | mpp3 3 gpio, ge0(txd2), lcd(d3) | 24 | mpp3 3 gpio, ge0(txd2), lcd(d3) |
@@ -30,49 +30,50 @@ mpp8 8 gpio, ge0(rxd2), lcd(d8) | |||
30 | mpp9 9 gpio, ge0(rxd3), lcd(d9) | 30 | mpp9 9 gpio, ge0(rxd3), lcd(d9) |
31 | mpp10 10 gpio, ge0(rxctl), lcd(d10) | 31 | mpp10 10 gpio, ge0(rxctl), lcd(d10) |
32 | mpp11 11 gpio, ge0(rxclk), lcd(d11) | 32 | mpp11 11 gpio, ge0(rxclk), lcd(d11) |
33 | mpp12 12 gpio, ge0(txd4), ge1(txd0), lcd(d12) | 33 | mpp12 12 gpio, ge0(txd4), ge1(txclkout), lcd(d12) |
34 | mpp13 13 gpio, ge0(txd5), ge1(txd1), lcd(d13) | 34 | mpp13 13 gpio, ge0(txd5), ge1(txd0), spi1(mosi), lcd(d13) |
35 | mpp14 14 gpio, ge0(txd6), ge1(txd2), lcd(d15) | 35 | mpp14 14 gpio, ge0(txd6), ge1(txd1), spi1(sck), lcd(d15) |
36 | mpp15 15 gpio, ge0(txd7), ge1(txd3), lcd(d16) | 36 | mpp15 15 gpio, ge0(txd7), ge1(txd2), lcd(d16) |
37 | mpp16 16 gpio, ge0(txd7), ge1(txd3), lcd(d16) | 37 | mpp16 16 gpio, ge0(txd7), ge1(txd3), spi1(cs0), lcd(d16) |
38 | mpp17 17 gpio, ge0(col), ge1(txctl), lcd(d17) | 38 | mpp17 17 gpio, ge0(col), ge1(txctl), spi1(miso), lcd(d17) |
39 | mpp18 18 gpio, ge0(rxerr), ge1(rxd0), lcd(d18), ptp(trig) | 39 | mpp18 18 gpio, ge0(rxerr), ge1(rxd0), lcd(d18), ptp(trig) |
40 | mpp19 19 gpio, ge0(crs), ge1(rxd1), lcd(d19), ptp(evreq) | 40 | mpp19 19 gpio, ge0(crs), ge1(rxd1), lcd(d19), ptp(evreq) |
41 | mpp20 20 gpio, ge0(rxd4), ge1(rxd2), lcd(d20), ptp(clk) | 41 | mpp20 20 gpio, ge0(rxd4), ge1(rxd2), lcd(d20), ptp(clk) |
42 | mpp21 21 gpio, ge0(rxd5), ge1(rxd3), lcd(d21), mem(bat) | 42 | mpp21 21 gpio, ge0(rxd5), ge1(rxd3), lcd(d21), dram(bat) |
43 | mpp22 22 gpio, ge0(rxd6), ge1(rxctl), lcd(d22), sata0(prsnt) | 43 | mpp22 22 gpio, ge0(rxd6), ge1(rxctl), lcd(d22), sata0(prsnt) |
44 | mpp23 23 gpio, ge0(rxd7), ge1(rxclk), lcd(d23), sata1(prsnt) | 44 | mpp23 23 gpio, ge0(rxd7), ge1(rxclk), lcd(d23), sata1(prsnt) |
45 | mpp24 24 gpio, lcd(hsync), sata1(prsnt), nf(bootcs-re), tdm(rst) | 45 | mpp24 24 gpio, lcd(hsync), sata1(prsnt), tdm(rst) |
46 | mpp25 25 gpio, lcd(vsync), sata0(prsnt), nf(bootcs-we), tdm(pclk) | 46 | mpp25 25 gpio, lcd(vsync), sata0(prsnt), tdm(pclk) |
47 | mpp26 26 gpio, lcd(clk), tdm(fsync), vdd(cpu1-pd) | 47 | mpp26 26 gpio, lcd(clk), tdm(fsync) |
48 | mpp27 27 gpio, lcd(e), tdm(dtx), ptp(trig) | 48 | mpp27 27 gpio, lcd(e), tdm(dtx), ptp(trig) |
49 | mpp28 28 gpio, lcd(pwm), tdm(drx), ptp(evreq) | 49 | mpp28 28 gpio, lcd(pwm), tdm(drx), ptp(evreq) |
50 | mpp29 29 gpio, lcd(ref-clk), tdm(int0), ptp(clk), vdd(cpu0-pd) | 50 | mpp29 29 gpio, lcd(ref-clk), tdm(int0), ptp(clk) |
51 | mpp30 30 gpio, tdm(int1), sd0(clk) | 51 | mpp30 30 gpio, tdm(int1), sd0(clk) |
52 | mpp31 31 gpio, tdm(int2), sd0(cmd), vdd(cpu0-pd) | 52 | mpp31 31 gpio, tdm(int2), sd0(cmd) |
53 | mpp32 32 gpio, tdm(int3), sd0(d0), vdd(cpu1-pd) | 53 | mpp32 32 gpio, tdm(int3), sd0(d0) |
54 | mpp33 33 gpio, tdm(int4), sd0(d1), mem(bat) | 54 | mpp33 33 gpio, tdm(int4), sd0(d1), dram(bat), dram(vttctrl) |
55 | mpp34 34 gpio, tdm(int5), sd0(d2), sata0(prsnt) | 55 | mpp34 34 gpio, tdm(int5), sd0(d2), sata0(prsnt), dram(deccerr) |
56 | mpp35 35 gpio, tdm(int6), sd0(d3), sata1(prsnt) | 56 | mpp35 35 gpio, tdm(int6), sd0(d3), sata1(prsnt) |
57 | mpp36 36 gpio, spi(mosi) | 57 | mpp36 36 gpio, spi0(mosi) |
58 | mpp37 37 gpio, spi(miso) | 58 | mpp37 37 gpio, spi0(miso) |
59 | mpp38 38 gpio, spi(sck) | 59 | mpp38 38 gpio, spi0(sck) |
60 | mpp39 39 gpio, spi(cs0) | 60 | mpp39 39 gpio, spi0(cs0) |
61 | mpp40 40 gpio, spi(cs1), uart2(cts), lcd(vga-hsync), vdd(cpu1-pd), | 61 | mpp40 40 gpio, spi0(cs1), uart2(cts), lcd(vga-hsync), pcie(clkreq0), |
62 | pcie(clkreq0) | 62 | spi1(cs1) |
63 | mpp41 41 gpio, spi(cs2), uart2(rts), lcd(vga-vsync), sata1(prsnt), | 63 | mpp41 41 gpio, spi0(cs2), uart2(rts), lcd(vga-vsync), sata1(prsnt), |
64 | pcie(clkreq1) | 64 | pcie(clkreq1), spi1(cs2) |
65 | mpp42 42 gpio, uart2(rxd), uart0(cts), tdm(int7), tdm-1(timer), | 65 | mpp42 42 gpio, uart2(rxd), uart0(cts), tdm(int7), tdm(timer) |
66 | vdd(cpu0-pd) | 66 | mpp43 43 gpio, uart2(txd), uart0(rts), spi0(cs3), pcie(rstout), |
67 | mpp43 43 gpio, uart2(txd), uart0(rts), spi(cs3), pcie(rstout), | 67 | spi1(cs3) |
68 | vdd(cpu2-3-pd){1} | 68 | mpp44 44 gpio, uart2(cts), uart3(rxd), spi0(cs4), pcie(clkreq2), |
69 | mpp44 44 gpio, uart2(cts), uart3(rxd), spi(cs4), pcie(clkreq2), | 69 | dram(bat), spi1(cs4) |
70 | mem(bat) | 70 | mpp45 45 gpio, uart2(rts), uart3(txd), spi0(cs5), sata1(prsnt), |
71 | mpp45 45 gpio, uart2(rts), uart3(txd), spi(cs5), sata1(prsnt) | 71 | spi1(cs5), dram(vttctrl) |
72 | mpp46 46 gpio, uart3(rts), uart1(rts), spi(cs6), sata0(prsnt) | 72 | mpp46 46 gpio, uart3(rts), uart1(rts), spi0(cs6), sata0(prsnt), |
73 | mpp47 47 gpio, uart3(cts), uart1(cts), spi(cs7), pcie(clkreq3), | 73 | spi1(cs6) |
74 | ref(clkout) | 74 | mpp47 47 gpio, uart3(cts), uart1(cts), spi0(cs7), pcie(clkreq3), |
75 | mpp48 48 gpio, tclk, dev(burst/last) | 75 | ref(clkout), spi1(cs7) |
76 | mpp48 48 gpio, dev(clkout), dev(burst/last), nand(rb) | ||
76 | 77 | ||
77 | * Marvell Armada XP (mv78260 and mv78460 only) | 78 | * Marvell Armada XP (mv78260 and mv78460 only) |
78 | 79 | ||
@@ -84,9 +85,9 @@ mpp51 51 gpio, dev(ad16) | |||
84 | mpp52 52 gpio, dev(ad17) | 85 | mpp52 52 gpio, dev(ad17) |
85 | mpp53 53 gpio, dev(ad18) | 86 | mpp53 53 gpio, dev(ad18) |
86 | mpp54 54 gpio, dev(ad19) | 87 | mpp54 54 gpio, dev(ad19) |
87 | mpp55 55 gpio, dev(ad20), vdd(cpu0-pd) | 88 | mpp55 55 gpio, dev(ad20) |
88 | mpp56 56 gpio, dev(ad21), vdd(cpu1-pd) | 89 | mpp56 56 gpio, dev(ad21) |
89 | mpp57 57 gpio, dev(ad22), vdd(cpu2-3-pd){1} | 90 | mpp57 57 gpio, dev(ad22) |
90 | mpp58 58 gpio, dev(ad23) | 91 | mpp58 58 gpio, dev(ad23) |
91 | mpp59 59 gpio, dev(ad24) | 92 | mpp59 59 gpio, dev(ad24) |
92 | mpp60 60 gpio, dev(ad25) | 93 | mpp60 60 gpio, dev(ad25) |
@@ -96,6 +97,3 @@ mpp63 63 gpio, dev(ad28) | |||
96 | mpp64 64 gpio, dev(ad29) | 97 | mpp64 64 gpio, dev(ad29) |
97 | mpp65 65 gpio, dev(ad30) | 98 | mpp65 65 gpio, dev(ad30) |
98 | mpp66 66 gpio, dev(ad31) | 99 | mpp66 66 gpio, dev(ad31) |
99 | |||
100 | Notes: | ||
101 | * {1} vdd(cpu2-3-pd) only available on mv78460. | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/nxp,lpc1850-scu.txt b/Documentation/devicetree/bindings/pinctrl/nxp,lpc1850-scu.txt new file mode 100644 index 000000000000..df0309c57505 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/nxp,lpc1850-scu.txt | |||
@@ -0,0 +1,57 @@ | |||
1 | NXP LPC18xx/43xx SCU pin controller Device Tree Bindings | ||
2 | -------------------------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : Should be "nxp,lpc1850-scu" | ||
6 | - reg : Address and length of the register set for the device | ||
7 | - clocks : Clock specifier (see clock bindings for details) | ||
8 | |||
9 | The lpc1850-scu driver uses the generic pin multiplexing and generic pin | ||
10 | configuration documented in pinctrl-bindings.txt. | ||
11 | |||
12 | The following generic nodes are supported: | ||
13 | - function | ||
14 | - pins | ||
15 | - bias-disable | ||
16 | - bias-pull-up | ||
17 | - bias-pull-down | ||
18 | - drive-strength | ||
19 | - input-enable | ||
20 | - input-disable | ||
21 | - input-schmitt-enable | ||
22 | - input-schmitt-disable | ||
23 | - slew-rate | ||
24 | |||
25 | Not all pins support all properties so either refer to the NXP 1850/4350 | ||
26 | user manual or the pin table in the pinctrl-lpc18xx driver for supported | ||
27 | pin properties. | ||
28 | |||
29 | Example: | ||
30 | pinctrl: pinctrl@40086000 { | ||
31 | compatible = "nxp,lpc1850-scu"; | ||
32 | reg = <0x40086000 0x1000>; | ||
33 | clocks = <&ccu1 CLK_CPU_SCU>; | ||
34 | |||
35 | i2c0_pins: i2c0-pins { | ||
36 | i2c0_pins_cfg { | ||
37 | pins = "i2c0_scl", "i2c0_sda"; | ||
38 | function = "i2c0"; | ||
39 | input-enable; | ||
40 | }; | ||
41 | }; | ||
42 | |||
43 | uart0_pins: uart0-pins { | ||
44 | uart0_rx_cfg { | ||
45 | pins = "pf_11"; | ||
46 | function = "uart0"; | ||
47 | bias-disable; | ||
48 | input-enable; | ||
49 | }; | ||
50 | |||
51 | uart0_tx_cfg { | ||
52 | pins = "pf_10"; | ||
53 | function = "uart0"; | ||
54 | bias-disable; | ||
55 | }; | ||
56 | }; | ||
57 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-atlas7.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-atlas7.txt new file mode 100644 index 000000000000..eecf028ff485 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-atlas7.txt | |||
@@ -0,0 +1,109 @@ | |||
1 | CSR SiRFatlas7 pinmux controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "sirf,atlas7-ioc" | ||
5 | - reg : Address range of the pinctrl registers | ||
6 | |||
7 | For example, pinctrl might have properties like the following: | ||
8 | pinctrl: ioc@18880000 { | ||
9 | compatible = "sirf,atlas7-ioc"; | ||
10 | reg = <0x18880000 0x1000>; | ||
11 | |||
12 | a_ac97_pmx: ac97@0 { | ||
13 | ac97 { | ||
14 | groups = "audio_ac97_grp"; | ||
15 | function = "audio_ac97"; | ||
16 | }; | ||
17 | }; | ||
18 | |||
19 | ... | ||
20 | |||
21 | sd2_pmx: sd2@0 { | ||
22 | sd2 { | ||
23 | groups = "sd2_grp0"; | ||
24 | function = "sd2"; | ||
25 | }; | ||
26 | }; | ||
27 | |||
28 | ... | ||
29 | |||
30 | |||
31 | sample0_cfg: sample0@0 { | ||
32 | sample0 { | ||
33 | pins = "ldd_0", "ldd_1"; | ||
34 | bias-pull-up; | ||
35 | }; | ||
36 | }; | ||
37 | |||
38 | sample1_cfg: sample1@0 { | ||
39 | sample1 { | ||
40 | pins = "ldd_2", "ldd_3"; | ||
41 | input-schmitt-enable; | ||
42 | }; | ||
43 | }; | ||
44 | |||
45 | sample2_cfg: sample2@0 { | ||
46 | sample2 { | ||
47 | groups = "uart4_nopause_grp"; | ||
48 | bias-pull-down; | ||
49 | }; | ||
50 | }; | ||
51 | |||
52 | sample3_cfg: sample3@0 { | ||
53 | sample3 { | ||
54 | pins = "ldd_4", "ldd_5"; | ||
55 | drive-strength = <2>; | ||
56 | }; | ||
57 | }; | ||
58 | }; | ||
59 | |||
60 | Please refer to pinctrl-bindings.txt in this directory for details of the common | ||
61 | pinctrl bindings used by client devices. | ||
62 | |||
63 | SiRFatlas7's pinmux nodes act as a container for an abitrary number of subnodes. | ||
64 | Each of these subnodes represents some desired configuration for a group of pins. | ||
65 | |||
66 | Required subnode-properties: | ||
67 | - groups : An array of strings. Each string contains the name of a group. | ||
68 | - function: A string containing the name of the function to mux to the | ||
69 | group. | ||
70 | |||
71 | Valid values for group and function names can be found from looking at the | ||
72 | group and function arrays in driver files: | ||
73 | drivers/pinctrl/pinctrl-sirf.c | ||
74 | |||
75 | For example, pinctrl might have subnodes like the following: | ||
76 | sd0_pmx: sd0@0 { | ||
77 | sd0 { | ||
78 | groups = "sd0_grp"; | ||
79 | function = "sd0"; | ||
80 | }; | ||
81 | }; | ||
82 | |||
83 | sd1_pmx0: sd1@0 { | ||
84 | sd1 { | ||
85 | groups = "sd1_grp0"; | ||
86 | function = "sd1_m0"; | ||
87 | }; | ||
88 | }; | ||
89 | |||
90 | sd1_pmx1: sd1@1 { | ||
91 | sd1 { | ||
92 | groups = "sd1_grp1"; | ||
93 | function = "sd1_m1"; | ||
94 | }; | ||
95 | }; | ||
96 | |||
97 | For a specific board, if it wants to use sd1, | ||
98 | it can add the following to its board-specific .dts file. | ||
99 | sd1: sd@0x12340000 { | ||
100 | pinctrl-names = "default"; | ||
101 | pinctrl-0 = <&sd1_pmx0>; | ||
102 | } | ||
103 | |||
104 | or | ||
105 | |||
106 | sd1: sd@0x12340000 { | ||
107 | pinctrl-names = "default"; | ||
108 | pinctrl-0 = <&sd1_pmx1>; | ||
109 | } | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-mt65xx.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-mt65xx.txt index 5868a0f7255d..0480bc31bfd7 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-mt65xx.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-mt65xx.txt | |||
@@ -3,9 +3,11 @@ | |||
3 | The Mediatek's Pin controller is used to control SoC pins. | 3 | The Mediatek's Pin controller is used to control SoC pins. |
4 | 4 | ||
5 | Required properties: | 5 | Required properties: |
6 | - compatible: value should be either of the following. | 6 | - compatible: value should be one of the following. |
7 | (a) "mediatek,mt8135-pinctrl", compatible with mt8135 pinctrl. | 7 | (a) "mediatek,mt8135-pinctrl", compatible with mt8135 pinctrl. |
8 | - mediatek,pctl-regmap: Should be a phandle of the syscfg node. | 8 | (b) "mediatek,mt8173-pinctrl", compatible with mt8173 pinctrl. |
9 | (c) "mediatek,mt6397-pinctrl", compatible with mt6397 pinctrl. | ||
10 | (d) "mediatek,mt8127-pinctrl", compatible with mt8127 pinctrl. | ||
9 | - pins-are-numbered: Specify the subnodes are using numbered pinmux to | 11 | - pins-are-numbered: Specify the subnodes are using numbered pinmux to |
10 | specify pins. | 12 | specify pins. |
11 | - gpio-controller : Marks the device node as a gpio controller. | 13 | - gpio-controller : Marks the device node as a gpio controller. |
@@ -24,6 +26,9 @@ Required properties: | |||
24 | Only the following flags are supported: | 26 | Only the following flags are supported: |
25 | 0 - GPIO_ACTIVE_HIGH | 27 | 0 - GPIO_ACTIVE_HIGH |
26 | 1 - GPIO_ACTIVE_LOW | 28 | 1 - GPIO_ACTIVE_LOW |
29 | |||
30 | Optional properties: | ||
31 | - mediatek,pctl-regmap: Should be a phandle of the syscfg node. | ||
27 | - reg: physicall address base for EINT registers | 32 | - reg: physicall address base for EINT registers |
28 | - interrupt-controller: Marks the device node as an interrupt controller | 33 | - interrupt-controller: Marks the device node as an interrupt controller |
29 | - #interrupt-cells: Should be two. | 34 | - #interrupt-cells: Should be two. |
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt new file mode 100644 index 000000000000..77aa11790163 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt | |||
@@ -0,0 +1,90 @@ | |||
1 | Qualcomm MSM8660 TLMM block | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "qcom,msm8660-pinctrl" | ||
5 | - reg: Should be the base address and length of the TLMM block. | ||
6 | - interrupts: Should be the parent IRQ of the TLMM block. | ||
7 | - interrupt-controller: Marks the device node as an interrupt controller. | ||
8 | - #interrupt-cells: Should be two. | ||
9 | - gpio-controller: Marks the device node as a GPIO controller. | ||
10 | - #gpio-cells : Should be two. | ||
11 | The first cell is the gpio pin number and the | ||
12 | second cell is used for optional parameters. | ||
13 | |||
14 | Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for | ||
15 | a general description of GPIO and interrupt bindings. | ||
16 | |||
17 | Please refer to pinctrl-bindings.txt in this directory for details of the | ||
18 | common pinctrl bindings used by client devices, including the meaning of the | ||
19 | phrase "pin configuration node". | ||
20 | |||
21 | Qualcomm's pin configuration nodes act as a container for an arbitrary number of | ||
22 | subnodes. Each of these subnodes represents some desired configuration for a | ||
23 | pin, a group, or a list of pins or groups. This configuration can include the | ||
24 | mux function to select on those pin(s)/group(s), and various pin configuration | ||
25 | parameters, such as pull-up, drive strength, etc. | ||
26 | |||
27 | The name of each subnode is not important; all subnodes should be enumerated | ||
28 | and processed purely based on their content. | ||
29 | |||
30 | Each subnode only affects those parameters that are explicitly listed. In | ||
31 | other words, a subnode that lists a mux function but no pin configuration | ||
32 | parameters implies no information about any pin configuration parameters. | ||
33 | Similarly, a pin subnode that describes a pullup parameter implies no | ||
34 | information about e.g. the mux function. | ||
35 | |||
36 | |||
37 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
38 | to specify in a pin configuration subnode: | ||
39 | |||
40 | pins, function, bias-disable, bias-pull-down, bias-pull,up, drive-strength, | ||
41 | output-low, output-high. | ||
42 | |||
43 | Non-empty subnodes must specify the 'pins' property. | ||
44 | |||
45 | Valid values for pins are: | ||
46 | gpio0-gpio172, sdc3_clk, sdc3_cmd, sdc3_data sdc4_clk, sdc4_cmd, sdc4_data | ||
47 | |||
48 | Valid values for function are: | ||
49 | gpio, cam_mclk, dsub, ext_gps, gp_clk_0a, gp_clk_0b, gp_clk_1a, gp_clk_1b, | ||
50 | gp_clk_2a, gp_clk_2b, gp_mn, gsbi1, gsbi1_spi_cs1_n, gsbi1_spi_cs2a_n, | ||
51 | gsbi1_spi_cs2b_n, gsbi1_spi_cs3_n, gsbi2, gsbi2_spi_cs1_n, gsbi2_spi_cs2_n, | ||
52 | gsbi2_spi_cs3_n, gsbi3, gsbi3_spi_cs1_n, gsbi3_spi_cs2_n, gsbi3_spi_cs3_n, | ||
53 | gsbi4, gsbi5, gsbi6, gsbi7, gsbi8, gsbi9, gsbi10, gsbi11, gsbi12, hdmi, i2s, | ||
54 | lcdc, mdp_vsync, mi2s, pcm, ps_hold, sdc1, sdc2, sdc5, tsif1, tsif2, usb_fs1, | ||
55 | usb_fs1_oe_n, usb_fs2, usb_fs2_oe_n, vfe, vsens_alarm, | ||
56 | |||
57 | Example: | ||
58 | |||
59 | msmgpio: pinctrl@800000 { | ||
60 | compatible = "qcom,msm8660-pinctrl"; | ||
61 | reg = <0x800000 0x4000>; | ||
62 | |||
63 | gpio-controller; | ||
64 | #gpio-cells = <2>; | ||
65 | interrupt-controller; | ||
66 | #interrupt-cells = <2>; | ||
67 | interrupts = <0 16 0x4>; | ||
68 | |||
69 | pinctrl-names = "default"; | ||
70 | pinctrl-0 = <&gsbi12_uart>; | ||
71 | |||
72 | gsbi12_uart: gsbi12-uart { | ||
73 | mux { | ||
74 | pins = "gpio117", "gpio118"; | ||
75 | function = "gsbi12"; | ||
76 | }; | ||
77 | |||
78 | tx { | ||
79 | pins = "gpio118"; | ||
80 | drive-strength = <8>; | ||
81 | bias-disable; | ||
82 | }; | ||
83 | |||
84 | rx { | ||
85 | pins = "gpio117"; | ||
86 | drive-strength = <2>; | ||
87 | bias-pull-up; | ||
88 | }; | ||
89 | }; | ||
90 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt index bfe72ec055e3..51cee44fc140 100644 --- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt | |||
@@ -16,7 +16,9 @@ Required Properties: | |||
16 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. | 16 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. |
17 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. | 17 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. |
18 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. | 18 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. |
19 | - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2) compatible pin-controller. | 19 | - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2-W) compatible pin-controller. |
20 | - "renesas,pfc-r8a7793": for R8A7793 (R-Car M2-N) compatible pin-controller. | ||
21 | - "renesas,pfc-r8a7794": for R8A7794 (R-Car E2) compatible pin-controller. | ||
20 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. | 22 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. |
21 | 23 | ||
22 | - reg: Base address and length of each memory resource used by the pin | 24 | - reg: Base address and length of each memory resource used by the pin |
diff --git a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt index 388b213249fd..391ef4be8d50 100644 --- a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt | |||
@@ -21,14 +21,15 @@ defined as gpio sub-nodes of the pinmux controller. | |||
21 | Required properties for iomux controller: | 21 | Required properties for iomux controller: |
22 | - compatible: one of "rockchip,rk2928-pinctrl", "rockchip,rk3066a-pinctrl" | 22 | - compatible: one of "rockchip,rk2928-pinctrl", "rockchip,rk3066a-pinctrl" |
23 | "rockchip,rk3066b-pinctrl", "rockchip,rk3188-pinctrl" | 23 | "rockchip,rk3066b-pinctrl", "rockchip,rk3188-pinctrl" |
24 | "rockchip,rk3288-pinctrl" | 24 | "rockchip,rk3288-pinctrl", "rockchip,rk3368-pinctrl" |
25 | - rockchip,grf: phandle referencing a syscon providing the | 25 | - rockchip,grf: phandle referencing a syscon providing the |
26 | "general register files" | 26 | "general register files" |
27 | 27 | ||
28 | Optional properties for iomux controller: | 28 | Optional properties for iomux controller: |
29 | - rockchip,pmu: phandle referencing a syscon providing the pmu registers | 29 | - rockchip,pmu: phandle referencing a syscon providing the pmu registers |
30 | as some SoCs carry parts of the iomux controller registers there. | 30 | as some SoCs carry parts of the iomux controller registers there. |
31 | Required for at least rk3188 and rk3288. | 31 | Required for at least rk3188 and rk3288. On the rk3368 this should |
32 | point to the PMUGRF syscon. | ||
32 | 33 | ||
33 | Deprecated properties for iomux controller: | 34 | Deprecated properties for iomux controller: |
34 | - reg: first element is the general register space of the iomux controller | 35 | - reg: first element is the general register space of the iomux controller |
diff --git a/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt index b7b55a964f65..f488b0f77406 100644 --- a/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/xlnx,zynq-pinctrl.txt | |||
@@ -45,8 +45,9 @@ to specify in a pinconf subnode: | |||
45 | 45 | ||
46 | Valid values for groups are: | 46 | Valid values for groups are: |
47 | ethernet0_0_grp, ethernet1_0_grp, mdio0_0_grp, mdio1_0_grp, | 47 | ethernet0_0_grp, ethernet1_0_grp, mdio0_0_grp, mdio1_0_grp, |
48 | qspi0_0_grp, qspi1_0_grp, qspi_fbclk, qspi_cs1_grp, spi0_0_grp, | 48 | qspi0_0_grp, qspi1_0_grp, qspi_fbclk, qspi_cs1_grp, spi0_0_grp - spi0_2_grp, |
49 | spi0_1_grp - spi0_2_grp, spi1_0_grp - spi1_3_grp, sdio0_0_grp - sdio0_2_grp, | 49 | spi0_X_ssY (X=0..2, Y=0..2), spi1_0_grp - spi1_3_grp, |
50 | spi1_X_ssY (X=0..3, Y=0..2), sdio0_0_grp - sdio0_2_grp, | ||
50 | sdio1_0_grp - sdio1_3_grp, sdio0_emio_wp, sdio0_emio_cd, sdio1_emio_wp, | 51 | sdio1_0_grp - sdio1_3_grp, sdio0_emio_wp, sdio0_emio_cd, sdio1_emio_wp, |
51 | sdio1_emio_cd, smc0_nor, smc0_nor_cs1_grp, smc0_nor_addr25_grp, smc0_nand, | 52 | sdio1_emio_cd, smc0_nor, smc0_nor_cs1_grp, smc0_nor_addr25_grp, smc0_nand, |
52 | can0_0_grp - can0_10_grp, can1_0_grp - can1_11_grp, uart0_0_grp - uart0_10_grp, | 53 | can0_0_grp - can0_10_grp, can1_0_grp - can1_11_grp, uart0_0_grp - uart0_10_grp, |
@@ -59,7 +60,7 @@ to specify in a pinconf subnode: | |||
59 | 60 | ||
60 | Valid values for function are: | 61 | Valid values for function are: |
61 | ethernet0, ethernet1, mdio0, mdio1, qspi0, qspi1, qspi_fbclk, qspi_cs1, | 62 | ethernet0, ethernet1, mdio0, mdio1, qspi0, qspi1, qspi_fbclk, qspi_cs1, |
62 | spi0, spi1, sdio0, sdio0_pc, sdio0_cd, sdio0_wp, | 63 | spi0, spi0_ss, spi1, spi1_ss, sdio0, sdio0_pc, sdio0_cd, sdio0_wp, |
63 | sdio1, sdio1_pc, sdio1_cd, sdio1_wp, | 64 | sdio1, sdio1_pc, sdio1_cd, sdio1_wp, |
64 | smc0_nor, smc0_nor_cs1, smc0_nor_addr25, smc0_nand, can0, can1, uart0, uart1, | 65 | smc0_nor, smc0_nor_cs1, smc0_nor_addr25, smc0_nand, can0, can1, uart0, uart1, |
65 | i2c0, i2c1, ttc0, ttc1, swdt0, gpio0, usb0, usb1 | 66 | i2c0, i2c1, ttc0, ttc1, swdt0, gpio0, usb0, usb1 |
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt index a9b47163bb5d..4976389e432d 100644 --- a/Documentation/pinctrl.txt +++ b/Documentation/pinctrl.txt | |||
@@ -714,6 +714,7 @@ static struct pinmux_ops foo_pmxops = { | |||
714 | .get_function_name = foo_get_fname, | 714 | .get_function_name = foo_get_fname, |
715 | .get_function_groups = foo_get_groups, | 715 | .get_function_groups = foo_get_groups, |
716 | .set_mux = foo_set_mux, | 716 | .set_mux = foo_set_mux, |
717 | .strict = true, | ||
717 | }; | 718 | }; |
718 | 719 | ||
719 | /* Pinmux operations are handled by some pin controller */ | 720 | /* Pinmux operations are handled by some pin controller */ |
@@ -830,6 +831,11 @@ separate memory range only intended for GPIO driving, and the register | |||
830 | range dealing with pin config and pin multiplexing get placed into a | 831 | range dealing with pin config and pin multiplexing get placed into a |
831 | different memory range and a separate section of the data sheet. | 832 | different memory range and a separate section of the data sheet. |
832 | 833 | ||
834 | A flag "strict" in struct pinctrl_desc is available to check and deny | ||
835 | simultaneous access to the same pin from GPIO and pin multiplexing | ||
836 | consumers on hardware of this type. The pinctrl driver should set this flag | ||
837 | accordingly. | ||
838 | |||
833 | (B) | 839 | (B) |
834 | 840 | ||
835 | pin config | 841 | pin config |
@@ -850,6 +856,11 @@ possible that the GPIO, pin config and pin multiplex registers are placed into | |||
850 | the same memory range and the same section of the data sheet, although that | 856 | the same memory range and the same section of the data sheet, although that |
851 | need not be the case. | 857 | need not be the case. |
852 | 858 | ||
859 | In some pin controllers, although the physical pins are designed in the same | ||
860 | way as (B), the GPIO function still can't be enabled at the same time as the | ||
861 | peripheral functions. So again the "strict" flag should be set, denying | ||
862 | simultaneous activation by GPIO and other muxed in devices. | ||
863 | |||
853 | From a kernel point of view, however, these are different aspects of the | 864 | From a kernel point of view, however, these are different aspects of the |
854 | hardware and shall be put into different subsystems: | 865 | hardware and shall be put into different subsystems: |
855 | 866 | ||
diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c index a6e79225886d..8333f878919c 100644 --- a/drivers/gpio/gpio-bcm-kona.c +++ b/drivers/gpio/gpio-bcm-kona.c | |||
@@ -540,7 +540,7 @@ static void bcm_kona_gpio_irq_unmap(struct irq_domain *d, unsigned int irq) | |||
540 | irq_set_chip_data(irq, NULL); | 540 | irq_set_chip_data(irq, NULL); |
541 | } | 541 | } |
542 | 542 | ||
543 | static struct irq_domain_ops bcm_kona_irq_ops = { | 543 | static const struct irq_domain_ops bcm_kona_irq_ops = { |
544 | .map = bcm_kona_gpio_irq_map, | 544 | .map = bcm_kona_gpio_irq_map, |
545 | .unmap = bcm_kona_gpio_irq_unmap, | 545 | .unmap = bcm_kona_gpio_irq_unmap, |
546 | .xlate = irq_domain_xlate_twocell, | 546 | .xlate = irq_domain_xlate_twocell, |
diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c index 3cfcfc620c8e..fbf287307c4c 100644 --- a/drivers/gpio/gpio-em.c +++ b/drivers/gpio/gpio-em.c | |||
@@ -266,7 +266,7 @@ static int em_gio_irq_domain_map(struct irq_domain *h, unsigned int irq, | |||
266 | return 0; | 266 | return 0; |
267 | } | 267 | } |
268 | 268 | ||
269 | static struct irq_domain_ops em_gio_irq_domain_ops = { | 269 | static const struct irq_domain_ops em_gio_irq_domain_ops = { |
270 | .map = em_gio_irq_domain_map, | 270 | .map = em_gio_irq_domain_map, |
271 | .xlate = irq_domain_xlate_twocell, | 271 | .xlate = irq_domain_xlate_twocell, |
272 | }; | 272 | }; |
diff --git a/drivers/gpio/gpio-grgpio.c b/drivers/gpio/gpio-grgpio.c index 35a02770c8b0..0a8f7617e72e 100644 --- a/drivers/gpio/gpio-grgpio.c +++ b/drivers/gpio/gpio-grgpio.c | |||
@@ -332,7 +332,7 @@ static void grgpio_irq_unmap(struct irq_domain *d, unsigned int irq) | |||
332 | spin_unlock_irqrestore(&priv->bgc.lock, flags); | 332 | spin_unlock_irqrestore(&priv->bgc.lock, flags); |
333 | } | 333 | } |
334 | 334 | ||
335 | static struct irq_domain_ops grgpio_irq_domain_ops = { | 335 | static const struct irq_domain_ops grgpio_irq_domain_ops = { |
336 | .map = grgpio_irq_map, | 336 | .map = grgpio_irq_map, |
337 | .unmap = grgpio_irq_unmap, | 337 | .unmap = grgpio_irq_unmap, |
338 | }; | 338 | }; |
diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c index a65b75161aa4..20aa66f34f6e 100644 --- a/drivers/gpio/gpio-mpc8xxx.c +++ b/drivers/gpio/gpio-mpc8xxx.c | |||
@@ -329,7 +329,7 @@ static int mpc8xxx_gpio_irq_map(struct irq_domain *h, unsigned int irq, | |||
329 | return 0; | 329 | return 0; |
330 | } | 330 | } |
331 | 331 | ||
332 | static struct irq_domain_ops mpc8xxx_gpio_irq_ops = { | 332 | static const struct irq_domain_ops mpc8xxx_gpio_irq_ops = { |
333 | .map = mpc8xxx_gpio_irq_map, | 333 | .map = mpc8xxx_gpio_irq_map, |
334 | .xlate = irq_domain_xlate_twocell, | 334 | .xlate = irq_domain_xlate_twocell, |
335 | }; | 335 | }; |
diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c index bec397a60204..3fa22dade243 100644 --- a/drivers/gpio/gpio-sa1100.c +++ b/drivers/gpio/gpio-sa1100.c | |||
@@ -160,7 +160,7 @@ static int sa1100_gpio_irqdomain_map(struct irq_domain *d, | |||
160 | return 0; | 160 | return 0; |
161 | } | 161 | } |
162 | 162 | ||
163 | static struct irq_domain_ops sa1100_gpio_irqdomain_ops = { | 163 | static const struct irq_domain_ops sa1100_gpio_irqdomain_ops = { |
164 | .map = sa1100_gpio_irqdomain_map, | 164 | .map = sa1100_gpio_irqdomain_map, |
165 | .xlate = irq_domain_xlate_onetwocell, | 165 | .xlate = irq_domain_xlate_onetwocell, |
166 | }; | 166 | }; |
diff --git a/drivers/gpio/gpio-sodaville.c b/drivers/gpio/gpio-sodaville.c index d8da36cd8123..65bc9f47a68e 100644 --- a/drivers/gpio/gpio-sodaville.c +++ b/drivers/gpio/gpio-sodaville.c | |||
@@ -125,7 +125,7 @@ static int sdv_xlate(struct irq_domain *h, struct device_node *node, | |||
125 | return 0; | 125 | return 0; |
126 | } | 126 | } |
127 | 127 | ||
128 | static struct irq_domain_ops irq_domain_sdv_ops = { | 128 | static const struct irq_domain_ops irq_domain_sdv_ops = { |
129 | .xlate = sdv_xlate, | 129 | .xlate = sdv_xlate, |
130 | }; | 130 | }; |
131 | 131 | ||
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig index aeb5729fbda6..100d9ac2ae1f 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig | |||
@@ -88,6 +88,15 @@ config PINCTRL_LANTIQ | |||
88 | select PINMUX | 88 | select PINMUX |
89 | select PINCONF | 89 | select PINCONF |
90 | 90 | ||
91 | config PINCTRL_LPC18XX | ||
92 | bool "NXP LPC18XX/43XX SCU pinctrl driver" | ||
93 | depends on OF && (ARCH_LPC18XX || COMPILE_TEST) | ||
94 | default ARCH_LPC18XX | ||
95 | select PINMUX | ||
96 | select GENERIC_PINCONF | ||
97 | help | ||
98 | Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU). | ||
99 | |||
91 | config PINCTRL_FALCON | 100 | config PINCTRL_FALCON |
92 | bool | 101 | bool |
93 | depends on SOC_FALCON | 102 | depends on SOC_FALCON |
@@ -123,7 +132,17 @@ config PINCTRL_SIRF | |||
123 | bool "CSR SiRFprimaII pin controller driver" | 132 | bool "CSR SiRFprimaII pin controller driver" |
124 | depends on ARCH_SIRF | 133 | depends on ARCH_SIRF |
125 | select PINMUX | 134 | select PINMUX |
135 | select PINCONF | ||
136 | select GENERIC_PINCONF | ||
137 | select GPIOLIB_IRQCHIP | ||
138 | |||
139 | config PINCTRL_PISTACHIO | ||
140 | def_bool y if MACH_PISTACHIO | ||
141 | depends on GPIOLIB | ||
142 | select PINMUX | ||
143 | select GENERIC_PINCONF | ||
126 | select GPIOLIB_IRQCHIP | 144 | select GPIOLIB_IRQCHIP |
145 | select OF_GPIO | ||
127 | 146 | ||
128 | config PINCTRL_ST | 147 | config PINCTRL_ST |
129 | bool | 148 | bool |
diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile index 6eadf04a33b3..f4216d9347e2 100644 --- a/drivers/pinctrl/Makefile +++ b/drivers/pinctrl/Makefile | |||
@@ -18,6 +18,7 @@ obj-$(CONFIG_PINCTRL_AMD) += pinctrl-amd.o | |||
18 | obj-$(CONFIG_PINCTRL_FALCON) += pinctrl-falcon.o | 18 | obj-$(CONFIG_PINCTRL_FALCON) += pinctrl-falcon.o |
19 | obj-$(CONFIG_PINCTRL_MESON) += meson/ | 19 | obj-$(CONFIG_PINCTRL_MESON) += meson/ |
20 | obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o | 20 | obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o |
21 | obj-$(CONFIG_PINCTRL_PISTACHIO) += pinctrl-pistachio.o | ||
21 | obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o | 22 | obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o |
22 | obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o | 23 | obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o |
23 | obj-$(CONFIG_PINCTRL_SIRF) += sirf/ | 24 | obj-$(CONFIG_PINCTRL_SIRF) += sirf/ |
@@ -34,6 +35,7 @@ obj-$(CONFIG_PINCTRL_U300) += pinctrl-u300.o | |||
34 | obj-$(CONFIG_PINCTRL_COH901) += pinctrl-coh901.o | 35 | obj-$(CONFIG_PINCTRL_COH901) += pinctrl-coh901.o |
35 | obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o | 36 | obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o |
36 | obj-$(CONFIG_PINCTRL_LANTIQ) += pinctrl-lantiq.o | 37 | obj-$(CONFIG_PINCTRL_LANTIQ) += pinctrl-lantiq.o |
38 | obj-$(CONFIG_PINCTRL_LPC18XX) += pinctrl-lpc18xx.o | ||
37 | obj-$(CONFIG_PINCTRL_TB10X) += pinctrl-tb10x.o | 39 | obj-$(CONFIG_PINCTRL_TB10X) += pinctrl-tb10x.o |
38 | obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o | 40 | obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o |
39 | obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o | 41 | obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o |
diff --git a/drivers/pinctrl/bcm/pinctrl-bcm281xx.c b/drivers/pinctrl/bcm/pinctrl-bcm281xx.c index 9641f1c7617e..c3c692e508e8 100644 --- a/drivers/pinctrl/bcm/pinctrl-bcm281xx.c +++ b/drivers/pinctrl/bcm/pinctrl-bcm281xx.c | |||
@@ -1425,9 +1425,9 @@ static int __init bcm281xx_pinctrl_probe(struct platform_device *pdev) | |||
1425 | pctl = pinctrl_register(&bcm281xx_pinctrl_desc, | 1425 | pctl = pinctrl_register(&bcm281xx_pinctrl_desc, |
1426 | &pdev->dev, | 1426 | &pdev->dev, |
1427 | pdata); | 1427 | pdata); |
1428 | if (!pctl) { | 1428 | if (IS_ERR(pctl)) { |
1429 | dev_err(&pdev->dev, "Failed to register pinctrl\n"); | 1429 | dev_err(&pdev->dev, "Failed to register pinctrl\n"); |
1430 | return -ENODEV; | 1430 | return PTR_ERR(pctl); |
1431 | } | 1431 | } |
1432 | 1432 | ||
1433 | platform_set_drvdata(pdev, pdata); | 1433 | platform_set_drvdata(pdev, pdata); |
diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c index 8d908e3f42c3..efcf2a2b3975 100644 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c | |||
@@ -1036,9 +1036,9 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) | |||
1036 | } | 1036 | } |
1037 | 1037 | ||
1038 | pc->pctl_dev = pinctrl_register(&bcm2835_pinctrl_desc, dev, pc); | 1038 | pc->pctl_dev = pinctrl_register(&bcm2835_pinctrl_desc, dev, pc); |
1039 | if (!pc->pctl_dev) { | 1039 | if (IS_ERR(pc->pctl_dev)) { |
1040 | gpiochip_remove(&pc->gpio_chip); | 1040 | gpiochip_remove(&pc->gpio_chip); |
1041 | return -EINVAL; | 1041 | return PTR_ERR(pc->pctl_dev); |
1042 | } | 1042 | } |
1043 | 1043 | ||
1044 | pc->gpio_range = bcm2835_pinctrl_gpio_range; | 1044 | pc->gpio_range = bcm2835_pinctrl_gpio_range; |
diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c index e406e3d8c1c7..7d9482bf8252 100644 --- a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c +++ b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c | |||
@@ -38,7 +38,7 @@ | |||
38 | #define CYGNUS_GPIO_DATA_IN_OFFSET 0x00 | 38 | #define CYGNUS_GPIO_DATA_IN_OFFSET 0x00 |
39 | #define CYGNUS_GPIO_DATA_OUT_OFFSET 0x04 | 39 | #define CYGNUS_GPIO_DATA_OUT_OFFSET 0x04 |
40 | #define CYGNUS_GPIO_OUT_EN_OFFSET 0x08 | 40 | #define CYGNUS_GPIO_OUT_EN_OFFSET 0x08 |
41 | #define CYGNUS_GPIO_IN_TYPE_OFFSET 0x0c | 41 | #define CYGNUS_GPIO_INT_TYPE_OFFSET 0x0c |
42 | #define CYGNUS_GPIO_INT_DE_OFFSET 0x10 | 42 | #define CYGNUS_GPIO_INT_DE_OFFSET 0x10 |
43 | #define CYGNUS_GPIO_INT_EDGE_OFFSET 0x14 | 43 | #define CYGNUS_GPIO_INT_EDGE_OFFSET 0x14 |
44 | #define CYGNUS_GPIO_INT_MSK_OFFSET 0x18 | 44 | #define CYGNUS_GPIO_INT_MSK_OFFSET 0x18 |
@@ -264,7 +264,7 @@ static int cygnus_gpio_irq_set_type(struct irq_data *d, unsigned int type) | |||
264 | } | 264 | } |
265 | 265 | ||
266 | spin_lock_irqsave(&chip->lock, flags); | 266 | spin_lock_irqsave(&chip->lock, flags); |
267 | cygnus_set_bit(chip, CYGNUS_GPIO_IN_TYPE_OFFSET, gpio, | 267 | cygnus_set_bit(chip, CYGNUS_GPIO_INT_TYPE_OFFSET, gpio, |
268 | level_triggered); | 268 | level_triggered); |
269 | cygnus_set_bit(chip, CYGNUS_GPIO_INT_DE_OFFSET, gpio, dual_edge); | 269 | cygnus_set_bit(chip, CYGNUS_GPIO_INT_DE_OFFSET, gpio, dual_edge); |
270 | cygnus_set_bit(chip, CYGNUS_GPIO_INT_EDGE_OFFSET, gpio, | 270 | cygnus_set_bit(chip, CYGNUS_GPIO_INT_EDGE_OFFSET, gpio, |
@@ -750,9 +750,9 @@ static int cygnus_gpio_register_pinconf(struct cygnus_gpio *chip) | |||
750 | pctldesc->confops = &cygnus_pconf_ops; | 750 | pctldesc->confops = &cygnus_pconf_ops; |
751 | 751 | ||
752 | chip->pctl = pinctrl_register(pctldesc, chip->dev, chip); | 752 | chip->pctl = pinctrl_register(pctldesc, chip->dev, chip); |
753 | if (!chip->pctl) { | 753 | if (IS_ERR(chip->pctl)) { |
754 | dev_err(chip->dev, "unable to register pinctrl device\n"); | 754 | dev_err(chip->dev, "unable to register pinctrl device\n"); |
755 | return -EINVAL; | 755 | return PTR_ERR(chip->pctl); |
756 | } | 756 | } |
757 | 757 | ||
758 | return 0; | 758 | return 0; |
diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-mux.c b/drivers/pinctrl/bcm/pinctrl-cygnus-mux.c index f9a9283caf81..9728f3db9126 100644 --- a/drivers/pinctrl/bcm/pinctrl-cygnus-mux.c +++ b/drivers/pinctrl/bcm/pinctrl-cygnus-mux.c | |||
@@ -989,9 +989,9 @@ static int cygnus_pinmux_probe(struct platform_device *pdev) | |||
989 | 989 | ||
990 | pinctrl->pctl = pinctrl_register(&cygnus_pinctrl_desc, &pdev->dev, | 990 | pinctrl->pctl = pinctrl_register(&cygnus_pinctrl_desc, &pdev->dev, |
991 | pinctrl); | 991 | pinctrl); |
992 | if (!pinctrl->pctl) { | 992 | if (IS_ERR(pinctrl->pctl)) { |
993 | dev_err(&pdev->dev, "unable to register Cygnus IOMUX pinctrl\n"); | 993 | dev_err(&pdev->dev, "unable to register Cygnus IOMUX pinctrl\n"); |
994 | return -EINVAL; | 994 | return PTR_ERR(pinctrl->pctl); |
995 | } | 995 | } |
996 | 996 | ||
997 | return 0; | 997 | return 0; |
diff --git a/drivers/pinctrl/berlin/berlin-bg2.c b/drivers/pinctrl/berlin/berlin-bg2.c index b71a6fffef1b..b467e6e14f8a 100644 --- a/drivers/pinctrl/berlin/berlin-bg2.c +++ b/drivers/pinctrl/berlin/berlin-bg2.c | |||
@@ -20,24 +20,24 @@ | |||
20 | static const struct berlin_desc_group berlin2_soc_pinctrl_groups[] = { | 20 | static const struct berlin_desc_group berlin2_soc_pinctrl_groups[] = { |
21 | /* G */ | 21 | /* G */ |
22 | BERLIN_PINCTRL_GROUP("G0", 0x00, 0x1, 0x00, | 22 | BERLIN_PINCTRL_GROUP("G0", 0x00, 0x1, 0x00, |
23 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), | 23 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS0n */ |
24 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), | 24 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), |
25 | BERLIN_PINCTRL_GROUP("G1", 0x00, 0x2, 0x01, | 25 | BERLIN_PINCTRL_GROUP("G1", 0x00, 0x2, 0x01, |
26 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), | 26 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS1n */ |
27 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), | 27 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), |
28 | BERLIN_PINCTRL_FUNCTION(0x2, "usb1")), | 28 | BERLIN_PINCTRL_FUNCTION(0x2, "usb1")), |
29 | BERLIN_PINCTRL_GROUP("G2", 0x00, 0x2, 0x02, | 29 | BERLIN_PINCTRL_GROUP("G2", 0x00, 0x2, 0x02, |
30 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 30 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
31 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), | 31 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS2n */ |
32 | BERLIN_PINCTRL_FUNCTION(0x2, "pwm"), | 32 | BERLIN_PINCTRL_FUNCTION(0x2, "pwm"), |
33 | BERLIN_PINCTRL_FUNCTION(0x3, "i2s0")), | 33 | BERLIN_PINCTRL_FUNCTION(0x3, "i2s0")), |
34 | BERLIN_PINCTRL_GROUP("G3", 0x00, 0x2, 0x04, | 34 | BERLIN_PINCTRL_GROUP("G3", 0x00, 0x2, 0x04, |
35 | BERLIN_PINCTRL_FUNCTION(0x0, "soc"), | 35 | BERLIN_PINCTRL_FUNCTION(0x0, "soc"), |
36 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), | 36 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS3n */ |
37 | BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), | 37 | BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), |
38 | BERLIN_PINCTRL_FUNCTION(0x3, "i2s1")), | 38 | BERLIN_PINCTRL_FUNCTION(0x3, "i2s1")), |
39 | BERLIN_PINCTRL_GROUP("G4", 0x00, 0x2, 0x06, | 39 | BERLIN_PINCTRL_GROUP("G4", 0x00, 0x2, 0x06, |
40 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), | 40 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* CLK/SDI/SDO */ |
41 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), | 41 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), |
42 | BERLIN_PINCTRL_FUNCTION(0x2, "pwm")), | 42 | BERLIN_PINCTRL_FUNCTION(0x2, "pwm")), |
43 | BERLIN_PINCTRL_GROUP("G5", 0x00, 0x3, 0x08, | 43 | BERLIN_PINCTRL_GROUP("G5", 0x00, 0x3, 0x08, |
@@ -163,15 +163,15 @@ static const struct berlin_desc_group berlin2_sysmgr_pinctrl_groups[] = { | |||
163 | /* GSM */ | 163 | /* GSM */ |
164 | BERLIN_PINCTRL_GROUP("GSM0", 0x40, 0x2, 0x00, | 164 | BERLIN_PINCTRL_GROUP("GSM0", 0x40, 0x2, 0x00, |
165 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 165 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
166 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), | 166 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS0n */ |
167 | BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), | 167 | BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), |
168 | BERLIN_PINCTRL_GROUP("GSM1", 0x40, 0x2, 0x02, | 168 | BERLIN_PINCTRL_GROUP("GSM1", 0x40, 0x2, 0x02, |
169 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 169 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
170 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), | 170 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS1n */ |
171 | BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), | 171 | BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), |
172 | BERLIN_PINCTRL_GROUP("GSM2", 0x40, 0x2, 0x04, | 172 | BERLIN_PINCTRL_GROUP("GSM2", 0x40, 0x2, 0x04, |
173 | BERLIN_PINCTRL_FUNCTION(0x0, "twsi2"), | 173 | BERLIN_PINCTRL_FUNCTION(0x0, "twsi2"), |
174 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2")), | 174 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2")), /* SS2n/SS3n */ |
175 | BERLIN_PINCTRL_GROUP("GSM3", 0x40, 0x2, 0x06, | 175 | BERLIN_PINCTRL_GROUP("GSM3", 0x40, 0x2, 0x06, |
176 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 176 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
177 | BERLIN_PINCTRL_FUNCTION(0x1, "uart0"), /* CTS/RTS */ | 177 | BERLIN_PINCTRL_FUNCTION(0x1, "uart0"), /* CTS/RTS */ |
@@ -187,7 +187,7 @@ static const struct berlin_desc_group berlin2_sysmgr_pinctrl_groups[] = { | |||
187 | BERLIN_PINCTRL_FUNCTION(0x3, "twsi3")), | 187 | BERLIN_PINCTRL_FUNCTION(0x3, "twsi3")), |
188 | BERLIN_PINCTRL_GROUP("GSM6", 0x40, 0x2, 0x0c, | 188 | BERLIN_PINCTRL_GROUP("GSM6", 0x40, 0x2, 0x0c, |
189 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 189 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
190 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), | 190 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* CLK/SDO */ |
191 | BERLIN_PINCTRL_FUNCTION(0x1, "clki")), | 191 | BERLIN_PINCTRL_FUNCTION(0x1, "clki")), |
192 | BERLIN_PINCTRL_GROUP("GSM7", 0x40, 0x1, 0x0e, | 192 | BERLIN_PINCTRL_GROUP("GSM7", 0x40, 0x1, 0x0e, |
193 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 193 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
diff --git a/drivers/pinctrl/berlin/berlin-bg2cd.c b/drivers/pinctrl/berlin/berlin-bg2cd.c index 19ac5a22c947..a8b98083a031 100644 --- a/drivers/pinctrl/berlin/berlin-bg2cd.c +++ b/drivers/pinctrl/berlin/berlin-bg2cd.c | |||
@@ -68,17 +68,17 @@ static const struct berlin_desc_group berlin2cd_soc_pinctrl_groups[] = { | |||
68 | BERLIN_PINCTRL_FUNCTION(0x1, "twsi1"), | 68 | BERLIN_PINCTRL_FUNCTION(0x1, "twsi1"), |
69 | BERLIN_PINCTRL_FUNCTION(0x2, "gpio")), | 69 | BERLIN_PINCTRL_FUNCTION(0x2, "gpio")), |
70 | BERLIN_PINCTRL_GROUP("G8", 0x00, 0x3, 0x10, | 70 | BERLIN_PINCTRL_GROUP("G8", 0x00, 0x3, 0x10, |
71 | BERLIN_PINCTRL_FUNCTION(0x0, "ss0"), | 71 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS0n */ |
72 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), | 72 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), |
73 | BERLIN_PINCTRL_GROUP("G9", 0x00, 0x3, 0x13, | 73 | BERLIN_PINCTRL_GROUP("G9", 0x00, 0x3, 0x13, |
74 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 74 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
75 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), | 75 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS1n/SS2n */ |
76 | BERLIN_PINCTRL_FUNCTION(0x2, "twsi0")), | 76 | BERLIN_PINCTRL_FUNCTION(0x2, "twsi0")), |
77 | BERLIN_PINCTRL_GROUP("G10", 0x00, 0x2, 0x16, | 77 | BERLIN_PINCTRL_GROUP("G10", 0x00, 0x2, 0x16, |
78 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), | 78 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* CLK */ |
79 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), | 79 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), |
80 | BERLIN_PINCTRL_GROUP("G11", 0x00, 0x2, 0x18, | 80 | BERLIN_PINCTRL_GROUP("G11", 0x00, 0x2, 0x18, |
81 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), | 81 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SDI/SDO */ |
82 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), | 82 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), |
83 | BERLIN_PINCTRL_GROUP("G12", 0x00, 0x3, 0x1a, | 83 | BERLIN_PINCTRL_GROUP("G12", 0x00, 0x3, 0x1a, |
84 | BERLIN_PINCTRL_FUNCTION(0x0, "usb1"), | 84 | BERLIN_PINCTRL_FUNCTION(0x0, "usb1"), |
diff --git a/drivers/pinctrl/berlin/berlin-bg2q.c b/drivers/pinctrl/berlin/berlin-bg2q.c index bd9662e57ad3..65fb8711a42f 100644 --- a/drivers/pinctrl/berlin/berlin-bg2q.c +++ b/drivers/pinctrl/berlin/berlin-bg2q.c | |||
@@ -59,21 +59,21 @@ static const struct berlin_desc_group berlin2q_soc_pinctrl_groups[] = { | |||
59 | BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), | 59 | BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), |
60 | BERLIN_PINCTRL_FUNCTION(0x3, "eddc")), | 60 | BERLIN_PINCTRL_FUNCTION(0x3, "eddc")), |
61 | BERLIN_PINCTRL_GROUP("G8", 0x18, 0x3, 0x18, | 61 | BERLIN_PINCTRL_GROUP("G8", 0x18, 0x3, 0x18, |
62 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), | 62 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* CLK/SDI/SDO */ |
63 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), | 63 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), |
64 | BERLIN_PINCTRL_GROUP("G9", 0x18, 0x3, 0x1b, | 64 | BERLIN_PINCTRL_GROUP("G9", 0x18, 0x3, 0x1b, |
65 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), | 65 | BERLIN_PINCTRL_FUNCTION(0x0, "spi1"), /* SS0n/SS1n */ |
66 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), | 66 | BERLIN_PINCTRL_FUNCTION(0x1, "gpio"), |
67 | BERLIN_PINCTRL_FUNCTION(0x5, "sata")), | 67 | BERLIN_PINCTRL_FUNCTION(0x5, "sata")), |
68 | BERLIN_PINCTRL_GROUP("G10", 0x1c, 0x3, 0x00, | 68 | BERLIN_PINCTRL_GROUP("G10", 0x1c, 0x3, 0x00, |
69 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 69 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
70 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), | 70 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS2n */ |
71 | BERLIN_PINCTRL_FUNCTION(0x3, "i2s0"), | 71 | BERLIN_PINCTRL_FUNCTION(0x3, "i2s0"), |
72 | BERLIN_PINCTRL_FUNCTION(0x4, "pwm"), | 72 | BERLIN_PINCTRL_FUNCTION(0x4, "pwm"), |
73 | BERLIN_PINCTRL_FUNCTION(0x5, "sata")), | 73 | BERLIN_PINCTRL_FUNCTION(0x5, "sata")), |
74 | BERLIN_PINCTRL_GROUP("G11", 0x1c, 0x3, 0x03, | 74 | BERLIN_PINCTRL_GROUP("G11", 0x1c, 0x3, 0x03, |
75 | BERLIN_PINCTRL_FUNCTION(0x0, "jtag"), | 75 | BERLIN_PINCTRL_FUNCTION(0x0, "jtag"), |
76 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), | 76 | BERLIN_PINCTRL_FUNCTION(0x1, "spi1"), /* SS3n */ |
77 | BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), | 77 | BERLIN_PINCTRL_FUNCTION(0x2, "gpio"), |
78 | BERLIN_PINCTRL_FUNCTION(0x3, "i2s1"), | 78 | BERLIN_PINCTRL_FUNCTION(0x3, "i2s1"), |
79 | BERLIN_PINCTRL_FUNCTION(0x4, "pwm"), | 79 | BERLIN_PINCTRL_FUNCTION(0x4, "pwm"), |
@@ -301,19 +301,19 @@ static const struct berlin_desc_group berlin2q_sysmgr_pinctrl_groups[] = { | |||
301 | /* GSM */ | 301 | /* GSM */ |
302 | BERLIN_PINCTRL_GROUP("GSM0", 0x40, 0x2, 0x00, | 302 | BERLIN_PINCTRL_GROUP("GSM0", 0x40, 0x2, 0x00, |
303 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 303 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
304 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), | 304 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS0n */ |
305 | BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), | 305 | BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), |
306 | BERLIN_PINCTRL_GROUP("GSM1", 0x40, 0x2, 0x02, | 306 | BERLIN_PINCTRL_GROUP("GSM1", 0x40, 0x2, 0x02, |
307 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 307 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
308 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), | 308 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS1n */ |
309 | BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), | 309 | BERLIN_PINCTRL_FUNCTION(0x2, "eth1")), |
310 | BERLIN_PINCTRL_GROUP("GSM2", 0x40, 0x2, 0x04, | 310 | BERLIN_PINCTRL_GROUP("GSM2", 0x40, 0x2, 0x04, |
311 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 311 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
312 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), | 312 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* SS2n/SS3n */ |
313 | BERLIN_PINCTRL_FUNCTION(0x2, "eddc")), | 313 | BERLIN_PINCTRL_FUNCTION(0x2, "eddc")), |
314 | BERLIN_PINCTRL_GROUP("GSM3", 0x40, 0x2, 0x06, | 314 | BERLIN_PINCTRL_GROUP("GSM3", 0x40, 0x2, 0x06, |
315 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 315 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
316 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), | 316 | BERLIN_PINCTRL_FUNCTION(0x1, "spi2"), /* CLK/SDO */ |
317 | BERLIN_PINCTRL_FUNCTION(0x2, "eddc")), | 317 | BERLIN_PINCTRL_FUNCTION(0x2, "eddc")), |
318 | BERLIN_PINCTRL_GROUP("GSM4", 0x40, 0x1, 0x08, | 318 | BERLIN_PINCTRL_GROUP("GSM4", 0x40, 0x1, 0x08, |
319 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), | 319 | BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), |
diff --git a/drivers/pinctrl/berlin/berlin.c b/drivers/pinctrl/berlin/berlin.c index 7f0b0f93242b..ddbcd1d7de52 100644 --- a/drivers/pinctrl/berlin/berlin.c +++ b/drivers/pinctrl/berlin/berlin.c | |||
@@ -320,9 +320,9 @@ int berlin_pinctrl_probe(struct platform_device *pdev, | |||
320 | } | 320 | } |
321 | 321 | ||
322 | pctrl->pctrl_dev = pinctrl_register(&berlin_pctrl_desc, dev, pctrl); | 322 | pctrl->pctrl_dev = pinctrl_register(&berlin_pctrl_desc, dev, pctrl); |
323 | if (!pctrl->pctrl_dev) { | 323 | if (IS_ERR(pctrl->pctrl_dev)) { |
324 | dev_err(dev, "failed to register pinctrl driver\n"); | 324 | dev_err(dev, "failed to register pinctrl driver\n"); |
325 | return -EINVAL; | 325 | return PTR_ERR(pctrl->pctrl_dev); |
326 | } | 326 | } |
327 | 327 | ||
328 | return 0; | 328 | return 0; |
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index 18ee2089df4a..8b8f3a04c353 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c | |||
@@ -558,7 +558,7 @@ int pinctrl_get_group_selector(struct pinctrl_dev *pctldev, | |||
558 | } | 558 | } |
559 | 559 | ||
560 | /** | 560 | /** |
561 | * pinctrl_request_gpio() - request a single pin to be used in as GPIO | 561 | * pinctrl_request_gpio() - request a single pin to be used as GPIO |
562 | * @gpio: the GPIO pin number from the GPIO subsystem number space | 562 | * @gpio: the GPIO pin number from the GPIO subsystem number space |
563 | * | 563 | * |
564 | * This function should *ONLY* be used from gpiolib-based GPIO drivers, | 564 | * This function should *ONLY* be used from gpiolib-based GPIO drivers, |
@@ -1115,7 +1115,7 @@ int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps, | |||
1115 | int i, ret; | 1115 | int i, ret; |
1116 | struct pinctrl_maps *maps_node; | 1116 | struct pinctrl_maps *maps_node; |
1117 | 1117 | ||
1118 | pr_debug("add %d pinmux maps\n", num_maps); | 1118 | pr_debug("add %u pinctrl maps\n", num_maps); |
1119 | 1119 | ||
1120 | /* First sanity check the new mapping */ | 1120 | /* First sanity check the new mapping */ |
1121 | for (i = 0; i < num_maps; i++) { | 1121 | for (i = 0; i < num_maps; i++) { |
@@ -1704,14 +1704,14 @@ struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc, | |||
1704 | int ret; | 1704 | int ret; |
1705 | 1705 | ||
1706 | if (!pctldesc) | 1706 | if (!pctldesc) |
1707 | return NULL; | 1707 | return ERR_PTR(-EINVAL); |
1708 | if (!pctldesc->name) | 1708 | if (!pctldesc->name) |
1709 | return NULL; | 1709 | return ERR_PTR(-EINVAL); |
1710 | 1710 | ||
1711 | pctldev = kzalloc(sizeof(*pctldev), GFP_KERNEL); | 1711 | pctldev = kzalloc(sizeof(*pctldev), GFP_KERNEL); |
1712 | if (pctldev == NULL) { | 1712 | if (pctldev == NULL) { |
1713 | dev_err(dev, "failed to alloc struct pinctrl_dev\n"); | 1713 | dev_err(dev, "failed to alloc struct pinctrl_dev\n"); |
1714 | return NULL; | 1714 | return ERR_PTR(-ENOMEM); |
1715 | } | 1715 | } |
1716 | 1716 | ||
1717 | /* Initialize pin control device struct */ | 1717 | /* Initialize pin control device struct */ |
@@ -1724,20 +1724,23 @@ struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc, | |||
1724 | mutex_init(&pctldev->mutex); | 1724 | mutex_init(&pctldev->mutex); |
1725 | 1725 | ||
1726 | /* check core ops for sanity */ | 1726 | /* check core ops for sanity */ |
1727 | if (pinctrl_check_ops(pctldev)) { | 1727 | ret = pinctrl_check_ops(pctldev); |
1728 | if (ret) { | ||
1728 | dev_err(dev, "pinctrl ops lacks necessary functions\n"); | 1729 | dev_err(dev, "pinctrl ops lacks necessary functions\n"); |
1729 | goto out_err; | 1730 | goto out_err; |
1730 | } | 1731 | } |
1731 | 1732 | ||
1732 | /* If we're implementing pinmuxing, check the ops for sanity */ | 1733 | /* If we're implementing pinmuxing, check the ops for sanity */ |
1733 | if (pctldesc->pmxops) { | 1734 | if (pctldesc->pmxops) { |
1734 | if (pinmux_check_ops(pctldev)) | 1735 | ret = pinmux_check_ops(pctldev); |
1736 | if (ret) | ||
1735 | goto out_err; | 1737 | goto out_err; |
1736 | } | 1738 | } |
1737 | 1739 | ||
1738 | /* If we're implementing pinconfig, check the ops for sanity */ | 1740 | /* If we're implementing pinconfig, check the ops for sanity */ |
1739 | if (pctldesc->confops) { | 1741 | if (pctldesc->confops) { |
1740 | if (pinconf_check_ops(pctldev)) | 1742 | ret = pinconf_check_ops(pctldev); |
1743 | if (ret) | ||
1741 | goto out_err; | 1744 | goto out_err; |
1742 | } | 1745 | } |
1743 | 1746 | ||
@@ -1783,7 +1786,7 @@ struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc, | |||
1783 | out_err: | 1786 | out_err: |
1784 | mutex_destroy(&pctldev->mutex); | 1787 | mutex_destroy(&pctldev->mutex); |
1785 | kfree(pctldev); | 1788 | kfree(pctldev); |
1786 | return NULL; | 1789 | return ERR_PTR(ret); |
1787 | } | 1790 | } |
1788 | EXPORT_SYMBOL_GPL(pinctrl_register); | 1791 | EXPORT_SYMBOL_GPL(pinctrl_register); |
1789 | 1792 | ||
diff --git a/drivers/pinctrl/freescale/Kconfig b/drivers/pinctrl/freescale/Kconfig index 16aac38793fe..12ef544b4894 100644 --- a/drivers/pinctrl/freescale/Kconfig +++ b/drivers/pinctrl/freescale/Kconfig | |||
@@ -87,6 +87,13 @@ config PINCTRL_IMX6SX | |||
87 | help | 87 | help |
88 | Say Y here to enable the imx6sx pinctrl driver | 88 | Say Y here to enable the imx6sx pinctrl driver |
89 | 89 | ||
90 | config PINCTRL_IMX7D | ||
91 | bool "IMX7D pinctrl driver" | ||
92 | depends on SOC_IMX7D | ||
93 | select PINCTRL_IMX | ||
94 | help | ||
95 | Say Y here to enable the imx7d pinctrl driver | ||
96 | |||
90 | config PINCTRL_VF610 | 97 | config PINCTRL_VF610 |
91 | bool "Freescale Vybrid VF610 pinctrl driver" | 98 | bool "Freescale Vybrid VF610 pinctrl driver" |
92 | depends on SOC_VF610 | 99 | depends on SOC_VF610 |
diff --git a/drivers/pinctrl/freescale/Makefile b/drivers/pinctrl/freescale/Makefile index bba73c22f043..343cb436ab17 100644 --- a/drivers/pinctrl/freescale/Makefile +++ b/drivers/pinctrl/freescale/Makefile | |||
@@ -12,6 +12,7 @@ obj-$(CONFIG_PINCTRL_IMX6Q) += pinctrl-imx6q.o | |||
12 | obj-$(CONFIG_PINCTRL_IMX6Q) += pinctrl-imx6dl.o | 12 | obj-$(CONFIG_PINCTRL_IMX6Q) += pinctrl-imx6dl.o |
13 | obj-$(CONFIG_PINCTRL_IMX6SL) += pinctrl-imx6sl.o | 13 | obj-$(CONFIG_PINCTRL_IMX6SL) += pinctrl-imx6sl.o |
14 | obj-$(CONFIG_PINCTRL_IMX6SX) += pinctrl-imx6sx.o | 14 | obj-$(CONFIG_PINCTRL_IMX6SX) += pinctrl-imx6sx.o |
15 | obj-$(CONFIG_PINCTRL_IMX7D) += pinctrl-imx7d.o | ||
15 | obj-$(CONFIG_PINCTRL_VF610) += pinctrl-vf610.o | 16 | obj-$(CONFIG_PINCTRL_VF610) += pinctrl-vf610.o |
16 | obj-$(CONFIG_PINCTRL_MXS) += pinctrl-mxs.o | 17 | obj-$(CONFIG_PINCTRL_MXS) += pinctrl-mxs.o |
17 | obj-$(CONFIG_PINCTRL_IMX23) += pinctrl-imx23.o | 18 | obj-$(CONFIG_PINCTRL_IMX23) += pinctrl-imx23.o |
diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index e261f1cf85c6..d7b98ba36825 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c | |||
@@ -606,6 +606,29 @@ static int imx_pinctrl_parse_functions(struct device_node *np, | |||
606 | return 0; | 606 | return 0; |
607 | } | 607 | } |
608 | 608 | ||
609 | /* | ||
610 | * Check if the DT contains pins in the direct child nodes. This indicates the | ||
611 | * newer DT format to store pins. This function returns true if the first found | ||
612 | * fsl,pins property is in a child of np. Otherwise false is returned. | ||
613 | */ | ||
614 | static bool imx_pinctrl_dt_is_flat_functions(struct device_node *np) | ||
615 | { | ||
616 | struct device_node *function_np; | ||
617 | struct device_node *pinctrl_np; | ||
618 | |||
619 | for_each_child_of_node(np, function_np) { | ||
620 | if (of_property_read_bool(function_np, "fsl,pins")) | ||
621 | return true; | ||
622 | |||
623 | for_each_child_of_node(function_np, pinctrl_np) { | ||
624 | if (of_property_read_bool(pinctrl_np, "fsl,pins")) | ||
625 | return false; | ||
626 | } | ||
627 | } | ||
628 | |||
629 | return true; | ||
630 | } | ||
631 | |||
609 | static int imx_pinctrl_probe_dt(struct platform_device *pdev, | 632 | static int imx_pinctrl_probe_dt(struct platform_device *pdev, |
610 | struct imx_pinctrl_soc_info *info) | 633 | struct imx_pinctrl_soc_info *info) |
611 | { | 634 | { |
@@ -613,14 +636,20 @@ static int imx_pinctrl_probe_dt(struct platform_device *pdev, | |||
613 | struct device_node *child; | 636 | struct device_node *child; |
614 | u32 nfuncs = 0; | 637 | u32 nfuncs = 0; |
615 | u32 i = 0; | 638 | u32 i = 0; |
639 | bool flat_funcs; | ||
616 | 640 | ||
617 | if (!np) | 641 | if (!np) |
618 | return -ENODEV; | 642 | return -ENODEV; |
619 | 643 | ||
620 | nfuncs = of_get_child_count(np); | 644 | flat_funcs = imx_pinctrl_dt_is_flat_functions(np); |
621 | if (nfuncs <= 0) { | 645 | if (flat_funcs) { |
622 | dev_err(&pdev->dev, "no functions defined\n"); | 646 | nfuncs = 1; |
623 | return -EINVAL; | 647 | } else { |
648 | nfuncs = of_get_child_count(np); | ||
649 | if (nfuncs <= 0) { | ||
650 | dev_err(&pdev->dev, "no functions defined\n"); | ||
651 | return -EINVAL; | ||
652 | } | ||
624 | } | 653 | } |
625 | 654 | ||
626 | info->nfunctions = nfuncs; | 655 | info->nfunctions = nfuncs; |
@@ -629,16 +658,24 @@ static int imx_pinctrl_probe_dt(struct platform_device *pdev, | |||
629 | if (!info->functions) | 658 | if (!info->functions) |
630 | return -ENOMEM; | 659 | return -ENOMEM; |
631 | 660 | ||
632 | info->ngroups = 0; | 661 | if (flat_funcs) { |
633 | for_each_child_of_node(np, child) | 662 | info->ngroups = of_get_child_count(np); |
634 | info->ngroups += of_get_child_count(child); | 663 | } else { |
664 | info->ngroups = 0; | ||
665 | for_each_child_of_node(np, child) | ||
666 | info->ngroups += of_get_child_count(child); | ||
667 | } | ||
635 | info->groups = devm_kzalloc(&pdev->dev, info->ngroups * sizeof(struct imx_pin_group), | 668 | info->groups = devm_kzalloc(&pdev->dev, info->ngroups * sizeof(struct imx_pin_group), |
636 | GFP_KERNEL); | 669 | GFP_KERNEL); |
637 | if (!info->groups) | 670 | if (!info->groups) |
638 | return -ENOMEM; | 671 | return -ENOMEM; |
639 | 672 | ||
640 | for_each_child_of_node(np, child) | 673 | if (flat_funcs) { |
641 | imx_pinctrl_parse_functions(child, info, i++); | 674 | imx_pinctrl_parse_functions(np, info, 0); |
675 | } else { | ||
676 | for_each_child_of_node(np, child) | ||
677 | imx_pinctrl_parse_functions(child, info, i++); | ||
678 | } | ||
642 | 679 | ||
643 | return 0; | 680 | return 0; |
644 | } | 681 | } |
@@ -690,9 +727,9 @@ int imx_pinctrl_probe(struct platform_device *pdev, | |||
690 | ipctl->dev = info->dev; | 727 | ipctl->dev = info->dev; |
691 | platform_set_drvdata(pdev, ipctl); | 728 | platform_set_drvdata(pdev, ipctl); |
692 | ipctl->pctl = pinctrl_register(&imx_pinctrl_desc, &pdev->dev, ipctl); | 729 | ipctl->pctl = pinctrl_register(&imx_pinctrl_desc, &pdev->dev, ipctl); |
693 | if (!ipctl->pctl) { | 730 | if (IS_ERR(ipctl->pctl)) { |
694 | dev_err(&pdev->dev, "could not register IMX pinctrl driver\n"); | 731 | dev_err(&pdev->dev, "could not register IMX pinctrl driver\n"); |
695 | return -EINVAL; | 732 | return PTR_ERR(ipctl->pctl); |
696 | } | 733 | } |
697 | 734 | ||
698 | dev_info(&pdev->dev, "initialized IMX pinctrl driver\n"); | 735 | dev_info(&pdev->dev, "initialized IMX pinctrl driver\n"); |
diff --git a/drivers/pinctrl/freescale/pinctrl-imx1-core.c b/drivers/pinctrl/freescale/pinctrl-imx1-core.c index 5ac59fbb2440..5fd4437cee15 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx1-core.c +++ b/drivers/pinctrl/freescale/pinctrl-imx1-core.c | |||
@@ -633,9 +633,9 @@ int imx1_pinctrl_core_probe(struct platform_device *pdev, | |||
633 | ipctl->dev = info->dev; | 633 | ipctl->dev = info->dev; |
634 | platform_set_drvdata(pdev, ipctl); | 634 | platform_set_drvdata(pdev, ipctl); |
635 | ipctl->pctl = pinctrl_register(pctl_desc, &pdev->dev, ipctl); | 635 | ipctl->pctl = pinctrl_register(pctl_desc, &pdev->dev, ipctl); |
636 | if (!ipctl->pctl) { | 636 | if (IS_ERR(ipctl->pctl)) { |
637 | dev_err(&pdev->dev, "could not register IMX pinctrl driver\n"); | 637 | dev_err(&pdev->dev, "could not register IMX pinctrl driver\n"); |
638 | return -EINVAL; | 638 | return PTR_ERR(ipctl->pctl); |
639 | } | 639 | } |
640 | 640 | ||
641 | ret = of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev); | 641 | ret = of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev); |
diff --git a/drivers/pinctrl/freescale/pinctrl-imx7d.c b/drivers/pinctrl/freescale/pinctrl-imx7d.c new file mode 100644 index 000000000000..1fa7530530dd --- /dev/null +++ b/drivers/pinctrl/freescale/pinctrl-imx7d.c | |||
@@ -0,0 +1,384 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2014-2015 Freescale Semiconductor, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #include <linux/err.h> | ||
10 | #include <linux/init.h> | ||
11 | #include <linux/io.h> | ||
12 | #include <linux/module.h> | ||
13 | #include <linux/of.h> | ||
14 | #include <linux/of_device.h> | ||
15 | #include <linux/pinctrl/pinctrl.h> | ||
16 | |||
17 | #include "pinctrl-imx.h" | ||
18 | |||
19 | enum imx7d_pads { | ||
20 | MX7D_PAD_RESERVE0 = 0, | ||
21 | MX7D_PAD_RESERVE1 = 1, | ||
22 | MX7D_PAD_RESERVE2 = 2, | ||
23 | MX7D_PAD_RESERVE3 = 3, | ||
24 | MX7D_PAD_RESERVE4 = 4, | ||
25 | MX7D_PAD_GPIO1_IO08 = 5, | ||
26 | MX7D_PAD_GPIO1_IO09 = 6, | ||
27 | MX7D_PAD_GPIO1_IO10 = 7, | ||
28 | MX7D_PAD_GPIO1_IO11 = 8, | ||
29 | MX7D_PAD_GPIO1_IO12 = 9, | ||
30 | MX7D_PAD_GPIO1_IO13 = 10, | ||
31 | MX7D_PAD_GPIO1_IO14 = 11, | ||
32 | MX7D_PAD_GPIO1_IO15 = 12, | ||
33 | MX7D_PAD_EPDC_DATA00 = 13, | ||
34 | MX7D_PAD_EPDC_DATA01 = 14, | ||
35 | MX7D_PAD_EPDC_DATA02 = 15, | ||
36 | MX7D_PAD_EPDC_DATA03 = 16, | ||
37 | MX7D_PAD_EPDC_DATA04 = 17, | ||
38 | MX7D_PAD_EPDC_DATA05 = 18, | ||
39 | MX7D_PAD_EPDC_DATA06 = 19, | ||
40 | MX7D_PAD_EPDC_DATA07 = 20, | ||
41 | MX7D_PAD_EPDC_DATA08 = 21, | ||
42 | MX7D_PAD_EPDC_DATA09 = 22, | ||
43 | MX7D_PAD_EPDC_DATA10 = 23, | ||
44 | MX7D_PAD_EPDC_DATA11 = 24, | ||
45 | MX7D_PAD_EPDC_DATA12 = 25, | ||
46 | MX7D_PAD_EPDC_DATA13 = 26, | ||
47 | MX7D_PAD_EPDC_DATA14 = 27, | ||
48 | MX7D_PAD_EPDC_DATA15 = 28, | ||
49 | MX7D_PAD_EPDC_SDCLK = 29, | ||
50 | MX7D_PAD_EPDC_SDLE = 30, | ||
51 | MX7D_PAD_EPDC_SDOE = 31, | ||
52 | MX7D_PAD_EPDC_SDSHR = 32, | ||
53 | MX7D_PAD_EPDC_SDCE0 = 33, | ||
54 | MX7D_PAD_EPDC_SDCE1 = 34, | ||
55 | MX7D_PAD_EPDC_SDCE2 = 35, | ||
56 | MX7D_PAD_EPDC_SDCE3 = 36, | ||
57 | MX7D_PAD_EPDC_GDCLK = 37, | ||
58 | MX7D_PAD_EPDC_GDOE = 38, | ||
59 | MX7D_PAD_EPDC_GDRL = 39, | ||
60 | MX7D_PAD_EPDC_GDSP = 40, | ||
61 | MX7D_PAD_EPDC_BDR0 = 41, | ||
62 | MX7D_PAD_EPDC_BDR1 = 42, | ||
63 | MX7D_PAD_EPDC_PWR_COM = 43, | ||
64 | MX7D_PAD_EPDC_PWR_STAT = 44, | ||
65 | MX7D_PAD_LCD_CLK = 45, | ||
66 | MX7D_PAD_LCD_ENABLE = 46, | ||
67 | MX7D_PAD_LCD_HSYNC = 47, | ||
68 | MX7D_PAD_LCD_VSYNC = 48, | ||
69 | MX7D_PAD_LCD_RESET = 49, | ||
70 | MX7D_PAD_LCD_DATA00 = 50, | ||
71 | MX7D_PAD_LCD_DATA01 = 51, | ||
72 | MX7D_PAD_LCD_DATA02 = 52, | ||
73 | MX7D_PAD_LCD_DATA03 = 53, | ||
74 | MX7D_PAD_LCD_DATA04 = 54, | ||
75 | MX7D_PAD_LCD_DATA05 = 55, | ||
76 | MX7D_PAD_LCD_DATA06 = 56, | ||
77 | MX7D_PAD_LCD_DATA07 = 57, | ||
78 | MX7D_PAD_LCD_DATA08 = 58, | ||
79 | MX7D_PAD_LCD_DATA09 = 59, | ||
80 | MX7D_PAD_LCD_DATA10 = 60, | ||
81 | MX7D_PAD_LCD_DATA11 = 61, | ||
82 | MX7D_PAD_LCD_DATA12 = 62, | ||
83 | MX7D_PAD_LCD_DATA13 = 63, | ||
84 | MX7D_PAD_LCD_DATA14 = 64, | ||
85 | MX7D_PAD_LCD_DATA15 = 65, | ||
86 | MX7D_PAD_LCD_DATA16 = 66, | ||
87 | MX7D_PAD_LCD_DATA17 = 67, | ||
88 | MX7D_PAD_LCD_DATA18 = 68, | ||
89 | MX7D_PAD_LCD_DATA19 = 69, | ||
90 | MX7D_PAD_LCD_DATA20 = 70, | ||
91 | MX7D_PAD_LCD_DATA21 = 71, | ||
92 | MX7D_PAD_LCD_DATA22 = 72, | ||
93 | MX7D_PAD_LCD_DATA23 = 73, | ||
94 | MX7D_PAD_UART1_RX_DATA = 74, | ||
95 | MX7D_PAD_UART1_TX_DATA = 75, | ||
96 | MX7D_PAD_UART2_RX_DATA = 76, | ||
97 | MX7D_PAD_UART2_TX_DATA = 77, | ||
98 | MX7D_PAD_UART3_RX_DATA = 78, | ||
99 | MX7D_PAD_UART3_TX_DATA = 79, | ||
100 | MX7D_PAD_UART3_RTS_B = 80, | ||
101 | MX7D_PAD_UART3_CTS_B = 81, | ||
102 | MX7D_PAD_I2C1_SCL = 82, | ||
103 | MX7D_PAD_I2C1_SDA = 83, | ||
104 | MX7D_PAD_I2C2_SCL = 84, | ||
105 | MX7D_PAD_I2C2_SDA = 85, | ||
106 | MX7D_PAD_I2C3_SCL = 86, | ||
107 | MX7D_PAD_I2C3_SDA = 87, | ||
108 | MX7D_PAD_I2C4_SCL = 88, | ||
109 | MX7D_PAD_I2C4_SDA = 89, | ||
110 | MX7D_PAD_ECSPI1_SCLK = 90, | ||
111 | MX7D_PAD_ECSPI1_MOSI = 91, | ||
112 | MX7D_PAD_ECSPI1_MISO = 92, | ||
113 | MX7D_PAD_ECSPI1_SS0 = 93, | ||
114 | MX7D_PAD_ECSPI2_SCLK = 94, | ||
115 | MX7D_PAD_ECSPI2_MOSI = 95, | ||
116 | MX7D_PAD_ECSPI2_MISO = 96, | ||
117 | MX7D_PAD_ECSPI2_SS0 = 97, | ||
118 | MX7D_PAD_SD1_CD_B = 98, | ||
119 | MX7D_PAD_SD1_WP = 99, | ||
120 | MX7D_PAD_SD1_RESET_B = 100, | ||
121 | MX7D_PAD_SD1_CLK = 101, | ||
122 | MX7D_PAD_SD1_CMD = 102, | ||
123 | MX7D_PAD_SD1_DATA0 = 103, | ||
124 | MX7D_PAD_SD1_DATA1 = 104, | ||
125 | MX7D_PAD_SD1_DATA2 = 105, | ||
126 | MX7D_PAD_SD1_DATA3 = 106, | ||
127 | MX7D_PAD_SD2_CD_B = 107, | ||
128 | MX7D_PAD_SD2_WP = 108, | ||
129 | MX7D_PAD_SD2_RESET_B = 109, | ||
130 | MX7D_PAD_SD2_CLK = 110, | ||
131 | MX7D_PAD_SD2_CMD = 111, | ||
132 | MX7D_PAD_SD2_DATA0 = 112, | ||
133 | MX7D_PAD_SD2_DATA1 = 113, | ||
134 | MX7D_PAD_SD2_DATA2 = 114, | ||
135 | MX7D_PAD_SD2_DATA3 = 115, | ||
136 | MX7D_PAD_SD3_CLK = 116, | ||
137 | MX7D_PAD_SD3_CMD = 117, | ||
138 | MX7D_PAD_SD3_DATA0 = 118, | ||
139 | MX7D_PAD_SD3_DATA1 = 119, | ||
140 | MX7D_PAD_SD3_DATA2 = 120, | ||
141 | MX7D_PAD_SD3_DATA3 = 121, | ||
142 | MX7D_PAD_SD3_DATA4 = 122, | ||
143 | MX7D_PAD_SD3_DATA5 = 123, | ||
144 | MX7D_PAD_SD3_DATA6 = 124, | ||
145 | MX7D_PAD_SD3_DATA7 = 125, | ||
146 | MX7D_PAD_SD3_STROBE = 126, | ||
147 | MX7D_PAD_SD3_RESET_B = 127, | ||
148 | MX7D_PAD_SAI1_RX_DATA = 128, | ||
149 | MX7D_PAD_SAI1_TX_BCLK = 129, | ||
150 | MX7D_PAD_SAI1_TX_SYNC = 130, | ||
151 | MX7D_PAD_SAI1_TX_DATA = 131, | ||
152 | MX7D_PAD_SAI1_RX_SYNC = 132, | ||
153 | MX7D_PAD_SAI1_RX_BCLK = 133, | ||
154 | MX7D_PAD_SAI1_MCLK = 134, | ||
155 | MX7D_PAD_SAI2_TX_SYNC = 135, | ||
156 | MX7D_PAD_SAI2_TX_BCLK = 136, | ||
157 | MX7D_PAD_SAI2_RX_DATA = 137, | ||
158 | MX7D_PAD_SAI2_TX_DATA = 138, | ||
159 | MX7D_PAD_ENET1_RGMII_RD0 = 139, | ||
160 | MX7D_PAD_ENET1_RGMII_RD1 = 140, | ||
161 | MX7D_PAD_ENET1_RGMII_RD2 = 141, | ||
162 | MX7D_PAD_ENET1_RGMII_RD3 = 142, | ||
163 | MX7D_PAD_ENET1_RGMII_RX_CTL = 143, | ||
164 | MX7D_PAD_ENET1_RGMII_RXC = 144, | ||
165 | MX7D_PAD_ENET1_RGMII_TD0 = 145, | ||
166 | MX7D_PAD_ENET1_RGMII_TD1 = 146, | ||
167 | MX7D_PAD_ENET1_RGMII_TD2 = 147, | ||
168 | MX7D_PAD_ENET1_RGMII_TD3 = 148, | ||
169 | MX7D_PAD_ENET1_RGMII_TX_CTL = 149, | ||
170 | MX7D_PAD_ENET1_RGMII_TXC = 150, | ||
171 | MX7D_PAD_ENET1_TX_CLK = 151, | ||
172 | MX7D_PAD_ENET1_RX_CLK = 152, | ||
173 | MX7D_PAD_ENET1_CRS = 153, | ||
174 | MX7D_PAD_ENET1_COL = 154, | ||
175 | }; | ||
176 | |||
177 | /* Pad names for the pinmux subsystem */ | ||
178 | static const struct pinctrl_pin_desc imx7d_pinctrl_pads[] = { | ||
179 | IMX_PINCTRL_PIN(MX7D_PAD_RESERVE0), | ||
180 | IMX_PINCTRL_PIN(MX7D_PAD_RESERVE1), | ||
181 | IMX_PINCTRL_PIN(MX7D_PAD_RESERVE2), | ||
182 | IMX_PINCTRL_PIN(MX7D_PAD_RESERVE3), | ||
183 | IMX_PINCTRL_PIN(MX7D_PAD_RESERVE4), | ||
184 | IMX_PINCTRL_PIN(MX7D_PAD_GPIO1_IO08), | ||
185 | IMX_PINCTRL_PIN(MX7D_PAD_GPIO1_IO09), | ||
186 | IMX_PINCTRL_PIN(MX7D_PAD_GPIO1_IO10), | ||
187 | IMX_PINCTRL_PIN(MX7D_PAD_GPIO1_IO11), | ||
188 | IMX_PINCTRL_PIN(MX7D_PAD_GPIO1_IO12), | ||
189 | IMX_PINCTRL_PIN(MX7D_PAD_GPIO1_IO13), | ||
190 | IMX_PINCTRL_PIN(MX7D_PAD_GPIO1_IO14), | ||
191 | IMX_PINCTRL_PIN(MX7D_PAD_GPIO1_IO15), | ||
192 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA00), | ||
193 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA01), | ||
194 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA02), | ||
195 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA03), | ||
196 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA04), | ||
197 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA05), | ||
198 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA06), | ||
199 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA07), | ||
200 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA08), | ||
201 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA09), | ||
202 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA10), | ||
203 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA11), | ||
204 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA12), | ||
205 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA13), | ||
206 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA14), | ||
207 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_DATA15), | ||
208 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_SDCLK), | ||
209 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_SDLE), | ||
210 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_SDOE), | ||
211 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_SDSHR), | ||
212 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_SDCE0), | ||
213 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_SDCE1), | ||
214 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_SDCE2), | ||
215 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_SDCE3), | ||
216 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_GDCLK), | ||
217 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_GDOE), | ||
218 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_GDRL), | ||
219 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_GDSP), | ||
220 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_BDR0), | ||
221 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_BDR1), | ||
222 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_PWR_COM), | ||
223 | IMX_PINCTRL_PIN(MX7D_PAD_EPDC_PWR_STAT), | ||
224 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_CLK), | ||
225 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_ENABLE), | ||
226 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_HSYNC), | ||
227 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_VSYNC), | ||
228 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_RESET), | ||
229 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA00), | ||
230 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA01), | ||
231 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA02), | ||
232 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA03), | ||
233 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA04), | ||
234 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA05), | ||
235 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA06), | ||
236 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA07), | ||
237 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA08), | ||
238 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA09), | ||
239 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA10), | ||
240 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA11), | ||
241 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA12), | ||
242 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA13), | ||
243 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA14), | ||
244 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA15), | ||
245 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA16), | ||
246 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA17), | ||
247 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA18), | ||
248 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA19), | ||
249 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA20), | ||
250 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA21), | ||
251 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA22), | ||
252 | IMX_PINCTRL_PIN(MX7D_PAD_LCD_DATA23), | ||
253 | IMX_PINCTRL_PIN(MX7D_PAD_UART1_RX_DATA), | ||
254 | IMX_PINCTRL_PIN(MX7D_PAD_UART1_TX_DATA), | ||
255 | IMX_PINCTRL_PIN(MX7D_PAD_UART2_RX_DATA), | ||
256 | IMX_PINCTRL_PIN(MX7D_PAD_UART2_TX_DATA), | ||
257 | IMX_PINCTRL_PIN(MX7D_PAD_UART3_RX_DATA), | ||
258 | IMX_PINCTRL_PIN(MX7D_PAD_UART3_TX_DATA), | ||
259 | IMX_PINCTRL_PIN(MX7D_PAD_UART3_RTS_B), | ||
260 | IMX_PINCTRL_PIN(MX7D_PAD_UART3_CTS_B), | ||
261 | IMX_PINCTRL_PIN(MX7D_PAD_I2C1_SCL), | ||
262 | IMX_PINCTRL_PIN(MX7D_PAD_I2C1_SDA), | ||
263 | IMX_PINCTRL_PIN(MX7D_PAD_I2C2_SCL), | ||
264 | IMX_PINCTRL_PIN(MX7D_PAD_I2C2_SDA), | ||
265 | IMX_PINCTRL_PIN(MX7D_PAD_I2C3_SCL), | ||
266 | IMX_PINCTRL_PIN(MX7D_PAD_I2C3_SDA), | ||
267 | IMX_PINCTRL_PIN(MX7D_PAD_I2C4_SCL), | ||
268 | IMX_PINCTRL_PIN(MX7D_PAD_I2C4_SDA), | ||
269 | IMX_PINCTRL_PIN(MX7D_PAD_ECSPI1_SCLK), | ||
270 | IMX_PINCTRL_PIN(MX7D_PAD_ECSPI1_MOSI), | ||
271 | IMX_PINCTRL_PIN(MX7D_PAD_ECSPI1_MISO), | ||
272 | IMX_PINCTRL_PIN(MX7D_PAD_ECSPI1_SS0), | ||
273 | IMX_PINCTRL_PIN(MX7D_PAD_ECSPI2_SCLK), | ||
274 | IMX_PINCTRL_PIN(MX7D_PAD_ECSPI2_MOSI), | ||
275 | IMX_PINCTRL_PIN(MX7D_PAD_ECSPI2_MISO), | ||
276 | IMX_PINCTRL_PIN(MX7D_PAD_ECSPI2_SS0), | ||
277 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_CD_B), | ||
278 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_WP), | ||
279 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_RESET_B), | ||
280 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_CLK), | ||
281 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_CMD), | ||
282 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_DATA0), | ||
283 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_DATA1), | ||
284 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_DATA2), | ||
285 | IMX_PINCTRL_PIN(MX7D_PAD_SD1_DATA3), | ||
286 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_CD_B), | ||
287 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_WP), | ||
288 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_RESET_B), | ||
289 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_CLK), | ||
290 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_CMD), | ||
291 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_DATA0), | ||
292 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_DATA1), | ||
293 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_DATA2), | ||
294 | IMX_PINCTRL_PIN(MX7D_PAD_SD2_DATA3), | ||
295 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_CLK), | ||
296 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_CMD), | ||
297 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_DATA0), | ||
298 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_DATA1), | ||
299 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_DATA2), | ||
300 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_DATA3), | ||
301 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_DATA4), | ||
302 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_DATA5), | ||
303 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_DATA6), | ||
304 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_DATA7), | ||
305 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_STROBE), | ||
306 | IMX_PINCTRL_PIN(MX7D_PAD_SD3_RESET_B), | ||
307 | IMX_PINCTRL_PIN(MX7D_PAD_SAI1_RX_DATA), | ||
308 | IMX_PINCTRL_PIN(MX7D_PAD_SAI1_TX_BCLK), | ||
309 | IMX_PINCTRL_PIN(MX7D_PAD_SAI1_TX_SYNC), | ||
310 | IMX_PINCTRL_PIN(MX7D_PAD_SAI1_TX_DATA), | ||
311 | IMX_PINCTRL_PIN(MX7D_PAD_SAI1_RX_SYNC), | ||
312 | IMX_PINCTRL_PIN(MX7D_PAD_SAI1_RX_BCLK), | ||
313 | IMX_PINCTRL_PIN(MX7D_PAD_SAI1_MCLK), | ||
314 | IMX_PINCTRL_PIN(MX7D_PAD_SAI2_TX_SYNC), | ||
315 | IMX_PINCTRL_PIN(MX7D_PAD_SAI2_TX_BCLK), | ||
316 | IMX_PINCTRL_PIN(MX7D_PAD_SAI2_RX_DATA), | ||
317 | IMX_PINCTRL_PIN(MX7D_PAD_SAI2_TX_DATA), | ||
318 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_RD0), | ||
319 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_RD1), | ||
320 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_RD2), | ||
321 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_RD3), | ||
322 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_RX_CTL), | ||
323 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_RXC), | ||
324 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_TD0), | ||
325 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_TD1), | ||
326 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_TD2), | ||
327 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_TD3), | ||
328 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_TX_CTL), | ||
329 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RGMII_TXC), | ||
330 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_TX_CLK), | ||
331 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_RX_CLK), | ||
332 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_CRS), | ||
333 | IMX_PINCTRL_PIN(MX7D_PAD_ENET1_COL), | ||
334 | }; | ||
335 | |||
336 | static struct imx_pinctrl_soc_info imx7d_pinctrl_info = { | ||
337 | .pins = imx7d_pinctrl_pads, | ||
338 | .npins = ARRAY_SIZE(imx7d_pinctrl_pads), | ||
339 | }; | ||
340 | |||
341 | static struct of_device_id imx7d_pinctrl_of_match[] = { | ||
342 | { .compatible = "fsl,imx7d-iomuxc", .data = &imx7d_pinctrl_info, }, | ||
343 | { /* sentinel */ } | ||
344 | }; | ||
345 | |||
346 | static int imx7d_pinctrl_probe(struct platform_device *pdev) | ||
347 | { | ||
348 | const struct of_device_id *match; | ||
349 | struct imx_pinctrl_soc_info *pinctrl_info; | ||
350 | |||
351 | match = of_match_device(imx7d_pinctrl_of_match, &pdev->dev); | ||
352 | |||
353 | if (!match) | ||
354 | return -ENODEV; | ||
355 | |||
356 | pinctrl_info = (struct imx_pinctrl_soc_info *) match->data; | ||
357 | |||
358 | return imx_pinctrl_probe(pdev, pinctrl_info); | ||
359 | } | ||
360 | |||
361 | static struct platform_driver imx7d_pinctrl_driver = { | ||
362 | .driver = { | ||
363 | .name = "imx7d-pinctrl", | ||
364 | .of_match_table = of_match_ptr(imx7d_pinctrl_of_match), | ||
365 | }, | ||
366 | .probe = imx7d_pinctrl_probe, | ||
367 | .remove = imx_pinctrl_remove, | ||
368 | }; | ||
369 | |||
370 | static int __init imx7d_pinctrl_init(void) | ||
371 | { | ||
372 | return platform_driver_register(&imx7d_pinctrl_driver); | ||
373 | } | ||
374 | arch_initcall(imx7d_pinctrl_init); | ||
375 | |||
376 | static void __exit imx7d_pinctrl_exit(void) | ||
377 | { | ||
378 | platform_driver_unregister(&imx7d_pinctrl_driver); | ||
379 | } | ||
380 | module_exit(imx7d_pinctrl_exit); | ||
381 | |||
382 | MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>"); | ||
383 | MODULE_DESCRIPTION("Freescale imx7d pinctrl driver"); | ||
384 | MODULE_LICENSE("GPL v2"); | ||
diff --git a/drivers/pinctrl/freescale/pinctrl-mxs.c b/drivers/pinctrl/freescale/pinctrl-mxs.c index 646d5c244af1..f64eecb24755 100644 --- a/drivers/pinctrl/freescale/pinctrl-mxs.c +++ b/drivers/pinctrl/freescale/pinctrl-mxs.c | |||
@@ -540,9 +540,9 @@ int mxs_pinctrl_probe(struct platform_device *pdev, | |||
540 | } | 540 | } |
541 | 541 | ||
542 | d->pctl = pinctrl_register(&mxs_pinctrl_desc, &pdev->dev, d); | 542 | d->pctl = pinctrl_register(&mxs_pinctrl_desc, &pdev->dev, d); |
543 | if (!d->pctl) { | 543 | if (IS_ERR(d->pctl)) { |
544 | dev_err(&pdev->dev, "Couldn't register MXS pinctrl driver\n"); | 544 | dev_err(&pdev->dev, "Couldn't register MXS pinctrl driver\n"); |
545 | ret = -EINVAL; | 545 | ret = PTR_ERR(d->pctl); |
546 | goto err; | 546 | goto err; |
547 | } | 547 | } |
548 | 548 | ||
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c index 732ff757a95f..3f737daa3fd2 100644 --- a/drivers/pinctrl/intel/pinctrl-cherryview.c +++ b/drivers/pinctrl/intel/pinctrl-cherryview.c | |||
@@ -1533,9 +1533,9 @@ static int chv_pinctrl_probe(struct platform_device *pdev) | |||
1533 | pctrl->pctldesc.npins = pctrl->community->npins; | 1533 | pctrl->pctldesc.npins = pctrl->community->npins; |
1534 | 1534 | ||
1535 | pctrl->pctldev = pinctrl_register(&pctrl->pctldesc, &pdev->dev, pctrl); | 1535 | pctrl->pctldev = pinctrl_register(&pctrl->pctldesc, &pdev->dev, pctrl); |
1536 | if (!pctrl->pctldev) { | 1536 | if (IS_ERR(pctrl->pctldev)) { |
1537 | dev_err(&pdev->dev, "failed to register pinctrl driver\n"); | 1537 | dev_err(&pdev->dev, "failed to register pinctrl driver\n"); |
1538 | return -ENODEV; | 1538 | return PTR_ERR(pctrl->pctldev); |
1539 | } | 1539 | } |
1540 | 1540 | ||
1541 | ret = chv_gpio_probe(pctrl, irq); | 1541 | ret = chv_gpio_probe(pctrl, irq); |
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c index 00768e53deec..f9ee0d68b288 100644 --- a/drivers/pinctrl/intel/pinctrl-intel.c +++ b/drivers/pinctrl/intel/pinctrl-intel.c | |||
@@ -1021,9 +1021,9 @@ int intel_pinctrl_probe(struct platform_device *pdev, | |||
1021 | pctrl->pctldesc.npins = pctrl->soc->npins; | 1021 | pctrl->pctldesc.npins = pctrl->soc->npins; |
1022 | 1022 | ||
1023 | pctrl->pctldev = pinctrl_register(&pctrl->pctldesc, &pdev->dev, pctrl); | 1023 | pctrl->pctldev = pinctrl_register(&pctrl->pctldesc, &pdev->dev, pctrl); |
1024 | if (!pctrl->pctldev) { | 1024 | if (IS_ERR(pctrl->pctldev)) { |
1025 | dev_err(&pdev->dev, "failed to register pinctrl driver\n"); | 1025 | dev_err(&pdev->dev, "failed to register pinctrl driver\n"); |
1026 | return -ENODEV; | 1026 | return PTR_ERR(pctrl->pctldev); |
1027 | } | 1027 | } |
1028 | 1028 | ||
1029 | ret = intel_gpio_probe(pctrl, irq); | 1029 | ret = intel_gpio_probe(pctrl, irq); |
diff --git a/drivers/pinctrl/intel/pinctrl-sunrisepoint.c b/drivers/pinctrl/intel/pinctrl-sunrisepoint.c index 55d025dc89e8..1de9ae5010db 100644 --- a/drivers/pinctrl/intel/pinctrl-sunrisepoint.c +++ b/drivers/pinctrl/intel/pinctrl-sunrisepoint.c | |||
@@ -284,8 +284,271 @@ static const struct intel_pinctrl_soc_data sptlp_soc_data = { | |||
284 | .ncommunities = ARRAY_SIZE(sptlp_communities), | 284 | .ncommunities = ARRAY_SIZE(sptlp_communities), |
285 | }; | 285 | }; |
286 | 286 | ||
287 | /* Sunrisepoint-H */ | ||
288 | static const struct pinctrl_pin_desc spth_pins[] = { | ||
289 | /* GPP_A */ | ||
290 | PINCTRL_PIN(0, "RCINB"), | ||
291 | PINCTRL_PIN(1, "LAD_0"), | ||
292 | PINCTRL_PIN(2, "LAD_1"), | ||
293 | PINCTRL_PIN(3, "LAD_2"), | ||
294 | PINCTRL_PIN(4, "LAD_3"), | ||
295 | PINCTRL_PIN(5, "LFRAMEB"), | ||
296 | PINCTRL_PIN(6, "SERIQ"), | ||
297 | PINCTRL_PIN(7, "PIRQAB"), | ||
298 | PINCTRL_PIN(8, "CLKRUNB"), | ||
299 | PINCTRL_PIN(9, "CLKOUT_LPC_0"), | ||
300 | PINCTRL_PIN(10, "CLKOUT_LPC_1"), | ||
301 | PINCTRL_PIN(11, "PMEB"), | ||
302 | PINCTRL_PIN(12, "BM_BUSYB"), | ||
303 | PINCTRL_PIN(13, "SUSWARNB_SUS_PWRDNACK"), | ||
304 | PINCTRL_PIN(14, "SUS_STATB"), | ||
305 | PINCTRL_PIN(15, "SUSACKB"), | ||
306 | PINCTRL_PIN(16, "CLKOUT_48"), | ||
307 | PINCTRL_PIN(17, "ISH_GP_7"), | ||
308 | PINCTRL_PIN(18, "ISH_GP_0"), | ||
309 | PINCTRL_PIN(19, "ISH_GP_1"), | ||
310 | PINCTRL_PIN(20, "ISH_GP_2"), | ||
311 | PINCTRL_PIN(21, "ISH_GP_3"), | ||
312 | PINCTRL_PIN(22, "ISH_GP_4"), | ||
313 | PINCTRL_PIN(23, "ISH_GP_5"), | ||
314 | /* GPP_B */ | ||
315 | PINCTRL_PIN(24, "CORE_VID_0"), | ||
316 | PINCTRL_PIN(25, "CORE_VID_1"), | ||
317 | PINCTRL_PIN(26, "VRALERTB"), | ||
318 | PINCTRL_PIN(27, "CPU_GP_2"), | ||
319 | PINCTRL_PIN(28, "CPU_GP_3"), | ||
320 | PINCTRL_PIN(29, "SRCCLKREQB_0"), | ||
321 | PINCTRL_PIN(30, "SRCCLKREQB_1"), | ||
322 | PINCTRL_PIN(31, "SRCCLKREQB_2"), | ||
323 | PINCTRL_PIN(32, "SRCCLKREQB_3"), | ||
324 | PINCTRL_PIN(33, "SRCCLKREQB_4"), | ||
325 | PINCTRL_PIN(34, "SRCCLKREQB_5"), | ||
326 | PINCTRL_PIN(35, "EXT_PWR_GATEB"), | ||
327 | PINCTRL_PIN(36, "SLP_S0B"), | ||
328 | PINCTRL_PIN(37, "PLTRSTB"), | ||
329 | PINCTRL_PIN(38, "SPKR"), | ||
330 | PINCTRL_PIN(39, "GSPI0_CSB"), | ||
331 | PINCTRL_PIN(40, "GSPI0_CLK"), | ||
332 | PINCTRL_PIN(41, "GSPI0_MISO"), | ||
333 | PINCTRL_PIN(42, "GSPI0_MOSI"), | ||
334 | PINCTRL_PIN(43, "GSPI1_CSB"), | ||
335 | PINCTRL_PIN(44, "GSPI1_CLK"), | ||
336 | PINCTRL_PIN(45, "GSPI1_MISO"), | ||
337 | PINCTRL_PIN(46, "GSPI1_MOSI"), | ||
338 | PINCTRL_PIN(47, "SML1ALERTB"), | ||
339 | /* GPP_C */ | ||
340 | PINCTRL_PIN(48, "SMBCLK"), | ||
341 | PINCTRL_PIN(49, "SMBDATA"), | ||
342 | PINCTRL_PIN(50, "SMBALERTB"), | ||
343 | PINCTRL_PIN(51, "SML0CLK"), | ||
344 | PINCTRL_PIN(52, "SML0DATA"), | ||
345 | PINCTRL_PIN(53, "SML0ALERTB"), | ||
346 | PINCTRL_PIN(54, "SML1CLK"), | ||
347 | PINCTRL_PIN(55, "SML1DATA"), | ||
348 | PINCTRL_PIN(56, "UART0_RXD"), | ||
349 | PINCTRL_PIN(57, "UART0_TXD"), | ||
350 | PINCTRL_PIN(58, "UART0_RTSB"), | ||
351 | PINCTRL_PIN(59, "UART0_CTSB"), | ||
352 | PINCTRL_PIN(60, "UART1_RXD"), | ||
353 | PINCTRL_PIN(61, "UART1_TXD"), | ||
354 | PINCTRL_PIN(62, "UART1_RTSB"), | ||
355 | PINCTRL_PIN(63, "UART1_CTSB"), | ||
356 | PINCTRL_PIN(64, "I2C0_SDA"), | ||
357 | PINCTRL_PIN(65, "I2C0_SCL"), | ||
358 | PINCTRL_PIN(66, "I2C1_SDA"), | ||
359 | PINCTRL_PIN(67, "I2C1_SCL"), | ||
360 | PINCTRL_PIN(68, "UART2_RXD"), | ||
361 | PINCTRL_PIN(69, "UART2_TXD"), | ||
362 | PINCTRL_PIN(70, "UART2_RTSB"), | ||
363 | PINCTRL_PIN(71, "UART2_CTSB"), | ||
364 | /* GPP_D */ | ||
365 | PINCTRL_PIN(72, "SPI1_CSB"), | ||
366 | PINCTRL_PIN(73, "SPI1_CLK"), | ||
367 | PINCTRL_PIN(74, "SPI1_MISO_IO_1"), | ||
368 | PINCTRL_PIN(75, "SPI1_MOSI_IO_0"), | ||
369 | PINCTRL_PIN(76, "ISH_I2C2_SDA"), | ||
370 | PINCTRL_PIN(77, "SSP0_SFRM"), | ||
371 | PINCTRL_PIN(78, "SSP0_TXD"), | ||
372 | PINCTRL_PIN(79, "SSP0_RXD"), | ||
373 | PINCTRL_PIN(80, "SSP0_SCLK"), | ||
374 | PINCTRL_PIN(81, "ISH_SPI_CSB"), | ||
375 | PINCTRL_PIN(82, "ISH_SPI_CLK"), | ||
376 | PINCTRL_PIN(83, "ISH_SPI_MISO"), | ||
377 | PINCTRL_PIN(84, "ISH_SPI_MOSI"), | ||
378 | PINCTRL_PIN(85, "ISH_UART0_RXD"), | ||
379 | PINCTRL_PIN(86, "ISH_UART0_TXD"), | ||
380 | PINCTRL_PIN(87, "ISH_UART0_RTSB"), | ||
381 | PINCTRL_PIN(88, "ISH_UART0_CTSB"), | ||
382 | PINCTRL_PIN(89, "DMIC_CLK_1"), | ||
383 | PINCTRL_PIN(90, "DMIC_DATA_1"), | ||
384 | PINCTRL_PIN(91, "DMIC_CLK_0"), | ||
385 | PINCTRL_PIN(92, "DMIC_DATA_0"), | ||
386 | PINCTRL_PIN(93, "SPI1_IO_2"), | ||
387 | PINCTRL_PIN(94, "SPI1_IO_3"), | ||
388 | PINCTRL_PIN(95, "ISH_I2C2_SCL"), | ||
389 | /* GPP_E */ | ||
390 | PINCTRL_PIN(96, "SATAXPCIE_0"), | ||
391 | PINCTRL_PIN(97, "SATAXPCIE_1"), | ||
392 | PINCTRL_PIN(98, "SATAXPCIE_2"), | ||
393 | PINCTRL_PIN(99, "CPU_GP_0"), | ||
394 | PINCTRL_PIN(100, "SATA_DEVSLP_0"), | ||
395 | PINCTRL_PIN(101, "SATA_DEVSLP_1"), | ||
396 | PINCTRL_PIN(102, "SATA_DEVSLP_2"), | ||
397 | PINCTRL_PIN(103, "CPU_GP_1"), | ||
398 | PINCTRL_PIN(104, "SATA_LEDB"), | ||
399 | PINCTRL_PIN(105, "USB2_OCB_0"), | ||
400 | PINCTRL_PIN(106, "USB2_OCB_1"), | ||
401 | PINCTRL_PIN(107, "USB2_OCB_2"), | ||
402 | PINCTRL_PIN(108, "USB2_OCB_3"), | ||
403 | /* GPP_F */ | ||
404 | PINCTRL_PIN(109, "SATAXPCIE_3"), | ||
405 | PINCTRL_PIN(110, "SATAXPCIE_4"), | ||
406 | PINCTRL_PIN(111, "SATAXPCIE_5"), | ||
407 | PINCTRL_PIN(112, "SATAXPCIE_6"), | ||
408 | PINCTRL_PIN(113, "SATAXPCIE_7"), | ||
409 | PINCTRL_PIN(114, "SATA_DEVSLP_3"), | ||
410 | PINCTRL_PIN(115, "SATA_DEVSLP_4"), | ||
411 | PINCTRL_PIN(116, "SATA_DEVSLP_5"), | ||
412 | PINCTRL_PIN(117, "SATA_DEVSLP_6"), | ||
413 | PINCTRL_PIN(118, "SATA_DEVSLP_7"), | ||
414 | PINCTRL_PIN(119, "SATA_SCLOCK"), | ||
415 | PINCTRL_PIN(120, "SATA_SLOAD"), | ||
416 | PINCTRL_PIN(121, "SATA_SDATAOUT1"), | ||
417 | PINCTRL_PIN(122, "SATA_SDATAOUT0"), | ||
418 | PINCTRL_PIN(123, "GPP_F_14"), | ||
419 | PINCTRL_PIN(124, "USB_OCB_4"), | ||
420 | PINCTRL_PIN(125, "USB_OCB_5"), | ||
421 | PINCTRL_PIN(126, "USB_OCB_6"), | ||
422 | PINCTRL_PIN(127, "USB_OCB_7"), | ||
423 | PINCTRL_PIN(128, "L_VDDEN"), | ||
424 | PINCTRL_PIN(129, "L_BKLTEN"), | ||
425 | PINCTRL_PIN(130, "L_BKLTCTL"), | ||
426 | PINCTRL_PIN(131, "GPP_F_22"), | ||
427 | PINCTRL_PIN(132, "GPP_F_23"), | ||
428 | /* GPP_G */ | ||
429 | PINCTRL_PIN(133, "FAN_TACH_0"), | ||
430 | PINCTRL_PIN(134, "FAN_TACH_1"), | ||
431 | PINCTRL_PIN(135, "FAN_TACH_2"), | ||
432 | PINCTRL_PIN(136, "FAN_TACH_3"), | ||
433 | PINCTRL_PIN(137, "FAN_TACH_4"), | ||
434 | PINCTRL_PIN(138, "FAN_TACH_5"), | ||
435 | PINCTRL_PIN(139, "FAN_TACH_6"), | ||
436 | PINCTRL_PIN(140, "FAN_TACH_7"), | ||
437 | PINCTRL_PIN(141, "FAN_PWM_0"), | ||
438 | PINCTRL_PIN(142, "FAN_PWM_1"), | ||
439 | PINCTRL_PIN(143, "FAN_PWM_2"), | ||
440 | PINCTRL_PIN(144, "FAN_PWM_3"), | ||
441 | PINCTRL_PIN(145, "GSXDOUT"), | ||
442 | PINCTRL_PIN(146, "GSXSLOAD"), | ||
443 | PINCTRL_PIN(147, "GSXDIN"), | ||
444 | PINCTRL_PIN(148, "GSXRESETB"), | ||
445 | PINCTRL_PIN(149, "GSXCLK"), | ||
446 | PINCTRL_PIN(150, "ADR_COMPLETE"), | ||
447 | PINCTRL_PIN(151, "NMIB"), | ||
448 | PINCTRL_PIN(152, "SMIB"), | ||
449 | PINCTRL_PIN(153, "GPP_G_20"), | ||
450 | PINCTRL_PIN(154, "GPP_G_21"), | ||
451 | PINCTRL_PIN(155, "GPP_G_22"), | ||
452 | PINCTRL_PIN(156, "GPP_G_23"), | ||
453 | /* GPP_H */ | ||
454 | PINCTRL_PIN(157, "SRCCLKREQB_6"), | ||
455 | PINCTRL_PIN(158, "SRCCLKREQB_7"), | ||
456 | PINCTRL_PIN(159, "SRCCLKREQB_8"), | ||
457 | PINCTRL_PIN(160, "SRCCLKREQB_9"), | ||
458 | PINCTRL_PIN(161, "SRCCLKREQB_10"), | ||
459 | PINCTRL_PIN(162, "SRCCLKREQB_11"), | ||
460 | PINCTRL_PIN(163, "SRCCLKREQB_12"), | ||
461 | PINCTRL_PIN(164, "SRCCLKREQB_13"), | ||
462 | PINCTRL_PIN(165, "SRCCLKREQB_14"), | ||
463 | PINCTRL_PIN(166, "SRCCLKREQB_15"), | ||
464 | PINCTRL_PIN(167, "SML2CLK"), | ||
465 | PINCTRL_PIN(168, "SML2DATA"), | ||
466 | PINCTRL_PIN(169, "SML2ALERTB"), | ||
467 | PINCTRL_PIN(170, "SML3CLK"), | ||
468 | PINCTRL_PIN(171, "SML3DATA"), | ||
469 | PINCTRL_PIN(172, "SML3ALERTB"), | ||
470 | PINCTRL_PIN(173, "SML4CLK"), | ||
471 | PINCTRL_PIN(174, "SML4DATA"), | ||
472 | PINCTRL_PIN(175, "SML4ALERTB"), | ||
473 | PINCTRL_PIN(176, "ISH_I2C0_SDA"), | ||
474 | PINCTRL_PIN(177, "ISH_I2C0_SCL"), | ||
475 | PINCTRL_PIN(178, "ISH_I2C1_SDA"), | ||
476 | PINCTRL_PIN(179, "ISH_I2C1_SCL"), | ||
477 | PINCTRL_PIN(180, "GPP_H_23"), | ||
478 | /* GPP_I */ | ||
479 | PINCTRL_PIN(181, "DDSP_HDP_0"), | ||
480 | PINCTRL_PIN(182, "DDSP_HDP_1"), | ||
481 | PINCTRL_PIN(183, "DDSP_HDP_2"), | ||
482 | PINCTRL_PIN(184, "DDSP_HDP_3"), | ||
483 | PINCTRL_PIN(185, "EDP_HPD"), | ||
484 | PINCTRL_PIN(186, "DDPB_CTRLCLK"), | ||
485 | PINCTRL_PIN(187, "DDPB_CTRLDATA"), | ||
486 | PINCTRL_PIN(188, "DDPC_CTRLCLK"), | ||
487 | PINCTRL_PIN(189, "DDPC_CTRLDATA"), | ||
488 | PINCTRL_PIN(190, "DDPD_CTRLCLK"), | ||
489 | PINCTRL_PIN(191, "DDPD_CTRLDATA"), | ||
490 | }; | ||
491 | |||
492 | static const unsigned spth_spi0_pins[] = { 39, 40, 41, 42 }; | ||
493 | static const unsigned spth_spi1_pins[] = { 43, 44, 45, 46 }; | ||
494 | static const unsigned spth_uart0_pins[] = { 56, 57, 58, 59 }; | ||
495 | static const unsigned spth_uart1_pins[] = { 60, 61, 62, 63 }; | ||
496 | static const unsigned spth_uart2_pins[] = { 68, 69, 71, 71 }; | ||
497 | static const unsigned spth_i2c0_pins[] = { 64, 65 }; | ||
498 | static const unsigned spth_i2c1_pins[] = { 66, 67 }; | ||
499 | static const unsigned spth_i2c2_pins[] = { 76, 95 }; | ||
500 | |||
501 | static const struct intel_pingroup spth_groups[] = { | ||
502 | PIN_GROUP("spi0_grp", spth_spi0_pins, 1), | ||
503 | PIN_GROUP("spi1_grp", spth_spi1_pins, 1), | ||
504 | PIN_GROUP("uart0_grp", spth_uart0_pins, 1), | ||
505 | PIN_GROUP("uart1_grp", spth_uart1_pins, 1), | ||
506 | PIN_GROUP("uart2_grp", spth_uart2_pins, 1), | ||
507 | PIN_GROUP("i2c0_grp", spth_i2c0_pins, 1), | ||
508 | PIN_GROUP("i2c1_grp", spth_i2c1_pins, 1), | ||
509 | PIN_GROUP("i2c2_grp", spth_i2c2_pins, 2), | ||
510 | }; | ||
511 | |||
512 | static const char * const spth_spi0_groups[] = { "spi0_grp" }; | ||
513 | static const char * const spth_spi1_groups[] = { "spi0_grp" }; | ||
514 | static const char * const spth_uart0_groups[] = { "uart0_grp" }; | ||
515 | static const char * const spth_uart1_groups[] = { "uart1_grp" }; | ||
516 | static const char * const spth_uart2_groups[] = { "uart2_grp" }; | ||
517 | static const char * const spth_i2c0_groups[] = { "i2c0_grp" }; | ||
518 | static const char * const spth_i2c1_groups[] = { "i2c1_grp" }; | ||
519 | static const char * const spth_i2c2_groups[] = { "i2c2_grp" }; | ||
520 | |||
521 | static const struct intel_function spth_functions[] = { | ||
522 | FUNCTION("spi0", spth_spi0_groups), | ||
523 | FUNCTION("spi1", spth_spi1_groups), | ||
524 | FUNCTION("uart0", spth_uart0_groups), | ||
525 | FUNCTION("uart1", spth_uart1_groups), | ||
526 | FUNCTION("uart2", spth_uart2_groups), | ||
527 | FUNCTION("i2c0", spth_i2c0_groups), | ||
528 | FUNCTION("i2c1", spth_i2c1_groups), | ||
529 | FUNCTION("i2c2", spth_i2c2_groups), | ||
530 | }; | ||
531 | |||
532 | static const struct intel_community spth_communities[] = { | ||
533 | SPT_COMMUNITY(0, 0, 47), | ||
534 | SPT_COMMUNITY(1, 48, 180), | ||
535 | SPT_COMMUNITY(2, 181, 191), | ||
536 | }; | ||
537 | |||
538 | static const struct intel_pinctrl_soc_data spth_soc_data = { | ||
539 | .pins = spth_pins, | ||
540 | .npins = ARRAY_SIZE(spth_pins), | ||
541 | .groups = spth_groups, | ||
542 | .ngroups = ARRAY_SIZE(spth_groups), | ||
543 | .functions = spth_functions, | ||
544 | .nfunctions = ARRAY_SIZE(spth_functions), | ||
545 | .communities = spth_communities, | ||
546 | .ncommunities = ARRAY_SIZE(spth_communities), | ||
547 | }; | ||
548 | |||
287 | static const struct acpi_device_id spt_pinctrl_acpi_match[] = { | 549 | static const struct acpi_device_id spt_pinctrl_acpi_match[] = { |
288 | { "INT344B", (kernel_ulong_t)&sptlp_soc_data }, | 550 | { "INT344B", (kernel_ulong_t)&sptlp_soc_data }, |
551 | { "INT345D", (kernel_ulong_t)&spth_soc_data }, | ||
289 | { } | 552 | { } |
290 | }; | 553 | }; |
291 | MODULE_DEVICE_TABLE(acpi, spt_pinctrl_acpi_match); | 554 | MODULE_DEVICE_TABLE(acpi, spt_pinctrl_acpi_match); |
diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig index 6b3551cad111..02f6f92df86c 100644 --- a/drivers/pinctrl/mediatek/Kconfig +++ b/drivers/pinctrl/mediatek/Kconfig | |||
@@ -15,6 +15,12 @@ config PINCTRL_MT8135 | |||
15 | default MACH_MT8135 | 15 | default MACH_MT8135 |
16 | select PINCTRL_MTK_COMMON | 16 | select PINCTRL_MTK_COMMON |
17 | 17 | ||
18 | config PINCTRL_MT8127 | ||
19 | bool "Mediatek MT8127 pin control" if COMPILE_TEST && !MACH_MT8127 | ||
20 | depends on OF | ||
21 | default MACH_MT8127 | ||
22 | select PINCTRL_MTK_COMMON | ||
23 | |||
18 | # For ARMv8 SoCs | 24 | # For ARMv8 SoCs |
19 | config PINCTRL_MT8173 | 25 | config PINCTRL_MT8173 |
20 | bool "Mediatek MT8173 pin control" | 26 | bool "Mediatek MT8173 pin control" |
@@ -23,4 +29,11 @@ config PINCTRL_MT8173 | |||
23 | default ARM64 && ARCH_MEDIATEK | 29 | default ARM64 && ARCH_MEDIATEK |
24 | select PINCTRL_MTK_COMMON | 30 | select PINCTRL_MTK_COMMON |
25 | 31 | ||
32 | # For PMIC | ||
33 | config PINCTRL_MT6397 | ||
34 | bool "Mediatek MT6397 pin control" if COMPILE_TEST && !MFD_MT6397 | ||
35 | depends on OF | ||
36 | default MFD_MT6397 | ||
37 | select PINCTRL_MTK_COMMON | ||
38 | |||
26 | endif | 39 | endif |
diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile index d8606a2179cf..eb923d64d387 100644 --- a/drivers/pinctrl/mediatek/Makefile +++ b/drivers/pinctrl/mediatek/Makefile | |||
@@ -3,4 +3,6 @@ obj-$(CONFIG_PINCTRL_MTK_COMMON) += pinctrl-mtk-common.o | |||
3 | 3 | ||
4 | # SoC Drivers | 4 | # SoC Drivers |
5 | obj-$(CONFIG_PINCTRL_MT8135) += pinctrl-mt8135.o | 5 | obj-$(CONFIG_PINCTRL_MT8135) += pinctrl-mt8135.o |
6 | obj-$(CONFIG_PINCTRL_MT8127) += pinctrl-mt8127.o | ||
6 | obj-$(CONFIG_PINCTRL_MT8173) += pinctrl-mt8173.o | 7 | obj-$(CONFIG_PINCTRL_MT8173) += pinctrl-mt8173.o |
8 | obj-$(CONFIG_PINCTRL_MT6397) += pinctrl-mt6397.o | ||
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6397.c b/drivers/pinctrl/mediatek/pinctrl-mt6397.c new file mode 100644 index 000000000000..f9751ae28e32 --- /dev/null +++ b/drivers/pinctrl/mediatek/pinctrl-mt6397.c | |||
@@ -0,0 +1,77 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2015 MediaTek Inc. | ||
3 | * Author: Hongzhou.Yang <hongzhou.yang@mediatek.com> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | */ | ||
14 | |||
15 | #include <linux/module.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/of.h> | ||
18 | #include <linux/of_device.h> | ||
19 | #include <linux/pinctrl/pinctrl.h> | ||
20 | #include <linux/pinctrl/pinconf-generic.h> | ||
21 | #include <linux/mfd/mt6397/core.h> | ||
22 | |||
23 | #include "pinctrl-mtk-common.h" | ||
24 | #include "pinctrl-mtk-mt6397.h" | ||
25 | |||
26 | #define MT6397_PIN_REG_BASE 0xc000 | ||
27 | |||
28 | static const struct mtk_pinctrl_devdata mt6397_pinctrl_data = { | ||
29 | .pins = mtk_pins_mt6397, | ||
30 | .npins = ARRAY_SIZE(mtk_pins_mt6397), | ||
31 | .dir_offset = (MT6397_PIN_REG_BASE + 0x000), | ||
32 | .ies_offset = MTK_PINCTRL_NOT_SUPPORT, | ||
33 | .smt_offset = MTK_PINCTRL_NOT_SUPPORT, | ||
34 | .pullen_offset = (MT6397_PIN_REG_BASE + 0x020), | ||
35 | .pullsel_offset = (MT6397_PIN_REG_BASE + 0x040), | ||
36 | .dout_offset = (MT6397_PIN_REG_BASE + 0x080), | ||
37 | .din_offset = (MT6397_PIN_REG_BASE + 0x0a0), | ||
38 | .pinmux_offset = (MT6397_PIN_REG_BASE + 0x0c0), | ||
39 | .type1_start = 41, | ||
40 | .type1_end = 41, | ||
41 | .port_shf = 3, | ||
42 | .port_mask = 0x3, | ||
43 | .port_align = 2, | ||
44 | }; | ||
45 | |||
46 | static int mt6397_pinctrl_probe(struct platform_device *pdev) | ||
47 | { | ||
48 | struct mt6397_chip *mt6397; | ||
49 | |||
50 | mt6397 = dev_get_drvdata(pdev->dev.parent); | ||
51 | return mtk_pctrl_init(pdev, &mt6397_pinctrl_data, mt6397->regmap); | ||
52 | } | ||
53 | |||
54 | static const struct of_device_id mt6397_pctrl_match[] = { | ||
55 | { .compatible = "mediatek,mt6397-pinctrl", }, | ||
56 | { } | ||
57 | }; | ||
58 | MODULE_DEVICE_TABLE(of, mt6397_pctrl_match); | ||
59 | |||
60 | static struct platform_driver mtk_pinctrl_driver = { | ||
61 | .probe = mt6397_pinctrl_probe, | ||
62 | .driver = { | ||
63 | .name = "mediatek-mt6397-pinctrl", | ||
64 | .of_match_table = mt6397_pctrl_match, | ||
65 | }, | ||
66 | }; | ||
67 | |||
68 | static int __init mtk_pinctrl_init(void) | ||
69 | { | ||
70 | return platform_driver_register(&mtk_pinctrl_driver); | ||
71 | } | ||
72 | |||
73 | module_init(mtk_pinctrl_init); | ||
74 | |||
75 | MODULE_LICENSE("GPL v2"); | ||
76 | MODULE_DESCRIPTION("MediaTek MT6397 Pinctrl Driver"); | ||
77 | MODULE_AUTHOR("Hongzhou Yang <hongzhou.yang@mediatek.com>"); | ||
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8127.c b/drivers/pinctrl/mediatek/pinctrl-mt8127.c new file mode 100644 index 000000000000..b317b0b664ea --- /dev/null +++ b/drivers/pinctrl/mediatek/pinctrl-mt8127.c | |||
@@ -0,0 +1,358 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2015 MediaTek Inc. | ||
3 | * Author: Hongzhou.Yang <hongzhou.yang@mediatek.com> | ||
4 | * Yingjoe Chen <yingjoe.chen@mediatek.com> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #include <linux/module.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | #include <linux/of.h> | ||
19 | #include <linux/of_device.h> | ||
20 | #include <linux/pinctrl/pinctrl.h> | ||
21 | #include <linux/regmap.h> | ||
22 | #include <dt-bindings/pinctrl/mt65xx.h> | ||
23 | |||
24 | #include "pinctrl-mtk-common.h" | ||
25 | #include "pinctrl-mtk-mt8127.h" | ||
26 | |||
27 | static const struct mtk_drv_group_desc mt8127_drv_grp[] = { | ||
28 | /* 0E4E8SR 4/8/12/16 */ | ||
29 | MTK_DRV_GRP(4, 16, 1, 2, 4), | ||
30 | /* 0E2E4SR 2/4/6/8 */ | ||
31 | MTK_DRV_GRP(2, 8, 1, 2, 2), | ||
32 | /* E8E4E2 2/4/6/8/10/12/14/16 */ | ||
33 | MTK_DRV_GRP(2, 16, 0, 2, 2) | ||
34 | }; | ||
35 | |||
36 | static const struct mtk_pin_drv_grp mt8127_pin_drv[] = { | ||
37 | MTK_PIN_DRV_GRP(0, 0xb00, 0, 1), | ||
38 | MTK_PIN_DRV_GRP(1, 0xb00, 0, 1), | ||
39 | MTK_PIN_DRV_GRP(2, 0xb00, 0, 1), | ||
40 | MTK_PIN_DRV_GRP(3, 0xb00, 0, 1), | ||
41 | MTK_PIN_DRV_GRP(4, 0xb00, 0, 1), | ||
42 | MTK_PIN_DRV_GRP(5, 0xb00, 0, 1), | ||
43 | MTK_PIN_DRV_GRP(6, 0xb00, 0, 1), | ||
44 | MTK_PIN_DRV_GRP(7, 0xb00, 12, 1), | ||
45 | MTK_PIN_DRV_GRP(8, 0xb00, 12, 1), | ||
46 | MTK_PIN_DRV_GRP(9, 0xb00, 12, 1), | ||
47 | MTK_PIN_DRV_GRP(10, 0xb00, 8, 1), | ||
48 | MTK_PIN_DRV_GRP(11, 0xb00, 8, 1), | ||
49 | MTK_PIN_DRV_GRP(12, 0xb00, 8, 1), | ||
50 | MTK_PIN_DRV_GRP(13, 0xb00, 8, 1), | ||
51 | MTK_PIN_DRV_GRP(14, 0xb10, 4, 0), | ||
52 | MTK_PIN_DRV_GRP(15, 0xb10, 4, 0), | ||
53 | MTK_PIN_DRV_GRP(16, 0xb10, 4, 0), | ||
54 | MTK_PIN_DRV_GRP(17, 0xb10, 4, 0), | ||
55 | MTK_PIN_DRV_GRP(18, 0xb10, 8, 0), | ||
56 | MTK_PIN_DRV_GRP(19, 0xb10, 8, 0), | ||
57 | MTK_PIN_DRV_GRP(20, 0xb10, 8, 0), | ||
58 | MTK_PIN_DRV_GRP(21, 0xb10, 8, 0), | ||
59 | MTK_PIN_DRV_GRP(22, 0xb20, 0, 0), | ||
60 | MTK_PIN_DRV_GRP(23, 0xb20, 0, 0), | ||
61 | MTK_PIN_DRV_GRP(24, 0xb20, 0, 0), | ||
62 | MTK_PIN_DRV_GRP(25, 0xb20, 0, 0), | ||
63 | MTK_PIN_DRV_GRP(26, 0xb20, 0, 0), | ||
64 | MTK_PIN_DRV_GRP(27, 0xb20, 4, 0), | ||
65 | MTK_PIN_DRV_GRP(28, 0xb20, 4, 0), | ||
66 | MTK_PIN_DRV_GRP(29, 0xb20, 4, 0), | ||
67 | MTK_PIN_DRV_GRP(30, 0xb20, 4, 0), | ||
68 | MTK_PIN_DRV_GRP(31, 0xb20, 4, 0), | ||
69 | MTK_PIN_DRV_GRP(32, 0xb20, 4, 0), | ||
70 | MTK_PIN_DRV_GRP(33, 0xb30, 4, 1), | ||
71 | MTK_PIN_DRV_GRP(34, 0xb30, 8, 1), | ||
72 | MTK_PIN_DRV_GRP(35, 0xb30, 8, 1), | ||
73 | MTK_PIN_DRV_GRP(36, 0xb30, 8, 1), | ||
74 | MTK_PIN_DRV_GRP(37, 0xb30, 8, 1), | ||
75 | MTK_PIN_DRV_GRP(38, 0xb30, 8, 1), | ||
76 | MTK_PIN_DRV_GRP(39, 0xb30, 12, 1), | ||
77 | MTK_PIN_DRV_GRP(40, 0xb30, 12, 1), | ||
78 | MTK_PIN_DRV_GRP(41, 0xb30, 12, 1), | ||
79 | MTK_PIN_DRV_GRP(42, 0xb30, 12, 1), | ||
80 | MTK_PIN_DRV_GRP(43, 0xb40, 12, 0), | ||
81 | MTK_PIN_DRV_GRP(44, 0xb40, 12, 0), | ||
82 | MTK_PIN_DRV_GRP(45, 0xb40, 12, 0), | ||
83 | MTK_PIN_DRV_GRP(46, 0xb50, 0, 2), | ||
84 | MTK_PIN_DRV_GRP(47, 0xb50, 0, 2), | ||
85 | MTK_PIN_DRV_GRP(48, 0xb50, 0, 2), | ||
86 | MTK_PIN_DRV_GRP(49, 0xb50, 0, 2), | ||
87 | MTK_PIN_DRV_GRP(50, 0xb70, 0, 1), | ||
88 | MTK_PIN_DRV_GRP(51, 0xb70, 0, 1), | ||
89 | MTK_PIN_DRV_GRP(52, 0xb70, 0, 1), | ||
90 | MTK_PIN_DRV_GRP(53, 0xb50, 12, 1), | ||
91 | MTK_PIN_DRV_GRP(54, 0xb50, 12, 1), | ||
92 | MTK_PIN_DRV_GRP(55, 0xb50, 12, 1), | ||
93 | MTK_PIN_DRV_GRP(56, 0xb50, 12, 1), | ||
94 | MTK_PIN_DRV_GRP(59, 0xb40, 4, 1), | ||
95 | MTK_PIN_DRV_GRP(60, 0xb40, 0, 1), | ||
96 | MTK_PIN_DRV_GRP(61, 0xb40, 0, 1), | ||
97 | MTK_PIN_DRV_GRP(62, 0xb40, 0, 1), | ||
98 | MTK_PIN_DRV_GRP(63, 0xb40, 4, 1), | ||
99 | MTK_PIN_DRV_GRP(64, 0xb40, 4, 1), | ||
100 | MTK_PIN_DRV_GRP(65, 0xb40, 4, 1), | ||
101 | MTK_PIN_DRV_GRP(66, 0xb40, 8, 1), | ||
102 | MTK_PIN_DRV_GRP(67, 0xb40, 8, 1), | ||
103 | MTK_PIN_DRV_GRP(68, 0xb40, 8, 1), | ||
104 | MTK_PIN_DRV_GRP(69, 0xb40, 8, 1), | ||
105 | MTK_PIN_DRV_GRP(70, 0xb40, 8, 1), | ||
106 | MTK_PIN_DRV_GRP(71, 0xb40, 8, 1), | ||
107 | MTK_PIN_DRV_GRP(72, 0xb50, 4, 1), | ||
108 | MTK_PIN_DRV_GRP(73, 0xb50, 4, 1), | ||
109 | MTK_PIN_DRV_GRP(74, 0xb50, 4, 1), | ||
110 | MTK_PIN_DRV_GRP(79, 0xb50, 8, 1), | ||
111 | MTK_PIN_DRV_GRP(80, 0xb50, 8, 1), | ||
112 | MTK_PIN_DRV_GRP(81, 0xb50, 8, 1), | ||
113 | MTK_PIN_DRV_GRP(82, 0xb50, 8, 1), | ||
114 | MTK_PIN_DRV_GRP(83, 0xb50, 8, 1), | ||
115 | MTK_PIN_DRV_GRP(84, 0xb50, 8, 1), | ||
116 | MTK_PIN_DRV_GRP(85, 0xce0, 0, 2), | ||
117 | MTK_PIN_DRV_GRP(86, 0xcd0, 0, 2), | ||
118 | MTK_PIN_DRV_GRP(87, 0xcf0, 0, 2), | ||
119 | MTK_PIN_DRV_GRP(88, 0xcf0, 0, 2), | ||
120 | MTK_PIN_DRV_GRP(89, 0xcf0, 0, 2), | ||
121 | MTK_PIN_DRV_GRP(90, 0xcf0, 0, 2), | ||
122 | MTK_PIN_DRV_GRP(117, 0xb60, 12, 1), | ||
123 | MTK_PIN_DRV_GRP(118, 0xb60, 12, 1), | ||
124 | MTK_PIN_DRV_GRP(119, 0xb60, 12, 1), | ||
125 | MTK_PIN_DRV_GRP(120, 0xb60, 12, 1), | ||
126 | MTK_PIN_DRV_GRP(121, 0xc80, 0, 2), | ||
127 | MTK_PIN_DRV_GRP(122, 0xc70, 0, 2), | ||
128 | MTK_PIN_DRV_GRP(123, 0xc90, 0, 2), | ||
129 | MTK_PIN_DRV_GRP(124, 0xc90, 0, 2), | ||
130 | MTK_PIN_DRV_GRP(125, 0xc90, 0, 2), | ||
131 | MTK_PIN_DRV_GRP(126, 0xc90, 0, 2), | ||
132 | MTK_PIN_DRV_GRP(127, 0xc20, 0, 2), | ||
133 | MTK_PIN_DRV_GRP(128, 0xc20, 0, 2), | ||
134 | MTK_PIN_DRV_GRP(129, 0xc20, 0, 2), | ||
135 | MTK_PIN_DRV_GRP(130, 0xc20, 0, 2), | ||
136 | MTK_PIN_DRV_GRP(131, 0xc20, 0, 2), | ||
137 | MTK_PIN_DRV_GRP(132, 0xc10, 0, 2), | ||
138 | MTK_PIN_DRV_GRP(133, 0xc00, 0, 2), | ||
139 | MTK_PIN_DRV_GRP(134, 0xc20, 0, 2), | ||
140 | MTK_PIN_DRV_GRP(135, 0xc20, 0, 2), | ||
141 | MTK_PIN_DRV_GRP(136, 0xc20, 0, 2), | ||
142 | MTK_PIN_DRV_GRP(137, 0xc20, 0, 2), | ||
143 | MTK_PIN_DRV_GRP(142, 0xb50, 0, 2), | ||
144 | }; | ||
145 | |||
146 | static const struct mtk_pin_spec_pupd_set_samereg mt8127_spec_pupd[] = { | ||
147 | MTK_PIN_PUPD_SPEC_SR(33, 0xd90, 2, 0, 1), /* KPROW0 */ | ||
148 | MTK_PIN_PUPD_SPEC_SR(34, 0xd90, 6, 4, 5), /* KPROW1 */ | ||
149 | MTK_PIN_PUPD_SPEC_SR(35, 0xd90, 10, 8, 9), /* KPROW2 */ | ||
150 | MTK_PIN_PUPD_SPEC_SR(36, 0xda0, 2, 0, 1), /* KPCOL0 */ | ||
151 | MTK_PIN_PUPD_SPEC_SR(37, 0xda0, 6, 4, 5), /* KPCOL1 */ | ||
152 | MTK_PIN_PUPD_SPEC_SR(38, 0xda0, 10, 8, 9), /* KPCOL2 */ | ||
153 | MTK_PIN_PUPD_SPEC_SR(46, 0xdb0, 2, 0, 1), /* EINT14 */ | ||
154 | MTK_PIN_PUPD_SPEC_SR(47, 0xdb0, 6, 4, 5), /* EINT15 */ | ||
155 | MTK_PIN_PUPD_SPEC_SR(48, 0xdb0, 10, 8, 9), /* EINT16 */ | ||
156 | MTK_PIN_PUPD_SPEC_SR(49, 0xdb0, 14, 12, 13), /* EINT17 */ | ||
157 | MTK_PIN_PUPD_SPEC_SR(85, 0xce0, 8, 10, 9), /* MSDC2_CMD */ | ||
158 | MTK_PIN_PUPD_SPEC_SR(86, 0xcd0, 8, 10, 9), /* MSDC2_CLK */ | ||
159 | MTK_PIN_PUPD_SPEC_SR(87, 0xd00, 0, 2, 1), /* MSDC2_DAT0 */ | ||
160 | MTK_PIN_PUPD_SPEC_SR(88, 0xd00, 4, 6, 5), /* MSDC2_DAT1 */ | ||
161 | MTK_PIN_PUPD_SPEC_SR(89, 0xd00, 8, 10, 9), /* MSDC2_DAT2 */ | ||
162 | MTK_PIN_PUPD_SPEC_SR(90, 0xd00, 12, 14, 13), /* MSDC2_DAT3 */ | ||
163 | MTK_PIN_PUPD_SPEC_SR(121, 0xc80, 8, 10, 9), /* MSDC1_CMD */ | ||
164 | MTK_PIN_PUPD_SPEC_SR(122, 0xc70, 8, 10, 9), /* MSDC1_CLK */ | ||
165 | MTK_PIN_PUPD_SPEC_SR(123, 0xca0, 0, 2, 1), /* MSDC1_DAT0 */ | ||
166 | MTK_PIN_PUPD_SPEC_SR(124, 0xca0, 4, 6, 5), /* MSDC1_DAT1 */ | ||
167 | MTK_PIN_PUPD_SPEC_SR(125, 0xca0, 8, 10, 9), /* MSDC1_DAT2 */ | ||
168 | MTK_PIN_PUPD_SPEC_SR(126, 0xca0, 12, 14, 13), /* MSDC1_DAT3 */ | ||
169 | MTK_PIN_PUPD_SPEC_SR(127, 0xc40, 12, 14, 13), /* MSDC0_DAT7 */ | ||
170 | MTK_PIN_PUPD_SPEC_SR(128, 0xc40, 8, 10, 9), /* MSDC0_DAT6 */ | ||
171 | MTK_PIN_PUPD_SPEC_SR(129, 0xc40, 4, 6, 5), /* MSDC0_DAT5 */ | ||
172 | MTK_PIN_PUPD_SPEC_SR(130, 0xc40, 0, 2, 1), /* MSDC0_DAT4 */ | ||
173 | MTK_PIN_PUPD_SPEC_SR(131, 0xc50, 0, 2, 1), /* MSDC0_RSTB */ | ||
174 | MTK_PIN_PUPD_SPEC_SR(132, 0xc10, 8, 10, 9), /* MSDC0_CMD */ | ||
175 | MTK_PIN_PUPD_SPEC_SR(133, 0xc00, 8, 10, 9), /* MSDC0_CLK */ | ||
176 | MTK_PIN_PUPD_SPEC_SR(134, 0xc30, 12, 14, 13), /* MSDC0_DAT3 */ | ||
177 | MTK_PIN_PUPD_SPEC_SR(135, 0xc30, 8, 10, 9), /* MSDC0_DAT2 */ | ||
178 | MTK_PIN_PUPD_SPEC_SR(136, 0xc30, 4, 6, 5), /* MSDC0_DAT1 */ | ||
179 | MTK_PIN_PUPD_SPEC_SR(137, 0xc30, 0, 2, 1), /* MSDC0_DAT0 */ | ||
180 | MTK_PIN_PUPD_SPEC_SR(142, 0xdc0, 2, 0, 1), /* EINT21 */ | ||
181 | }; | ||
182 | |||
183 | static int mt8127_spec_pull_set(struct regmap *regmap, unsigned int pin, | ||
184 | unsigned char align, bool isup, unsigned int r1r0) | ||
185 | { | ||
186 | return mtk_pctrl_spec_pull_set_samereg(regmap, mt8127_spec_pupd, | ||
187 | ARRAY_SIZE(mt8127_spec_pupd), pin, align, isup, r1r0); | ||
188 | } | ||
189 | |||
190 | static const struct mtk_pin_ies_smt_set mt8127_ies_set[] = { | ||
191 | MTK_PIN_IES_SMT_SPEC(0, 9, 0x900, 0), | ||
192 | MTK_PIN_IES_SMT_SPEC(10, 13, 0x900, 1), | ||
193 | MTK_PIN_IES_SMT_SPEC(14, 28, 0x900, 2), | ||
194 | MTK_PIN_IES_SMT_SPEC(29, 32, 0x900, 3), | ||
195 | MTK_PIN_IES_SMT_SPEC(33, 33, 0x910, 11), | ||
196 | MTK_PIN_IES_SMT_SPEC(34, 38, 0x900, 10), | ||
197 | MTK_PIN_IES_SMT_SPEC(39, 42, 0x900, 11), | ||
198 | MTK_PIN_IES_SMT_SPEC(43, 45, 0x900, 12), | ||
199 | MTK_PIN_IES_SMT_SPEC(46, 49, 0x900, 13), | ||
200 | MTK_PIN_IES_SMT_SPEC(50, 52, 0x910, 10), | ||
201 | MTK_PIN_IES_SMT_SPEC(53, 56, 0x900, 14), | ||
202 | MTK_PIN_IES_SMT_SPEC(57, 58, 0x910, 0), | ||
203 | MTK_PIN_IES_SMT_SPEC(59, 65, 0x910, 2), | ||
204 | MTK_PIN_IES_SMT_SPEC(66, 71, 0x910, 3), | ||
205 | MTK_PIN_IES_SMT_SPEC(72, 74, 0x910, 4), | ||
206 | MTK_PIN_IES_SMT_SPEC(75, 76, 0x900, 15), | ||
207 | MTK_PIN_IES_SMT_SPEC(77, 78, 0x910, 1), | ||
208 | MTK_PIN_IES_SMT_SPEC(79, 82, 0x910, 5), | ||
209 | MTK_PIN_IES_SMT_SPEC(83, 84, 0x910, 6), | ||
210 | MTK_PIN_IES_SMT_SPEC(117, 120, 0x910, 7), | ||
211 | MTK_PIN_IES_SMT_SPEC(121, 121, 0xc80, 4), | ||
212 | MTK_PIN_IES_SMT_SPEC(122, 122, 0xc70, 4), | ||
213 | MTK_PIN_IES_SMT_SPEC(123, 126, 0xc90, 4), | ||
214 | MTK_PIN_IES_SMT_SPEC(127, 131, 0xc20, 4), | ||
215 | MTK_PIN_IES_SMT_SPEC(132, 132, 0xc10, 4), | ||
216 | MTK_PIN_IES_SMT_SPEC(133, 133, 0xc00, 4), | ||
217 | MTK_PIN_IES_SMT_SPEC(134, 137, 0xc20, 4), | ||
218 | MTK_PIN_IES_SMT_SPEC(138, 141, 0x910, 9), | ||
219 | MTK_PIN_IES_SMT_SPEC(142, 142, 0x900, 13), | ||
220 | }; | ||
221 | |||
222 | static const struct mtk_pin_ies_smt_set mt8127_smt_set[] = { | ||
223 | MTK_PIN_IES_SMT_SPEC(0, 9, 0x920, 0), | ||
224 | MTK_PIN_IES_SMT_SPEC(10, 13, 0x920, 1), | ||
225 | MTK_PIN_IES_SMT_SPEC(14, 28, 0x920, 2), | ||
226 | MTK_PIN_IES_SMT_SPEC(29, 32, 0x920, 3), | ||
227 | MTK_PIN_IES_SMT_SPEC(33, 33, 0x930, 11), | ||
228 | MTK_PIN_IES_SMT_SPEC(34, 38, 0x920, 10), | ||
229 | MTK_PIN_IES_SMT_SPEC(39, 42, 0x920, 11), | ||
230 | MTK_PIN_IES_SMT_SPEC(43, 45, 0x920, 12), | ||
231 | MTK_PIN_IES_SMT_SPEC(46, 49, 0x920, 13), | ||
232 | MTK_PIN_IES_SMT_SPEC(50, 52, 0x930, 10), | ||
233 | MTK_PIN_IES_SMT_SPEC(53, 56, 0x920, 14), | ||
234 | MTK_PIN_IES_SMT_SPEC(57, 58, 0x930, 0), | ||
235 | MTK_PIN_IES_SMT_SPEC(59, 65, 0x930, 2), | ||
236 | MTK_PIN_IES_SMT_SPEC(66, 71, 0x930, 3), | ||
237 | MTK_PIN_IES_SMT_SPEC(72, 74, 0x930, 4), | ||
238 | MTK_PIN_IES_SMT_SPEC(75, 76, 0x920, 15), | ||
239 | MTK_PIN_IES_SMT_SPEC(77, 78, 0x930, 1), | ||
240 | MTK_PIN_IES_SMT_SPEC(79, 82, 0x930, 5), | ||
241 | MTK_PIN_IES_SMT_SPEC(83, 84, 0x930, 6), | ||
242 | MTK_PIN_IES_SMT_SPEC(85, 85, 0xce0, 11), | ||
243 | MTK_PIN_IES_SMT_SPEC(86, 86, 0xcd0, 11), | ||
244 | MTK_PIN_IES_SMT_SPEC(87, 87, 0xd00, 3), | ||
245 | MTK_PIN_IES_SMT_SPEC(88, 88, 0xd00, 7), | ||
246 | MTK_PIN_IES_SMT_SPEC(89, 89, 0xd00, 11), | ||
247 | MTK_PIN_IES_SMT_SPEC(90, 90, 0xd00, 15), | ||
248 | MTK_PIN_IES_SMT_SPEC(117, 120, 0x930, 7), | ||
249 | MTK_PIN_IES_SMT_SPEC(121, 121, 0xc80, 11), | ||
250 | MTK_PIN_IES_SMT_SPEC(122, 122, 0xc70, 11), | ||
251 | MTK_PIN_IES_SMT_SPEC(123, 123, 0xca0, 3), | ||
252 | MTK_PIN_IES_SMT_SPEC(124, 124, 0xca0, 7), | ||
253 | MTK_PIN_IES_SMT_SPEC(125, 125, 0xca0, 11), | ||
254 | MTK_PIN_IES_SMT_SPEC(126, 126, 0xca0, 15), | ||
255 | MTK_PIN_IES_SMT_SPEC(127, 127, 0xc40, 15), | ||
256 | MTK_PIN_IES_SMT_SPEC(128, 128, 0xc40, 11), | ||
257 | MTK_PIN_IES_SMT_SPEC(129, 129, 0xc40, 7), | ||
258 | MTK_PIN_IES_SMT_SPEC(130, 130, 0xc40, 3), | ||
259 | MTK_PIN_IES_SMT_SPEC(131, 131, 0xc50, 3), | ||
260 | MTK_PIN_IES_SMT_SPEC(132, 132, 0xc10, 11), | ||
261 | MTK_PIN_IES_SMT_SPEC(133, 133, 0xc00, 11), | ||
262 | MTK_PIN_IES_SMT_SPEC(134, 134, 0xc30, 15), | ||
263 | MTK_PIN_IES_SMT_SPEC(135, 135, 0xc30, 11), | ||
264 | MTK_PIN_IES_SMT_SPEC(136, 136, 0xc30, 7), | ||
265 | MTK_PIN_IES_SMT_SPEC(137, 137, 0xc30, 3), | ||
266 | MTK_PIN_IES_SMT_SPEC(138, 141, 0x930, 9), | ||
267 | MTK_PIN_IES_SMT_SPEC(142, 142, 0x920, 13), | ||
268 | }; | ||
269 | |||
270 | static int mt8127_ies_smt_set(struct regmap *regmap, unsigned int pin, | ||
271 | unsigned char align, int value, enum pin_config_param arg) | ||
272 | { | ||
273 | if (arg == PIN_CONFIG_INPUT_ENABLE) | ||
274 | return mtk_pconf_spec_set_ies_smt_range(regmap, mt8127_ies_set, | ||
275 | ARRAY_SIZE(mt8127_ies_set), pin, align, value); | ||
276 | else if (arg == PIN_CONFIG_INPUT_SCHMITT_ENABLE) | ||
277 | return mtk_pconf_spec_set_ies_smt_range(regmap, mt8127_smt_set, | ||
278 | ARRAY_SIZE(mt8127_smt_set), pin, align, value); | ||
279 | return -EINVAL; | ||
280 | } | ||
281 | |||
282 | |||
283 | static const struct mtk_pinctrl_devdata mt8127_pinctrl_data = { | ||
284 | .pins = mtk_pins_mt8127, | ||
285 | .npins = ARRAY_SIZE(mtk_pins_mt8127), | ||
286 | .grp_desc = mt8127_drv_grp, | ||
287 | .n_grp_cls = ARRAY_SIZE(mt8127_drv_grp), | ||
288 | .pin_drv_grp = mt8127_pin_drv, | ||
289 | .n_pin_drv_grps = ARRAY_SIZE(mt8127_pin_drv), | ||
290 | .spec_pull_set = mt8127_spec_pull_set, | ||
291 | .spec_ies_smt_set = mt8127_ies_smt_set, | ||
292 | .dir_offset = 0x0000, | ||
293 | .pullen_offset = 0x0100, | ||
294 | .pullsel_offset = 0x0200, | ||
295 | .dout_offset = 0x0400, | ||
296 | .din_offset = 0x0500, | ||
297 | .pinmux_offset = 0x0600, | ||
298 | .type1_start = 143, | ||
299 | .type1_end = 143, | ||
300 | .port_shf = 4, | ||
301 | .port_mask = 0xf, | ||
302 | .port_align = 4, | ||
303 | .eint_offsets = { | ||
304 | .name = "mt8127_eint", | ||
305 | .stat = 0x000, | ||
306 | .ack = 0x040, | ||
307 | .mask = 0x080, | ||
308 | .mask_set = 0x0c0, | ||
309 | .mask_clr = 0x100, | ||
310 | .sens = 0x140, | ||
311 | .sens_set = 0x180, | ||
312 | .sens_clr = 0x1c0, | ||
313 | .soft = 0x200, | ||
314 | .soft_set = 0x240, | ||
315 | .soft_clr = 0x280, | ||
316 | .pol = 0x300, | ||
317 | .pol_set = 0x340, | ||
318 | .pol_clr = 0x380, | ||
319 | .dom_en = 0x400, | ||
320 | .dbnc_ctrl = 0x500, | ||
321 | .dbnc_set = 0x600, | ||
322 | .dbnc_clr = 0x700, | ||
323 | .port_mask = 7, | ||
324 | .ports = 6, | ||
325 | }, | ||
326 | .ap_num = 143, | ||
327 | .db_cnt = 16, | ||
328 | }; | ||
329 | |||
330 | static int mt8127_pinctrl_probe(struct platform_device *pdev) | ||
331 | { | ||
332 | return mtk_pctrl_init(pdev, &mt8127_pinctrl_data, NULL); | ||
333 | } | ||
334 | |||
335 | static const struct of_device_id mt8127_pctrl_match[] = { | ||
336 | { .compatible = "mediatek,mt8127-pinctrl", }, | ||
337 | { } | ||
338 | }; | ||
339 | MODULE_DEVICE_TABLE(of, mt8127_pctrl_match); | ||
340 | |||
341 | static struct platform_driver mtk_pinctrl_driver = { | ||
342 | .probe = mt8127_pinctrl_probe, | ||
343 | .driver = { | ||
344 | .name = "mediatek-mt8127-pinctrl", | ||
345 | .of_match_table = mt8127_pctrl_match, | ||
346 | }, | ||
347 | }; | ||
348 | |||
349 | static int __init mtk_pinctrl_init(void) | ||
350 | { | ||
351 | return platform_driver_register(&mtk_pinctrl_driver); | ||
352 | } | ||
353 | |||
354 | module_init(mtk_pinctrl_init); | ||
355 | |||
356 | MODULE_LICENSE("GPL v2"); | ||
357 | MODULE_DESCRIPTION("MediaTek MT8127 Pinctrl Driver"); | ||
358 | MODULE_AUTHOR("Yingjoe Chen <yingjoe.chen@mediatek.com>"); | ||
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8135.c b/drivers/pinctrl/mediatek/pinctrl-mt8135.c index f1e1e187ce96..404f1178511d 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8135.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8135.c | |||
@@ -32,12 +32,12 @@ | |||
32 | #define R1_BASE2 0x250 | 32 | #define R1_BASE2 0x250 |
33 | 33 | ||
34 | struct mtk_spec_pull_set { | 34 | struct mtk_spec_pull_set { |
35 | unsigned int pin; | 35 | unsigned char pin; |
36 | unsigned int pupd_offset; | ||
37 | unsigned char pupd_bit; | 36 | unsigned char pupd_bit; |
38 | unsigned int r0_offset; | 37 | unsigned short pupd_offset; |
38 | unsigned short r0_offset; | ||
39 | unsigned short r1_offset; | ||
39 | unsigned char r0_bit; | 40 | unsigned char r0_bit; |
40 | unsigned int r1_offset; | ||
41 | unsigned char r1_bit; | 41 | unsigned char r1_bit; |
42 | }; | 42 | }; |
43 | 43 | ||
@@ -305,7 +305,6 @@ static const struct mtk_pinctrl_devdata mt8135_pinctrl_data = { | |||
305 | .pullen_offset = 0x0200, | 305 | .pullen_offset = 0x0200, |
306 | .smt_offset = 0x0300, | 306 | .smt_offset = 0x0300, |
307 | .pullsel_offset = 0x0400, | 307 | .pullsel_offset = 0x0400, |
308 | .invser_offset = 0x0600, | ||
309 | .dout_offset = 0x0800, | 308 | .dout_offset = 0x0800, |
310 | .din_offset = 0x0A00, | 309 | .din_offset = 0x0A00, |
311 | .pinmux_offset = 0x0C00, | 310 | .pinmux_offset = 0x0C00, |
@@ -314,7 +313,6 @@ static const struct mtk_pinctrl_devdata mt8135_pinctrl_data = { | |||
314 | .port_shf = 4, | 313 | .port_shf = 4, |
315 | .port_mask = 0xf, | 314 | .port_mask = 0xf, |
316 | .port_align = 4, | 315 | .port_align = 4, |
317 | .chip_type = MTK_CHIP_TYPE_BASE, | ||
318 | .eint_offsets = { | 316 | .eint_offsets = { |
319 | .name = "mt8135_eint", | 317 | .name = "mt8135_eint", |
320 | .stat = 0x000, | 318 | .stat = 0x000, |
@@ -344,7 +342,7 @@ static const struct mtk_pinctrl_devdata mt8135_pinctrl_data = { | |||
344 | 342 | ||
345 | static int mt8135_pinctrl_probe(struct platform_device *pdev) | 343 | static int mt8135_pinctrl_probe(struct platform_device *pdev) |
346 | { | 344 | { |
347 | return mtk_pctrl_init(pdev, &mt8135_pinctrl_data); | 345 | return mtk_pctrl_init(pdev, &mt8135_pinctrl_data, NULL); |
348 | } | 346 | } |
349 | 347 | ||
350 | static const struct of_device_id mt8135_pctrl_match[] = { | 348 | static const struct of_device_id mt8135_pctrl_match[] = { |
@@ -359,7 +357,6 @@ static struct platform_driver mtk_pinctrl_driver = { | |||
359 | .probe = mt8135_pinctrl_probe, | 357 | .probe = mt8135_pinctrl_probe, |
360 | .driver = { | 358 | .driver = { |
361 | .name = "mediatek-mt8135-pinctrl", | 359 | .name = "mediatek-mt8135-pinctrl", |
362 | .owner = THIS_MODULE, | ||
363 | .of_match_table = mt8135_pctrl_match, | 360 | .of_match_table = mt8135_pctrl_match, |
364 | }, | 361 | }, |
365 | }; | 362 | }; |
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8173.c b/drivers/pinctrl/mediatek/pinctrl-mt8173.c index 412ea84836a1..d0c811d5f07b 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8173.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8173.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/of_device.h> | 18 | #include <linux/of_device.h> |
19 | #include <linux/pinctrl/pinctrl.h> | 19 | #include <linux/pinctrl/pinctrl.h> |
20 | #include <linux/regmap.h> | 20 | #include <linux/regmap.h> |
21 | #include <linux/pinctrl/pinconf-generic.h> | ||
21 | #include <dt-bindings/pinctrl/mt65xx.h> | 22 | #include <dt-bindings/pinctrl/mt65xx.h> |
22 | 23 | ||
23 | #include "pinctrl-mtk-common.h" | 24 | #include "pinctrl-mtk-common.h" |
@@ -25,228 +26,172 @@ | |||
25 | 26 | ||
26 | #define DRV_BASE 0xb00 | 27 | #define DRV_BASE 0xb00 |
27 | 28 | ||
28 | /** | 29 | static const struct mtk_pin_spec_pupd_set_samereg mt8173_spec_pupd[] = { |
29 | * struct mtk_pin_ies_smt_set - For special pins' ies and smt setting. | 30 | MTK_PIN_PUPD_SPEC_SR(119, 0xe00, 2, 1, 0), /* KROW0 */ |
30 | * @start: The start pin number of those special pins. | 31 | MTK_PIN_PUPD_SPEC_SR(120, 0xe00, 6, 5, 4), /* KROW1 */ |
31 | * @end: The end pin number of those special pins. | 32 | MTK_PIN_PUPD_SPEC_SR(121, 0xe00, 10, 9, 8), /* KROW2 */ |
32 | * @offset: The offset of special setting register. | 33 | MTK_PIN_PUPD_SPEC_SR(122, 0xe10, 2, 1, 0), /* KCOL0 */ |
33 | * @bit: The bit of special setting register. | 34 | MTK_PIN_PUPD_SPEC_SR(123, 0xe10, 6, 5, 4), /* KCOL1 */ |
34 | */ | 35 | MTK_PIN_PUPD_SPEC_SR(124, 0xe10, 10, 9, 8), /* KCOL2 */ |
35 | struct mtk_pin_ies_smt_set { | 36 | |
36 | unsigned int start; | 37 | MTK_PIN_PUPD_SPEC_SR(67, 0xd10, 2, 1, 0), /* ms0 DS */ |
37 | unsigned int end; | 38 | MTK_PIN_PUPD_SPEC_SR(68, 0xd00, 2, 1, 0), /* ms0 RST */ |
38 | unsigned int offset; | 39 | MTK_PIN_PUPD_SPEC_SR(66, 0xc10, 2, 1, 0), /* ms0 cmd */ |
39 | unsigned char bit; | 40 | MTK_PIN_PUPD_SPEC_SR(65, 0xc00, 2, 1, 0), /* ms0 clk */ |
41 | MTK_PIN_PUPD_SPEC_SR(57, 0xc20, 2, 1, 0), /* ms0 data0 */ | ||
42 | MTK_PIN_PUPD_SPEC_SR(58, 0xc20, 2, 1, 0), /* ms0 data1 */ | ||
43 | MTK_PIN_PUPD_SPEC_SR(59, 0xc20, 2, 1, 0), /* ms0 data2 */ | ||
44 | MTK_PIN_PUPD_SPEC_SR(60, 0xc20, 2, 1, 0), /* ms0 data3 */ | ||
45 | MTK_PIN_PUPD_SPEC_SR(61, 0xc20, 2, 1, 0), /* ms0 data4 */ | ||
46 | MTK_PIN_PUPD_SPEC_SR(62, 0xc20, 2, 1, 0), /* ms0 data5 */ | ||
47 | MTK_PIN_PUPD_SPEC_SR(63, 0xc20, 2, 1, 0), /* ms0 data6 */ | ||
48 | MTK_PIN_PUPD_SPEC_SR(64, 0xc20, 2, 1, 0), /* ms0 data7 */ | ||
49 | |||
50 | MTK_PIN_PUPD_SPEC_SR(78, 0xc50, 2, 1, 0), /* ms1 cmd */ | ||
51 | MTK_PIN_PUPD_SPEC_SR(73, 0xd20, 2, 1, 0), /* ms1 dat0 */ | ||
52 | MTK_PIN_PUPD_SPEC_SR(74, 0xd20, 6, 5, 4), /* ms1 dat1 */ | ||
53 | MTK_PIN_PUPD_SPEC_SR(75, 0xd20, 10, 9, 8), /* ms1 dat2 */ | ||
54 | MTK_PIN_PUPD_SPEC_SR(76, 0xd20, 14, 13, 12), /* ms1 dat3 */ | ||
55 | MTK_PIN_PUPD_SPEC_SR(77, 0xc40, 2, 1, 0), /* ms1 clk */ | ||
56 | |||
57 | MTK_PIN_PUPD_SPEC_SR(100, 0xd40, 2, 1, 0), /* ms2 dat0 */ | ||
58 | MTK_PIN_PUPD_SPEC_SR(101, 0xd40, 6, 5, 4), /* ms2 dat1 */ | ||
59 | MTK_PIN_PUPD_SPEC_SR(102, 0xd40, 10, 9, 8), /* ms2 dat2 */ | ||
60 | MTK_PIN_PUPD_SPEC_SR(103, 0xd40, 14, 13, 12), /* ms2 dat3 */ | ||
61 | MTK_PIN_PUPD_SPEC_SR(104, 0xc80, 2, 1, 0), /* ms2 clk */ | ||
62 | MTK_PIN_PUPD_SPEC_SR(105, 0xc90, 2, 1, 0), /* ms2 cmd */ | ||
63 | |||
64 | MTK_PIN_PUPD_SPEC_SR(22, 0xd60, 2, 1, 0), /* ms3 dat0 */ | ||
65 | MTK_PIN_PUPD_SPEC_SR(23, 0xd60, 6, 5, 4), /* ms3 dat1 */ | ||
66 | MTK_PIN_PUPD_SPEC_SR(24, 0xd60, 10, 9, 8), /* ms3 dat2 */ | ||
67 | MTK_PIN_PUPD_SPEC_SR(25, 0xd60, 14, 13, 12), /* ms3 dat3 */ | ||
68 | MTK_PIN_PUPD_SPEC_SR(26, 0xcc0, 2, 1, 0), /* ms3 clk */ | ||
69 | MTK_PIN_PUPD_SPEC_SR(27, 0xcd0, 2, 1, 0) /* ms3 cmd */ | ||
40 | }; | 70 | }; |
41 | 71 | ||
42 | #define MTK_PIN_IES_SMT_SET(_start, _end, _offset, _bit) \ | 72 | static int mt8173_spec_pull_set(struct regmap *regmap, unsigned int pin, |
43 | { \ | ||
44 | .start = _start, \ | ||
45 | .end = _end, \ | ||
46 | .bit = _bit, \ | ||
47 | .offset = _offset, \ | ||
48 | } | ||
49 | |||
50 | /** | ||
51 | * struct mtk_pin_spec_pupd_set - For special pins' pull up/down setting. | ||
52 | * @pin: The pin number. | ||
53 | * @offset: The offset of special pull up/down setting register. | ||
54 | * @pupd_bit: The pull up/down bit in this register. | ||
55 | * @r0_bit: The r0 bit of pull resistor. | ||
56 | * @r1_bit: The r1 bit of pull resistor. | ||
57 | */ | ||
58 | struct mtk_pin_spec_pupd_set { | ||
59 | unsigned int pin; | ||
60 | unsigned int offset; | ||
61 | unsigned char pupd_bit; | ||
62 | unsigned char r1_bit; | ||
63 | unsigned char r0_bit; | ||
64 | }; | ||
65 | |||
66 | #define MTK_PIN_PUPD_SPEC(_pin, _offset, _pupd, _r1, _r0) \ | ||
67 | { \ | ||
68 | .pin = _pin, \ | ||
69 | .offset = _offset, \ | ||
70 | .pupd_bit = _pupd, \ | ||
71 | .r1_bit = _r1, \ | ||
72 | .r0_bit = _r0, \ | ||
73 | } | ||
74 | |||
75 | static const struct mtk_pin_spec_pupd_set mt8173_spec_pupd[] = { | ||
76 | MTK_PIN_PUPD_SPEC(119, 0xe00, 2, 1, 0), /* KROW0 */ | ||
77 | MTK_PIN_PUPD_SPEC(120, 0xe00, 6, 5, 4), /* KROW1 */ | ||
78 | MTK_PIN_PUPD_SPEC(121, 0xe00, 10, 9, 8), /* KROW2 */ | ||
79 | MTK_PIN_PUPD_SPEC(122, 0xe10, 2, 1, 0), /* KCOL0 */ | ||
80 | MTK_PIN_PUPD_SPEC(123, 0xe10, 6, 5, 4), /* KCOL1 */ | ||
81 | MTK_PIN_PUPD_SPEC(124, 0xe10, 10, 9, 8), /* KCOL2 */ | ||
82 | |||
83 | MTK_PIN_PUPD_SPEC(67, 0xd10, 2, 1, 0), /* ms0 DS */ | ||
84 | MTK_PIN_PUPD_SPEC(68, 0xd00, 2, 1, 0), /* ms0 RST */ | ||
85 | MTK_PIN_PUPD_SPEC(66, 0xc10, 2, 1, 0), /* ms0 cmd */ | ||
86 | MTK_PIN_PUPD_SPEC(65, 0xc00, 2, 1, 0), /* ms0 clk */ | ||
87 | MTK_PIN_PUPD_SPEC(57, 0xc20, 2, 1, 0), /* ms0 data0 */ | ||
88 | MTK_PIN_PUPD_SPEC(58, 0xc20, 2, 1, 0), /* ms0 data1 */ | ||
89 | MTK_PIN_PUPD_SPEC(59, 0xc20, 2, 1, 0), /* ms0 data2 */ | ||
90 | MTK_PIN_PUPD_SPEC(60, 0xc20, 2, 1, 0), /* ms0 data3 */ | ||
91 | MTK_PIN_PUPD_SPEC(61, 0xc20, 2, 1, 0), /* ms0 data4 */ | ||
92 | MTK_PIN_PUPD_SPEC(62, 0xc20, 2, 1, 0), /* ms0 data5 */ | ||
93 | MTK_PIN_PUPD_SPEC(63, 0xc20, 2, 1, 0), /* ms0 data6 */ | ||
94 | MTK_PIN_PUPD_SPEC(64, 0xc20, 2, 1, 0), /* ms0 data7 */ | ||
95 | |||
96 | MTK_PIN_PUPD_SPEC(78, 0xc50, 2, 1, 0), /* ms1 cmd */ | ||
97 | MTK_PIN_PUPD_SPEC(73, 0xd20, 2, 1, 0), /* ms1 dat0 */ | ||
98 | MTK_PIN_PUPD_SPEC(74, 0xd20, 6, 5, 4), /* ms1 dat1 */ | ||
99 | MTK_PIN_PUPD_SPEC(75, 0xd20, 10, 9, 8), /* ms1 dat2 */ | ||
100 | MTK_PIN_PUPD_SPEC(76, 0xd20, 14, 13, 12), /* ms1 dat3 */ | ||
101 | MTK_PIN_PUPD_SPEC(77, 0xc40, 2, 1, 0), /* ms1 clk */ | ||
102 | |||
103 | MTK_PIN_PUPD_SPEC(100, 0xd40, 2, 1, 0), /* ms2 dat0 */ | ||
104 | MTK_PIN_PUPD_SPEC(101, 0xd40, 6, 5, 4), /* ms2 dat1 */ | ||
105 | MTK_PIN_PUPD_SPEC(102, 0xd40, 10, 9, 8), /* ms2 dat2 */ | ||
106 | MTK_PIN_PUPD_SPEC(103, 0xd40, 14, 13, 12), /* ms2 dat3 */ | ||
107 | MTK_PIN_PUPD_SPEC(104, 0xc80, 2, 1, 0), /* ms2 clk */ | ||
108 | MTK_PIN_PUPD_SPEC(105, 0xc90, 2, 1, 0), /* ms2 cmd */ | ||
109 | |||
110 | MTK_PIN_PUPD_SPEC(22, 0xd60, 2, 1, 0), /* ms3 dat0 */ | ||
111 | MTK_PIN_PUPD_SPEC(23, 0xd60, 6, 5, 4), /* ms3 dat1 */ | ||
112 | MTK_PIN_PUPD_SPEC(24, 0xd60, 10, 9, 8), /* ms3 dat2 */ | ||
113 | MTK_PIN_PUPD_SPEC(25, 0xd60, 14, 13, 12), /* ms3 dat3 */ | ||
114 | MTK_PIN_PUPD_SPEC(26, 0xcc0, 2, 1, 0), /* ms3 clk */ | ||
115 | MTK_PIN_PUPD_SPEC(27, 0xcd0, 2, 1, 0) /* ms3 cmd */ | ||
116 | }; | ||
117 | |||
118 | static int spec_pull_set(struct regmap *regmap, unsigned int pin, | ||
119 | unsigned char align, bool isup, unsigned int r1r0) | 73 | unsigned char align, bool isup, unsigned int r1r0) |
120 | { | 74 | { |
121 | unsigned int i; | 75 | return mtk_pctrl_spec_pull_set_samereg(regmap, mt8173_spec_pupd, |
122 | unsigned int reg_pupd, reg_set, reg_rst; | 76 | ARRAY_SIZE(mt8173_spec_pupd), pin, align, isup, r1r0); |
123 | unsigned int bit_pupd, bit_r0, bit_r1; | ||
124 | const struct mtk_pin_spec_pupd_set *spec_pupd_pin; | ||
125 | bool find = false; | ||
126 | |||
127 | for (i = 0; i < ARRAY_SIZE(mt8173_spec_pupd); i++) { | ||
128 | if (pin == mt8173_spec_pupd[i].pin) { | ||
129 | find = true; | ||
130 | break; | ||
131 | } | ||
132 | } | ||
133 | |||
134 | if (!find) | ||
135 | return -EINVAL; | ||
136 | |||
137 | spec_pupd_pin = mt8173_spec_pupd + i; | ||
138 | reg_set = spec_pupd_pin->offset + align; | ||
139 | reg_rst = spec_pupd_pin->offset + (align << 1); | ||
140 | |||
141 | if (isup) | ||
142 | reg_pupd = reg_rst; | ||
143 | else | ||
144 | reg_pupd = reg_set; | ||
145 | |||
146 | bit_pupd = BIT(spec_pupd_pin->pupd_bit); | ||
147 | regmap_write(regmap, reg_pupd, bit_pupd); | ||
148 | |||
149 | bit_r0 = BIT(spec_pupd_pin->r0_bit); | ||
150 | bit_r1 = BIT(spec_pupd_pin->r1_bit); | ||
151 | |||
152 | switch (r1r0) { | ||
153 | case MTK_PUPD_SET_R1R0_00: | ||
154 | regmap_write(regmap, reg_rst, bit_r0); | ||
155 | regmap_write(regmap, reg_rst, bit_r1); | ||
156 | break; | ||
157 | case MTK_PUPD_SET_R1R0_01: | ||
158 | regmap_write(regmap, reg_set, bit_r0); | ||
159 | regmap_write(regmap, reg_rst, bit_r1); | ||
160 | break; | ||
161 | case MTK_PUPD_SET_R1R0_10: | ||
162 | regmap_write(regmap, reg_rst, bit_r0); | ||
163 | regmap_write(regmap, reg_set, bit_r1); | ||
164 | break; | ||
165 | case MTK_PUPD_SET_R1R0_11: | ||
166 | regmap_write(regmap, reg_set, bit_r0); | ||
167 | regmap_write(regmap, reg_set, bit_r1); | ||
168 | break; | ||
169 | default: | ||
170 | return -EINVAL; | ||
171 | } | ||
172 | |||
173 | return 0; | ||
174 | } | 77 | } |
175 | 78 | ||
176 | static const struct mtk_pin_ies_smt_set mt8173_ies_smt_set[] = { | 79 | static const struct mtk_pin_ies_smt_set mt8173_smt_set[] = { |
177 | MTK_PIN_IES_SMT_SET(0, 4, 0x930, 1), | 80 | MTK_PIN_IES_SMT_SPEC(0, 4, 0x930, 1), |
178 | MTK_PIN_IES_SMT_SET(5, 9, 0x930, 2), | 81 | MTK_PIN_IES_SMT_SPEC(5, 9, 0x930, 2), |
179 | MTK_PIN_IES_SMT_SET(10, 13, 0x930, 10), | 82 | MTK_PIN_IES_SMT_SPEC(10, 13, 0x930, 10), |
180 | MTK_PIN_IES_SMT_SET(14, 15, 0x940, 10), | 83 | MTK_PIN_IES_SMT_SPEC(14, 15, 0x940, 10), |
181 | MTK_PIN_IES_SMT_SET(16, 16, 0x930, 0), | 84 | MTK_PIN_IES_SMT_SPEC(16, 16, 0x930, 0), |
182 | MTK_PIN_IES_SMT_SET(17, 17, 0x950, 2), | 85 | MTK_PIN_IES_SMT_SPEC(17, 17, 0x950, 2), |
183 | MTK_PIN_IES_SMT_SET(18, 21, 0x940, 3), | 86 | MTK_PIN_IES_SMT_SPEC(18, 21, 0x940, 3), |
184 | MTK_PIN_IES_SMT_SET(29, 32, 0x930, 3), | 87 | MTK_PIN_IES_SMT_SPEC(22, 25, 0xce0, 13), |
185 | MTK_PIN_IES_SMT_SET(33, 33, 0x930, 4), | 88 | MTK_PIN_IES_SMT_SPEC(26, 26, 0xcc0, 13), |
186 | MTK_PIN_IES_SMT_SET(34, 36, 0x930, 5), | 89 | MTK_PIN_IES_SMT_SPEC(27, 27, 0xcd0, 13), |
187 | MTK_PIN_IES_SMT_SET(37, 38, 0x930, 6), | 90 | MTK_PIN_IES_SMT_SPEC(28, 28, 0xd70, 13), |
188 | MTK_PIN_IES_SMT_SET(39, 39, 0x930, 7), | 91 | MTK_PIN_IES_SMT_SPEC(29, 32, 0x930, 3), |
189 | MTK_PIN_IES_SMT_SET(40, 41, 0x930, 9), | 92 | MTK_PIN_IES_SMT_SPEC(33, 33, 0x930, 4), |
190 | MTK_PIN_IES_SMT_SET(42, 42, 0x940, 0), | 93 | MTK_PIN_IES_SMT_SPEC(34, 36, 0x930, 5), |
191 | MTK_PIN_IES_SMT_SET(43, 44, 0x930, 11), | 94 | MTK_PIN_IES_SMT_SPEC(37, 38, 0x930, 6), |
192 | MTK_PIN_IES_SMT_SET(45, 46, 0x930, 12), | 95 | MTK_PIN_IES_SMT_SPEC(39, 39, 0x930, 7), |
193 | MTK_PIN_IES_SMT_SET(57, 64, 0xc20, 13), | 96 | MTK_PIN_IES_SMT_SPEC(40, 41, 0x930, 9), |
194 | MTK_PIN_IES_SMT_SET(65, 65, 0xc10, 13), | 97 | MTK_PIN_IES_SMT_SPEC(42, 42, 0x940, 0), |
195 | MTK_PIN_IES_SMT_SET(66, 66, 0xc00, 13), | 98 | MTK_PIN_IES_SMT_SPEC(43, 44, 0x930, 11), |
196 | MTK_PIN_IES_SMT_SET(67, 67, 0xd10, 13), | 99 | MTK_PIN_IES_SMT_SPEC(45, 46, 0x930, 12), |
197 | MTK_PIN_IES_SMT_SET(68, 68, 0xd00, 13), | 100 | MTK_PIN_IES_SMT_SPEC(57, 64, 0xc20, 13), |
198 | MTK_PIN_IES_SMT_SET(69, 72, 0x940, 14), | 101 | MTK_PIN_IES_SMT_SPEC(65, 65, 0xc10, 13), |
199 | MTK_PIN_IES_SMT_SET(73, 76, 0xc60, 13), | 102 | MTK_PIN_IES_SMT_SPEC(66, 66, 0xc00, 13), |
200 | MTK_PIN_IES_SMT_SET(77, 77, 0xc40, 13), | 103 | MTK_PIN_IES_SMT_SPEC(67, 67, 0xd10, 13), |
201 | MTK_PIN_IES_SMT_SET(78, 78, 0xc50, 13), | 104 | MTK_PIN_IES_SMT_SPEC(68, 68, 0xd00, 13), |
202 | MTK_PIN_IES_SMT_SET(79, 82, 0x940, 15), | 105 | MTK_PIN_IES_SMT_SPEC(69, 72, 0x940, 14), |
203 | MTK_PIN_IES_SMT_SET(83, 83, 0x950, 0), | 106 | MTK_PIN_IES_SMT_SPEC(73, 76, 0xc60, 13), |
204 | MTK_PIN_IES_SMT_SET(84, 85, 0x950, 1), | 107 | MTK_PIN_IES_SMT_SPEC(77, 77, 0xc40, 13), |
205 | MTK_PIN_IES_SMT_SET(86, 91, 0x950, 2), | 108 | MTK_PIN_IES_SMT_SPEC(78, 78, 0xc50, 13), |
206 | MTK_PIN_IES_SMT_SET(92, 92, 0x930, 13), | 109 | MTK_PIN_IES_SMT_SPEC(79, 82, 0x940, 15), |
207 | MTK_PIN_IES_SMT_SET(93, 95, 0x930, 14), | 110 | MTK_PIN_IES_SMT_SPEC(83, 83, 0x950, 0), |
208 | MTK_PIN_IES_SMT_SET(96, 99, 0x930, 15), | 111 | MTK_PIN_IES_SMT_SPEC(84, 85, 0x950, 1), |
209 | MTK_PIN_IES_SMT_SET(100, 103, 0xca0, 13), | 112 | MTK_PIN_IES_SMT_SPEC(86, 91, 0x950, 2), |
210 | MTK_PIN_IES_SMT_SET(104, 104, 0xc80, 13), | 113 | MTK_PIN_IES_SMT_SPEC(92, 92, 0x930, 13), |
211 | MTK_PIN_IES_SMT_SET(105, 105, 0xc90, 13), | 114 | MTK_PIN_IES_SMT_SPEC(93, 95, 0x930, 14), |
212 | MTK_PIN_IES_SMT_SET(106, 107, 0x940, 4), | 115 | MTK_PIN_IES_SMT_SPEC(96, 99, 0x930, 15), |
213 | MTK_PIN_IES_SMT_SET(108, 112, 0x940, 1), | 116 | MTK_PIN_IES_SMT_SPEC(100, 103, 0xca0, 13), |
214 | MTK_PIN_IES_SMT_SET(113, 116, 0x940, 2), | 117 | MTK_PIN_IES_SMT_SPEC(104, 104, 0xc80, 13), |
215 | MTK_PIN_IES_SMT_SET(117, 118, 0x940, 5), | 118 | MTK_PIN_IES_SMT_SPEC(105, 105, 0xc90, 13), |
216 | MTK_PIN_IES_SMT_SET(119, 124, 0x940, 6), | 119 | MTK_PIN_IES_SMT_SPEC(106, 107, 0x940, 4), |
217 | MTK_PIN_IES_SMT_SET(125, 126, 0x940, 7), | 120 | MTK_PIN_IES_SMT_SPEC(108, 112, 0x940, 1), |
218 | MTK_PIN_IES_SMT_SET(127, 127, 0x940, 0), | 121 | MTK_PIN_IES_SMT_SPEC(113, 116, 0x940, 2), |
219 | MTK_PIN_IES_SMT_SET(128, 128, 0x950, 8), | 122 | MTK_PIN_IES_SMT_SPEC(117, 118, 0x940, 5), |
220 | MTK_PIN_IES_SMT_SET(129, 130, 0x950, 9), | 123 | MTK_PIN_IES_SMT_SPEC(119, 124, 0x940, 6), |
221 | MTK_PIN_IES_SMT_SET(131, 132, 0x950, 8), | 124 | MTK_PIN_IES_SMT_SPEC(125, 126, 0x940, 7), |
222 | MTK_PIN_IES_SMT_SET(133, 134, 0x910, 8) | 125 | MTK_PIN_IES_SMT_SPEC(127, 127, 0x940, 0), |
126 | MTK_PIN_IES_SMT_SPEC(128, 128, 0x950, 8), | ||
127 | MTK_PIN_IES_SMT_SPEC(129, 130, 0x950, 9), | ||
128 | MTK_PIN_IES_SMT_SPEC(131, 132, 0x950, 8), | ||
129 | MTK_PIN_IES_SMT_SPEC(133, 134, 0x910, 8) | ||
223 | }; | 130 | }; |
224 | 131 | ||
225 | static int spec_ies_smt_set(struct regmap *regmap, unsigned int pin, | 132 | static const struct mtk_pin_ies_smt_set mt8173_ies_set[] = { |
226 | unsigned char align, int value) | 133 | MTK_PIN_IES_SMT_SPEC(0, 4, 0x900, 1), |
227 | { | 134 | MTK_PIN_IES_SMT_SPEC(5, 9, 0x900, 2), |
228 | unsigned int i, reg_addr, bit; | 135 | MTK_PIN_IES_SMT_SPEC(10, 13, 0x900, 10), |
229 | bool find = false; | 136 | MTK_PIN_IES_SMT_SPEC(14, 15, 0x910, 10), |
230 | 137 | MTK_PIN_IES_SMT_SPEC(16, 16, 0x900, 0), | |
231 | for (i = 0; i < ARRAY_SIZE(mt8173_ies_smt_set); i++) { | 138 | MTK_PIN_IES_SMT_SPEC(17, 17, 0x920, 2), |
232 | if (pin >= mt8173_ies_smt_set[i].start && | 139 | MTK_PIN_IES_SMT_SPEC(18, 21, 0x910, 3), |
233 | pin <= mt8173_ies_smt_set[i].end) { | 140 | MTK_PIN_IES_SMT_SPEC(22, 25, 0xce0, 14), |
234 | find = true; | 141 | MTK_PIN_IES_SMT_SPEC(26, 26, 0xcc0, 14), |
235 | break; | 142 | MTK_PIN_IES_SMT_SPEC(27, 27, 0xcd0, 14), |
236 | } | 143 | MTK_PIN_IES_SMT_SPEC(28, 28, 0xd70, 14), |
237 | } | 144 | MTK_PIN_IES_SMT_SPEC(29, 32, 0x900, 3), |
238 | 145 | MTK_PIN_IES_SMT_SPEC(33, 33, 0x900, 4), | |
239 | if (!find) | 146 | MTK_PIN_IES_SMT_SPEC(34, 36, 0x900, 5), |
240 | return -EINVAL; | 147 | MTK_PIN_IES_SMT_SPEC(37, 38, 0x900, 6), |
241 | 148 | MTK_PIN_IES_SMT_SPEC(39, 39, 0x900, 7), | |
242 | if (value) | 149 | MTK_PIN_IES_SMT_SPEC(40, 41, 0x900, 9), |
243 | reg_addr = mt8173_ies_smt_set[i].offset + align; | 150 | MTK_PIN_IES_SMT_SPEC(42, 42, 0x910, 0), |
244 | else | 151 | MTK_PIN_IES_SMT_SPEC(43, 44, 0x900, 11), |
245 | reg_addr = mt8173_ies_smt_set[i].offset + (align << 1); | 152 | MTK_PIN_IES_SMT_SPEC(45, 46, 0x900, 12), |
153 | MTK_PIN_IES_SMT_SPEC(57, 64, 0xc20, 14), | ||
154 | MTK_PIN_IES_SMT_SPEC(65, 65, 0xc10, 14), | ||
155 | MTK_PIN_IES_SMT_SPEC(66, 66, 0xc00, 14), | ||
156 | MTK_PIN_IES_SMT_SPEC(67, 67, 0xd10, 14), | ||
157 | MTK_PIN_IES_SMT_SPEC(68, 68, 0xd00, 14), | ||
158 | MTK_PIN_IES_SMT_SPEC(69, 72, 0x910, 14), | ||
159 | MTK_PIN_IES_SMT_SPEC(73, 76, 0xc60, 14), | ||
160 | MTK_PIN_IES_SMT_SPEC(77, 77, 0xc40, 14), | ||
161 | MTK_PIN_IES_SMT_SPEC(78, 78, 0xc50, 14), | ||
162 | MTK_PIN_IES_SMT_SPEC(79, 82, 0x910, 15), | ||
163 | MTK_PIN_IES_SMT_SPEC(83, 83, 0x920, 0), | ||
164 | MTK_PIN_IES_SMT_SPEC(84, 85, 0x920, 1), | ||
165 | MTK_PIN_IES_SMT_SPEC(86, 91, 0x920, 2), | ||
166 | MTK_PIN_IES_SMT_SPEC(92, 92, 0x900, 13), | ||
167 | MTK_PIN_IES_SMT_SPEC(93, 95, 0x900, 14), | ||
168 | MTK_PIN_IES_SMT_SPEC(96, 99, 0x900, 15), | ||
169 | MTK_PIN_IES_SMT_SPEC(100, 103, 0xca0, 14), | ||
170 | MTK_PIN_IES_SMT_SPEC(104, 104, 0xc80, 14), | ||
171 | MTK_PIN_IES_SMT_SPEC(105, 105, 0xc90, 14), | ||
172 | MTK_PIN_IES_SMT_SPEC(106, 107, 0x910, 4), | ||
173 | MTK_PIN_IES_SMT_SPEC(108, 112, 0x910, 1), | ||
174 | MTK_PIN_IES_SMT_SPEC(113, 116, 0x910, 2), | ||
175 | MTK_PIN_IES_SMT_SPEC(117, 118, 0x910, 5), | ||
176 | MTK_PIN_IES_SMT_SPEC(119, 124, 0x910, 6), | ||
177 | MTK_PIN_IES_SMT_SPEC(125, 126, 0x910, 7), | ||
178 | MTK_PIN_IES_SMT_SPEC(127, 127, 0x910, 0), | ||
179 | MTK_PIN_IES_SMT_SPEC(128, 128, 0x920, 8), | ||
180 | MTK_PIN_IES_SMT_SPEC(129, 130, 0x920, 9), | ||
181 | MTK_PIN_IES_SMT_SPEC(131, 132, 0x920, 8), | ||
182 | MTK_PIN_IES_SMT_SPEC(133, 134, 0x910, 8) | ||
183 | }; | ||
246 | 184 | ||
247 | bit = BIT(mt8173_ies_smt_set[i].bit); | 185 | static int mt8173_ies_smt_set(struct regmap *regmap, unsigned int pin, |
248 | regmap_write(regmap, reg_addr, bit); | 186 | unsigned char align, int value, enum pin_config_param arg) |
249 | return 0; | 187 | { |
188 | if (arg == PIN_CONFIG_INPUT_ENABLE) | ||
189 | return mtk_pconf_spec_set_ies_smt_range(regmap, mt8173_ies_set, | ||
190 | ARRAY_SIZE(mt8173_ies_set), pin, align, value); | ||
191 | else if (arg == PIN_CONFIG_INPUT_SCHMITT_ENABLE) | ||
192 | return mtk_pconf_spec_set_ies_smt_range(regmap, mt8173_smt_set, | ||
193 | ARRAY_SIZE(mt8173_smt_set), pin, align, value); | ||
194 | return -EINVAL; | ||
250 | } | 195 | } |
251 | 196 | ||
252 | static const struct mtk_drv_group_desc mt8173_drv_grp[] = { | 197 | static const struct mtk_drv_group_desc mt8173_drv_grp[] = { |
@@ -382,8 +327,8 @@ static const struct mtk_pinctrl_devdata mt8173_pinctrl_data = { | |||
382 | .n_grp_cls = ARRAY_SIZE(mt8173_drv_grp), | 327 | .n_grp_cls = ARRAY_SIZE(mt8173_drv_grp), |
383 | .pin_drv_grp = mt8173_pin_drv, | 328 | .pin_drv_grp = mt8173_pin_drv, |
384 | .n_pin_drv_grps = ARRAY_SIZE(mt8173_pin_drv), | 329 | .n_pin_drv_grps = ARRAY_SIZE(mt8173_pin_drv), |
385 | .spec_pull_set = spec_pull_set, | 330 | .spec_pull_set = mt8173_spec_pull_set, |
386 | .spec_ies_smt_set = spec_ies_smt_set, | 331 | .spec_ies_smt_set = mt8173_ies_smt_set, |
387 | .dir_offset = 0x0000, | 332 | .dir_offset = 0x0000, |
388 | .pullen_offset = 0x0100, | 333 | .pullen_offset = 0x0100, |
389 | .pullsel_offset = 0x0200, | 334 | .pullsel_offset = 0x0200, |
@@ -424,7 +369,7 @@ static const struct mtk_pinctrl_devdata mt8173_pinctrl_data = { | |||
424 | 369 | ||
425 | static int mt8173_pinctrl_probe(struct platform_device *pdev) | 370 | static int mt8173_pinctrl_probe(struct platform_device *pdev) |
426 | { | 371 | { |
427 | return mtk_pctrl_init(pdev, &mt8173_pinctrl_data); | 372 | return mtk_pctrl_init(pdev, &mt8173_pinctrl_data, NULL); |
428 | } | 373 | } |
429 | 374 | ||
430 | static const struct of_device_id mt8173_pctrl_match[] = { | 375 | static const struct of_device_id mt8173_pctrl_match[] = { |
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c index 474812e2b0cb..c4fc77aa766e 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c | |||
@@ -107,28 +107,38 @@ static void mtk_gpio_set(struct gpio_chip *chip, unsigned offset, int value) | |||
107 | regmap_write(mtk_get_regmap(pctl, offset), reg_addr, bit); | 107 | regmap_write(mtk_get_regmap(pctl, offset), reg_addr, bit); |
108 | } | 108 | } |
109 | 109 | ||
110 | static void mtk_pconf_set_ies_smt(struct mtk_pinctrl *pctl, unsigned pin, | 110 | static int mtk_pconf_set_ies_smt(struct mtk_pinctrl *pctl, unsigned pin, |
111 | int value, enum pin_config_param param) | 111 | int value, enum pin_config_param arg) |
112 | { | 112 | { |
113 | unsigned int reg_addr, offset; | 113 | unsigned int reg_addr, offset; |
114 | unsigned int bit; | 114 | unsigned int bit; |
115 | int ret; | 115 | |
116 | /** | ||
117 | * Due to some soc are not support ies/smt config, add this special | ||
118 | * control to handle it. | ||
119 | */ | ||
120 | if (!pctl->devdata->spec_ies_smt_set && | ||
121 | pctl->devdata->ies_offset == MTK_PINCTRL_NOT_SUPPORT && | ||
122 | arg == PIN_CONFIG_INPUT_ENABLE) | ||
123 | return -EINVAL; | ||
124 | |||
125 | if (!pctl->devdata->spec_ies_smt_set && | ||
126 | pctl->devdata->smt_offset == MTK_PINCTRL_NOT_SUPPORT && | ||
127 | arg == PIN_CONFIG_INPUT_SCHMITT_ENABLE) | ||
128 | return -EINVAL; | ||
116 | 129 | ||
117 | /* | 130 | /* |
118 | * Due to some pins are irregular, their input enable and smt | 131 | * Due to some pins are irregular, their input enable and smt |
119 | * control register are discontinuous, but they are mapping together. | 132 | * control register are discontinuous, so we need this special handle. |
120 | * So we need this special handle. | ||
121 | */ | 133 | */ |
122 | if (pctl->devdata->spec_ies_smt_set) { | 134 | if (pctl->devdata->spec_ies_smt_set) { |
123 | ret = pctl->devdata->spec_ies_smt_set(mtk_get_regmap(pctl, pin), | 135 | return pctl->devdata->spec_ies_smt_set(mtk_get_regmap(pctl, pin), |
124 | pin, pctl->devdata->port_align, value); | 136 | pin, pctl->devdata->port_align, value, arg); |
125 | if (!ret) | ||
126 | return; | ||
127 | } | 137 | } |
128 | 138 | ||
129 | bit = BIT(pin & 0xf); | 139 | bit = BIT(pin & 0xf); |
130 | 140 | ||
131 | if (param == PIN_CONFIG_INPUT_ENABLE) | 141 | if (arg == PIN_CONFIG_INPUT_ENABLE) |
132 | offset = pctl->devdata->ies_offset; | 142 | offset = pctl->devdata->ies_offset; |
133 | else | 143 | else |
134 | offset = pctl->devdata->smt_offset; | 144 | offset = pctl->devdata->smt_offset; |
@@ -139,6 +149,33 @@ static void mtk_pconf_set_ies_smt(struct mtk_pinctrl *pctl, unsigned pin, | |||
139 | reg_addr = CLR_ADDR(mtk_get_port(pctl, pin) + offset, pctl); | 149 | reg_addr = CLR_ADDR(mtk_get_port(pctl, pin) + offset, pctl); |
140 | 150 | ||
141 | regmap_write(mtk_get_regmap(pctl, pin), reg_addr, bit); | 151 | regmap_write(mtk_get_regmap(pctl, pin), reg_addr, bit); |
152 | return 0; | ||
153 | } | ||
154 | |||
155 | int mtk_pconf_spec_set_ies_smt_range(struct regmap *regmap, | ||
156 | const struct mtk_pin_ies_smt_set *ies_smt_infos, unsigned int info_num, | ||
157 | unsigned int pin, unsigned char align, int value) | ||
158 | { | ||
159 | unsigned int i, reg_addr, bit; | ||
160 | |||
161 | for (i = 0; i < info_num; i++) { | ||
162 | if (pin >= ies_smt_infos[i].start && | ||
163 | pin <= ies_smt_infos[i].end) { | ||
164 | break; | ||
165 | } | ||
166 | } | ||
167 | |||
168 | if (i == info_num) | ||
169 | return -EINVAL; | ||
170 | |||
171 | if (value) | ||
172 | reg_addr = ies_smt_infos[i].offset + align; | ||
173 | else | ||
174 | reg_addr = ies_smt_infos[i].offset + (align << 1); | ||
175 | |||
176 | bit = BIT(ies_smt_infos[i].bit); | ||
177 | regmap_write(regmap, reg_addr, bit); | ||
178 | return 0; | ||
142 | } | 179 | } |
143 | 180 | ||
144 | static const struct mtk_pin_drv_grp *mtk_find_pin_drv_grp_by_pin( | 181 | static const struct mtk_pin_drv_grp *mtk_find_pin_drv_grp_by_pin( |
@@ -186,6 +223,66 @@ static int mtk_pconf_set_driving(struct mtk_pinctrl *pctl, | |||
186 | return -EINVAL; | 223 | return -EINVAL; |
187 | } | 224 | } |
188 | 225 | ||
226 | int mtk_pctrl_spec_pull_set_samereg(struct regmap *regmap, | ||
227 | const struct mtk_pin_spec_pupd_set_samereg *pupd_infos, | ||
228 | unsigned int info_num, unsigned int pin, | ||
229 | unsigned char align, bool isup, unsigned int r1r0) | ||
230 | { | ||
231 | unsigned int i; | ||
232 | unsigned int reg_pupd, reg_set, reg_rst; | ||
233 | unsigned int bit_pupd, bit_r0, bit_r1; | ||
234 | const struct mtk_pin_spec_pupd_set_samereg *spec_pupd_pin; | ||
235 | bool find = false; | ||
236 | |||
237 | for (i = 0; i < info_num; i++) { | ||
238 | if (pin == pupd_infos[i].pin) { | ||
239 | find = true; | ||
240 | break; | ||
241 | } | ||
242 | } | ||
243 | |||
244 | if (!find) | ||
245 | return -EINVAL; | ||
246 | |||
247 | spec_pupd_pin = pupd_infos + i; | ||
248 | reg_set = spec_pupd_pin->offset + align; | ||
249 | reg_rst = spec_pupd_pin->offset + (align << 1); | ||
250 | |||
251 | if (isup) | ||
252 | reg_pupd = reg_rst; | ||
253 | else | ||
254 | reg_pupd = reg_set; | ||
255 | |||
256 | bit_pupd = BIT(spec_pupd_pin->pupd_bit); | ||
257 | regmap_write(regmap, reg_pupd, bit_pupd); | ||
258 | |||
259 | bit_r0 = BIT(spec_pupd_pin->r0_bit); | ||
260 | bit_r1 = BIT(spec_pupd_pin->r1_bit); | ||
261 | |||
262 | switch (r1r0) { | ||
263 | case MTK_PUPD_SET_R1R0_00: | ||
264 | regmap_write(regmap, reg_rst, bit_r0); | ||
265 | regmap_write(regmap, reg_rst, bit_r1); | ||
266 | break; | ||
267 | case MTK_PUPD_SET_R1R0_01: | ||
268 | regmap_write(regmap, reg_set, bit_r0); | ||
269 | regmap_write(regmap, reg_rst, bit_r1); | ||
270 | break; | ||
271 | case MTK_PUPD_SET_R1R0_10: | ||
272 | regmap_write(regmap, reg_rst, bit_r0); | ||
273 | regmap_write(regmap, reg_set, bit_r1); | ||
274 | break; | ||
275 | case MTK_PUPD_SET_R1R0_11: | ||
276 | regmap_write(regmap, reg_set, bit_r0); | ||
277 | regmap_write(regmap, reg_set, bit_r1); | ||
278 | break; | ||
279 | default: | ||
280 | return -EINVAL; | ||
281 | } | ||
282 | |||
283 | return 0; | ||
284 | } | ||
285 | |||
189 | static int mtk_pconf_set_pull_select(struct mtk_pinctrl *pctl, | 286 | static int mtk_pconf_set_pull_select(struct mtk_pinctrl *pctl, |
190 | unsigned int pin, bool enable, bool isup, unsigned int arg) | 287 | unsigned int pin, bool enable, bool isup, unsigned int arg) |
191 | { | 288 | { |
@@ -235,36 +332,37 @@ static int mtk_pconf_parse_conf(struct pinctrl_dev *pctldev, | |||
235 | unsigned int pin, enum pin_config_param param, | 332 | unsigned int pin, enum pin_config_param param, |
236 | enum pin_config_param arg) | 333 | enum pin_config_param arg) |
237 | { | 334 | { |
335 | int ret = 0; | ||
238 | struct mtk_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | 336 | struct mtk_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); |
239 | 337 | ||
240 | switch (param) { | 338 | switch (param) { |
241 | case PIN_CONFIG_BIAS_DISABLE: | 339 | case PIN_CONFIG_BIAS_DISABLE: |
242 | mtk_pconf_set_pull_select(pctl, pin, false, false, arg); | 340 | ret = mtk_pconf_set_pull_select(pctl, pin, false, false, arg); |
243 | break; | 341 | break; |
244 | case PIN_CONFIG_BIAS_PULL_UP: | 342 | case PIN_CONFIG_BIAS_PULL_UP: |
245 | mtk_pconf_set_pull_select(pctl, pin, true, true, arg); | 343 | ret = mtk_pconf_set_pull_select(pctl, pin, true, true, arg); |
246 | break; | 344 | break; |
247 | case PIN_CONFIG_BIAS_PULL_DOWN: | 345 | case PIN_CONFIG_BIAS_PULL_DOWN: |
248 | mtk_pconf_set_pull_select(pctl, pin, true, false, arg); | 346 | ret = mtk_pconf_set_pull_select(pctl, pin, true, false, arg); |
249 | break; | 347 | break; |
250 | case PIN_CONFIG_INPUT_ENABLE: | 348 | case PIN_CONFIG_INPUT_ENABLE: |
251 | mtk_pconf_set_ies_smt(pctl, pin, arg, param); | 349 | ret = mtk_pconf_set_ies_smt(pctl, pin, arg, param); |
252 | break; | 350 | break; |
253 | case PIN_CONFIG_OUTPUT: | 351 | case PIN_CONFIG_OUTPUT: |
254 | mtk_gpio_set(pctl->chip, pin, arg); | 352 | mtk_gpio_set(pctl->chip, pin, arg); |
255 | mtk_pmx_gpio_set_direction(pctldev, NULL, pin, false); | 353 | ret = mtk_pmx_gpio_set_direction(pctldev, NULL, pin, false); |
256 | break; | 354 | break; |
257 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: | 355 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: |
258 | mtk_pconf_set_ies_smt(pctl, pin, arg, param); | 356 | ret = mtk_pconf_set_ies_smt(pctl, pin, arg, param); |
259 | break; | 357 | break; |
260 | case PIN_CONFIG_DRIVE_STRENGTH: | 358 | case PIN_CONFIG_DRIVE_STRENGTH: |
261 | mtk_pconf_set_driving(pctl, pin, arg); | 359 | ret = mtk_pconf_set_driving(pctl, pin, arg); |
262 | break; | 360 | break; |
263 | default: | 361 | default: |
264 | return -EINVAL; | 362 | ret = -EINVAL; |
265 | } | 363 | } |
266 | 364 | ||
267 | return 0; | 365 | return ret; |
268 | } | 366 | } |
269 | 367 | ||
270 | static int mtk_pconf_group_get(struct pinctrl_dev *pctldev, | 368 | static int mtk_pconf_group_get(struct pinctrl_dev *pctldev, |
@@ -283,12 +381,14 @@ static int mtk_pconf_group_set(struct pinctrl_dev *pctldev, unsigned group, | |||
283 | { | 381 | { |
284 | struct mtk_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | 382 | struct mtk_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); |
285 | struct mtk_pinctrl_group *g = &pctl->groups[group]; | 383 | struct mtk_pinctrl_group *g = &pctl->groups[group]; |
286 | int i; | 384 | int i, ret; |
287 | 385 | ||
288 | for (i = 0; i < num_configs; i++) { | 386 | for (i = 0; i < num_configs; i++) { |
289 | mtk_pconf_parse_conf(pctldev, g->pin, | 387 | ret = mtk_pconf_parse_conf(pctldev, g->pin, |
290 | pinconf_to_config_param(configs[i]), | 388 | pinconf_to_config_param(configs[i]), |
291 | pinconf_to_config_argument(configs[i])); | 389 | pinconf_to_config_argument(configs[i])); |
390 | if (ret < 0) | ||
391 | return ret; | ||
292 | 392 | ||
293 | g->config = configs[i]; | 393 | g->config = configs[i]; |
294 | } | 394 | } |
@@ -1109,7 +1209,8 @@ static struct pinctrl_desc mtk_pctrl_desc = { | |||
1109 | }; | 1209 | }; |
1110 | 1210 | ||
1111 | int mtk_pctrl_init(struct platform_device *pdev, | 1211 | int mtk_pctrl_init(struct platform_device *pdev, |
1112 | const struct mtk_pinctrl_devdata *data) | 1212 | const struct mtk_pinctrl_devdata *data, |
1213 | struct regmap *regmap) | ||
1113 | { | 1214 | { |
1114 | struct pinctrl_pin_desc *pins; | 1215 | struct pinctrl_pin_desc *pins; |
1115 | struct mtk_pinctrl *pctl; | 1216 | struct mtk_pinctrl *pctl; |
@@ -1135,6 +1236,11 @@ int mtk_pctrl_init(struct platform_device *pdev, | |||
1135 | pctl->regmap1 = syscon_node_to_regmap(node); | 1236 | pctl->regmap1 = syscon_node_to_regmap(node); |
1136 | if (IS_ERR(pctl->regmap1)) | 1237 | if (IS_ERR(pctl->regmap1)) |
1137 | return PTR_ERR(pctl->regmap1); | 1238 | return PTR_ERR(pctl->regmap1); |
1239 | } else if (regmap) { | ||
1240 | pctl->regmap1 = regmap; | ||
1241 | } else { | ||
1242 | dev_err(&pdev->dev, "Pinctrl node has not register regmap.\n"); | ||
1243 | return -EINVAL; | ||
1138 | } | 1244 | } |
1139 | 1245 | ||
1140 | /* Only 8135 has two base addr, other SoCs have only one. */ | 1246 | /* Only 8135 has two base addr, other SoCs have only one. */ |
@@ -1165,9 +1271,9 @@ int mtk_pctrl_init(struct platform_device *pdev, | |||
1165 | mtk_pctrl_desc.npins = pctl->devdata->npins; | 1271 | mtk_pctrl_desc.npins = pctl->devdata->npins; |
1166 | pctl->dev = &pdev->dev; | 1272 | pctl->dev = &pdev->dev; |
1167 | pctl->pctl_dev = pinctrl_register(&mtk_pctrl_desc, &pdev->dev, pctl); | 1273 | pctl->pctl_dev = pinctrl_register(&mtk_pctrl_desc, &pdev->dev, pctl); |
1168 | if (!pctl->pctl_dev) { | 1274 | if (IS_ERR(pctl->pctl_dev)) { |
1169 | dev_err(&pdev->dev, "couldn't register pinctrl driver\n"); | 1275 | dev_err(&pdev->dev, "couldn't register pinctrl driver\n"); |
1170 | return -EINVAL; | 1276 | return PTR_ERR(pctl->pctl_dev); |
1171 | } | 1277 | } |
1172 | 1278 | ||
1173 | pctl->chip = devm_kzalloc(&pdev->dev, sizeof(*pctl->chip), GFP_KERNEL); | 1279 | pctl->chip = devm_kzalloc(&pdev->dev, sizeof(*pctl->chip), GFP_KERNEL); |
@@ -1176,11 +1282,11 @@ int mtk_pctrl_init(struct platform_device *pdev, | |||
1176 | goto pctrl_error; | 1282 | goto pctrl_error; |
1177 | } | 1283 | } |
1178 | 1284 | ||
1179 | pctl->chip = &mtk_gpio_chip; | 1285 | *pctl->chip = mtk_gpio_chip; |
1180 | pctl->chip->ngpio = pctl->devdata->npins; | 1286 | pctl->chip->ngpio = pctl->devdata->npins; |
1181 | pctl->chip->label = dev_name(&pdev->dev); | 1287 | pctl->chip->label = dev_name(&pdev->dev); |
1182 | pctl->chip->dev = &pdev->dev; | 1288 | pctl->chip->dev = &pdev->dev; |
1183 | pctl->chip->base = 0; | 1289 | pctl->chip->base = -1; |
1184 | 1290 | ||
1185 | ret = gpiochip_add(pctl->chip); | 1291 | ret = gpiochip_add(pctl->chip); |
1186 | if (ret) { | 1292 | if (ret) { |
@@ -1196,6 +1302,9 @@ int mtk_pctrl_init(struct platform_device *pdev, | |||
1196 | goto chip_error; | 1302 | goto chip_error; |
1197 | } | 1303 | } |
1198 | 1304 | ||
1305 | if (!of_property_read_bool(np, "interrupt-controller")) | ||
1306 | return 0; | ||
1307 | |||
1199 | /* Get EINT register base from dts. */ | 1308 | /* Get EINT register base from dts. */ |
1200 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1309 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1201 | if (!res) { | 1310 | if (!res) { |
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h b/drivers/pinctrl/mediatek/pinctrl-mtk-common.h index 375771db9bd0..30213e514c2f 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.h | |||
@@ -17,16 +17,17 @@ | |||
17 | 17 | ||
18 | #include <linux/pinctrl/pinctrl.h> | 18 | #include <linux/pinctrl/pinctrl.h> |
19 | #include <linux/regmap.h> | 19 | #include <linux/regmap.h> |
20 | #include <linux/pinctrl/pinconf-generic.h> | ||
20 | 21 | ||
21 | #define NO_EINT_SUPPORT 255 | 22 | #define NO_EINT_SUPPORT 255 |
22 | #define MTK_CHIP_TYPE_BASE 0 | ||
23 | #define MTK_CHIP_TYPE_PMIC 1 | ||
24 | #define MT_EDGE_SENSITIVE 0 | 23 | #define MT_EDGE_SENSITIVE 0 |
25 | #define MT_LEVEL_SENSITIVE 1 | 24 | #define MT_LEVEL_SENSITIVE 1 |
26 | #define EINT_DBNC_SET_DBNC_BITS 4 | 25 | #define EINT_DBNC_SET_DBNC_BITS 4 |
27 | #define EINT_DBNC_RST_BIT (0x1 << 1) | 26 | #define EINT_DBNC_RST_BIT (0x1 << 1) |
28 | #define EINT_DBNC_SET_EN (0x1 << 0) | 27 | #define EINT_DBNC_SET_EN (0x1 << 0) |
29 | 28 | ||
29 | #define MTK_PINCTRL_NOT_SUPPORT (0xffff) | ||
30 | |||
30 | struct mtk_desc_function { | 31 | struct mtk_desc_function { |
31 | const char *name; | 32 | const char *name; |
32 | unsigned char muxval; | 33 | unsigned char muxval; |
@@ -39,7 +40,6 @@ struct mtk_desc_eint { | |||
39 | 40 | ||
40 | struct mtk_desc_pin { | 41 | struct mtk_desc_pin { |
41 | struct pinctrl_pin_desc pin; | 42 | struct pinctrl_pin_desc pin; |
42 | const char *chip; | ||
43 | const struct mtk_desc_eint eint; | 43 | const struct mtk_desc_eint eint; |
44 | const struct mtk_desc_function *functions; | 44 | const struct mtk_desc_function *functions; |
45 | }; | 45 | }; |
@@ -47,7 +47,6 @@ struct mtk_desc_pin { | |||
47 | #define MTK_PIN(_pin, _pad, _chip, _eint, ...) \ | 47 | #define MTK_PIN(_pin, _pad, _chip, _eint, ...) \ |
48 | { \ | 48 | { \ |
49 | .pin = _pin, \ | 49 | .pin = _pin, \ |
50 | .chip = _chip, \ | ||
51 | .eint = _eint, \ | 50 | .eint = _eint, \ |
52 | .functions = (struct mtk_desc_function[]){ \ | 51 | .functions = (struct mtk_desc_function[]){ \ |
53 | __VA_ARGS__, { } }, \ | 52 | __VA_ARGS__, { } }, \ |
@@ -107,8 +106,8 @@ struct mtk_drv_group_desc { | |||
107 | * @grp: The group for this pin belongs to. | 106 | * @grp: The group for this pin belongs to. |
108 | */ | 107 | */ |
109 | struct mtk_pin_drv_grp { | 108 | struct mtk_pin_drv_grp { |
110 | unsigned int pin; | 109 | unsigned short pin; |
111 | unsigned int offset; | 110 | unsigned short offset; |
112 | unsigned char bit; | 111 | unsigned char bit; |
113 | unsigned char grp; | 112 | unsigned char grp; |
114 | }; | 113 | }; |
@@ -121,6 +120,54 @@ struct mtk_pin_drv_grp { | |||
121 | .grp = _grp, \ | 120 | .grp = _grp, \ |
122 | } | 121 | } |
123 | 122 | ||
123 | /** | ||
124 | * struct mtk_pin_spec_pupd_set_samereg | ||
125 | * - For special pins' pull up/down setting which resides in same register | ||
126 | * @pin: The pin number. | ||
127 | * @offset: The offset of special pull up/down setting register. | ||
128 | * @pupd_bit: The pull up/down bit in this register. | ||
129 | * @r0_bit: The r0 bit of pull resistor. | ||
130 | * @r1_bit: The r1 bit of pull resistor. | ||
131 | */ | ||
132 | struct mtk_pin_spec_pupd_set_samereg { | ||
133 | unsigned short pin; | ||
134 | unsigned short offset; | ||
135 | unsigned char pupd_bit; | ||
136 | unsigned char r1_bit; | ||
137 | unsigned char r0_bit; | ||
138 | }; | ||
139 | |||
140 | #define MTK_PIN_PUPD_SPEC_SR(_pin, _offset, _pupd, _r1, _r0) \ | ||
141 | { \ | ||
142 | .pin = _pin, \ | ||
143 | .offset = _offset, \ | ||
144 | .pupd_bit = _pupd, \ | ||
145 | .r1_bit = _r1, \ | ||
146 | .r0_bit = _r0, \ | ||
147 | } | ||
148 | |||
149 | /** | ||
150 | * struct mtk_pin_ies_set - For special pins' ies and smt setting. | ||
151 | * @start: The start pin number of those special pins. | ||
152 | * @end: The end pin number of those special pins. | ||
153 | * @offset: The offset of special setting register. | ||
154 | * @bit: The bit of special setting register. | ||
155 | */ | ||
156 | struct mtk_pin_ies_smt_set { | ||
157 | unsigned short start; | ||
158 | unsigned short end; | ||
159 | unsigned short offset; | ||
160 | unsigned char bit; | ||
161 | }; | ||
162 | |||
163 | #define MTK_PIN_IES_SMT_SPEC(_start, _end, _offset, _bit) \ | ||
164 | { \ | ||
165 | .start = _start, \ | ||
166 | .end = _end, \ | ||
167 | .bit = _bit, \ | ||
168 | .offset = _offset, \ | ||
169 | } | ||
170 | |||
124 | struct mtk_eint_offsets { | 171 | struct mtk_eint_offsets { |
125 | const char *name; | 172 | const char *name; |
126 | unsigned int stat; | 173 | unsigned int stat; |
@@ -186,14 +233,13 @@ struct mtk_pinctrl_devdata { | |||
186 | int (*spec_pull_set)(struct regmap *reg, unsigned int pin, | 233 | int (*spec_pull_set)(struct regmap *reg, unsigned int pin, |
187 | unsigned char align, bool isup, unsigned int arg); | 234 | unsigned char align, bool isup, unsigned int arg); |
188 | int (*spec_ies_smt_set)(struct regmap *reg, unsigned int pin, | 235 | int (*spec_ies_smt_set)(struct regmap *reg, unsigned int pin, |
189 | unsigned char align, int value); | 236 | unsigned char align, int value, enum pin_config_param arg); |
190 | unsigned int dir_offset; | 237 | unsigned int dir_offset; |
191 | unsigned int ies_offset; | 238 | unsigned int ies_offset; |
192 | unsigned int smt_offset; | 239 | unsigned int smt_offset; |
193 | unsigned int pullen_offset; | 240 | unsigned int pullen_offset; |
194 | unsigned int pullsel_offset; | 241 | unsigned int pullsel_offset; |
195 | unsigned int drv_offset; | 242 | unsigned int drv_offset; |
196 | unsigned int invser_offset; | ||
197 | unsigned int dout_offset; | 243 | unsigned int dout_offset; |
198 | unsigned int din_offset; | 244 | unsigned int din_offset; |
199 | unsigned int pinmux_offset; | 245 | unsigned int pinmux_offset; |
@@ -202,7 +248,6 @@ struct mtk_pinctrl_devdata { | |||
202 | unsigned char port_shf; | 248 | unsigned char port_shf; |
203 | unsigned char port_mask; | 249 | unsigned char port_mask; |
204 | unsigned char port_align; | 250 | unsigned char port_align; |
205 | unsigned char chip_type; | ||
206 | struct mtk_eint_offsets eint_offsets; | 251 | struct mtk_eint_offsets eint_offsets; |
207 | unsigned int ap_num; | 252 | unsigned int ap_num; |
208 | unsigned int db_cnt; | 253 | unsigned int db_cnt; |
@@ -224,6 +269,16 @@ struct mtk_pinctrl { | |||
224 | }; | 269 | }; |
225 | 270 | ||
226 | int mtk_pctrl_init(struct platform_device *pdev, | 271 | int mtk_pctrl_init(struct platform_device *pdev, |
227 | const struct mtk_pinctrl_devdata *data); | 272 | const struct mtk_pinctrl_devdata *data, |
273 | struct regmap *regmap); | ||
274 | |||
275 | int mtk_pctrl_spec_pull_set_samereg(struct regmap *regmap, | ||
276 | const struct mtk_pin_spec_pupd_set_samereg *pupd_infos, | ||
277 | unsigned int info_num, unsigned int pin, | ||
278 | unsigned char align, bool isup, unsigned int r1r0); | ||
279 | |||
280 | int mtk_pconf_spec_set_ies_smt_range(struct regmap *regmap, | ||
281 | const struct mtk_pin_ies_smt_set *ies_smt_infos, unsigned int info_num, | ||
282 | unsigned int pin, unsigned char align, int value); | ||
228 | 283 | ||
229 | #endif /* __PINCTRL_MTK_COMMON_H */ | 284 | #endif /* __PINCTRL_MTK_COMMON_H */ |
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt6397.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6397.h new file mode 100644 index 000000000000..4eb98ddb40a4 --- /dev/null +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt6397.h | |||
@@ -0,0 +1,424 @@ | |||
1 | #ifndef __PINCTRL_MTK_MT6397_H | ||
2 | #define __PINCTRL_MTK_MT6397_H | ||
3 | |||
4 | #include <linux/pinctrl/pinctrl.h> | ||
5 | #include "pinctrl-mtk-common.h" | ||
6 | |||
7 | static const struct mtk_desc_pin mtk_pins_mt6397[] = { | ||
8 | MTK_PIN( | ||
9 | PINCTRL_PIN(0, "INT"), | ||
10 | "N2", "mt6397", | ||
11 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
12 | MTK_FUNCTION(0, "GPIO0"), | ||
13 | MTK_FUNCTION(1, "INT") | ||
14 | ), | ||
15 | MTK_PIN( | ||
16 | PINCTRL_PIN(1, "SRCVOLTEN"), | ||
17 | "M4", "mt6397", | ||
18 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
19 | MTK_FUNCTION(0, "GPIO1"), | ||
20 | MTK_FUNCTION(1, "SRCVOLTEN"), | ||
21 | MTK_FUNCTION(6, "TEST_CK1") | ||
22 | ), | ||
23 | MTK_PIN( | ||
24 | PINCTRL_PIN(2, "SRCLKEN_PERI"), | ||
25 | "M2", "mt6397", | ||
26 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
27 | MTK_FUNCTION(0, "GPIO2"), | ||
28 | MTK_FUNCTION(1, "SRCLKEN_PERI"), | ||
29 | MTK_FUNCTION(6, "TEST_CK2") | ||
30 | ), | ||
31 | MTK_PIN( | ||
32 | PINCTRL_PIN(3, "RTC_32K1V8"), | ||
33 | "K3", "mt6397", | ||
34 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
35 | MTK_FUNCTION(0, "GPIO3"), | ||
36 | MTK_FUNCTION(1, "RTC_32K1V8"), | ||
37 | MTK_FUNCTION(6, "TEST_CK3") | ||
38 | ), | ||
39 | MTK_PIN( | ||
40 | PINCTRL_PIN(4, "WRAP_EVENT"), | ||
41 | "J2", "mt6397", | ||
42 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
43 | MTK_FUNCTION(0, "GPIO4"), | ||
44 | MTK_FUNCTION(1, "WRAP_EVENT") | ||
45 | ), | ||
46 | MTK_PIN( | ||
47 | PINCTRL_PIN(5, "SPI_CLK"), | ||
48 | "L4", "mt6397", | ||
49 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
50 | MTK_FUNCTION(0, "GPIO5"), | ||
51 | MTK_FUNCTION(1, "SPI_CLK") | ||
52 | ), | ||
53 | MTK_PIN( | ||
54 | PINCTRL_PIN(6, "SPI_CSN"), | ||
55 | "J3", "mt6397", | ||
56 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
57 | MTK_FUNCTION(0, "GPIO6"), | ||
58 | MTK_FUNCTION(1, "SPI_CSN") | ||
59 | ), | ||
60 | MTK_PIN( | ||
61 | PINCTRL_PIN(7, "SPI_MOSI"), | ||
62 | "J1", "mt6397", | ||
63 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
64 | MTK_FUNCTION(0, "GPIO7"), | ||
65 | MTK_FUNCTION(1, "SPI_MOSI") | ||
66 | ), | ||
67 | MTK_PIN( | ||
68 | PINCTRL_PIN(8, "SPI_MISO"), | ||
69 | "L3", "mt6397", | ||
70 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
71 | MTK_FUNCTION(0, "GPIO8"), | ||
72 | MTK_FUNCTION(1, "SPI_MISO") | ||
73 | ), | ||
74 | MTK_PIN( | ||
75 | PINCTRL_PIN(9, "AUD_CLK_MOSI"), | ||
76 | "H2", "mt6397", | ||
77 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
78 | MTK_FUNCTION(0, "GPIO9"), | ||
79 | MTK_FUNCTION(1, "AUD_CLK"), | ||
80 | MTK_FUNCTION(6, "TEST_IN0"), | ||
81 | MTK_FUNCTION(7, "TEST_OUT0") | ||
82 | ), | ||
83 | MTK_PIN( | ||
84 | PINCTRL_PIN(10, "AUD_DAT_MISO"), | ||
85 | "H3", "mt6397", | ||
86 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
87 | MTK_FUNCTION(0, "GPIO10"), | ||
88 | MTK_FUNCTION(1, "AUD_MISO"), | ||
89 | MTK_FUNCTION(6, "TEST_IN1"), | ||
90 | MTK_FUNCTION(7, "TEST_OUT1") | ||
91 | ), | ||
92 | MTK_PIN( | ||
93 | PINCTRL_PIN(11, "AUD_DAT_MOSI"), | ||
94 | "H1", "mt6397", | ||
95 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
96 | MTK_FUNCTION(0, "GPIO11"), | ||
97 | MTK_FUNCTION(1, "AUD_MOSI"), | ||
98 | MTK_FUNCTION(6, "TEST_IN2"), | ||
99 | MTK_FUNCTION(7, "TEST_OUT2") | ||
100 | ), | ||
101 | MTK_PIN( | ||
102 | PINCTRL_PIN(12, "COL0"), | ||
103 | "F3", "mt6397", | ||
104 | MTK_EINT_FUNCTION(2, 10), | ||
105 | MTK_FUNCTION(0, "GPIO12"), | ||
106 | MTK_FUNCTION(1, "COL0_USBDL"), | ||
107 | MTK_FUNCTION(2, "EINT10_1X"), | ||
108 | MTK_FUNCTION(3, "PWM1_3X"), | ||
109 | MTK_FUNCTION(6, "TEST_IN3"), | ||
110 | MTK_FUNCTION(7, "TEST_OUT3") | ||
111 | ), | ||
112 | MTK_PIN( | ||
113 | PINCTRL_PIN(13, "COL1"), | ||
114 | "G8", "mt6397", | ||
115 | MTK_EINT_FUNCTION(2, 11), | ||
116 | MTK_FUNCTION(0, "GPIO13"), | ||
117 | MTK_FUNCTION(1, "COL1"), | ||
118 | MTK_FUNCTION(2, "EINT11_1X"), | ||
119 | MTK_FUNCTION(3, "SCL0_2X"), | ||
120 | MTK_FUNCTION(6, "TEST_IN4"), | ||
121 | MTK_FUNCTION(7, "TEST_OUT4") | ||
122 | ), | ||
123 | MTK_PIN( | ||
124 | PINCTRL_PIN(14, "COL2"), | ||
125 | "H4", "mt6397", | ||
126 | MTK_EINT_FUNCTION(2, 12), | ||
127 | MTK_FUNCTION(0, "GPIO14"), | ||
128 | MTK_FUNCTION(1, "COL2"), | ||
129 | MTK_FUNCTION(2, "EINT12_1X"), | ||
130 | MTK_FUNCTION(3, "SDA0_2X"), | ||
131 | MTK_FUNCTION(6, "TEST_IN5"), | ||
132 | MTK_FUNCTION(7, "TEST_OUT5") | ||
133 | ), | ||
134 | MTK_PIN( | ||
135 | PINCTRL_PIN(15, "COL3"), | ||
136 | "G2", "mt6397", | ||
137 | MTK_EINT_FUNCTION(2, 13), | ||
138 | MTK_FUNCTION(0, "GPIO15"), | ||
139 | MTK_FUNCTION(1, "COL3"), | ||
140 | MTK_FUNCTION(2, "EINT13_1X"), | ||
141 | MTK_FUNCTION(3, "SCL1_2X"), | ||
142 | MTK_FUNCTION(6, "TEST_IN6"), | ||
143 | MTK_FUNCTION(7, "TEST_OUT6") | ||
144 | ), | ||
145 | MTK_PIN( | ||
146 | PINCTRL_PIN(16, "COL4"), | ||
147 | "F2", "mt6397", | ||
148 | MTK_EINT_FUNCTION(2, 14), | ||
149 | MTK_FUNCTION(0, "GPIO16"), | ||
150 | MTK_FUNCTION(1, "COL4"), | ||
151 | MTK_FUNCTION(2, "EINT14_1X"), | ||
152 | MTK_FUNCTION(3, "SDA1_2X"), | ||
153 | MTK_FUNCTION(6, "TEST_IN7"), | ||
154 | MTK_FUNCTION(7, "TEST_OUT7") | ||
155 | ), | ||
156 | MTK_PIN( | ||
157 | PINCTRL_PIN(17, "COL5"), | ||
158 | "G7", "mt6397", | ||
159 | MTK_EINT_FUNCTION(2, 15), | ||
160 | MTK_FUNCTION(0, "GPIO17"), | ||
161 | MTK_FUNCTION(1, "COL5"), | ||
162 | MTK_FUNCTION(2, "EINT15_1X"), | ||
163 | MTK_FUNCTION(3, "SCL2_2X"), | ||
164 | MTK_FUNCTION(6, "TEST_IN8"), | ||
165 | MTK_FUNCTION(7, "TEST_OUT8") | ||
166 | ), | ||
167 | MTK_PIN( | ||
168 | PINCTRL_PIN(18, "COL6"), | ||
169 | "J6", "mt6397", | ||
170 | MTK_EINT_FUNCTION(2, 16), | ||
171 | MTK_FUNCTION(0, "GPIO18"), | ||
172 | MTK_FUNCTION(1, "COL6"), | ||
173 | MTK_FUNCTION(2, "EINT16_1X"), | ||
174 | MTK_FUNCTION(3, "SDA2_2X"), | ||
175 | MTK_FUNCTION(4, "GPIO32K_0"), | ||
176 | MTK_FUNCTION(5, "GPIO26M_0"), | ||
177 | MTK_FUNCTION(6, "TEST_IN9"), | ||
178 | MTK_FUNCTION(7, "TEST_OUT9") | ||
179 | ), | ||
180 | MTK_PIN( | ||
181 | PINCTRL_PIN(19, "COL7"), | ||
182 | "J5", "mt6397", | ||
183 | MTK_EINT_FUNCTION(2, 17), | ||
184 | MTK_FUNCTION(0, "GPIO19"), | ||
185 | MTK_FUNCTION(1, "COL7"), | ||
186 | MTK_FUNCTION(2, "EINT17_1X"), | ||
187 | MTK_FUNCTION(3, "PWM2_3X"), | ||
188 | MTK_FUNCTION(4, "GPIO32K_1"), | ||
189 | MTK_FUNCTION(5, "GPIO26M_1"), | ||
190 | MTK_FUNCTION(6, "TEST_IN10"), | ||
191 | MTK_FUNCTION(7, "TEST_OUT10") | ||
192 | ), | ||
193 | MTK_PIN( | ||
194 | PINCTRL_PIN(20, "ROW0"), | ||
195 | "L7", "mt6397", | ||
196 | MTK_EINT_FUNCTION(2, 18), | ||
197 | MTK_FUNCTION(0, "GPIO20"), | ||
198 | MTK_FUNCTION(1, "ROW0"), | ||
199 | MTK_FUNCTION(2, "EINT18_1X"), | ||
200 | MTK_FUNCTION(3, "SCL0_3X"), | ||
201 | MTK_FUNCTION(6, "TEST_IN11"), | ||
202 | MTK_FUNCTION(7, "TEST_OUT11") | ||
203 | ), | ||
204 | MTK_PIN( | ||
205 | PINCTRL_PIN(21, "ROW1"), | ||
206 | "P1", "mt6397", | ||
207 | MTK_EINT_FUNCTION(2, 19), | ||
208 | MTK_FUNCTION(0, "GPIO21"), | ||
209 | MTK_FUNCTION(1, "ROW1"), | ||
210 | MTK_FUNCTION(2, "EINT19_1X"), | ||
211 | MTK_FUNCTION(3, "SDA0_3X"), | ||
212 | MTK_FUNCTION(4, "AUD_TSTCK"), | ||
213 | MTK_FUNCTION(6, "TEST_IN12"), | ||
214 | MTK_FUNCTION(7, "TEST_OUT12") | ||
215 | ), | ||
216 | MTK_PIN( | ||
217 | PINCTRL_PIN(22, "ROW2"), | ||
218 | "J8", "mt6397", | ||
219 | MTK_EINT_FUNCTION(2, 20), | ||
220 | MTK_FUNCTION(0, "GPIO22"), | ||
221 | MTK_FUNCTION(1, "ROW2"), | ||
222 | MTK_FUNCTION(2, "EINT20_1X"), | ||
223 | MTK_FUNCTION(3, "SCL1_3X"), | ||
224 | MTK_FUNCTION(6, "TEST_IN13"), | ||
225 | MTK_FUNCTION(7, "TEST_OUT13") | ||
226 | ), | ||
227 | MTK_PIN( | ||
228 | PINCTRL_PIN(23, "ROW3"), | ||
229 | "J7", "mt6397", | ||
230 | MTK_EINT_FUNCTION(2, 21), | ||
231 | MTK_FUNCTION(0, "GPIO23"), | ||
232 | MTK_FUNCTION(1, "ROW3"), | ||
233 | MTK_FUNCTION(2, "EINT21_1X"), | ||
234 | MTK_FUNCTION(3, "SDA1_3X"), | ||
235 | MTK_FUNCTION(6, "TEST_IN14"), | ||
236 | MTK_FUNCTION(7, "TEST_OUT14") | ||
237 | ), | ||
238 | MTK_PIN( | ||
239 | PINCTRL_PIN(24, "ROW4"), | ||
240 | "L5", "mt6397", | ||
241 | MTK_EINT_FUNCTION(2, 22), | ||
242 | MTK_FUNCTION(0, "GPIO24"), | ||
243 | MTK_FUNCTION(1, "ROW4"), | ||
244 | MTK_FUNCTION(2, "EINT22_1X"), | ||
245 | MTK_FUNCTION(3, "SCL2_3X"), | ||
246 | MTK_FUNCTION(6, "TEST_IN15"), | ||
247 | MTK_FUNCTION(7, "TEST_OUT15") | ||
248 | ), | ||
249 | MTK_PIN( | ||
250 | PINCTRL_PIN(25, "ROW5"), | ||
251 | "N6", "mt6397", | ||
252 | MTK_EINT_FUNCTION(2, 23), | ||
253 | MTK_FUNCTION(0, "GPIO25"), | ||
254 | MTK_FUNCTION(1, "ROW5"), | ||
255 | MTK_FUNCTION(2, "EINT23_1X"), | ||
256 | MTK_FUNCTION(3, "SDA2_3X"), | ||
257 | MTK_FUNCTION(6, "TEST_IN16"), | ||
258 | MTK_FUNCTION(7, "TEST_OUT16") | ||
259 | ), | ||
260 | MTK_PIN( | ||
261 | PINCTRL_PIN(26, "ROW6"), | ||
262 | "L6", "mt6397", | ||
263 | MTK_EINT_FUNCTION(2, 24), | ||
264 | MTK_FUNCTION(0, "GPIO26"), | ||
265 | MTK_FUNCTION(1, "ROW6"), | ||
266 | MTK_FUNCTION(2, "EINT24_1X"), | ||
267 | MTK_FUNCTION(3, "PWM3_3X"), | ||
268 | MTK_FUNCTION(4, "GPIO32K_2"), | ||
269 | MTK_FUNCTION(5, "GPIO26M_2"), | ||
270 | MTK_FUNCTION(6, "TEST_IN17"), | ||
271 | MTK_FUNCTION(7, "TEST_OUT17") | ||
272 | ), | ||
273 | MTK_PIN( | ||
274 | PINCTRL_PIN(27, "ROW7"), | ||
275 | "P2", "mt6397", | ||
276 | MTK_EINT_FUNCTION(2, 3), | ||
277 | MTK_FUNCTION(0, "GPIO27"), | ||
278 | MTK_FUNCTION(1, "ROW7"), | ||
279 | MTK_FUNCTION(2, "EINT3_1X"), | ||
280 | MTK_FUNCTION(3, "CBUS"), | ||
281 | MTK_FUNCTION(4, "GPIO32K_3"), | ||
282 | MTK_FUNCTION(5, "GPIO26M_3"), | ||
283 | MTK_FUNCTION(6, "TEST_IN18"), | ||
284 | MTK_FUNCTION(7, "TEST_OUT18") | ||
285 | ), | ||
286 | MTK_PIN( | ||
287 | PINCTRL_PIN(28, "PWM1(VMSEL1)"), | ||
288 | "J4", "mt6397", | ||
289 | MTK_EINT_FUNCTION(2, 4), | ||
290 | MTK_FUNCTION(0, "GPIO28"), | ||
291 | MTK_FUNCTION(1, "PWM1"), | ||
292 | MTK_FUNCTION(2, "EINT4_1X"), | ||
293 | MTK_FUNCTION(4, "GPIO32K_4"), | ||
294 | MTK_FUNCTION(5, "GPIO26M_4"), | ||
295 | MTK_FUNCTION(6, "TEST_IN19"), | ||
296 | MTK_FUNCTION(7, "TEST_OUT19") | ||
297 | ), | ||
298 | MTK_PIN( | ||
299 | PINCTRL_PIN(29, "PWM2(VMSEL2)"), | ||
300 | "N5", "mt6397", | ||
301 | MTK_EINT_FUNCTION(2, 5), | ||
302 | MTK_FUNCTION(0, "GPIO29"), | ||
303 | MTK_FUNCTION(1, "PWM2"), | ||
304 | MTK_FUNCTION(2, "EINT5_1X"), | ||
305 | MTK_FUNCTION(4, "GPIO32K_5"), | ||
306 | MTK_FUNCTION(5, "GPIO26M_5"), | ||
307 | MTK_FUNCTION(6, "TEST_IN20"), | ||
308 | MTK_FUNCTION(7, "TEST_OUT20") | ||
309 | ), | ||
310 | MTK_PIN( | ||
311 | PINCTRL_PIN(30, "PWM3(PWM)"), | ||
312 | "R3", "mt6397", | ||
313 | MTK_EINT_FUNCTION(2, 6), | ||
314 | MTK_FUNCTION(0, "GPIO30"), | ||
315 | MTK_FUNCTION(1, "PWM3"), | ||
316 | MTK_FUNCTION(2, "EINT6_1X"), | ||
317 | MTK_FUNCTION(3, "COL0"), | ||
318 | MTK_FUNCTION(4, "GPIO32K_6"), | ||
319 | MTK_FUNCTION(5, "GPIO26M_6"), | ||
320 | MTK_FUNCTION(6, "TEST_IN21"), | ||
321 | MTK_FUNCTION(7, "TEST_OUT21") | ||
322 | ), | ||
323 | MTK_PIN( | ||
324 | PINCTRL_PIN(31, "SCL0"), | ||
325 | "N1", "mt6397", | ||
326 | MTK_EINT_FUNCTION(2, 7), | ||
327 | MTK_FUNCTION(0, "GPIO31"), | ||
328 | MTK_FUNCTION(1, "SCL0"), | ||
329 | MTK_FUNCTION(2, "EINT7_1X"), | ||
330 | MTK_FUNCTION(3, "PWM1_2X"), | ||
331 | MTK_FUNCTION(6, "TEST_IN22"), | ||
332 | MTK_FUNCTION(7, "TEST_OUT22") | ||
333 | ), | ||
334 | MTK_PIN( | ||
335 | PINCTRL_PIN(32, "SDA0"), | ||
336 | "N3", "mt6397", | ||
337 | MTK_EINT_FUNCTION(2, 8), | ||
338 | MTK_FUNCTION(0, "GPIO32"), | ||
339 | MTK_FUNCTION(1, "SDA0"), | ||
340 | MTK_FUNCTION(2, "EINT8_1X"), | ||
341 | MTK_FUNCTION(6, "TEST_IN23"), | ||
342 | MTK_FUNCTION(7, "TEST_OUT23") | ||
343 | ), | ||
344 | MTK_PIN( | ||
345 | PINCTRL_PIN(33, "SCL1"), | ||
346 | "T1", "mt6397", | ||
347 | MTK_EINT_FUNCTION(2, 9), | ||
348 | MTK_FUNCTION(0, "GPIO33"), | ||
349 | MTK_FUNCTION(1, "SCL1"), | ||
350 | MTK_FUNCTION(2, "EINT9_1X"), | ||
351 | MTK_FUNCTION(3, "PWM2_2X"), | ||
352 | MTK_FUNCTION(6, "TEST_IN24"), | ||
353 | MTK_FUNCTION(7, "TEST_OUT24") | ||
354 | ), | ||
355 | MTK_PIN( | ||
356 | PINCTRL_PIN(34, "SDA1"), | ||
357 | "T2", "mt6397", | ||
358 | MTK_EINT_FUNCTION(2, 0), | ||
359 | MTK_FUNCTION(0, "GPIO34"), | ||
360 | MTK_FUNCTION(1, "SDA1"), | ||
361 | MTK_FUNCTION(2, "EINT0_1X"), | ||
362 | MTK_FUNCTION(6, "TEST_IN25"), | ||
363 | MTK_FUNCTION(7, "TEST_OUT25") | ||
364 | ), | ||
365 | MTK_PIN( | ||
366 | PINCTRL_PIN(35, "SCL2"), | ||
367 | "T3", "mt6397", | ||
368 | MTK_EINT_FUNCTION(2, 1), | ||
369 | MTK_FUNCTION(0, "GPIO35"), | ||
370 | MTK_FUNCTION(1, "SCL2"), | ||
371 | MTK_FUNCTION(2, "EINT1_1X"), | ||
372 | MTK_FUNCTION(3, "PWM3_2X"), | ||
373 | MTK_FUNCTION(6, "TEST_IN26"), | ||
374 | MTK_FUNCTION(7, "TEST_OUT26") | ||
375 | ), | ||
376 | MTK_PIN( | ||
377 | PINCTRL_PIN(36, "SDA2"), | ||
378 | "U2", "mt6397", | ||
379 | MTK_EINT_FUNCTION(2, 2), | ||
380 | MTK_FUNCTION(0, "GPIO36"), | ||
381 | MTK_FUNCTION(1, "SDA2"), | ||
382 | MTK_FUNCTION(2, "EINT2_1X"), | ||
383 | MTK_FUNCTION(6, "TEST_IN27"), | ||
384 | MTK_FUNCTION(7, "TEST_OUT27") | ||
385 | ), | ||
386 | MTK_PIN( | ||
387 | PINCTRL_PIN(37, "HDMISD"), | ||
388 | "H6", "mt6397", | ||
389 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
390 | MTK_FUNCTION(0, "GPIO37"), | ||
391 | MTK_FUNCTION(1, "HDMISD"), | ||
392 | MTK_FUNCTION(6, "TEST_IN28"), | ||
393 | MTK_FUNCTION(7, "TEST_OUT28") | ||
394 | ), | ||
395 | MTK_PIN( | ||
396 | PINCTRL_PIN(38, "HDMISCK"), | ||
397 | "H5", "mt6397", | ||
398 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
399 | MTK_FUNCTION(0, "GPIO38"), | ||
400 | MTK_FUNCTION(1, "HDMISCK"), | ||
401 | MTK_FUNCTION(6, "TEST_IN29"), | ||
402 | MTK_FUNCTION(7, "TEST_OUT29") | ||
403 | ), | ||
404 | MTK_PIN( | ||
405 | PINCTRL_PIN(39, "HTPLG"), | ||
406 | "H7", "mt6397", | ||
407 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
408 | MTK_FUNCTION(0, "GPIO39"), | ||
409 | MTK_FUNCTION(1, "HTPLG"), | ||
410 | MTK_FUNCTION(6, "TEST_IN30"), | ||
411 | MTK_FUNCTION(7, "TEST_OUT30") | ||
412 | ), | ||
413 | MTK_PIN( | ||
414 | PINCTRL_PIN(40, "CEC"), | ||
415 | "J9", "mt6397", | ||
416 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
417 | MTK_FUNCTION(0, "GPIO40"), | ||
418 | MTK_FUNCTION(1, "CEC"), | ||
419 | MTK_FUNCTION(6, "TEST_IN31"), | ||
420 | MTK_FUNCTION(7, "TEST_OUT31") | ||
421 | ), | ||
422 | }; | ||
423 | |||
424 | #endif /* __PINCTRL_MTK_MT6397_H */ | ||
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-mt8127.h b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8127.h new file mode 100644 index 000000000000..212559c147f8 --- /dev/null +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-mt8127.h | |||
@@ -0,0 +1,1318 @@ | |||
1 | #ifndef __PINCTRL_MTK_MT8127_H | ||
2 | #define __PINCTRL_MTK_MT8127_H | ||
3 | |||
4 | #include <linux/pinctrl/pinctrl.h> | ||
5 | #include "pinctrl-mtk-common.h" | ||
6 | |||
7 | static const struct mtk_desc_pin mtk_pins_mt8127[] = { | ||
8 | MTK_PIN( | ||
9 | PINCTRL_PIN(0, "PWRAP_SPI0_MI"), | ||
10 | "P22", "mt8127", | ||
11 | MTK_EINT_FUNCTION(0, 22), | ||
12 | MTK_FUNCTION(0, "GPIO0"), | ||
13 | MTK_FUNCTION(1, "PWRAP_SPIDO"), | ||
14 | MTK_FUNCTION(2, "PWRAP_SPIDI") | ||
15 | ), | ||
16 | MTK_PIN( | ||
17 | PINCTRL_PIN(1, "PWRAP_SPI0_MO"), | ||
18 | "M22", "mt8127", | ||
19 | MTK_EINT_FUNCTION(0, 23), | ||
20 | MTK_FUNCTION(0, "GPIO1"), | ||
21 | MTK_FUNCTION(1, "PWRAP_SPIDI"), | ||
22 | MTK_FUNCTION(2, "PWRAP_SPIDO") | ||
23 | ), | ||
24 | MTK_PIN( | ||
25 | PINCTRL_PIN(2, "PWRAP_INT"), | ||
26 | "L23", "mt8127", | ||
27 | MTK_EINT_FUNCTION(0, 24), | ||
28 | MTK_FUNCTION(0, "GPIO2") | ||
29 | ), | ||
30 | MTK_PIN( | ||
31 | PINCTRL_PIN(3, "PWRAP_SPI0_CK"), | ||
32 | "N23", "mt8127", | ||
33 | MTK_EINT_FUNCTION(0, 25), | ||
34 | MTK_FUNCTION(0, "GPIO3"), | ||
35 | MTK_FUNCTION(1, "PWRAP_SPICK_I") | ||
36 | ), | ||
37 | MTK_PIN( | ||
38 | PINCTRL_PIN(4, "PWRAP_SPI0_CSN"), | ||
39 | "N22", "mt8127", | ||
40 | MTK_EINT_FUNCTION(0, 26), | ||
41 | MTK_FUNCTION(0, "GPIO4"), | ||
42 | MTK_FUNCTION(1, "PWRAP_SPICS_B_I") | ||
43 | ), | ||
44 | MTK_PIN( | ||
45 | PINCTRL_PIN(5, "PWRAP_SPI0_CK2"), | ||
46 | "L19", "mt8127", | ||
47 | MTK_EINT_FUNCTION(0, 27), | ||
48 | MTK_FUNCTION(0, "GPIO5"), | ||
49 | MTK_FUNCTION(1, "PWRAP_SPICK2_I"), | ||
50 | MTK_FUNCTION(2, "ANT_SEL1"), | ||
51 | MTK_FUNCTION(3, "VDEC_TEST_CK"), | ||
52 | MTK_FUNCTION(7, "DBG_MON_B[0]") | ||
53 | ), | ||
54 | MTK_PIN( | ||
55 | PINCTRL_PIN(6, "PWRAP_SPI0_CSN2"), | ||
56 | "M23", "mt8127", | ||
57 | MTK_EINT_FUNCTION(0, 28), | ||
58 | MTK_FUNCTION(0, "GPIO6"), | ||
59 | MTK_FUNCTION(1, "PWRAP_SPICS2_B_I"), | ||
60 | MTK_FUNCTION(2, "ANT_SEL0"), | ||
61 | MTK_FUNCTION(3, "MM_TEST_CK"), | ||
62 | MTK_FUNCTION(7, "DBG_MON_B[1]") | ||
63 | ), | ||
64 | MTK_PIN( | ||
65 | PINCTRL_PIN(7, "AUD_CLK_MOSI"), | ||
66 | "K23", "mt8127", | ||
67 | MTK_EINT_FUNCTION(0, 29), | ||
68 | MTK_FUNCTION(0, "GPIO7"), | ||
69 | MTK_FUNCTION(1, "AUD_CLK"), | ||
70 | MTK_FUNCTION(2, "ADC_CK") | ||
71 | ), | ||
72 | MTK_PIN( | ||
73 | PINCTRL_PIN(8, "AUD_DAT_MISO"), | ||
74 | "K24", "mt8127", | ||
75 | MTK_EINT_FUNCTION(0, 30), | ||
76 | MTK_FUNCTION(0, "GPIO8"), | ||
77 | MTK_FUNCTION(1, "AUD_MISO"), | ||
78 | MTK_FUNCTION(2, "ADC_DAT_IN"), | ||
79 | MTK_FUNCTION(3, "AUD_MOSI") | ||
80 | ), | ||
81 | MTK_PIN( | ||
82 | PINCTRL_PIN(9, "AUD_DAT_MOSI"), | ||
83 | "K22", "mt8127", | ||
84 | MTK_EINT_FUNCTION(0, 31), | ||
85 | MTK_FUNCTION(0, "GPIO9"), | ||
86 | MTK_FUNCTION(1, "AUD_MOSI"), | ||
87 | MTK_FUNCTION(2, "ADC_WS"), | ||
88 | MTK_FUNCTION(3, "AUD_MISO") | ||
89 | ), | ||
90 | MTK_PIN( | ||
91 | PINCTRL_PIN(10, "RTC32K_CK"), | ||
92 | "R21", "mt8127", | ||
93 | MTK_EINT_FUNCTION(0, 32), | ||
94 | MTK_FUNCTION(0, "GPIO10"), | ||
95 | MTK_FUNCTION(1, "RTC32K_CK") | ||
96 | ), | ||
97 | MTK_PIN( | ||
98 | PINCTRL_PIN(11, "WATCHDOG"), | ||
99 | "P24", "mt8127", | ||
100 | MTK_EINT_FUNCTION(0, 33), | ||
101 | MTK_FUNCTION(0, "GPIO11"), | ||
102 | MTK_FUNCTION(1, "WATCHDOG") | ||
103 | ), | ||
104 | MTK_PIN( | ||
105 | PINCTRL_PIN(12, "SRCLKENA"), | ||
106 | "R22", "mt8127", | ||
107 | MTK_EINT_FUNCTION(0, 34), | ||
108 | MTK_FUNCTION(0, "GPIO12"), | ||
109 | MTK_FUNCTION(1, "SRCLKENA") | ||
110 | ), | ||
111 | MTK_PIN( | ||
112 | PINCTRL_PIN(13, "SRCLKENAI"), | ||
113 | "P23", "mt8127", | ||
114 | MTK_EINT_FUNCTION(0, 35), | ||
115 | MTK_FUNCTION(0, "GPIO13"), | ||
116 | MTK_FUNCTION(1, "SRCLKENAI") | ||
117 | ), | ||
118 | MTK_PIN( | ||
119 | PINCTRL_PIN(14, "URXD2"), | ||
120 | "U19", "mt8127", | ||
121 | MTK_EINT_FUNCTION(0, 36), | ||
122 | MTK_FUNCTION(0, "GPIO14"), | ||
123 | MTK_FUNCTION(1, "URXD2"), | ||
124 | MTK_FUNCTION(2, "DPI_D5"), | ||
125 | MTK_FUNCTION(3, "UTXD2"), | ||
126 | MTK_FUNCTION(5, "SRCCLKENAI2"), | ||
127 | MTK_FUNCTION(6, "KROW4") | ||
128 | ), | ||
129 | MTK_PIN( | ||
130 | PINCTRL_PIN(15, "UTXD2"), | ||
131 | "U20", "mt8127", | ||
132 | MTK_EINT_FUNCTION(0, 37), | ||
133 | MTK_FUNCTION(0, "GPIO15"), | ||
134 | MTK_FUNCTION(1, "UTXD2"), | ||
135 | MTK_FUNCTION(2, "DPI_HSYNC"), | ||
136 | MTK_FUNCTION(3, "URXD2"), | ||
137 | MTK_FUNCTION(6, "KROW5") | ||
138 | ), | ||
139 | MTK_PIN( | ||
140 | PINCTRL_PIN(16, "URXD3"), | ||
141 | "U18", "mt8127", | ||
142 | MTK_EINT_FUNCTION(0, 38), | ||
143 | MTK_FUNCTION(0, "GPIO16"), | ||
144 | MTK_FUNCTION(1, "URXD3"), | ||
145 | MTK_FUNCTION(2, "DPI_DE"), | ||
146 | MTK_FUNCTION(3, "UTXD3"), | ||
147 | MTK_FUNCTION(4, "UCTS2"), | ||
148 | MTK_FUNCTION(5, "PWM3"), | ||
149 | MTK_FUNCTION(6, "KROW6") | ||
150 | ), | ||
151 | MTK_PIN( | ||
152 | PINCTRL_PIN(17, "UTXD3"), | ||
153 | "R18", "mt8127", | ||
154 | MTK_EINT_FUNCTION(0, 39), | ||
155 | MTK_FUNCTION(0, "GPIO17"), | ||
156 | MTK_FUNCTION(1, "UTXD3"), | ||
157 | MTK_FUNCTION(2, "DPI_VSYNC"), | ||
158 | MTK_FUNCTION(3, "URXD3"), | ||
159 | MTK_FUNCTION(4, "URTS2"), | ||
160 | MTK_FUNCTION(5, "PWM4"), | ||
161 | MTK_FUNCTION(6, "KROW7") | ||
162 | ), | ||
163 | MTK_PIN( | ||
164 | PINCTRL_PIN(18, "PCM_CLK"), | ||
165 | "U22", "mt8127", | ||
166 | MTK_EINT_FUNCTION(0, 40), | ||
167 | MTK_FUNCTION(0, "GPIO18"), | ||
168 | MTK_FUNCTION(1, "PCM_CLK0"), | ||
169 | MTK_FUNCTION(2, "DPI_D4"), | ||
170 | MTK_FUNCTION(3, "I2SIN1_BCK0"), | ||
171 | MTK_FUNCTION(4, "I2SOUT_BCK"), | ||
172 | MTK_FUNCTION(5, "CONN_DSP_JCK"), | ||
173 | MTK_FUNCTION(6, "IR"), | ||
174 | MTK_FUNCTION(7, "DBG_MON_A[0]") | ||
175 | ), | ||
176 | MTK_PIN( | ||
177 | PINCTRL_PIN(19, "PCM_SYNC"), | ||
178 | "U23", "mt8127", | ||
179 | MTK_EINT_FUNCTION(0, 41), | ||
180 | MTK_FUNCTION(0, "GPIO19"), | ||
181 | MTK_FUNCTION(1, "PCM_SYNC"), | ||
182 | MTK_FUNCTION(2, "DPI_D3"), | ||
183 | MTK_FUNCTION(3, "I2SIN1_LRCK"), | ||
184 | MTK_FUNCTION(4, "I2SOUT_LRCK"), | ||
185 | MTK_FUNCTION(5, "CONN_DSP_JINTP"), | ||
186 | MTK_FUNCTION(6, "EXT_COL"), | ||
187 | MTK_FUNCTION(7, "DBG_MON_A[1]") | ||
188 | ), | ||
189 | MTK_PIN( | ||
190 | PINCTRL_PIN(20, "PCM_RX"), | ||
191 | "V22", "mt8127", | ||
192 | MTK_EINT_FUNCTION(0, 42), | ||
193 | MTK_FUNCTION(0, "GPIO20"), | ||
194 | MTK_FUNCTION(1, "PCM_RX"), | ||
195 | MTK_FUNCTION(2, "DPI_D1"), | ||
196 | MTK_FUNCTION(3, "I2SIN1_DATA_IN"), | ||
197 | MTK_FUNCTION(4, "PCM_TX"), | ||
198 | MTK_FUNCTION(5, "CONN_DSP_JDI"), | ||
199 | MTK_FUNCTION(6, "EXT_MDIO"), | ||
200 | MTK_FUNCTION(7, "DBG_MON_A[2]") | ||
201 | ), | ||
202 | MTK_PIN( | ||
203 | PINCTRL_PIN(21, "PCM_TX"), | ||
204 | "U21", "mt8127", | ||
205 | MTK_EINT_FUNCTION(0, 43), | ||
206 | MTK_FUNCTION(0, "GPIO21"), | ||
207 | MTK_FUNCTION(1, "PCM_TX"), | ||
208 | MTK_FUNCTION(2, "DPI_D2"), | ||
209 | MTK_FUNCTION(3, "I2SOUT_DATA_OUT"), | ||
210 | MTK_FUNCTION(4, "PCM_RX"), | ||
211 | MTK_FUNCTION(5, "CONN_DSP_JMS"), | ||
212 | MTK_FUNCTION(6, "EXT_MDC"), | ||
213 | MTK_FUNCTION(7, "DBG_MON_A[3]") | ||
214 | ), | ||
215 | MTK_PIN( | ||
216 | PINCTRL_PIN(22, "EINT0"), | ||
217 | "AB19", "mt8127", | ||
218 | MTK_EINT_FUNCTION(0, 0), | ||
219 | MTK_FUNCTION(0, "GPIO22"), | ||
220 | MTK_FUNCTION(1, "PWM1"), | ||
221 | MTK_FUNCTION(2, "DPI_CK"), | ||
222 | MTK_FUNCTION(4, "EXT_TXD0"), | ||
223 | MTK_FUNCTION(5, "CONN_DSP_JDO"), | ||
224 | MTK_FUNCTION(7, "DBG_MON_A[4]") | ||
225 | ), | ||
226 | MTK_PIN( | ||
227 | PINCTRL_PIN(23, "EINT1"), | ||
228 | "AA21", "mt8127", | ||
229 | MTK_EINT_FUNCTION(0, 1), | ||
230 | MTK_FUNCTION(0, "GPIO23"), | ||
231 | MTK_FUNCTION(1, "PWM2"), | ||
232 | MTK_FUNCTION(2, "DPI_D12"), | ||
233 | MTK_FUNCTION(4, "EXT_TXD1"), | ||
234 | MTK_FUNCTION(5, "CONN_MCU_TDO"), | ||
235 | MTK_FUNCTION(7, "DBG_MON_A[5]") | ||
236 | ), | ||
237 | MTK_PIN( | ||
238 | PINCTRL_PIN(24, "EINT2"), | ||
239 | "AA19", "mt8127", | ||
240 | MTK_EINT_FUNCTION(0, 2), | ||
241 | MTK_FUNCTION(0, "GPIO24"), | ||
242 | MTK_FUNCTION(1, "CLKM0"), | ||
243 | MTK_FUNCTION(2, "DPI_D13"), | ||
244 | MTK_FUNCTION(4, "EXT_TXD2"), | ||
245 | MTK_FUNCTION(5, "CONN_MCU_DBGACK_N"), | ||
246 | MTK_FUNCTION(6, "KCOL4"), | ||
247 | MTK_FUNCTION(7, "DBG_MON_A[6]") | ||
248 | ), | ||
249 | MTK_PIN( | ||
250 | PINCTRL_PIN(25, "EINT3"), | ||
251 | "Y19", "mt8127", | ||
252 | MTK_EINT_FUNCTION(0, 3), | ||
253 | MTK_FUNCTION(0, "GPIO25"), | ||
254 | MTK_FUNCTION(1, "CLKM1"), | ||
255 | MTK_FUNCTION(2, "DPI_D14"), | ||
256 | MTK_FUNCTION(3, "SPI_MI"), | ||
257 | MTK_FUNCTION(4, "EXT_TXD3"), | ||
258 | MTK_FUNCTION(5, "CONN_MCU_DBGI_N"), | ||
259 | MTK_FUNCTION(6, "KCOL5"), | ||
260 | MTK_FUNCTION(7, "DBG_MON_A[7]") | ||
261 | ), | ||
262 | MTK_PIN( | ||
263 | PINCTRL_PIN(26, "EINT4"), | ||
264 | "V21", "mt8127", | ||
265 | MTK_EINT_FUNCTION(0, 4), | ||
266 | MTK_FUNCTION(0, "GPIO26"), | ||
267 | MTK_FUNCTION(1, "CLKM2"), | ||
268 | MTK_FUNCTION(2, "DPI_D15"), | ||
269 | MTK_FUNCTION(3, "SPI_MO"), | ||
270 | MTK_FUNCTION(4, "EXT_TXC"), | ||
271 | MTK_FUNCTION(5, "CONN_MCU_TCK0"), | ||
272 | MTK_FUNCTION(6, "CONN_MCU_AICE_JCKC"), | ||
273 | MTK_FUNCTION(7, "DBG_MON_A[8]") | ||
274 | ), | ||
275 | MTK_PIN( | ||
276 | PINCTRL_PIN(27, "EINT5"), | ||
277 | "AB22", "mt8127", | ||
278 | MTK_EINT_FUNCTION(0, 5), | ||
279 | MTK_FUNCTION(0, "GPIO27"), | ||
280 | MTK_FUNCTION(1, "UCTS2"), | ||
281 | MTK_FUNCTION(2, "DPI_D16"), | ||
282 | MTK_FUNCTION(3, "SPI_CS"), | ||
283 | MTK_FUNCTION(4, "EXT_RXER"), | ||
284 | MTK_FUNCTION(5, "CONN_MCU_TDI"), | ||
285 | MTK_FUNCTION(6, "KCOL6"), | ||
286 | MTK_FUNCTION(7, "DBG_MON_A[9]") | ||
287 | ), | ||
288 | MTK_PIN( | ||
289 | PINCTRL_PIN(28, "EINT6"), | ||
290 | "AA23", "mt8127", | ||
291 | MTK_EINT_FUNCTION(0, 6), | ||
292 | MTK_FUNCTION(0, "GPIO28"), | ||
293 | MTK_FUNCTION(1, "URTS2"), | ||
294 | MTK_FUNCTION(2, "DPI_D17"), | ||
295 | MTK_FUNCTION(3, "SPI_CK"), | ||
296 | MTK_FUNCTION(4, "EXT_RXC"), | ||
297 | MTK_FUNCTION(5, "CONN_MCU_TRST_B"), | ||
298 | MTK_FUNCTION(6, "KCOL7"), | ||
299 | MTK_FUNCTION(7, "DBG_MON_A[10]") | ||
300 | ), | ||
301 | MTK_PIN( | ||
302 | PINCTRL_PIN(29, "EINT7"), | ||
303 | "Y23", "mt8127", | ||
304 | MTK_EINT_FUNCTION(0, 7), | ||
305 | MTK_FUNCTION(0, "GPIO29"), | ||
306 | MTK_FUNCTION(1, "UCTS3"), | ||
307 | MTK_FUNCTION(2, "DPI_D6"), | ||
308 | MTK_FUNCTION(3, "SDA1"), | ||
309 | MTK_FUNCTION(4, "EXT_RXDV"), | ||
310 | MTK_FUNCTION(5, "CONN_MCU_TMS"), | ||
311 | MTK_FUNCTION(6, "CONN_MCU_AICE_JMSC"), | ||
312 | MTK_FUNCTION(7, "DBG_MON_A[11]") | ||
313 | ), | ||
314 | MTK_PIN( | ||
315 | PINCTRL_PIN(30, "EINT8"), | ||
316 | "Y24", "mt8127", | ||
317 | MTK_EINT_FUNCTION(0, 8), | ||
318 | MTK_FUNCTION(0, "GPIO30"), | ||
319 | MTK_FUNCTION(1, "URTS3"), | ||
320 | MTK_FUNCTION(2, "CLKM3"), | ||
321 | MTK_FUNCTION(3, "SCL1"), | ||
322 | MTK_FUNCTION(4, "EXT_RXD0"), | ||
323 | MTK_FUNCTION(5, "ANT_SEL0"), | ||
324 | MTK_FUNCTION(6, "DPI_D7"), | ||
325 | MTK_FUNCTION(7, "DBG_MON_B[2]") | ||
326 | ), | ||
327 | MTK_PIN( | ||
328 | PINCTRL_PIN(31, "EINT9"), | ||
329 | "W23", "mt8127", | ||
330 | MTK_EINT_FUNCTION(0, 9), | ||
331 | MTK_FUNCTION(0, "GPIO31"), | ||
332 | MTK_FUNCTION(1, "CLKM4"), | ||
333 | MTK_FUNCTION(2, "SDA2"), | ||
334 | MTK_FUNCTION(3, "EXT_FRAME_SYNC"), | ||
335 | MTK_FUNCTION(4, "EXT_RXD1"), | ||
336 | MTK_FUNCTION(5, "ANT_SEL1"), | ||
337 | MTK_FUNCTION(6, "DPI_D8"), | ||
338 | MTK_FUNCTION(7, "DBG_MON_B[3]") | ||
339 | ), | ||
340 | MTK_PIN( | ||
341 | PINCTRL_PIN(32, "EINT10"), | ||
342 | "W24", "mt8127", | ||
343 | MTK_EINT_FUNCTION(0, 10), | ||
344 | MTK_FUNCTION(0, "GPIO32"), | ||
345 | MTK_FUNCTION(1, "CLKM5"), | ||
346 | MTK_FUNCTION(2, "SCL2"), | ||
347 | MTK_FUNCTION(3, "EXT_FRAME_SYNC"), | ||
348 | MTK_FUNCTION(4, "EXT_RXD2"), | ||
349 | MTK_FUNCTION(5, "ANT_SEL2"), | ||
350 | MTK_FUNCTION(6, "DPI_D9"), | ||
351 | MTK_FUNCTION(7, "DBG_MON_B[4]") | ||
352 | ), | ||
353 | MTK_PIN( | ||
354 | PINCTRL_PIN(33, "KPROW0"), | ||
355 | "AB24", "mt8127", | ||
356 | MTK_EINT_FUNCTION(0, 44), | ||
357 | MTK_FUNCTION(0, "GPIO33"), | ||
358 | MTK_FUNCTION(1, "KROW0"), | ||
359 | MTK_FUNCTION(4, "IMG_TEST_CK"), | ||
360 | MTK_FUNCTION(7, "DBG_MON_A[12]") | ||
361 | ), | ||
362 | MTK_PIN( | ||
363 | PINCTRL_PIN(34, "KPROW1"), | ||
364 | "AC24", "mt8127", | ||
365 | MTK_EINT_FUNCTION(0, 45), | ||
366 | MTK_FUNCTION(0, "GPIO34"), | ||
367 | MTK_FUNCTION(1, "KROW1"), | ||
368 | MTK_FUNCTION(2, "IDDIG"), | ||
369 | MTK_FUNCTION(3, "EXT_FRAME_SYNC"), | ||
370 | MTK_FUNCTION(4, "MFG_TEST_CK"), | ||
371 | MTK_FUNCTION(7, "DBG_MON_B[5]") | ||
372 | ), | ||
373 | MTK_PIN( | ||
374 | PINCTRL_PIN(35, "KPROW2"), | ||
375 | "AD24", "mt8127", | ||
376 | MTK_EINT_FUNCTION(0, 46), | ||
377 | MTK_FUNCTION(0, "GPIO35"), | ||
378 | MTK_FUNCTION(1, "KROW2"), | ||
379 | MTK_FUNCTION(2, "DRV_VBUS"), | ||
380 | MTK_FUNCTION(3, "EXT_FRAME_SYNC"), | ||
381 | MTK_FUNCTION(4, "CONN_TEST_CK"), | ||
382 | MTK_FUNCTION(7, "DBG_MON_B[6]") | ||
383 | ), | ||
384 | MTK_PIN( | ||
385 | PINCTRL_PIN(36, "KPCOL0"), | ||
386 | "AB23", "mt8127", | ||
387 | MTK_EINT_FUNCTION(0, 47), | ||
388 | MTK_FUNCTION(0, "GPIO36"), | ||
389 | MTK_FUNCTION(1, "KCOL0"), | ||
390 | MTK_FUNCTION(7, "DBG_MON_A[13]") | ||
391 | ), | ||
392 | MTK_PIN( | ||
393 | PINCTRL_PIN(37, "KPCOL1"), | ||
394 | "AC22", "mt8127", | ||
395 | MTK_EINT_FUNCTION(0, 48), | ||
396 | MTK_FUNCTION(0, "GPIO37"), | ||
397 | MTK_FUNCTION(1, "KCOL1"), | ||
398 | MTK_FUNCTION(7, "DBG_MON_B[7]") | ||
399 | ), | ||
400 | MTK_PIN( | ||
401 | PINCTRL_PIN(38, "KPCOL2"), | ||
402 | "AC23", "mt8127", | ||
403 | MTK_EINT_FUNCTION(0, 49), | ||
404 | MTK_FUNCTION(0, "GPIO38"), | ||
405 | MTK_FUNCTION(1, "KCOL2"), | ||
406 | MTK_FUNCTION(2, "IDDIG"), | ||
407 | MTK_FUNCTION(3, "EXT_FRAME_SYNC"), | ||
408 | MTK_FUNCTION(7, "DBG_MON_B[8]") | ||
409 | ), | ||
410 | MTK_PIN( | ||
411 | PINCTRL_PIN(39, "JTMS"), | ||
412 | "V18", "mt8127", | ||
413 | MTK_EINT_FUNCTION(0, 50), | ||
414 | MTK_FUNCTION(0, "GPIO39"), | ||
415 | MTK_FUNCTION(1, "JTMS"), | ||
416 | MTK_FUNCTION(2, "CONN_MCU_TMS"), | ||
417 | MTK_FUNCTION(3, "CONN_MCU_AICE_JMSC") | ||
418 | ), | ||
419 | MTK_PIN( | ||
420 | PINCTRL_PIN(40, "JTCK"), | ||
421 | "AA18", "mt8127", | ||
422 | MTK_EINT_FUNCTION(0, 51), | ||
423 | MTK_FUNCTION(0, "GPIO40"), | ||
424 | MTK_FUNCTION(1, "JTCK"), | ||
425 | MTK_FUNCTION(2, "CONN_MCU_TCK1"), | ||
426 | MTK_FUNCTION(3, "CONN_MCU_AICE_JCKC") | ||
427 | ), | ||
428 | MTK_PIN( | ||
429 | PINCTRL_PIN(41, "JTDI"), | ||
430 | "W18", "mt8127", | ||
431 | MTK_EINT_FUNCTION(0, 52), | ||
432 | MTK_FUNCTION(0, "GPIO41"), | ||
433 | MTK_FUNCTION(1, "JTDI"), | ||
434 | MTK_FUNCTION(2, "CONN_MCU_TDI") | ||
435 | ), | ||
436 | MTK_PIN( | ||
437 | PINCTRL_PIN(42, "JTDO"), | ||
438 | "Y18", "mt8127", | ||
439 | MTK_EINT_FUNCTION(0, 53), | ||
440 | MTK_FUNCTION(0, "GPIO42"), | ||
441 | MTK_FUNCTION(1, "JTDO"), | ||
442 | MTK_FUNCTION(2, "CONN_MCU_TDO") | ||
443 | ), | ||
444 | MTK_PIN( | ||
445 | PINCTRL_PIN(43, "EINT11"), | ||
446 | "W22", "mt8127", | ||
447 | MTK_EINT_FUNCTION(0, 11), | ||
448 | MTK_FUNCTION(0, "GPIO43"), | ||
449 | MTK_FUNCTION(1, "CLKM4"), | ||
450 | MTK_FUNCTION(2, "PWM2"), | ||
451 | MTK_FUNCTION(3, "KROW3"), | ||
452 | MTK_FUNCTION(4, "ANT_SEL3"), | ||
453 | MTK_FUNCTION(5, "DPI_D10"), | ||
454 | MTK_FUNCTION(6, "EXT_RXD3"), | ||
455 | MTK_FUNCTION(7, "DBG_MON_B[9]") | ||
456 | ), | ||
457 | MTK_PIN( | ||
458 | PINCTRL_PIN(44, "EINT12"), | ||
459 | "V23", "mt8127", | ||
460 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
461 | MTK_FUNCTION(0, "GPIO44"), | ||
462 | MTK_FUNCTION(1, "CLKM5"), | ||
463 | MTK_FUNCTION(2, "PWM0"), | ||
464 | MTK_FUNCTION(3, "KCOL3"), | ||
465 | MTK_FUNCTION(4, "ANT_SEL4"), | ||
466 | MTK_FUNCTION(5, "DPI_D11"), | ||
467 | MTK_FUNCTION(6, "EXT_TXEN"), | ||
468 | MTK_FUNCTION(7, "DBG_MON_B[10]") | ||
469 | ), | ||
470 | MTK_PIN( | ||
471 | PINCTRL_PIN(45, "EINT13"), | ||
472 | "Y21", "mt8127", | ||
473 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
474 | MTK_FUNCTION(0, "GPIO45"), | ||
475 | MTK_FUNCTION(4, "ANT_SEL5"), | ||
476 | MTK_FUNCTION(5, "DPI_D0"), | ||
477 | MTK_FUNCTION(6, "SPDIF"), | ||
478 | MTK_FUNCTION(7, "DBG_MON_B[11]") | ||
479 | ), | ||
480 | MTK_PIN( | ||
481 | PINCTRL_PIN(46, "EINT14"), | ||
482 | "F23", "mt8127", | ||
483 | MTK_EINT_FUNCTION(0, 14), | ||
484 | MTK_FUNCTION(0, "GPIO46"), | ||
485 | MTK_FUNCTION(2, "DAC_DAT_OUT"), | ||
486 | MTK_FUNCTION(4, "ANT_SEL1"), | ||
487 | MTK_FUNCTION(5, "CONN_MCU_DBGACK_N"), | ||
488 | MTK_FUNCTION(6, "NCLE"), | ||
489 | MTK_FUNCTION(7, "DBG_MON_A[14]") | ||
490 | ), | ||
491 | MTK_PIN( | ||
492 | PINCTRL_PIN(47, "EINT15"), | ||
493 | "G23", "mt8127", | ||
494 | MTK_EINT_FUNCTION(0, 15), | ||
495 | MTK_FUNCTION(0, "GPIO47"), | ||
496 | MTK_FUNCTION(2, "DAC_WS"), | ||
497 | MTK_FUNCTION(4, "ANT_SEL2"), | ||
498 | MTK_FUNCTION(5, "CONN_MCU_DBGI_N"), | ||
499 | MTK_FUNCTION(6, "NCEB1"), | ||
500 | MTK_FUNCTION(7, "DBG_MON_A[15]") | ||
501 | ), | ||
502 | MTK_PIN( | ||
503 | PINCTRL_PIN(48, "EINT16"), | ||
504 | "H23", "mt8127", | ||
505 | MTK_EINT_FUNCTION(0, 16), | ||
506 | MTK_FUNCTION(0, "GPIO48"), | ||
507 | MTK_FUNCTION(2, "DAC_CK"), | ||
508 | MTK_FUNCTION(4, "ANT_SEL3"), | ||
509 | MTK_FUNCTION(5, "CONN_MCU_TRST_B"), | ||
510 | MTK_FUNCTION(6, "NCEB0"), | ||
511 | MTK_FUNCTION(7, "DBG_MON_A[16]") | ||
512 | ), | ||
513 | MTK_PIN( | ||
514 | PINCTRL_PIN(49, "EINT17"), | ||
515 | "J22", "mt8127", | ||
516 | MTK_EINT_FUNCTION(0, 17), | ||
517 | MTK_FUNCTION(0, "GPIO49"), | ||
518 | MTK_FUNCTION(1, "UCTS0"), | ||
519 | MTK_FUNCTION(3, "CLKM0"), | ||
520 | MTK_FUNCTION(4, "IDDIG"), | ||
521 | MTK_FUNCTION(5, "ANT_SEL4"), | ||
522 | MTK_FUNCTION(6, "NREB"), | ||
523 | MTK_FUNCTION(7, "DBG_MON_A[17]") | ||
524 | ), | ||
525 | MTK_PIN( | ||
526 | PINCTRL_PIN(50, "EINT18"), | ||
527 | "AD20", "mt8127", | ||
528 | MTK_EINT_FUNCTION(0, 18), | ||
529 | MTK_FUNCTION(0, "GPIO50"), | ||
530 | MTK_FUNCTION(1, "URTS0"), | ||
531 | MTK_FUNCTION(2, "CLKM3"), | ||
532 | MTK_FUNCTION(3, "I2SOUT_LRCK"), | ||
533 | MTK_FUNCTION(4, "DRV_VBUS"), | ||
534 | MTK_FUNCTION(5, "ANT_SEL3"), | ||
535 | MTK_FUNCTION(6, "ADC_CK"), | ||
536 | MTK_FUNCTION(7, "DBG_MON_B[12]") | ||
537 | ), | ||
538 | MTK_PIN( | ||
539 | PINCTRL_PIN(51, "EINT19"), | ||
540 | "AC21", "mt8127", | ||
541 | MTK_EINT_FUNCTION(0, 19), | ||
542 | MTK_FUNCTION(0, "GPIO51"), | ||
543 | MTK_FUNCTION(1, "UCTS1"), | ||
544 | MTK_FUNCTION(3, "I2SOUT_BCK"), | ||
545 | MTK_FUNCTION(4, "CLKM1"), | ||
546 | MTK_FUNCTION(5, "ANT_SEL4"), | ||
547 | MTK_FUNCTION(6, "ADC_DAT_IN"), | ||
548 | MTK_FUNCTION(7, "DBG_MON_B[13]") | ||
549 | ), | ||
550 | MTK_PIN( | ||
551 | PINCTRL_PIN(52, "EINT20"), | ||
552 | "V20", "mt8127", | ||
553 | MTK_EINT_FUNCTION(0, 20), | ||
554 | MTK_FUNCTION(0, "GPIO52"), | ||
555 | MTK_FUNCTION(1, "URTS1"), | ||
556 | MTK_FUNCTION(2, "PCM_TX"), | ||
557 | MTK_FUNCTION(3, "I2SOUT_DATA_OUT"), | ||
558 | MTK_FUNCTION(4, "CLKM2"), | ||
559 | MTK_FUNCTION(5, "ANT_SEL5"), | ||
560 | MTK_FUNCTION(6, "ADC_WS"), | ||
561 | MTK_FUNCTION(7, "DBG_MON_B[14]") | ||
562 | ), | ||
563 | MTK_PIN( | ||
564 | PINCTRL_PIN(53, "SPI_CS"), | ||
565 | "AD19", "mt8127", | ||
566 | MTK_EINT_FUNCTION(0, 54), | ||
567 | MTK_FUNCTION(0, "GPIO53"), | ||
568 | MTK_FUNCTION(1, "SPI_CS"), | ||
569 | MTK_FUNCTION(3, "I2SIN1_DATA_IN"), | ||
570 | MTK_FUNCTION(4, "ADC_CK"), | ||
571 | MTK_FUNCTION(7, "DBG_MON_B[15]") | ||
572 | ), | ||
573 | MTK_PIN( | ||
574 | PINCTRL_PIN(54, "SPI_CK"), | ||
575 | "AC18", "mt8127", | ||
576 | MTK_EINT_FUNCTION(0, 55), | ||
577 | MTK_FUNCTION(0, "GPIO54"), | ||
578 | MTK_FUNCTION(1, "SPI_CK"), | ||
579 | MTK_FUNCTION(3, "I2SIN1_LRCK"), | ||
580 | MTK_FUNCTION(4, "ADC_DAT_IN"), | ||
581 | MTK_FUNCTION(7, "DBG_MON_B[16]") | ||
582 | ), | ||
583 | MTK_PIN( | ||
584 | PINCTRL_PIN(55, "SPI_MI"), | ||
585 | "AC19", "mt8127", | ||
586 | MTK_EINT_FUNCTION(0, 56), | ||
587 | MTK_FUNCTION(0, "GPIO55"), | ||
588 | MTK_FUNCTION(1, "SPI_MI"), | ||
589 | MTK_FUNCTION(2, "SPI_MO"), | ||
590 | MTK_FUNCTION(3, "I2SIN1_BCK1"), | ||
591 | MTK_FUNCTION(4, "ADC_WS"), | ||
592 | MTK_FUNCTION(7, "DBG_MON_B[17]") | ||
593 | ), | ||
594 | MTK_PIN( | ||
595 | PINCTRL_PIN(56, "SPI_MO"), | ||
596 | "AD18", "mt8127", | ||
597 | MTK_EINT_FUNCTION(0, 57), | ||
598 | MTK_FUNCTION(0, "GPIO56"), | ||
599 | MTK_FUNCTION(1, "SPI_MO"), | ||
600 | MTK_FUNCTION(2, "SPI_MI"), | ||
601 | MTK_FUNCTION(7, "DBG_MON_B[18]") | ||
602 | ), | ||
603 | MTK_PIN( | ||
604 | PINCTRL_PIN(57, "SDA1"), | ||
605 | "AE23", "mt8127", | ||
606 | MTK_EINT_FUNCTION(0, 58), | ||
607 | MTK_FUNCTION(0, "GPIO57"), | ||
608 | MTK_FUNCTION(1, "SDA1") | ||
609 | ), | ||
610 | MTK_PIN( | ||
611 | PINCTRL_PIN(58, "SCL1"), | ||
612 | "AD23", "mt8127", | ||
613 | MTK_EINT_FUNCTION(0, 59), | ||
614 | MTK_FUNCTION(0, "GPIO58"), | ||
615 | MTK_FUNCTION(1, "SCL1") | ||
616 | ), | ||
617 | MTK_PIN( | ||
618 | PINCTRL_PIN(59, "DISP_PWM"), | ||
619 | "AC20", "mt8127", | ||
620 | MTK_EINT_FUNCTION(0, 60), | ||
621 | MTK_FUNCTION(0, "GPIO59"), | ||
622 | MTK_FUNCTION(1, "DISP_PWM"), | ||
623 | MTK_FUNCTION(2, "PWM1"), | ||
624 | MTK_FUNCTION(7, "DBG_MON_A[18]") | ||
625 | ), | ||
626 | MTK_PIN( | ||
627 | PINCTRL_PIN(60, "WB_RSTB"), | ||
628 | "AD7", "mt8127", | ||
629 | MTK_EINT_FUNCTION(0, 61), | ||
630 | MTK_FUNCTION(0, "GPIO60"), | ||
631 | MTK_FUNCTION(1, "WB_RSTB"), | ||
632 | MTK_FUNCTION(7, "DBG_MON_A[19]") | ||
633 | ), | ||
634 | MTK_PIN( | ||
635 | PINCTRL_PIN(61, "F2W_DATA"), | ||
636 | "Y10", "mt8127", | ||
637 | MTK_EINT_FUNCTION(0, 62), | ||
638 | MTK_FUNCTION(0, "GPIO61"), | ||
639 | MTK_FUNCTION(1, "F2W_DATA"), | ||
640 | MTK_FUNCTION(7, "DBG_MON_A[20]") | ||
641 | ), | ||
642 | MTK_PIN( | ||
643 | PINCTRL_PIN(62, "F2W_CLK"), | ||
644 | "W10", "mt8127", | ||
645 | MTK_EINT_FUNCTION(0, 63), | ||
646 | MTK_FUNCTION(0, "GPIO62"), | ||
647 | MTK_FUNCTION(1, "F2W_CK"), | ||
648 | MTK_FUNCTION(7, "DBG_MON_A[21]") | ||
649 | ), | ||
650 | MTK_PIN( | ||
651 | PINCTRL_PIN(63, "WB_SCLK"), | ||
652 | "AB7", "mt8127", | ||
653 | MTK_EINT_FUNCTION(0, 64), | ||
654 | MTK_FUNCTION(0, "GPIO63"), | ||
655 | MTK_FUNCTION(1, "WB_SCLK"), | ||
656 | MTK_FUNCTION(7, "DBG_MON_A[22]") | ||
657 | ), | ||
658 | MTK_PIN( | ||
659 | PINCTRL_PIN(64, "WB_SDATA"), | ||
660 | "AA7", "mt8127", | ||
661 | MTK_EINT_FUNCTION(0, 65), | ||
662 | MTK_FUNCTION(0, "GPIO64"), | ||
663 | MTK_FUNCTION(1, "WB_SDATA"), | ||
664 | MTK_FUNCTION(7, "DBG_MON_A[23]") | ||
665 | ), | ||
666 | MTK_PIN( | ||
667 | PINCTRL_PIN(65, "WB_SEN"), | ||
668 | "Y7", "mt8127", | ||
669 | MTK_EINT_FUNCTION(0, 66), | ||
670 | MTK_FUNCTION(0, "GPIO65"), | ||
671 | MTK_FUNCTION(1, "WB_SEN"), | ||
672 | MTK_FUNCTION(7, "DBG_MON_A[24]") | ||
673 | ), | ||
674 | MTK_PIN( | ||
675 | PINCTRL_PIN(66, "WB_CRTL0"), | ||
676 | "AA1", "mt8127", | ||
677 | MTK_EINT_FUNCTION(0, 67), | ||
678 | MTK_FUNCTION(0, "GPIO66"), | ||
679 | MTK_FUNCTION(1, "WB_CRTL0"), | ||
680 | MTK_FUNCTION(2, "DFD_NTRST_XI"), | ||
681 | MTK_FUNCTION(7, "DBG_MON_A[25]") | ||
682 | ), | ||
683 | MTK_PIN( | ||
684 | PINCTRL_PIN(67, "WB_CRTL1"), | ||
685 | "AA2", "mt8127", | ||
686 | MTK_EINT_FUNCTION(0, 68), | ||
687 | MTK_FUNCTION(0, "GPIO67"), | ||
688 | MTK_FUNCTION(1, "WB_CRTL1"), | ||
689 | MTK_FUNCTION(2, "DFD_TMS_XI"), | ||
690 | MTK_FUNCTION(7, "DBG_MON_A[26]") | ||
691 | ), | ||
692 | MTK_PIN( | ||
693 | PINCTRL_PIN(68, "WB_CRTL2"), | ||
694 | "Y1", "mt8127", | ||
695 | MTK_EINT_FUNCTION(0, 69), | ||
696 | MTK_FUNCTION(0, "GPIO68"), | ||
697 | MTK_FUNCTION(1, "WB_CRTL2"), | ||
698 | MTK_FUNCTION(2, "DFD_TCK_XI"), | ||
699 | MTK_FUNCTION(7, "DBG_MON_A[27]") | ||
700 | ), | ||
701 | MTK_PIN( | ||
702 | PINCTRL_PIN(69, "WB_CRTL3"), | ||
703 | "Y2", "mt8127", | ||
704 | MTK_EINT_FUNCTION(0, 70), | ||
705 | MTK_FUNCTION(0, "GPIO69"), | ||
706 | MTK_FUNCTION(1, "WB_CRTL3"), | ||
707 | MTK_FUNCTION(2, "DFD_TDI_XI"), | ||
708 | MTK_FUNCTION(7, "DBG_MON_A[28]") | ||
709 | ), | ||
710 | MTK_PIN( | ||
711 | PINCTRL_PIN(70, "WB_CRTL4"), | ||
712 | "Y3", "mt8127", | ||
713 | MTK_EINT_FUNCTION(0, 71), | ||
714 | MTK_FUNCTION(0, "GPIO70"), | ||
715 | MTK_FUNCTION(1, "WB_CRTL4"), | ||
716 | MTK_FUNCTION(2, "DFD_TDO"), | ||
717 | MTK_FUNCTION(7, "DBG_MON_A[29]") | ||
718 | ), | ||
719 | MTK_PIN( | ||
720 | PINCTRL_PIN(71, "WB_CRTL5"), | ||
721 | "Y4", "mt8127", | ||
722 | MTK_EINT_FUNCTION(0, 72), | ||
723 | MTK_FUNCTION(0, "GPIO71"), | ||
724 | MTK_FUNCTION(1, "WB_CRTL5"), | ||
725 | MTK_FUNCTION(7, "DBG_MON_A[30]") | ||
726 | ), | ||
727 | MTK_PIN( | ||
728 | PINCTRL_PIN(72, "I2S_DATA_IN"), | ||
729 | "K21", "mt8127", | ||
730 | MTK_EINT_FUNCTION(0, 73), | ||
731 | MTK_FUNCTION(0, "GPIO72"), | ||
732 | MTK_FUNCTION(1, "I2SIN1_DATA_IN"), | ||
733 | MTK_FUNCTION(2, "PCM_RX"), | ||
734 | MTK_FUNCTION(3, "I2SOUT_DATA_OUT"), | ||
735 | MTK_FUNCTION(4, "DAC_DAT_OUT"), | ||
736 | MTK_FUNCTION(5, "PWM0"), | ||
737 | MTK_FUNCTION(6, "ADC_CK"), | ||
738 | MTK_FUNCTION(7, "DBG_MON_B[19]") | ||
739 | ), | ||
740 | MTK_PIN( | ||
741 | PINCTRL_PIN(73, "I2S_LRCK"), | ||
742 | "L21", "mt8127", | ||
743 | MTK_EINT_FUNCTION(0, 74), | ||
744 | MTK_FUNCTION(0, "GPIO73"), | ||
745 | MTK_FUNCTION(1, "I2SIN1_LRCK"), | ||
746 | MTK_FUNCTION(2, "PCM_SYNC"), | ||
747 | MTK_FUNCTION(3, "I2SOUT_LRCK"), | ||
748 | MTK_FUNCTION(4, "DAC_WS"), | ||
749 | MTK_FUNCTION(5, "PWM3"), | ||
750 | MTK_FUNCTION(6, "ADC_DAT_IN"), | ||
751 | MTK_FUNCTION(7, "DBG_MON_B[20]") | ||
752 | ), | ||
753 | MTK_PIN( | ||
754 | PINCTRL_PIN(74, "I2S_BCK"), | ||
755 | "L20", "mt8127", | ||
756 | MTK_EINT_FUNCTION(0, 75), | ||
757 | MTK_FUNCTION(0, "GPIO74"), | ||
758 | MTK_FUNCTION(1, "I2SIN1_BCK2"), | ||
759 | MTK_FUNCTION(2, "PCM_CLK1"), | ||
760 | MTK_FUNCTION(3, "I2SOUT_BCK"), | ||
761 | MTK_FUNCTION(4, "DAC_CK"), | ||
762 | MTK_FUNCTION(5, "PWM4"), | ||
763 | MTK_FUNCTION(6, "ADC_WS"), | ||
764 | MTK_FUNCTION(7, "DBG_MON_B[21]") | ||
765 | ), | ||
766 | MTK_PIN( | ||
767 | PINCTRL_PIN(75, "SDA0"), | ||
768 | "W3", "mt8127", | ||
769 | MTK_EINT_FUNCTION(0, 76), | ||
770 | MTK_FUNCTION(0, "GPIO75"), | ||
771 | MTK_FUNCTION(1, "SDA0") | ||
772 | ), | ||
773 | MTK_PIN( | ||
774 | PINCTRL_PIN(76, "SCL0"), | ||
775 | "W4", "mt8127", | ||
776 | MTK_EINT_FUNCTION(0, 77), | ||
777 | MTK_FUNCTION(0, "GPIO76"), | ||
778 | MTK_FUNCTION(1, "SCL0") | ||
779 | ), | ||
780 | MTK_PIN( | ||
781 | PINCTRL_PIN(77, "SDA2"), | ||
782 | "K19", "mt8127", | ||
783 | MTK_EINT_FUNCTION(0, 78), | ||
784 | MTK_FUNCTION(0, "GPIO77"), | ||
785 | MTK_FUNCTION(1, "SDA2"), | ||
786 | MTK_FUNCTION(2, "PWM1") | ||
787 | ), | ||
788 | MTK_PIN( | ||
789 | PINCTRL_PIN(78, "SCL2"), | ||
790 | "K20", "mt8127", | ||
791 | MTK_EINT_FUNCTION(0, 79), | ||
792 | MTK_FUNCTION(0, "GPIO78"), | ||
793 | MTK_FUNCTION(1, "SCL2"), | ||
794 | MTK_FUNCTION(2, "PWM2") | ||
795 | ), | ||
796 | MTK_PIN( | ||
797 | PINCTRL_PIN(79, "URXD0"), | ||
798 | "K18", "mt8127", | ||
799 | MTK_EINT_FUNCTION(0, 80), | ||
800 | MTK_FUNCTION(0, "GPIO79"), | ||
801 | MTK_FUNCTION(1, "URXD0"), | ||
802 | MTK_FUNCTION(2, "UTXD0") | ||
803 | ), | ||
804 | MTK_PIN( | ||
805 | PINCTRL_PIN(80, "UTXD0"), | ||
806 | "K17", "mt8127", | ||
807 | MTK_EINT_FUNCTION(0, 81), | ||
808 | MTK_FUNCTION(0, "GPIO80"), | ||
809 | MTK_FUNCTION(1, "UTXD0"), | ||
810 | MTK_FUNCTION(2, "URXD0") | ||
811 | ), | ||
812 | MTK_PIN( | ||
813 | PINCTRL_PIN(81, "URXD1"), | ||
814 | "L17", "mt8127", | ||
815 | MTK_EINT_FUNCTION(0, 82), | ||
816 | MTK_FUNCTION(0, "GPIO81"), | ||
817 | MTK_FUNCTION(1, "URXD1"), | ||
818 | MTK_FUNCTION(2, "UTXD1") | ||
819 | ), | ||
820 | MTK_PIN( | ||
821 | PINCTRL_PIN(82, "UTXD1"), | ||
822 | "L18", "mt8127", | ||
823 | MTK_EINT_FUNCTION(0, 83), | ||
824 | MTK_FUNCTION(0, "GPIO82"), | ||
825 | MTK_FUNCTION(1, "UTXD1"), | ||
826 | MTK_FUNCTION(2, "URXD1") | ||
827 | ), | ||
828 | MTK_PIN( | ||
829 | PINCTRL_PIN(83, "LCM_RST"), | ||
830 | "W5", "mt8127", | ||
831 | MTK_EINT_FUNCTION(0, 84), | ||
832 | MTK_FUNCTION(0, "GPIO83"), | ||
833 | MTK_FUNCTION(1, "LCM_RST"), | ||
834 | MTK_FUNCTION(2, "VDAC_CK_XI"), | ||
835 | MTK_FUNCTION(7, "DBG_MON_A[31]") | ||
836 | ), | ||
837 | MTK_PIN( | ||
838 | PINCTRL_PIN(84, "DSI_TE"), | ||
839 | "W6", "mt8127", | ||
840 | MTK_EINT_FUNCTION(0, 85), | ||
841 | MTK_FUNCTION(0, "GPIO84"), | ||
842 | MTK_FUNCTION(1, "DSI_TE"), | ||
843 | MTK_FUNCTION(7, "DBG_MON_A[32]") | ||
844 | ), | ||
845 | MTK_PIN( | ||
846 | PINCTRL_PIN(85, "MSDC2_CMD"), | ||
847 | "U7", "mt8127", | ||
848 | MTK_EINT_FUNCTION(0, 86), | ||
849 | MTK_FUNCTION(0, "GPIO85"), | ||
850 | MTK_FUNCTION(1, "MSDC2_CMD"), | ||
851 | MTK_FUNCTION(2, "ANT_SEL0"), | ||
852 | MTK_FUNCTION(3, "SDA1"), | ||
853 | MTK_FUNCTION(6, "I2SOUT_BCK"), | ||
854 | MTK_FUNCTION(7, "DBG_MON_B[22]") | ||
855 | ), | ||
856 | MTK_PIN( | ||
857 | PINCTRL_PIN(86, "MSDC2_CLK"), | ||
858 | "T8", "mt8127", | ||
859 | MTK_EINT_FUNCTION(0, 87), | ||
860 | MTK_FUNCTION(0, "GPIO86"), | ||
861 | MTK_FUNCTION(1, "MSDC2_CLK"), | ||
862 | MTK_FUNCTION(2, "ANT_SEL1"), | ||
863 | MTK_FUNCTION(3, "SCL1"), | ||
864 | MTK_FUNCTION(6, "I2SOUT_LRCK"), | ||
865 | MTK_FUNCTION(7, "DBG_MON_B[23]") | ||
866 | ), | ||
867 | MTK_PIN( | ||
868 | PINCTRL_PIN(87, "MSDC2_DAT0"), | ||
869 | "V3", "mt8127", | ||
870 | MTK_EINT_FUNCTION(0, 88), | ||
871 | MTK_FUNCTION(0, "GPIO87"), | ||
872 | MTK_FUNCTION(1, "MSDC2_DAT0"), | ||
873 | MTK_FUNCTION(2, "ANT_SEL2"), | ||
874 | MTK_FUNCTION(5, "UTXD0"), | ||
875 | MTK_FUNCTION(6, "I2SOUT_DATA_OUT"), | ||
876 | MTK_FUNCTION(7, "DBG_MON_B[24]") | ||
877 | ), | ||
878 | MTK_PIN( | ||
879 | PINCTRL_PIN(88, "MSDC2_DAT1"), | ||
880 | "V4", "mt8127", | ||
881 | MTK_EINT_FUNCTION(0, 89), | ||
882 | MTK_FUNCTION(0, "GPIO88"), | ||
883 | MTK_FUNCTION(1, "MSDC2_DAT1"), | ||
884 | MTK_FUNCTION(2, "ANT_SEL3"), | ||
885 | MTK_FUNCTION(3, "PWM0"), | ||
886 | MTK_FUNCTION(5, "URXD0"), | ||
887 | MTK_FUNCTION(6, "PWM1"), | ||
888 | MTK_FUNCTION(7, "DBG_MON_B[25]") | ||
889 | ), | ||
890 | MTK_PIN( | ||
891 | PINCTRL_PIN(89, "MSDC2_DAT2"), | ||
892 | "U5", "mt8127", | ||
893 | MTK_EINT_FUNCTION(0, 90), | ||
894 | MTK_FUNCTION(0, "GPIO89"), | ||
895 | MTK_FUNCTION(1, "MSDC2_DAT2"), | ||
896 | MTK_FUNCTION(2, "ANT_SEL4"), | ||
897 | MTK_FUNCTION(3, "SDA2"), | ||
898 | MTK_FUNCTION(5, "UTXD1"), | ||
899 | MTK_FUNCTION(6, "PWM2"), | ||
900 | MTK_FUNCTION(7, "DBG_MON_B[26]") | ||
901 | ), | ||
902 | MTK_PIN( | ||
903 | PINCTRL_PIN(90, "MSDC2_DAT3"), | ||
904 | "U6", "mt8127", | ||
905 | MTK_EINT_FUNCTION(0, 91), | ||
906 | MTK_FUNCTION(0, "GPIO90"), | ||
907 | MTK_FUNCTION(1, "MSDC2_DAT3"), | ||
908 | MTK_FUNCTION(2, "ANT_SEL5"), | ||
909 | MTK_FUNCTION(3, "SCL2"), | ||
910 | MTK_FUNCTION(4, "EXT_FRAME_SYNC"), | ||
911 | MTK_FUNCTION(5, "URXD1"), | ||
912 | MTK_FUNCTION(6, "PWM3"), | ||
913 | MTK_FUNCTION(7, "DBG_MON_B[27]") | ||
914 | ), | ||
915 | MTK_PIN( | ||
916 | PINCTRL_PIN(91, "TDN3"), | ||
917 | "U2", "mt8127", | ||
918 | MTK_EINT_FUNCTION(0, 92), | ||
919 | MTK_FUNCTION(0, "GPI91"), | ||
920 | MTK_FUNCTION(1, "TDN3") | ||
921 | ), | ||
922 | MTK_PIN( | ||
923 | PINCTRL_PIN(92, "TDP3"), | ||
924 | "U1", "mt8127", | ||
925 | MTK_EINT_FUNCTION(0, 93), | ||
926 | MTK_FUNCTION(0, "GPI92"), | ||
927 | MTK_FUNCTION(1, "TDP3") | ||
928 | ), | ||
929 | MTK_PIN( | ||
930 | PINCTRL_PIN(93, "TDN2"), | ||
931 | "T2", "mt8127", | ||
932 | MTK_EINT_FUNCTION(0, 94), | ||
933 | MTK_FUNCTION(0, "GPI93"), | ||
934 | MTK_FUNCTION(1, "TDN2") | ||
935 | ), | ||
936 | MTK_PIN( | ||
937 | PINCTRL_PIN(94, "TDP2"), | ||
938 | "T1", "mt8127", | ||
939 | MTK_EINT_FUNCTION(0, 95), | ||
940 | MTK_FUNCTION(0, "GPI94"), | ||
941 | MTK_FUNCTION(1, "TDP2") | ||
942 | ), | ||
943 | MTK_PIN( | ||
944 | PINCTRL_PIN(95, "TCN"), | ||
945 | "R5", "mt8127", | ||
946 | MTK_EINT_FUNCTION(0, 96), | ||
947 | MTK_FUNCTION(0, "GPI95"), | ||
948 | MTK_FUNCTION(1, "TCN") | ||
949 | ), | ||
950 | MTK_PIN( | ||
951 | PINCTRL_PIN(96, "TCP"), | ||
952 | "R4", "mt8127", | ||
953 | MTK_EINT_FUNCTION(0, 97), | ||
954 | MTK_FUNCTION(0, "GPI96"), | ||
955 | MTK_FUNCTION(1, "TCP") | ||
956 | ), | ||
957 | MTK_PIN( | ||
958 | PINCTRL_PIN(97, "TDN1"), | ||
959 | "R3", "mt8127", | ||
960 | MTK_EINT_FUNCTION(0, 98), | ||
961 | MTK_FUNCTION(0, "GPI97"), | ||
962 | MTK_FUNCTION(1, "TDN1") | ||
963 | ), | ||
964 | MTK_PIN( | ||
965 | PINCTRL_PIN(98, "TDP1"), | ||
966 | "R2", "mt8127", | ||
967 | MTK_EINT_FUNCTION(0, 99), | ||
968 | MTK_FUNCTION(0, "GPI98"), | ||
969 | MTK_FUNCTION(1, "TDP1") | ||
970 | ), | ||
971 | MTK_PIN( | ||
972 | PINCTRL_PIN(99, "TDN0"), | ||
973 | "P3", "mt8127", | ||
974 | MTK_EINT_FUNCTION(0, 100), | ||
975 | MTK_FUNCTION(0, "GPI99"), | ||
976 | MTK_FUNCTION(1, "TDN0") | ||
977 | ), | ||
978 | MTK_PIN( | ||
979 | PINCTRL_PIN(100, "TDP0"), | ||
980 | "P2", "mt8127", | ||
981 | MTK_EINT_FUNCTION(0, 101), | ||
982 | MTK_FUNCTION(0, "GPI100"), | ||
983 | MTK_FUNCTION(1, "TDP0") | ||
984 | ), | ||
985 | MTK_PIN( | ||
986 | PINCTRL_PIN(101, "RDN0"), | ||
987 | "K1", "mt8127", | ||
988 | MTK_EINT_FUNCTION(0, 102), | ||
989 | MTK_FUNCTION(0, "GPI101"), | ||
990 | MTK_FUNCTION(1, "RDN0") | ||
991 | ), | ||
992 | MTK_PIN( | ||
993 | PINCTRL_PIN(102, "RDP0"), | ||
994 | "K2", "mt8127", | ||
995 | MTK_EINT_FUNCTION(0, 103), | ||
996 | MTK_FUNCTION(0, "GPI102"), | ||
997 | MTK_FUNCTION(1, "RDP0") | ||
998 | ), | ||
999 | MTK_PIN( | ||
1000 | PINCTRL_PIN(103, "RDN1"), | ||
1001 | "L2", "mt8127", | ||
1002 | MTK_EINT_FUNCTION(0, 104), | ||
1003 | MTK_FUNCTION(0, "GPI103"), | ||
1004 | MTK_FUNCTION(1, "RDN1") | ||
1005 | ), | ||
1006 | MTK_PIN( | ||
1007 | PINCTRL_PIN(104, "RDP1"), | ||
1008 | "L3", "mt8127", | ||
1009 | MTK_EINT_FUNCTION(0, 105), | ||
1010 | MTK_FUNCTION(0, "GPI104"), | ||
1011 | MTK_FUNCTION(1, "RDP1") | ||
1012 | ), | ||
1013 | MTK_PIN( | ||
1014 | PINCTRL_PIN(105, "RCN"), | ||
1015 | "M4", "mt8127", | ||
1016 | MTK_EINT_FUNCTION(0, 106), | ||
1017 | MTK_FUNCTION(0, "GPI105"), | ||
1018 | MTK_FUNCTION(1, "RCN") | ||
1019 | ), | ||
1020 | MTK_PIN( | ||
1021 | PINCTRL_PIN(106, "RCP"), | ||
1022 | "M5", "mt8127", | ||
1023 | MTK_EINT_FUNCTION(0, 107), | ||
1024 | MTK_FUNCTION(0, "GPI106"), | ||
1025 | MTK_FUNCTION(1, "RCP") | ||
1026 | ), | ||
1027 | MTK_PIN( | ||
1028 | PINCTRL_PIN(107, "RDN2"), | ||
1029 | "M2", "mt8127", | ||
1030 | MTK_EINT_FUNCTION(0, 108), | ||
1031 | MTK_FUNCTION(0, "GPI107"), | ||
1032 | MTK_FUNCTION(1, "RDN2"), | ||
1033 | MTK_FUNCTION(2, "CMDAT8") | ||
1034 | ), | ||
1035 | MTK_PIN( | ||
1036 | PINCTRL_PIN(108, "RDP2"), | ||
1037 | "M3", "mt8127", | ||
1038 | MTK_EINT_FUNCTION(0, 109), | ||
1039 | MTK_FUNCTION(0, "GPI108"), | ||
1040 | MTK_FUNCTION(1, "RDP2"), | ||
1041 | MTK_FUNCTION(2, "CMDAT9") | ||
1042 | ), | ||
1043 | MTK_PIN( | ||
1044 | PINCTRL_PIN(109, "RDN3"), | ||
1045 | "N2", "mt8127", | ||
1046 | MTK_EINT_FUNCTION(0, 110), | ||
1047 | MTK_FUNCTION(0, "GPI109"), | ||
1048 | MTK_FUNCTION(1, "RDN3"), | ||
1049 | MTK_FUNCTION(2, "CMDAT4") | ||
1050 | ), | ||
1051 | MTK_PIN( | ||
1052 | PINCTRL_PIN(110, "RDP3"), | ||
1053 | "N3", "mt8127", | ||
1054 | MTK_EINT_FUNCTION(0, 111), | ||
1055 | MTK_FUNCTION(0, "GPI110"), | ||
1056 | MTK_FUNCTION(1, "RDP3"), | ||
1057 | MTK_FUNCTION(2, "CMDAT5") | ||
1058 | ), | ||
1059 | MTK_PIN( | ||
1060 | PINCTRL_PIN(111, "RCN_A"), | ||
1061 | "J5", "mt8127", | ||
1062 | MTK_EINT_FUNCTION(0, 112), | ||
1063 | MTK_FUNCTION(0, "GPI111"), | ||
1064 | MTK_FUNCTION(1, "RCN_A"), | ||
1065 | MTK_FUNCTION(2, "CMDAT6") | ||
1066 | ), | ||
1067 | MTK_PIN( | ||
1068 | PINCTRL_PIN(112, "RCP_A"), | ||
1069 | "J4", "mt8127", | ||
1070 | MTK_EINT_FUNCTION(0, 113), | ||
1071 | MTK_FUNCTION(0, "GPI112"), | ||
1072 | MTK_FUNCTION(1, "RCP_A"), | ||
1073 | MTK_FUNCTION(2, "CMDAT7") | ||
1074 | ), | ||
1075 | MTK_PIN( | ||
1076 | PINCTRL_PIN(113, "RDN1_A"), | ||
1077 | "J2", "mt8127", | ||
1078 | MTK_EINT_FUNCTION(0, 114), | ||
1079 | MTK_FUNCTION(0, "GPI113"), | ||
1080 | MTK_FUNCTION(1, "RDN1_A"), | ||
1081 | MTK_FUNCTION(2, "CMDAT2"), | ||
1082 | MTK_FUNCTION(3, "CMCSD2") | ||
1083 | ), | ||
1084 | MTK_PIN( | ||
1085 | PINCTRL_PIN(114, "RDP1_A"), | ||
1086 | "J3", "mt8127", | ||
1087 | MTK_EINT_FUNCTION(0, 115), | ||
1088 | MTK_FUNCTION(0, "GPI114"), | ||
1089 | MTK_FUNCTION(1, "RDP1_A"), | ||
1090 | MTK_FUNCTION(2, "CMDAT3"), | ||
1091 | MTK_FUNCTION(3, "CMCSD3") | ||
1092 | ), | ||
1093 | MTK_PIN( | ||
1094 | PINCTRL_PIN(115, "RDN0_A"), | ||
1095 | "H2", "mt8127", | ||
1096 | MTK_EINT_FUNCTION(0, 116), | ||
1097 | MTK_FUNCTION(0, "GPI115"), | ||
1098 | MTK_FUNCTION(1, "RDN0_A"), | ||
1099 | MTK_FUNCTION(2, "CMHSYNC") | ||
1100 | ), | ||
1101 | MTK_PIN( | ||
1102 | PINCTRL_PIN(116, "RDP0_A"), | ||
1103 | "H3", "mt8127", | ||
1104 | MTK_EINT_FUNCTION(0, 117), | ||
1105 | MTK_FUNCTION(0, "GPI116"), | ||
1106 | MTK_FUNCTION(1, "RDP0_A"), | ||
1107 | MTK_FUNCTION(2, "CMVSYNC") | ||
1108 | ), | ||
1109 | MTK_PIN( | ||
1110 | PINCTRL_PIN(117, "CMDAT0"), | ||
1111 | "G5", "mt8127", | ||
1112 | MTK_EINT_FUNCTION(0, 118), | ||
1113 | MTK_FUNCTION(0, "GPIO117"), | ||
1114 | MTK_FUNCTION(1, "CMDAT0"), | ||
1115 | MTK_FUNCTION(2, "CMCSD0"), | ||
1116 | MTK_FUNCTION(3, "ANT_SEL2"), | ||
1117 | MTK_FUNCTION(7, "DBG_MON_B[28]") | ||
1118 | ), | ||
1119 | MTK_PIN( | ||
1120 | PINCTRL_PIN(118, "CMDAT1"), | ||
1121 | "G4", "mt8127", | ||
1122 | MTK_EINT_FUNCTION(0, 119), | ||
1123 | MTK_FUNCTION(0, "GPIO118"), | ||
1124 | MTK_FUNCTION(1, "CMDAT1"), | ||
1125 | MTK_FUNCTION(2, "CMCSD1"), | ||
1126 | MTK_FUNCTION(3, "ANT_SEL3"), | ||
1127 | MTK_FUNCTION(7, "DBG_MON_B[29]") | ||
1128 | ), | ||
1129 | MTK_PIN( | ||
1130 | PINCTRL_PIN(119, "CMMCLK"), | ||
1131 | "F3", "mt8127", | ||
1132 | MTK_EINT_FUNCTION(0, 120), | ||
1133 | MTK_FUNCTION(0, "GPIO119"), | ||
1134 | MTK_FUNCTION(1, "CMMCLK"), | ||
1135 | MTK_FUNCTION(3, "ANT_SEL4"), | ||
1136 | MTK_FUNCTION(7, "DBG_MON_B[30]") | ||
1137 | ), | ||
1138 | MTK_PIN( | ||
1139 | PINCTRL_PIN(120, "CMPCLK"), | ||
1140 | "G6", "mt8127", | ||
1141 | MTK_EINT_FUNCTION(0, 121), | ||
1142 | MTK_FUNCTION(0, "GPIO120"), | ||
1143 | MTK_FUNCTION(1, "CMPCLK"), | ||
1144 | MTK_FUNCTION(2, "CMCSK"), | ||
1145 | MTK_FUNCTION(3, "ANT_SEL5"), | ||
1146 | MTK_FUNCTION(7, "DBG_MON_B[31]") | ||
1147 | ), | ||
1148 | MTK_PIN( | ||
1149 | PINCTRL_PIN(121, "MSDC1_CMD"), | ||
1150 | "E3", "mt8127", | ||
1151 | MTK_EINT_FUNCTION(0, 122), | ||
1152 | MTK_FUNCTION(0, "GPIO121"), | ||
1153 | MTK_FUNCTION(1, "MSDC1_CMD") | ||
1154 | ), | ||
1155 | MTK_PIN( | ||
1156 | PINCTRL_PIN(122, "MSDC1_CLK"), | ||
1157 | "D1", "mt8127", | ||
1158 | MTK_EINT_FUNCTION(0, 123), | ||
1159 | MTK_FUNCTION(0, "GPIO122"), | ||
1160 | MTK_FUNCTION(1, "MSDC1_CLK") | ||
1161 | ), | ||
1162 | MTK_PIN( | ||
1163 | PINCTRL_PIN(123, "MSDC1_DAT0"), | ||
1164 | "D2", "mt8127", | ||
1165 | MTK_EINT_FUNCTION(0, 124), | ||
1166 | MTK_FUNCTION(0, "GPIO123"), | ||
1167 | MTK_FUNCTION(1, "MSDC1_DAT0") | ||
1168 | ), | ||
1169 | MTK_PIN( | ||
1170 | PINCTRL_PIN(124, "MSDC1_DAT1"), | ||
1171 | "D3", "mt8127", | ||
1172 | MTK_EINT_FUNCTION(0, 125), | ||
1173 | MTK_FUNCTION(0, "GPIO124"), | ||
1174 | MTK_FUNCTION(1, "MSDC1_DAT1") | ||
1175 | ), | ||
1176 | MTK_PIN( | ||
1177 | PINCTRL_PIN(125, "MSDC1_DAT2"), | ||
1178 | "F2", "mt8127", | ||
1179 | MTK_EINT_FUNCTION(0, 126), | ||
1180 | MTK_FUNCTION(0, "GPIO125"), | ||
1181 | MTK_FUNCTION(1, "MSDC1_DAT2") | ||
1182 | ), | ||
1183 | MTK_PIN( | ||
1184 | PINCTRL_PIN(126, "MSDC1_DAT3"), | ||
1185 | "E2", "mt8127", | ||
1186 | MTK_EINT_FUNCTION(0, 127), | ||
1187 | MTK_FUNCTION(0, "GPIO126"), | ||
1188 | MTK_FUNCTION(1, "MSDC1_DAT3") | ||
1189 | ), | ||
1190 | MTK_PIN( | ||
1191 | PINCTRL_PIN(127, "MSDC0_DAT7"), | ||
1192 | "C23", "mt8127", | ||
1193 | MTK_EINT_FUNCTION(0, 128), | ||
1194 | MTK_FUNCTION(0, "GPIO127"), | ||
1195 | MTK_FUNCTION(1, "MSDC0_DAT7"), | ||
1196 | MTK_FUNCTION(4, "NLD7") | ||
1197 | ), | ||
1198 | MTK_PIN( | ||
1199 | PINCTRL_PIN(128, "MSDC0_DAT6"), | ||
1200 | "C24", "mt8127", | ||
1201 | MTK_EINT_FUNCTION(0, 129), | ||
1202 | MTK_FUNCTION(0, "GPIO128"), | ||
1203 | MTK_FUNCTION(1, "MSDC0_DAT6"), | ||
1204 | MTK_FUNCTION(4, "NLD6") | ||
1205 | ), | ||
1206 | MTK_PIN( | ||
1207 | PINCTRL_PIN(129, "MSDC0_DAT5"), | ||
1208 | "D22", "mt8127", | ||
1209 | MTK_EINT_FUNCTION(0, 130), | ||
1210 | MTK_FUNCTION(0, "GPIO129"), | ||
1211 | MTK_FUNCTION(1, "MSDC0_DAT5"), | ||
1212 | MTK_FUNCTION(4, "NLD4") | ||
1213 | ), | ||
1214 | MTK_PIN( | ||
1215 | PINCTRL_PIN(130, "MSDC0_DAT4"), | ||
1216 | "D24", "mt8127", | ||
1217 | MTK_EINT_FUNCTION(0, 131), | ||
1218 | MTK_FUNCTION(0, "GPIO130"), | ||
1219 | MTK_FUNCTION(1, "MSDC0_DAT4"), | ||
1220 | MTK_FUNCTION(4, "NLD3") | ||
1221 | ), | ||
1222 | MTK_PIN( | ||
1223 | PINCTRL_PIN(131, "MSDC0_RSTB"), | ||
1224 | "F24", "mt8127", | ||
1225 | MTK_EINT_FUNCTION(0, 132), | ||
1226 | MTK_FUNCTION(0, "GPIO131"), | ||
1227 | MTK_FUNCTION(1, "MSDC0_RSTB"), | ||
1228 | MTK_FUNCTION(4, "NLD0") | ||
1229 | ), | ||
1230 | MTK_PIN( | ||
1231 | PINCTRL_PIN(132, "MSDC0_CMD"), | ||
1232 | "G20", "mt8127", | ||
1233 | MTK_EINT_FUNCTION(0, 133), | ||
1234 | MTK_FUNCTION(0, "GPIO132"), | ||
1235 | MTK_FUNCTION(1, "MSDC0_CMD"), | ||
1236 | MTK_FUNCTION(4, "NALE") | ||
1237 | ), | ||
1238 | MTK_PIN( | ||
1239 | PINCTRL_PIN(133, "MSDC0_CLK"), | ||
1240 | "G21", "mt8127", | ||
1241 | MTK_EINT_FUNCTION(0, 134), | ||
1242 | MTK_FUNCTION(0, "GPIO133"), | ||
1243 | MTK_FUNCTION(1, "MSDC0_CLK"), | ||
1244 | MTK_FUNCTION(4, "NWEB") | ||
1245 | ), | ||
1246 | MTK_PIN( | ||
1247 | PINCTRL_PIN(134, "MSDC0_DAT3"), | ||
1248 | "D23", "mt8127", | ||
1249 | MTK_EINT_FUNCTION(0, 135), | ||
1250 | MTK_FUNCTION(0, "GPIO134"), | ||
1251 | MTK_FUNCTION(1, "MSDC0_DAT3"), | ||
1252 | MTK_FUNCTION(4, "NLD1") | ||
1253 | ), | ||
1254 | MTK_PIN( | ||
1255 | PINCTRL_PIN(135, "MSDC0_DAT2"), | ||
1256 | "E22", "mt8127", | ||
1257 | MTK_EINT_FUNCTION(0, 136), | ||
1258 | MTK_FUNCTION(0, "GPIO135"), | ||
1259 | MTK_FUNCTION(1, "MSDC0_DAT2"), | ||
1260 | MTK_FUNCTION(4, "NLD5") | ||
1261 | ), | ||
1262 | MTK_PIN( | ||
1263 | PINCTRL_PIN(136, "MSDC0_DAT1"), | ||
1264 | "E23", "mt8127", | ||
1265 | MTK_EINT_FUNCTION(0, 137), | ||
1266 | MTK_FUNCTION(0, "GPIO136"), | ||
1267 | MTK_FUNCTION(1, "MSDC0_DAT1"), | ||
1268 | MTK_FUNCTION(4, "NLD8") | ||
1269 | ), | ||
1270 | MTK_PIN( | ||
1271 | PINCTRL_PIN(137, "MSDC0_DAT0"), | ||
1272 | "F22", "mt8127", | ||
1273 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
1274 | MTK_FUNCTION(0, "GPIO137"), | ||
1275 | MTK_FUNCTION(1, "MSDC0_DAT0"), | ||
1276 | MTK_FUNCTION(4, "WATCHDOG"), | ||
1277 | MTK_FUNCTION(5, "NLD2") | ||
1278 | ), | ||
1279 | MTK_PIN( | ||
1280 | PINCTRL_PIN(138, "CEC"), | ||
1281 | "AE21", "mt8127", | ||
1282 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
1283 | MTK_FUNCTION(0, "GPIO138"), | ||
1284 | MTK_FUNCTION(1, "CEC") | ||
1285 | ), | ||
1286 | MTK_PIN( | ||
1287 | PINCTRL_PIN(139, "HTPLG"), | ||
1288 | "AD21", "mt8127", | ||
1289 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
1290 | MTK_FUNCTION(0, "GPIO139"), | ||
1291 | MTK_FUNCTION(1, "HTPLG") | ||
1292 | ), | ||
1293 | MTK_PIN( | ||
1294 | PINCTRL_PIN(140, "HDMISCK"), | ||
1295 | "AE22", "mt8127", | ||
1296 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
1297 | MTK_FUNCTION(0, "GPIO140"), | ||
1298 | MTK_FUNCTION(1, "HDMISCK") | ||
1299 | ), | ||
1300 | MTK_PIN( | ||
1301 | PINCTRL_PIN(141, "HDMISD"), | ||
1302 | "AD22", "mt8127", | ||
1303 | MTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT), | ||
1304 | MTK_FUNCTION(0, "GPIO141"), | ||
1305 | MTK_FUNCTION(1, "HDMISD") | ||
1306 | ), | ||
1307 | MTK_PIN( | ||
1308 | PINCTRL_PIN(142, "EINT21"), | ||
1309 | "J23", "mt8127", | ||
1310 | MTK_EINT_FUNCTION(0, 21), | ||
1311 | MTK_FUNCTION(0, "GPIO142"), | ||
1312 | MTK_FUNCTION(1, "NRNB"), | ||
1313 | MTK_FUNCTION(2, "ANT_SEL0"), | ||
1314 | MTK_FUNCTION(7, "DBG_MON_B[32]") | ||
1315 | ), | ||
1316 | }; | ||
1317 | |||
1318 | #endif /* __PINCTRL_MTK_MT8127_H */ | ||
diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c index a70a5fe79d44..84943e4cff09 100644 --- a/drivers/pinctrl/meson/pinctrl-meson.c +++ b/drivers/pinctrl/meson/pinctrl-meson.c | |||
@@ -738,9 +738,9 @@ static int meson_pinctrl_probe(struct platform_device *pdev) | |||
738 | pc->desc.npins = pc->data->num_pins; | 738 | pc->desc.npins = pc->data->num_pins; |
739 | 739 | ||
740 | pc->pcdev = pinctrl_register(&pc->desc, pc->dev, pc); | 740 | pc->pcdev = pinctrl_register(&pc->desc, pc->dev, pc); |
741 | if (!pc->pcdev) { | 741 | if (IS_ERR(pc->pcdev)) { |
742 | dev_err(pc->dev, "can't register pinctrl device"); | 742 | dev_err(pc->dev, "can't register pinctrl device"); |
743 | return -EINVAL; | 743 | return PTR_ERR(pc->pcdev); |
744 | } | 744 | } |
745 | 745 | ||
746 | ret = meson_gpiolib_register(pc); | 746 | ret = meson_gpiolib_register(pc); |
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-370.c b/drivers/pinctrl/mvebu/pinctrl-armada-370.c index 03aa58c4cb85..73dc1bc5f32c 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-370.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-370.c | |||
@@ -52,12 +52,12 @@ static struct mvebu_mpp_mode mv88f6710_mpp_modes[] = { | |||
52 | MPP_FUNCTION(0x2, "uart0", "rxd")), | 52 | MPP_FUNCTION(0x2, "uart0", "rxd")), |
53 | MPP_MODE(4, | 53 | MPP_MODE(4, |
54 | MPP_FUNCTION(0x0, "gpio", NULL), | 54 | MPP_FUNCTION(0x0, "gpio", NULL), |
55 | MPP_FUNCTION(0x1, "cpu_pd", "vdd")), | 55 | MPP_FUNCTION(0x1, "vdd", "cpu-pd")), |
56 | MPP_MODE(5, | 56 | MPP_MODE(5, |
57 | MPP_FUNCTION(0x0, "gpo", NULL), | 57 | MPP_FUNCTION(0x0, "gpo", NULL), |
58 | MPP_FUNCTION(0x1, "ge0", "txclko"), | 58 | MPP_FUNCTION(0x1, "ge0", "txclkout"), |
59 | MPP_FUNCTION(0x2, "uart1", "txd"), | 59 | MPP_FUNCTION(0x2, "uart1", "txd"), |
60 | MPP_FUNCTION(0x4, "spi1", "clk"), | 60 | MPP_FUNCTION(0x4, "spi1", "sck"), |
61 | MPP_FUNCTION(0x5, "audio", "mclk")), | 61 | MPP_FUNCTION(0x5, "audio", "mclk")), |
62 | MPP_MODE(6, | 62 | MPP_MODE(6, |
63 | MPP_FUNCTION(0x0, "gpio", NULL), | 63 | MPP_FUNCTION(0x0, "gpio", NULL), |
@@ -68,7 +68,7 @@ static struct mvebu_mpp_mode mv88f6710_mpp_modes[] = { | |||
68 | MPP_MODE(7, | 68 | MPP_MODE(7, |
69 | MPP_FUNCTION(0x0, "gpo", NULL), | 69 | MPP_FUNCTION(0x0, "gpo", NULL), |
70 | MPP_FUNCTION(0x1, "ge0", "txd1"), | 70 | MPP_FUNCTION(0x1, "ge0", "txd1"), |
71 | MPP_FUNCTION(0x4, "tdm", "tdx"), | 71 | MPP_FUNCTION(0x4, "tdm", "dtx"), |
72 | MPP_FUNCTION(0x5, "audio", "lrclk")), | 72 | MPP_FUNCTION(0x5, "audio", "lrclk")), |
73 | MPP_MODE(8, | 73 | MPP_MODE(8, |
74 | MPP_FUNCTION(0x0, "gpio", NULL), | 74 | MPP_FUNCTION(0x0, "gpio", NULL), |
@@ -207,11 +207,11 @@ static struct mvebu_mpp_mode mv88f6710_mpp_modes[] = { | |||
207 | MPP_FUNCTION(0x2, "spi0", "cs0")), | 207 | MPP_FUNCTION(0x2, "spi0", "cs0")), |
208 | MPP_MODE(34, | 208 | MPP_MODE(34, |
209 | MPP_FUNCTION(0x0, "gpo", NULL), | 209 | MPP_FUNCTION(0x0, "gpo", NULL), |
210 | MPP_FUNCTION(0x1, "dev", "wen0"), | 210 | MPP_FUNCTION(0x1, "dev", "we0"), |
211 | MPP_FUNCTION(0x2, "spi0", "mosi")), | 211 | MPP_FUNCTION(0x2, "spi0", "mosi")), |
212 | MPP_MODE(35, | 212 | MPP_MODE(35, |
213 | MPP_FUNCTION(0x0, "gpo", NULL), | 213 | MPP_FUNCTION(0x0, "gpo", NULL), |
214 | MPP_FUNCTION(0x1, "dev", "oen"), | 214 | MPP_FUNCTION(0x1, "dev", "oe"), |
215 | MPP_FUNCTION(0x2, "spi0", "sck")), | 215 | MPP_FUNCTION(0x2, "spi0", "sck")), |
216 | MPP_MODE(36, | 216 | MPP_MODE(36, |
217 | MPP_FUNCTION(0x0, "gpo", NULL), | 217 | MPP_FUNCTION(0x0, "gpo", NULL), |
@@ -348,13 +348,13 @@ static struct mvebu_mpp_mode mv88f6710_mpp_modes[] = { | |||
348 | MPP_FUNCTION(0x1, "dev", "ale1"), | 348 | MPP_FUNCTION(0x1, "dev", "ale1"), |
349 | MPP_FUNCTION(0x2, "uart1", "rxd"), | 349 | MPP_FUNCTION(0x2, "uart1", "rxd"), |
350 | MPP_FUNCTION(0x3, "sata0", "prsnt"), | 350 | MPP_FUNCTION(0x3, "sata0", "prsnt"), |
351 | MPP_FUNCTION(0x4, "pcie", "rst-out"), | 351 | MPP_FUNCTION(0x4, "pcie", "rstout"), |
352 | MPP_FUNCTION(0x5, "audio", "sdi")), | 352 | MPP_FUNCTION(0x5, "audio", "sdi")), |
353 | MPP_MODE(61, | 353 | MPP_MODE(61, |
354 | MPP_FUNCTION(0x0, "gpo", NULL), | 354 | MPP_FUNCTION(0x0, "gpo", NULL), |
355 | MPP_FUNCTION(0x1, "dev", "wen1"), | 355 | MPP_FUNCTION(0x1, "dev", "we1"), |
356 | MPP_FUNCTION(0x2, "uart1", "txd"), | 356 | MPP_FUNCTION(0x2, "uart1", "txd"), |
357 | MPP_FUNCTION(0x5, "audio", "rclk")), | 357 | MPP_FUNCTION(0x5, "audio", "lrclk")), |
358 | MPP_MODE(62, | 358 | MPP_MODE(62, |
359 | MPP_FUNCTION(0x0, "gpio", NULL), | 359 | MPP_FUNCTION(0x0, "gpio", NULL), |
360 | MPP_FUNCTION(0x1, "dev", "a2"), | 360 | MPP_FUNCTION(0x1, "dev", "a2"), |
@@ -370,11 +370,11 @@ static struct mvebu_mpp_mode mv88f6710_mpp_modes[] = { | |||
370 | MPP_MODE(64, | 370 | MPP_MODE(64, |
371 | MPP_FUNCTION(0x0, "gpio", NULL), | 371 | MPP_FUNCTION(0x0, "gpio", NULL), |
372 | MPP_FUNCTION(0x1, "spi0", "miso"), | 372 | MPP_FUNCTION(0x1, "spi0", "miso"), |
373 | MPP_FUNCTION(0x2, "spi0-1", "cs1")), | 373 | MPP_FUNCTION(0x2, "spi0", "cs1")), |
374 | MPP_MODE(65, | 374 | MPP_MODE(65, |
375 | MPP_FUNCTION(0x0, "gpio", NULL), | 375 | MPP_FUNCTION(0x0, "gpio", NULL), |
376 | MPP_FUNCTION(0x1, "spi0", "mosi"), | 376 | MPP_FUNCTION(0x1, "spi0", "mosi"), |
377 | MPP_FUNCTION(0x2, "spi0-1", "cs2")), | 377 | MPP_FUNCTION(0x2, "spi0", "cs2")), |
378 | }; | 378 | }; |
379 | 379 | ||
380 | static struct mvebu_pinctrl_soc_info armada_370_pinctrl_info; | 380 | static struct mvebu_pinctrl_soc_info armada_370_pinctrl_info; |
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-375.c b/drivers/pinctrl/mvebu/pinctrl-armada-375.c index ca1e7571fedb..54e9fbd0121f 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-375.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-375.c | |||
@@ -51,7 +51,7 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
51 | MPP_MODE(2, | 51 | MPP_MODE(2, |
52 | MPP_FUNCTION(0x0, "gpio", NULL), | 52 | MPP_FUNCTION(0x0, "gpio", NULL), |
53 | MPP_FUNCTION(0x1, "dev", "ad4"), | 53 | MPP_FUNCTION(0x1, "dev", "ad4"), |
54 | MPP_FUNCTION(0x2, "ptp", "eventreq"), | 54 | MPP_FUNCTION(0x2, "ptp", "evreq"), |
55 | MPP_FUNCTION(0x3, "led", "c0"), | 55 | MPP_FUNCTION(0x3, "led", "c0"), |
56 | MPP_FUNCTION(0x4, "audio", "sdi"), | 56 | MPP_FUNCTION(0x4, "audio", "sdi"), |
57 | MPP_FUNCTION(0x5, "nand", "io4"), | 57 | MPP_FUNCTION(0x5, "nand", "io4"), |
@@ -59,7 +59,7 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
59 | MPP_MODE(3, | 59 | MPP_MODE(3, |
60 | MPP_FUNCTION(0x0, "gpio", NULL), | 60 | MPP_FUNCTION(0x0, "gpio", NULL), |
61 | MPP_FUNCTION(0x1, "dev", "ad5"), | 61 | MPP_FUNCTION(0x1, "dev", "ad5"), |
62 | MPP_FUNCTION(0x2, "ptp", "triggen"), | 62 | MPP_FUNCTION(0x2, "ptp", "trig"), |
63 | MPP_FUNCTION(0x3, "led", "p3"), | 63 | MPP_FUNCTION(0x3, "led", "p3"), |
64 | MPP_FUNCTION(0x4, "audio", "mclk"), | 64 | MPP_FUNCTION(0x4, "audio", "mclk"), |
65 | MPP_FUNCTION(0x5, "nand", "io5"), | 65 | MPP_FUNCTION(0x5, "nand", "io5"), |
@@ -81,7 +81,7 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
81 | MPP_FUNCTION(0x0, "gpio", NULL), | 81 | MPP_FUNCTION(0x0, "gpio", NULL), |
82 | MPP_FUNCTION(0x1, "dev", "ad0"), | 82 | MPP_FUNCTION(0x1, "dev", "ad0"), |
83 | MPP_FUNCTION(0x3, "led", "p1"), | 83 | MPP_FUNCTION(0x3, "led", "p1"), |
84 | MPP_FUNCTION(0x4, "audio", "rclk"), | 84 | MPP_FUNCTION(0x4, "audio", "lrclk"), |
85 | MPP_FUNCTION(0x5, "nand", "io0")), | 85 | MPP_FUNCTION(0x5, "nand", "io0")), |
86 | MPP_MODE(7, | 86 | MPP_MODE(7, |
87 | MPP_FUNCTION(0x0, "gpio", NULL), | 87 | MPP_FUNCTION(0x0, "gpio", NULL), |
@@ -92,19 +92,17 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
92 | MPP_FUNCTION(0x5, "nand", "io1")), | 92 | MPP_FUNCTION(0x5, "nand", "io1")), |
93 | MPP_MODE(8, | 93 | MPP_MODE(8, |
94 | MPP_FUNCTION(0x0, "gpio", NULL), | 94 | MPP_FUNCTION(0x0, "gpio", NULL), |
95 | MPP_FUNCTION(0x1, "dev ", "bootcs"), | 95 | MPP_FUNCTION(0x1, "dev", "bootcs"), |
96 | MPP_FUNCTION(0x2, "spi0", "cs0"), | 96 | MPP_FUNCTION(0x2, "spi0", "cs0"), |
97 | MPP_FUNCTION(0x3, "spi1", "cs0"), | 97 | MPP_FUNCTION(0x3, "spi1", "cs0"), |
98 | MPP_FUNCTION(0x5, "nand", "ce")), | 98 | MPP_FUNCTION(0x5, "nand", "ce")), |
99 | MPP_MODE(9, | 99 | MPP_MODE(9, |
100 | MPP_FUNCTION(0x0, "gpio", NULL), | 100 | MPP_FUNCTION(0x0, "gpio", NULL), |
101 | MPP_FUNCTION(0x1, "nf", "wen"), | ||
102 | MPP_FUNCTION(0x2, "spi0", "sck"), | 101 | MPP_FUNCTION(0x2, "spi0", "sck"), |
103 | MPP_FUNCTION(0x3, "spi1", "sck"), | 102 | MPP_FUNCTION(0x3, "spi1", "sck"), |
104 | MPP_FUNCTION(0x5, "nand", "we")), | 103 | MPP_FUNCTION(0x5, "nand", "we")), |
105 | MPP_MODE(10, | 104 | MPP_MODE(10, |
106 | MPP_FUNCTION(0x0, "gpio", NULL), | 105 | MPP_FUNCTION(0x0, "gpio", NULL), |
107 | MPP_FUNCTION(0x1, "nf", "ren"), | ||
108 | MPP_FUNCTION(0x2, "dram", "vttctrl"), | 106 | MPP_FUNCTION(0x2, "dram", "vttctrl"), |
109 | MPP_FUNCTION(0x3, "led", "c1"), | 107 | MPP_FUNCTION(0x3, "led", "c1"), |
110 | MPP_FUNCTION(0x5, "nand", "re"), | 108 | MPP_FUNCTION(0x5, "nand", "re"), |
@@ -122,9 +120,9 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
122 | MPP_FUNCTION(0x5, "nand", "ale")), | 120 | MPP_FUNCTION(0x5, "nand", "ale")), |
123 | MPP_MODE(13, | 121 | MPP_MODE(13, |
124 | MPP_FUNCTION(0x0, "gpio", NULL), | 122 | MPP_FUNCTION(0x0, "gpio", NULL), |
125 | MPP_FUNCTION(0x1, "dev", "readyn"), | 123 | MPP_FUNCTION(0x1, "dev", "ready"), |
126 | MPP_FUNCTION(0x2, "pcie0", "rstoutn"), | 124 | MPP_FUNCTION(0x2, "pcie0", "rstout"), |
127 | MPP_FUNCTION(0x3, "pcie1", "rstoutn"), | 125 | MPP_FUNCTION(0x3, "pcie1", "rstout"), |
128 | MPP_FUNCTION(0x5, "nand", "rb"), | 126 | MPP_FUNCTION(0x5, "nand", "rb"), |
129 | MPP_FUNCTION(0x6, "spi1", "mosi")), | 127 | MPP_FUNCTION(0x6, "spi1", "mosi")), |
130 | MPP_MODE(14, | 128 | MPP_MODE(14, |
@@ -143,10 +141,10 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
143 | MPP_FUNCTION(0x2, "uart0", "rxd")), | 141 | MPP_FUNCTION(0x2, "uart0", "rxd")), |
144 | MPP_MODE(18, | 142 | MPP_MODE(18, |
145 | MPP_FUNCTION(0x0, "gpio", NULL), | 143 | MPP_FUNCTION(0x0, "gpio", NULL), |
146 | MPP_FUNCTION(0x2, "tdm", "intn")), | 144 | MPP_FUNCTION(0x2, "tdm", "int")), |
147 | MPP_MODE(19, | 145 | MPP_MODE(19, |
148 | MPP_FUNCTION(0x0, "gpio", NULL), | 146 | MPP_FUNCTION(0x0, "gpio", NULL), |
149 | MPP_FUNCTION(0x2, "tdm", "rstn")), | 147 | MPP_FUNCTION(0x2, "tdm", "rst")), |
150 | MPP_MODE(20, | 148 | MPP_MODE(20, |
151 | MPP_FUNCTION(0x0, "gpio", NULL), | 149 | MPP_FUNCTION(0x0, "gpio", NULL), |
152 | MPP_FUNCTION(0x2, "tdm", "pclk")), | 150 | MPP_FUNCTION(0x2, "tdm", "pclk")), |
@@ -203,13 +201,13 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
203 | MPP_FUNCTION(0x2, "ge1", "rxclk"), | 201 | MPP_FUNCTION(0x2, "ge1", "rxclk"), |
204 | MPP_FUNCTION(0x3, "sd", "d3"), | 202 | MPP_FUNCTION(0x3, "sd", "d3"), |
205 | MPP_FUNCTION(0x5, "spi0", "sck"), | 203 | MPP_FUNCTION(0x5, "spi0", "sck"), |
206 | MPP_FUNCTION(0x6, "pcie0", "rstoutn")), | 204 | MPP_FUNCTION(0x6, "pcie0", "rstout")), |
207 | MPP_MODE(30, | 205 | MPP_MODE(30, |
208 | MPP_FUNCTION(0x0, "gpio", NULL), | 206 | MPP_FUNCTION(0x0, "gpio", NULL), |
209 | MPP_FUNCTION(0x2, "ge1", "txd0"), | 207 | MPP_FUNCTION(0x2, "ge1", "txd0"), |
210 | MPP_FUNCTION(0x3, "spi1", "cs0"), | 208 | MPP_FUNCTION(0x3, "spi1", "cs0"), |
211 | MPP_FUNCTION(0x5, "led", "p3"), | 209 | MPP_FUNCTION(0x5, "led", "p3"), |
212 | MPP_FUNCTION(0x6, "ptp", "eventreq")), | 210 | MPP_FUNCTION(0x6, "ptp", "evreq")), |
213 | MPP_MODE(31, | 211 | MPP_MODE(31, |
214 | MPP_FUNCTION(0x0, "gpio", NULL), | 212 | MPP_FUNCTION(0x0, "gpio", NULL), |
215 | MPP_FUNCTION(0x2, "ge1", "txd1"), | 213 | MPP_FUNCTION(0x2, "ge1", "txd1"), |
@@ -219,7 +217,7 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
219 | MPP_FUNCTION(0x0, "gpio", NULL), | 217 | MPP_FUNCTION(0x0, "gpio", NULL), |
220 | MPP_FUNCTION(0x2, "ge1", "txd2"), | 218 | MPP_FUNCTION(0x2, "ge1", "txd2"), |
221 | MPP_FUNCTION(0x3, "spi1", "sck"), | 219 | MPP_FUNCTION(0x3, "spi1", "sck"), |
222 | MPP_FUNCTION(0x4, "ptp", "triggen"), | 220 | MPP_FUNCTION(0x4, "ptp", "trig"), |
223 | MPP_FUNCTION(0x5, "led", "c0")), | 221 | MPP_FUNCTION(0x5, "led", "c0")), |
224 | MPP_MODE(33, | 222 | MPP_MODE(33, |
225 | MPP_FUNCTION(0x0, "gpio", NULL), | 223 | MPP_FUNCTION(0x0, "gpio", NULL), |
@@ -244,7 +242,7 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
244 | MPP_MODE(37, | 242 | MPP_MODE(37, |
245 | MPP_FUNCTION(0x0, "gpio", NULL), | 243 | MPP_FUNCTION(0x0, "gpio", NULL), |
246 | MPP_FUNCTION(0x1, "pcie0", "clkreq"), | 244 | MPP_FUNCTION(0x1, "pcie0", "clkreq"), |
247 | MPP_FUNCTION(0x2, "tdm", "intn"), | 245 | MPP_FUNCTION(0x2, "tdm", "int"), |
248 | MPP_FUNCTION(0x4, "ge", "mdc")), | 246 | MPP_FUNCTION(0x4, "ge", "mdc")), |
249 | MPP_MODE(38, | 247 | MPP_MODE(38, |
250 | MPP_FUNCTION(0x0, "gpio", NULL), | 248 | MPP_FUNCTION(0x0, "gpio", NULL), |
@@ -278,7 +276,7 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
278 | MPP_MODE(45, | 276 | MPP_MODE(45, |
279 | MPP_FUNCTION(0x0, "gpio", NULL), | 277 | MPP_FUNCTION(0x0, "gpio", NULL), |
280 | MPP_FUNCTION(0x2, "spi0", "cs2"), | 278 | MPP_FUNCTION(0x2, "spi0", "cs2"), |
281 | MPP_FUNCTION(0x4, "pcie0", "rstoutn"), | 279 | MPP_FUNCTION(0x4, "pcie0", "rstout"), |
282 | MPP_FUNCTION(0x5, "led", "c2"), | 280 | MPP_FUNCTION(0x5, "led", "c2"), |
283 | MPP_FUNCTION(0x6, "spi1", "cs2")), | 281 | MPP_FUNCTION(0x6, "spi1", "cs2")), |
284 | MPP_MODE(46, | 282 | MPP_MODE(46, |
@@ -286,13 +284,13 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
286 | MPP_FUNCTION(0x1, "led", "p0"), | 284 | MPP_FUNCTION(0x1, "led", "p0"), |
287 | MPP_FUNCTION(0x2, "ge0", "txd0"), | 285 | MPP_FUNCTION(0x2, "ge0", "txd0"), |
288 | MPP_FUNCTION(0x3, "ge1", "txd0"), | 286 | MPP_FUNCTION(0x3, "ge1", "txd0"), |
289 | MPP_FUNCTION(0x6, "dev", "wen1")), | 287 | MPP_FUNCTION(0x6, "dev", "we1")), |
290 | MPP_MODE(47, | 288 | MPP_MODE(47, |
291 | MPP_FUNCTION(0x0, "gpio", NULL), | 289 | MPP_FUNCTION(0x0, "gpio", NULL), |
292 | MPP_FUNCTION(0x1, "led", "p1"), | 290 | MPP_FUNCTION(0x1, "led", "p1"), |
293 | MPP_FUNCTION(0x2, "ge0", "txd1"), | 291 | MPP_FUNCTION(0x2, "ge0", "txd1"), |
294 | MPP_FUNCTION(0x3, "ge1", "txd1"), | 292 | MPP_FUNCTION(0x3, "ge1", "txd1"), |
295 | MPP_FUNCTION(0x5, "ptp", "triggen"), | 293 | MPP_FUNCTION(0x5, "ptp", "trig"), |
296 | MPP_FUNCTION(0x6, "dev", "ale0")), | 294 | MPP_FUNCTION(0x6, "dev", "ale0")), |
297 | MPP_MODE(48, | 295 | MPP_MODE(48, |
298 | MPP_FUNCTION(0x0, "gpio", NULL), | 296 | MPP_FUNCTION(0x0, "gpio", NULL), |
@@ -311,7 +309,7 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
311 | MPP_FUNCTION(0x1, "led", "c0"), | 309 | MPP_FUNCTION(0x1, "led", "c0"), |
312 | MPP_FUNCTION(0x2, "ge0", "rxd0"), | 310 | MPP_FUNCTION(0x2, "ge0", "rxd0"), |
313 | MPP_FUNCTION(0x3, "ge1", "rxd0"), | 311 | MPP_FUNCTION(0x3, "ge1", "rxd0"), |
314 | MPP_FUNCTION(0x5, "ptp", "eventreq"), | 312 | MPP_FUNCTION(0x5, "ptp", "evreq"), |
315 | MPP_FUNCTION(0x6, "dev", "ad12")), | 313 | MPP_FUNCTION(0x6, "dev", "ad12")), |
316 | MPP_MODE(51, | 314 | MPP_MODE(51, |
317 | MPP_FUNCTION(0x0, "gpio", NULL), | 315 | MPP_FUNCTION(0x0, "gpio", NULL), |
@@ -328,14 +326,14 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
328 | MPP_FUNCTION(0x6, "dev", "ad9")), | 326 | MPP_FUNCTION(0x6, "dev", "ad9")), |
329 | MPP_MODE(53, | 327 | MPP_MODE(53, |
330 | MPP_FUNCTION(0x0, "gpio", NULL), | 328 | MPP_FUNCTION(0x0, "gpio", NULL), |
331 | MPP_FUNCTION(0x1, "pcie1", "rstoutn"), | 329 | MPP_FUNCTION(0x1, "pcie1", "rstout"), |
332 | MPP_FUNCTION(0x2, "ge0", "rxd3"), | 330 | MPP_FUNCTION(0x2, "ge0", "rxd3"), |
333 | MPP_FUNCTION(0x3, "ge1", "rxd3"), | 331 | MPP_FUNCTION(0x3, "ge1", "rxd3"), |
334 | MPP_FUNCTION(0x5, "i2c0", "sck"), | 332 | MPP_FUNCTION(0x5, "i2c0", "sck"), |
335 | MPP_FUNCTION(0x6, "dev", "ad10")), | 333 | MPP_FUNCTION(0x6, "dev", "ad10")), |
336 | MPP_MODE(54, | 334 | MPP_MODE(54, |
337 | MPP_FUNCTION(0x0, "gpio", NULL), | 335 | MPP_FUNCTION(0x0, "gpio", NULL), |
338 | MPP_FUNCTION(0x1, "pcie0", "rstoutn"), | 336 | MPP_FUNCTION(0x1, "pcie0", "rstout"), |
339 | MPP_FUNCTION(0x2, "ge0", "rxctl"), | 337 | MPP_FUNCTION(0x2, "ge0", "rxctl"), |
340 | MPP_FUNCTION(0x3, "ge1", "rxctl"), | 338 | MPP_FUNCTION(0x3, "ge1", "rxctl"), |
341 | MPP_FUNCTION(0x6, "dev", "ad11")), | 339 | MPP_FUNCTION(0x6, "dev", "ad11")), |
@@ -353,7 +351,7 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
353 | MPP_FUNCTION(0x0, "gpio", NULL), | 351 | MPP_FUNCTION(0x0, "gpio", NULL), |
354 | MPP_FUNCTION(0x2, "ge0", "txctl"), | 352 | MPP_FUNCTION(0x2, "ge0", "txctl"), |
355 | MPP_FUNCTION(0x3, "ge1", "txctl"), | 353 | MPP_FUNCTION(0x3, "ge1", "txctl"), |
356 | MPP_FUNCTION(0x6, "dev", "wen0")), | 354 | MPP_FUNCTION(0x6, "dev", "we0")), |
357 | MPP_MODE(58, | 355 | MPP_MODE(58, |
358 | MPP_FUNCTION(0x0, "gpio", NULL), | 356 | MPP_FUNCTION(0x0, "gpio", NULL), |
359 | MPP_FUNCTION(0x4, "led", "c0")), | 357 | MPP_FUNCTION(0x4, "led", "c0")), |
@@ -379,9 +377,9 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
379 | MPP_FUNCTION(0x6, "dev", "ad15")), | 377 | MPP_FUNCTION(0x6, "dev", "ad15")), |
380 | MPP_MODE(63, | 378 | MPP_MODE(63, |
381 | MPP_FUNCTION(0x0, "gpio", NULL), | 379 | MPP_FUNCTION(0x0, "gpio", NULL), |
382 | MPP_FUNCTION(0x2, "ptp", "triggen"), | 380 | MPP_FUNCTION(0x2, "ptp", "trig"), |
383 | MPP_FUNCTION(0x4, "led", "p2"), | 381 | MPP_FUNCTION(0x4, "led", "p2"), |
384 | MPP_FUNCTION(0x6, "dev", "burst")), | 382 | MPP_FUNCTION(0x6, "dev", "burst/last")), |
385 | MPP_MODE(64, | 383 | MPP_MODE(64, |
386 | MPP_FUNCTION(0x0, "gpio", NULL), | 384 | MPP_FUNCTION(0x0, "gpio", NULL), |
387 | MPP_FUNCTION(0x2, "dram", "vttctrl"), | 385 | MPP_FUNCTION(0x2, "dram", "vttctrl"), |
@@ -391,9 +389,9 @@ static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { | |||
391 | MPP_FUNCTION(0x1, "sata1", "prsnt")), | 389 | MPP_FUNCTION(0x1, "sata1", "prsnt")), |
392 | MPP_MODE(66, | 390 | MPP_MODE(66, |
393 | MPP_FUNCTION(0x0, "gpio", NULL), | 391 | MPP_FUNCTION(0x0, "gpio", NULL), |
394 | MPP_FUNCTION(0x2, "ptp", "eventreq"), | 392 | MPP_FUNCTION(0x2, "ptp", "evreq"), |
395 | MPP_FUNCTION(0x4, "spi1", "cs3"), | 393 | MPP_FUNCTION(0x4, "spi1", "cs3"), |
396 | MPP_FUNCTION(0x5, "pcie0", "rstoutn"), | 394 | MPP_FUNCTION(0x5, "pcie0", "rstout"), |
397 | MPP_FUNCTION(0x6, "dev", "cs3")), | 395 | MPP_FUNCTION(0x6, "dev", "cs3")), |
398 | }; | 396 | }; |
399 | 397 | ||
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-38x.c b/drivers/pinctrl/mvebu/pinctrl-armada-38x.c index 83bbcc72be1f..6ec82c62dff7 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-38x.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-38x.c | |||
@@ -94,56 +94,58 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
94 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 94 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
95 | MPP_VAR_FUNCTION(1, "ge0", "rxd0", V_88F6810_PLUS), | 95 | MPP_VAR_FUNCTION(1, "ge0", "rxd0", V_88F6810_PLUS), |
96 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6810_PLUS), | 96 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6810_PLUS), |
97 | MPP_VAR_FUNCTION(3, "pcie1", "rstout", V_88F6820_PLUS), | ||
98 | MPP_VAR_FUNCTION(4, "spi0", "cs1", V_88F6810_PLUS), | 97 | MPP_VAR_FUNCTION(4, "spi0", "cs1", V_88F6810_PLUS), |
99 | MPP_VAR_FUNCTION(5, "dev", "ad14", V_88F6810_PLUS)), | 98 | MPP_VAR_FUNCTION(5, "dev", "ad14", V_88F6810_PLUS), |
99 | MPP_VAR_FUNCTION(6, "pcie3", "clkreq", V_88F6810_PLUS)), | ||
100 | MPP_MODE(13, | 100 | MPP_MODE(13, |
101 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 101 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
102 | MPP_VAR_FUNCTION(1, "ge0", "rxd1", V_88F6810_PLUS), | 102 | MPP_VAR_FUNCTION(1, "ge0", "rxd1", V_88F6810_PLUS), |
103 | MPP_VAR_FUNCTION(2, "pcie0", "clkreq", V_88F6810_PLUS), | 103 | MPP_VAR_FUNCTION(2, "pcie0", "clkreq", V_88F6810_PLUS), |
104 | MPP_VAR_FUNCTION(3, "pcie1", "clkreq", V_88F6820_PLUS), | 104 | MPP_VAR_FUNCTION(3, "pcie1", "clkreq", V_88F6820_PLUS), |
105 | MPP_VAR_FUNCTION(4, "spi0", "cs2", V_88F6810_PLUS), | 105 | MPP_VAR_FUNCTION(4, "spi0", "cs2", V_88F6810_PLUS), |
106 | MPP_VAR_FUNCTION(5, "dev", "ad15", V_88F6810_PLUS)), | 106 | MPP_VAR_FUNCTION(5, "dev", "ad15", V_88F6810_PLUS), |
107 | MPP_VAR_FUNCTION(6, "pcie2", "clkreq", V_88F6810_PLUS)), | ||
107 | MPP_MODE(14, | 108 | MPP_MODE(14, |
108 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 109 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
109 | MPP_VAR_FUNCTION(1, "ge0", "rxd2", V_88F6810_PLUS), | 110 | MPP_VAR_FUNCTION(1, "ge0", "rxd2", V_88F6810_PLUS), |
110 | MPP_VAR_FUNCTION(2, "ptp", "clk", V_88F6810_PLUS), | 111 | MPP_VAR_FUNCTION(2, "ptp", "clk", V_88F6810_PLUS), |
111 | MPP_VAR_FUNCTION(3, "m", "vtt_ctrl", V_88F6810_PLUS), | 112 | MPP_VAR_FUNCTION(3, "dram", "vttctrl", V_88F6810_PLUS), |
112 | MPP_VAR_FUNCTION(4, "spi0", "cs3", V_88F6810_PLUS), | 113 | MPP_VAR_FUNCTION(4, "spi0", "cs3", V_88F6810_PLUS), |
113 | MPP_VAR_FUNCTION(5, "dev", "wen1", V_88F6810_PLUS)), | 114 | MPP_VAR_FUNCTION(5, "dev", "we1", V_88F6810_PLUS), |
115 | MPP_VAR_FUNCTION(6, "pcie3", "clkreq", V_88F6810_PLUS)), | ||
114 | MPP_MODE(15, | 116 | MPP_MODE(15, |
115 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 117 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
116 | MPP_VAR_FUNCTION(1, "ge0", "rxd3", V_88F6810_PLUS), | 118 | MPP_VAR_FUNCTION(1, "ge0", "rxd3", V_88F6810_PLUS), |
117 | MPP_VAR_FUNCTION(2, "ge", "mdc slave", V_88F6810_PLUS), | 119 | MPP_VAR_FUNCTION(2, "ge", "mdc slave", V_88F6810_PLUS), |
118 | MPP_VAR_FUNCTION(3, "pcie0", "rstout", V_88F6810_PLUS), | 120 | MPP_VAR_FUNCTION(3, "pcie0", "rstout", V_88F6810_PLUS), |
119 | MPP_VAR_FUNCTION(4, "spi0", "mosi", V_88F6810_PLUS), | 121 | MPP_VAR_FUNCTION(4, "spi0", "mosi", V_88F6810_PLUS)), |
120 | MPP_VAR_FUNCTION(5, "pcie1", "rstout", V_88F6820_PLUS)), | ||
121 | MPP_MODE(16, | 122 | MPP_MODE(16, |
122 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 123 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
123 | MPP_VAR_FUNCTION(1, "ge0", "rxctl", V_88F6810_PLUS), | 124 | MPP_VAR_FUNCTION(1, "ge0", "rxctl", V_88F6810_PLUS), |
124 | MPP_VAR_FUNCTION(2, "ge", "mdio slave", V_88F6810_PLUS), | 125 | MPP_VAR_FUNCTION(2, "ge", "mdio slave", V_88F6810_PLUS), |
125 | MPP_VAR_FUNCTION(3, "m", "decc_err", V_88F6810_PLUS), | 126 | MPP_VAR_FUNCTION(3, "dram", "deccerr", V_88F6810_PLUS), |
126 | MPP_VAR_FUNCTION(4, "spi0", "miso", V_88F6810_PLUS), | 127 | MPP_VAR_FUNCTION(4, "spi0", "miso", V_88F6810_PLUS), |
127 | MPP_VAR_FUNCTION(5, "pcie0", "clkreq", V_88F6810_PLUS)), | 128 | MPP_VAR_FUNCTION(5, "pcie0", "clkreq", V_88F6810_PLUS), |
129 | MPP_VAR_FUNCTION(6, "pcie1", "clkreq", V_88F6820_PLUS)), | ||
128 | MPP_MODE(17, | 130 | MPP_MODE(17, |
129 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 131 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
130 | MPP_VAR_FUNCTION(1, "ge0", "rxclk", V_88F6810_PLUS), | 132 | MPP_VAR_FUNCTION(1, "ge0", "rxclk", V_88F6810_PLUS), |
131 | MPP_VAR_FUNCTION(2, "ptp", "clk", V_88F6810_PLUS), | 133 | MPP_VAR_FUNCTION(2, "ptp", "clk", V_88F6810_PLUS), |
132 | MPP_VAR_FUNCTION(3, "ua1", "rxd", V_88F6810_PLUS), | 134 | MPP_VAR_FUNCTION(3, "ua1", "rxd", V_88F6810_PLUS), |
133 | MPP_VAR_FUNCTION(4, "spi0", "sck", V_88F6810_PLUS), | 135 | MPP_VAR_FUNCTION(4, "spi0", "sck", V_88F6810_PLUS), |
134 | MPP_VAR_FUNCTION(5, "sata1", "prsnt", V_88F6810_PLUS)), | 136 | MPP_VAR_FUNCTION(5, "sata1", "prsnt", V_88F6810_PLUS), |
137 | MPP_VAR_FUNCTION(6, "sata0", "prsnt", V_88F6810_PLUS)), | ||
135 | MPP_MODE(18, | 138 | MPP_MODE(18, |
136 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 139 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
137 | MPP_VAR_FUNCTION(1, "ge0", "rxerr", V_88F6810_PLUS), | 140 | MPP_VAR_FUNCTION(1, "ge0", "rxerr", V_88F6810_PLUS), |
138 | MPP_VAR_FUNCTION(2, "ptp", "trig_gen", V_88F6810_PLUS), | 141 | MPP_VAR_FUNCTION(2, "ptp", "trig", V_88F6810_PLUS), |
139 | MPP_VAR_FUNCTION(3, "ua1", "txd", V_88F6810_PLUS), | 142 | MPP_VAR_FUNCTION(3, "ua1", "txd", V_88F6810_PLUS), |
140 | MPP_VAR_FUNCTION(4, "spi0", "cs0", V_88F6810_PLUS), | 143 | MPP_VAR_FUNCTION(4, "spi0", "cs0", V_88F6810_PLUS)), |
141 | MPP_VAR_FUNCTION(5, "pcie1", "rstout", V_88F6820_PLUS)), | ||
142 | MPP_MODE(19, | 144 | MPP_MODE(19, |
143 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 145 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
144 | MPP_VAR_FUNCTION(1, "ge0", "col", V_88F6810_PLUS), | 146 | MPP_VAR_FUNCTION(1, "ge0", "col", V_88F6810_PLUS), |
145 | MPP_VAR_FUNCTION(2, "ptp", "event_req", V_88F6810_PLUS), | 147 | MPP_VAR_FUNCTION(2, "ptp", "evreq", V_88F6810_PLUS), |
146 | MPP_VAR_FUNCTION(3, "pcie0", "clkreq", V_88F6810_PLUS), | 148 | MPP_VAR_FUNCTION(3, "ge0", "txerr", V_88F6810_PLUS), |
147 | MPP_VAR_FUNCTION(4, "sata1", "prsnt", V_88F6810_PLUS), | 149 | MPP_VAR_FUNCTION(4, "sata1", "prsnt", V_88F6810_PLUS), |
148 | MPP_VAR_FUNCTION(5, "ua0", "cts", V_88F6810_PLUS), | 150 | MPP_VAR_FUNCTION(5, "ua0", "cts", V_88F6810_PLUS), |
149 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6810_PLUS)), | 151 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6810_PLUS)), |
@@ -151,7 +153,6 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
151 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 153 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
152 | MPP_VAR_FUNCTION(1, "ge0", "txclk", V_88F6810_PLUS), | 154 | MPP_VAR_FUNCTION(1, "ge0", "txclk", V_88F6810_PLUS), |
153 | MPP_VAR_FUNCTION(2, "ptp", "clk", V_88F6810_PLUS), | 155 | MPP_VAR_FUNCTION(2, "ptp", "clk", V_88F6810_PLUS), |
154 | MPP_VAR_FUNCTION(3, "pcie1", "rstout", V_88F6820_PLUS), | ||
155 | MPP_VAR_FUNCTION(4, "sata0", "prsnt", V_88F6810_PLUS), | 156 | MPP_VAR_FUNCTION(4, "sata0", "prsnt", V_88F6810_PLUS), |
156 | MPP_VAR_FUNCTION(5, "ua0", "rts", V_88F6810_PLUS), | 157 | MPP_VAR_FUNCTION(5, "ua0", "rts", V_88F6810_PLUS), |
157 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6810_PLUS)), | 158 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6810_PLUS)), |
@@ -161,7 +162,8 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
161 | MPP_VAR_FUNCTION(2, "ge1", "rxd0", V_88F6810_PLUS), | 162 | MPP_VAR_FUNCTION(2, "ge1", "rxd0", V_88F6810_PLUS), |
162 | MPP_VAR_FUNCTION(3, "sata0", "prsnt", V_88F6810_PLUS), | 163 | MPP_VAR_FUNCTION(3, "sata0", "prsnt", V_88F6810_PLUS), |
163 | MPP_VAR_FUNCTION(4, "sd0", "cmd", V_88F6810_PLUS), | 164 | MPP_VAR_FUNCTION(4, "sd0", "cmd", V_88F6810_PLUS), |
164 | MPP_VAR_FUNCTION(5, "dev", "bootcs", V_88F6810_PLUS)), | 165 | MPP_VAR_FUNCTION(5, "dev", "bootcs", V_88F6810_PLUS), |
166 | MPP_VAR_FUNCTION(6, "sata1", "prsnt", V_88F6810_PLUS)), | ||
165 | MPP_MODE(22, | 167 | MPP_MODE(22, |
166 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 168 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
167 | MPP_VAR_FUNCTION(1, "spi0", "mosi", V_88F6810_PLUS), | 169 | MPP_VAR_FUNCTION(1, "spi0", "mosi", V_88F6810_PLUS), |
@@ -209,7 +211,7 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
209 | MPP_MODE(30, | 211 | MPP_MODE(30, |
210 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 212 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
211 | MPP_VAR_FUNCTION(2, "ge1", "txd2", V_88F6810_PLUS), | 213 | MPP_VAR_FUNCTION(2, "ge1", "txd2", V_88F6810_PLUS), |
212 | MPP_VAR_FUNCTION(5, "dev", "oen", V_88F6810_PLUS)), | 214 | MPP_VAR_FUNCTION(5, "dev", "oe", V_88F6810_PLUS)), |
213 | MPP_MODE(31, | 215 | MPP_MODE(31, |
214 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 216 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
215 | MPP_VAR_FUNCTION(2, "ge1", "txd3", V_88F6810_PLUS), | 217 | MPP_VAR_FUNCTION(2, "ge1", "txd3", V_88F6810_PLUS), |
@@ -217,10 +219,10 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
217 | MPP_MODE(32, | 219 | MPP_MODE(32, |
218 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 220 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
219 | MPP_VAR_FUNCTION(2, "ge1", "txctl", V_88F6810_PLUS), | 221 | MPP_VAR_FUNCTION(2, "ge1", "txctl", V_88F6810_PLUS), |
220 | MPP_VAR_FUNCTION(5, "dev", "wen0", V_88F6810_PLUS)), | 222 | MPP_VAR_FUNCTION(5, "dev", "we0", V_88F6810_PLUS)), |
221 | MPP_MODE(33, | 223 | MPP_MODE(33, |
222 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 224 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
223 | MPP_VAR_FUNCTION(1, "m", "decc_err", V_88F6810_PLUS), | 225 | MPP_VAR_FUNCTION(1, "dram", "deccerr", V_88F6810_PLUS), |
224 | MPP_VAR_FUNCTION(5, "dev", "ad3", V_88F6810_PLUS)), | 226 | MPP_VAR_FUNCTION(5, "dev", "ad3", V_88F6810_PLUS)), |
225 | MPP_MODE(34, | 227 | MPP_MODE(34, |
226 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 228 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
@@ -231,7 +233,7 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
231 | MPP_VAR_FUNCTION(5, "dev", "a1", V_88F6810_PLUS)), | 233 | MPP_VAR_FUNCTION(5, "dev", "a1", V_88F6810_PLUS)), |
232 | MPP_MODE(36, | 234 | MPP_MODE(36, |
233 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 235 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
234 | MPP_VAR_FUNCTION(1, "ptp", "trig_gen", V_88F6810_PLUS), | 236 | MPP_VAR_FUNCTION(1, "ptp", "trig", V_88F6810_PLUS), |
235 | MPP_VAR_FUNCTION(5, "dev", "a0", V_88F6810_PLUS)), | 237 | MPP_VAR_FUNCTION(5, "dev", "a0", V_88F6810_PLUS)), |
236 | MPP_MODE(37, | 238 | MPP_MODE(37, |
237 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 239 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
@@ -241,7 +243,7 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
241 | MPP_VAR_FUNCTION(5, "dev", "ad8", V_88F6810_PLUS)), | 243 | MPP_VAR_FUNCTION(5, "dev", "ad8", V_88F6810_PLUS)), |
242 | MPP_MODE(38, | 244 | MPP_MODE(38, |
243 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 245 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
244 | MPP_VAR_FUNCTION(1, "ptp", "event_req", V_88F6810_PLUS), | 246 | MPP_VAR_FUNCTION(1, "ptp", "evreq", V_88F6810_PLUS), |
245 | MPP_VAR_FUNCTION(2, "ge1", "rxd1", V_88F6810_PLUS), | 247 | MPP_VAR_FUNCTION(2, "ge1", "rxd1", V_88F6810_PLUS), |
246 | MPP_VAR_FUNCTION(3, "ref", "clk_out0", V_88F6810_PLUS), | 248 | MPP_VAR_FUNCTION(3, "ref", "clk_out0", V_88F6810_PLUS), |
247 | MPP_VAR_FUNCTION(4, "sd0", "d0", V_88F6810_PLUS), | 249 | MPP_VAR_FUNCTION(4, "sd0", "d0", V_88F6810_PLUS), |
@@ -266,7 +268,8 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
266 | MPP_VAR_FUNCTION(2, "ge1", "rxctl", V_88F6810_PLUS), | 268 | MPP_VAR_FUNCTION(2, "ge1", "rxctl", V_88F6810_PLUS), |
267 | MPP_VAR_FUNCTION(3, "ua0", "cts", V_88F6810_PLUS), | 269 | MPP_VAR_FUNCTION(3, "ua0", "cts", V_88F6810_PLUS), |
268 | MPP_VAR_FUNCTION(4, "spi1", "cs3", V_88F6810_PLUS), | 270 | MPP_VAR_FUNCTION(4, "spi1", "cs3", V_88F6810_PLUS), |
269 | MPP_VAR_FUNCTION(5, "dev", "burst/last", V_88F6810_PLUS)), | 271 | MPP_VAR_FUNCTION(5, "dev", "burst/last", V_88F6810_PLUS), |
272 | MPP_VAR_FUNCTION(6, "nand", "rb0", V_88F6810_PLUS)), | ||
270 | MPP_MODE(42, | 273 | MPP_MODE(42, |
271 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 274 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
272 | MPP_VAR_FUNCTION(1, "ua1", "txd", V_88F6810_PLUS), | 275 | MPP_VAR_FUNCTION(1, "ua1", "txd", V_88F6810_PLUS), |
@@ -275,84 +278,82 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
275 | MPP_MODE(43, | 278 | MPP_MODE(43, |
276 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 279 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
277 | MPP_VAR_FUNCTION(1, "pcie0", "clkreq", V_88F6810_PLUS), | 280 | MPP_VAR_FUNCTION(1, "pcie0", "clkreq", V_88F6810_PLUS), |
278 | MPP_VAR_FUNCTION(2, "m", "vtt_ctrl", V_88F6810_PLUS), | 281 | MPP_VAR_FUNCTION(2, "dram", "vttctrl", V_88F6810_PLUS), |
279 | MPP_VAR_FUNCTION(3, "m", "decc_err", V_88F6810_PLUS), | 282 | MPP_VAR_FUNCTION(3, "dram", "deccerr", V_88F6810_PLUS), |
280 | MPP_VAR_FUNCTION(4, "pcie0", "rstout", V_88F6810_PLUS), | 283 | MPP_VAR_FUNCTION(4, "spi1", "cs2", V_88F6810_PLUS), |
281 | MPP_VAR_FUNCTION(5, "dev", "clkout", V_88F6810_PLUS)), | 284 | MPP_VAR_FUNCTION(5, "dev", "clkout", V_88F6810_PLUS), |
285 | MPP_VAR_FUNCTION(6, "nand", "rb1", V_88F6810_PLUS)), | ||
282 | MPP_MODE(44, | 286 | MPP_MODE(44, |
283 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 287 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
284 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6810_PLUS), | 288 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6810_PLUS), |
285 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6810_PLUS), | 289 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6810_PLUS), |
286 | MPP_VAR_FUNCTION(3, "sata2", "prsnt", V_88F6828), | 290 | MPP_VAR_FUNCTION(3, "sata2", "prsnt", V_88F6828), |
287 | MPP_VAR_FUNCTION(4, "sata3", "prsnt", V_88F6828), | 291 | MPP_VAR_FUNCTION(4, "sata3", "prsnt", V_88F6828)), |
288 | MPP_VAR_FUNCTION(5, "pcie0", "rstout", V_88F6810_PLUS)), | ||
289 | MPP_MODE(45, | 292 | MPP_MODE(45, |
290 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 293 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
291 | MPP_VAR_FUNCTION(1, "ref", "clk_out0", V_88F6810_PLUS), | 294 | MPP_VAR_FUNCTION(1, "ref", "clk_out0", V_88F6810_PLUS), |
292 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6810_PLUS), | 295 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6810_PLUS), |
293 | MPP_VAR_FUNCTION(3, "pcie1", "rstout", V_88F6820_PLUS), | 296 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6810_PLUS)), |
294 | MPP_VAR_FUNCTION(4, "pcie2", "rstout", V_88F6810_PLUS), | ||
295 | MPP_VAR_FUNCTION(5, "pcie3", "rstout", V_88F6810_PLUS)), | ||
296 | MPP_MODE(46, | 297 | MPP_MODE(46, |
297 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 298 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
298 | MPP_VAR_FUNCTION(1, "ref", "clk_out1", V_88F6810_PLUS), | 299 | MPP_VAR_FUNCTION(1, "ref", "clk_out1", V_88F6810_PLUS), |
299 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6810_PLUS), | 300 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6810_PLUS), |
300 | MPP_VAR_FUNCTION(3, "pcie1", "rstout", V_88F6820_PLUS), | 301 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6810_PLUS)), |
301 | MPP_VAR_FUNCTION(4, "pcie2", "rstout", V_88F6810_PLUS), | ||
302 | MPP_VAR_FUNCTION(5, "pcie3", "rstout", V_88F6810_PLUS)), | ||
303 | MPP_MODE(47, | 302 | MPP_MODE(47, |
304 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 303 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
305 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6810_PLUS), | 304 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6810_PLUS), |
306 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6810_PLUS), | 305 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6810_PLUS), |
307 | MPP_VAR_FUNCTION(3, "sata2", "prsnt", V_88F6828), | 306 | MPP_VAR_FUNCTION(3, "sata2", "prsnt", V_88F6828), |
308 | MPP_VAR_FUNCTION(4, "spi1", "cs2", V_88F6810_PLUS), | ||
309 | MPP_VAR_FUNCTION(5, "sata3", "prsnt", V_88F6828)), | 307 | MPP_VAR_FUNCTION(5, "sata3", "prsnt", V_88F6828)), |
310 | MPP_MODE(48, | 308 | MPP_MODE(48, |
311 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 309 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
312 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6810_PLUS), | 310 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6810_PLUS), |
313 | MPP_VAR_FUNCTION(2, "m", "vtt_ctrl", V_88F6810_PLUS), | 311 | MPP_VAR_FUNCTION(2, "dram", "vttctrl", V_88F6810_PLUS), |
314 | MPP_VAR_FUNCTION(3, "tdm2c", "pclk", V_88F6810_PLUS), | 312 | MPP_VAR_FUNCTION(3, "tdm", "pclk", V_88F6810_PLUS), |
315 | MPP_VAR_FUNCTION(4, "audio", "mclk", V_88F6810_PLUS), | 313 | MPP_VAR_FUNCTION(4, "audio", "mclk", V_88F6810_PLUS), |
316 | MPP_VAR_FUNCTION(5, "sd0", "d4", V_88F6810_PLUS)), | 314 | MPP_VAR_FUNCTION(5, "sd0", "d4", V_88F6810_PLUS), |
315 | MPP_VAR_FUNCTION(6, "pcie0", "clkreq", V_88F6810_PLUS)), | ||
317 | MPP_MODE(49, | 316 | MPP_MODE(49, |
318 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 317 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
319 | MPP_VAR_FUNCTION(1, "sata2", "prsnt", V_88F6828), | 318 | MPP_VAR_FUNCTION(1, "sata2", "prsnt", V_88F6828), |
320 | MPP_VAR_FUNCTION(2, "sata3", "prsnt", V_88F6828), | 319 | MPP_VAR_FUNCTION(2, "sata3", "prsnt", V_88F6828), |
321 | MPP_VAR_FUNCTION(3, "tdm2c", "fsync", V_88F6810_PLUS), | 320 | MPP_VAR_FUNCTION(3, "tdm", "fsync", V_88F6810_PLUS), |
322 | MPP_VAR_FUNCTION(4, "audio", "lrclk", V_88F6810_PLUS), | 321 | MPP_VAR_FUNCTION(4, "audio", "lrclk", V_88F6810_PLUS), |
323 | MPP_VAR_FUNCTION(5, "sd0", "d5", V_88F6810_PLUS)), | 322 | MPP_VAR_FUNCTION(5, "sd0", "d5", V_88F6810_PLUS), |
323 | MPP_VAR_FUNCTION(6, "pcie1", "clkreq", V_88F6820_PLUS)), | ||
324 | MPP_MODE(50, | 324 | MPP_MODE(50, |
325 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 325 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
326 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6810_PLUS), | 326 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6810_PLUS), |
327 | MPP_VAR_FUNCTION(2, "pcie1", "rstout", V_88F6820_PLUS), | 327 | MPP_VAR_FUNCTION(3, "tdm", "drx", V_88F6810_PLUS), |
328 | MPP_VAR_FUNCTION(3, "tdm2c", "drx", V_88F6810_PLUS), | ||
329 | MPP_VAR_FUNCTION(4, "audio", "extclk", V_88F6810_PLUS), | 328 | MPP_VAR_FUNCTION(4, "audio", "extclk", V_88F6810_PLUS), |
330 | MPP_VAR_FUNCTION(5, "sd0", "cmd", V_88F6810_PLUS)), | 329 | MPP_VAR_FUNCTION(5, "sd0", "cmd", V_88F6810_PLUS)), |
331 | MPP_MODE(51, | 330 | MPP_MODE(51, |
332 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 331 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
333 | MPP_VAR_FUNCTION(3, "tdm2c", "dtx", V_88F6810_PLUS), | 332 | MPP_VAR_FUNCTION(3, "tdm", "dtx", V_88F6810_PLUS), |
334 | MPP_VAR_FUNCTION(4, "audio", "sdo", V_88F6810_PLUS), | 333 | MPP_VAR_FUNCTION(4, "audio", "sdo", V_88F6810_PLUS), |
335 | MPP_VAR_FUNCTION(5, "m", "decc_err", V_88F6810_PLUS)), | 334 | MPP_VAR_FUNCTION(5, "dram", "deccerr", V_88F6810_PLUS), |
335 | MPP_VAR_FUNCTION(6, "ptp", "trig", V_88F6810_PLUS)), | ||
336 | MPP_MODE(52, | 336 | MPP_MODE(52, |
337 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 337 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
338 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6810_PLUS), | 338 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6810_PLUS), |
339 | MPP_VAR_FUNCTION(2, "pcie1", "rstout", V_88F6820_PLUS), | 339 | MPP_VAR_FUNCTION(3, "tdm", "int", V_88F6810_PLUS), |
340 | MPP_VAR_FUNCTION(3, "tdm2c", "intn", V_88F6810_PLUS), | ||
341 | MPP_VAR_FUNCTION(4, "audio", "sdi", V_88F6810_PLUS), | 340 | MPP_VAR_FUNCTION(4, "audio", "sdi", V_88F6810_PLUS), |
342 | MPP_VAR_FUNCTION(5, "sd0", "d6", V_88F6810_PLUS)), | 341 | MPP_VAR_FUNCTION(5, "sd0", "d6", V_88F6810_PLUS), |
342 | MPP_VAR_FUNCTION(6, "ptp", "clk", V_88F6810_PLUS)), | ||
343 | MPP_MODE(53, | 343 | MPP_MODE(53, |
344 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 344 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
345 | MPP_VAR_FUNCTION(1, "sata1", "prsnt", V_88F6810_PLUS), | 345 | MPP_VAR_FUNCTION(1, "sata1", "prsnt", V_88F6810_PLUS), |
346 | MPP_VAR_FUNCTION(2, "sata0", "prsnt", V_88F6810_PLUS), | 346 | MPP_VAR_FUNCTION(2, "sata0", "prsnt", V_88F6810_PLUS), |
347 | MPP_VAR_FUNCTION(3, "tdm2c", "rstn", V_88F6810_PLUS), | 347 | MPP_VAR_FUNCTION(3, "tdm", "rst", V_88F6810_PLUS), |
348 | MPP_VAR_FUNCTION(4, "audio", "bclk", V_88F6810_PLUS), | 348 | MPP_VAR_FUNCTION(4, "audio", "bclk", V_88F6810_PLUS), |
349 | MPP_VAR_FUNCTION(5, "sd0", "d7", V_88F6810_PLUS)), | 349 | MPP_VAR_FUNCTION(5, "sd0", "d7", V_88F6810_PLUS), |
350 | MPP_VAR_FUNCTION(6, "ptp", "evreq", V_88F6810_PLUS)), | ||
350 | MPP_MODE(54, | 351 | MPP_MODE(54, |
351 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 352 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
352 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6810_PLUS), | 353 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6810_PLUS), |
353 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6810_PLUS), | 354 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6810_PLUS), |
354 | MPP_VAR_FUNCTION(3, "pcie0", "rstout", V_88F6810_PLUS), | 355 | MPP_VAR_FUNCTION(3, "pcie0", "rstout", V_88F6810_PLUS), |
355 | MPP_VAR_FUNCTION(4, "pcie1", "rstout", V_88F6820_PLUS), | 356 | MPP_VAR_FUNCTION(4, "ge0", "txerr", V_88F6810_PLUS), |
356 | MPP_VAR_FUNCTION(5, "sd0", "d3", V_88F6810_PLUS)), | 357 | MPP_VAR_FUNCTION(5, "sd0", "d3", V_88F6810_PLUS)), |
357 | MPP_MODE(55, | 358 | MPP_MODE(55, |
358 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 359 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
@@ -360,29 +361,32 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = { | |||
360 | MPP_VAR_FUNCTION(2, "ge", "mdio", V_88F6810_PLUS), | 361 | MPP_VAR_FUNCTION(2, "ge", "mdio", V_88F6810_PLUS), |
361 | MPP_VAR_FUNCTION(3, "pcie1", "clkreq", V_88F6820_PLUS), | 362 | MPP_VAR_FUNCTION(3, "pcie1", "clkreq", V_88F6820_PLUS), |
362 | MPP_VAR_FUNCTION(4, "spi1", "cs1", V_88F6810_PLUS), | 363 | MPP_VAR_FUNCTION(4, "spi1", "cs1", V_88F6810_PLUS), |
363 | MPP_VAR_FUNCTION(5, "sd0", "d0", V_88F6810_PLUS)), | 364 | MPP_VAR_FUNCTION(5, "sd0", "d0", V_88F6810_PLUS), |
365 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6810_PLUS)), | ||
364 | MPP_MODE(56, | 366 | MPP_MODE(56, |
365 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 367 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
366 | MPP_VAR_FUNCTION(1, "ua1", "rts", V_88F6810_PLUS), | 368 | MPP_VAR_FUNCTION(1, "ua1", "rts", V_88F6810_PLUS), |
367 | MPP_VAR_FUNCTION(2, "ge", "mdc", V_88F6810_PLUS), | 369 | MPP_VAR_FUNCTION(2, "ge", "mdc", V_88F6810_PLUS), |
368 | MPP_VAR_FUNCTION(3, "m", "decc_err", V_88F6810_PLUS), | 370 | MPP_VAR_FUNCTION(3, "dram", "deccerr", V_88F6810_PLUS), |
369 | MPP_VAR_FUNCTION(4, "spi1", "mosi", V_88F6810_PLUS)), | 371 | MPP_VAR_FUNCTION(4, "spi1", "mosi", V_88F6810_PLUS), |
372 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6810_PLUS)), | ||
370 | MPP_MODE(57, | 373 | MPP_MODE(57, |
371 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 374 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
372 | MPP_VAR_FUNCTION(4, "spi1", "sck", V_88F6810_PLUS), | 375 | MPP_VAR_FUNCTION(4, "spi1", "sck", V_88F6810_PLUS), |
373 | MPP_VAR_FUNCTION(5, "sd0", "clk", V_88F6810_PLUS)), | 376 | MPP_VAR_FUNCTION(5, "sd0", "clk", V_88F6810_PLUS), |
377 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6810_PLUS)), | ||
374 | MPP_MODE(58, | 378 | MPP_MODE(58, |
375 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 379 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
376 | MPP_VAR_FUNCTION(1, "pcie1", "clkreq", V_88F6820_PLUS), | 380 | MPP_VAR_FUNCTION(1, "pcie1", "clkreq", V_88F6820_PLUS), |
377 | MPP_VAR_FUNCTION(2, "i2c1", "sck", V_88F6810_PLUS), | 381 | MPP_VAR_FUNCTION(2, "i2c1", "sck", V_88F6810_PLUS), |
378 | MPP_VAR_FUNCTION(3, "pcie2", "clkreq", V_88F6810_PLUS), | 382 | MPP_VAR_FUNCTION(3, "pcie2", "clkreq", V_88F6810_PLUS), |
379 | MPP_VAR_FUNCTION(4, "spi1", "miso", V_88F6810_PLUS), | 383 | MPP_VAR_FUNCTION(4, "spi1", "miso", V_88F6810_PLUS), |
380 | MPP_VAR_FUNCTION(5, "sd0", "d1", V_88F6810_PLUS)), | 384 | MPP_VAR_FUNCTION(5, "sd0", "d1", V_88F6810_PLUS), |
385 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6810_PLUS)), | ||
381 | MPP_MODE(59, | 386 | MPP_MODE(59, |
382 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), | 387 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6810_PLUS), |
383 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6810_PLUS), | 388 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6810_PLUS), |
384 | MPP_VAR_FUNCTION(2, "i2c1", "sda", V_88F6810_PLUS), | 389 | MPP_VAR_FUNCTION(2, "i2c1", "sda", V_88F6810_PLUS), |
385 | MPP_VAR_FUNCTION(3, "pcie1", "rstout", V_88F6820_PLUS), | ||
386 | MPP_VAR_FUNCTION(4, "spi1", "cs0", V_88F6810_PLUS), | 390 | MPP_VAR_FUNCTION(4, "spi1", "cs0", V_88F6810_PLUS), |
387 | MPP_VAR_FUNCTION(5, "sd0", "d2", V_88F6810_PLUS)), | 391 | MPP_VAR_FUNCTION(5, "sd0", "d2", V_88F6810_PLUS)), |
388 | }; | 392 | }; |
@@ -411,7 +415,7 @@ static struct mvebu_mpp_ctrl armada_38x_mpp_controls[] = { | |||
411 | 415 | ||
412 | static struct pinctrl_gpio_range armada_38x_mpp_gpio_ranges[] = { | 416 | static struct pinctrl_gpio_range armada_38x_mpp_gpio_ranges[] = { |
413 | MPP_GPIO_RANGE(0, 0, 0, 32), | 417 | MPP_GPIO_RANGE(0, 0, 0, 32), |
414 | MPP_GPIO_RANGE(1, 32, 32, 27), | 418 | MPP_GPIO_RANGE(1, 32, 32, 28), |
415 | }; | 419 | }; |
416 | 420 | ||
417 | static int armada_38x_pinctrl_probe(struct platform_device *pdev) | 421 | static int armada_38x_pinctrl_probe(struct platform_device *pdev) |
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-39x.c b/drivers/pinctrl/mvebu/pinctrl-armada-39x.c index 42491624d660..fcfe9b478a2e 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-39x.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-39x.c | |||
@@ -36,8 +36,10 @@ static int armada_39x_mpp_ctrl_set(unsigned pid, unsigned long config) | |||
36 | 36 | ||
37 | enum { | 37 | enum { |
38 | V_88F6920 = BIT(0), | 38 | V_88F6920 = BIT(0), |
39 | V_88F6928 = BIT(1), | 39 | V_88F6925 = BIT(1), |
40 | V_88F6920_PLUS = (V_88F6920 | V_88F6928), | 40 | V_88F6928 = BIT(2), |
41 | V_88F6920_PLUS = (V_88F6920 | V_88F6925 | V_88F6928), | ||
42 | V_88F6925_PLUS = (V_88F6925 | V_88F6928), | ||
41 | }; | 43 | }; |
42 | 44 | ||
43 | static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | 45 | static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { |
@@ -82,7 +84,7 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
82 | MPP_MODE(10, | 84 | MPP_MODE(10, |
83 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 85 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
84 | MPP_VAR_FUNCTION(5, "dev", "ad12", V_88F6920_PLUS), | 86 | MPP_VAR_FUNCTION(5, "dev", "ad12", V_88F6920_PLUS), |
85 | MPP_VAR_FUNCTION(7, "ptp", "event", V_88F6920_PLUS)), | 87 | MPP_VAR_FUNCTION(7, "ptp", "evreq", V_88F6920_PLUS)), |
86 | MPP_MODE(11, | 88 | MPP_MODE(11, |
87 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 89 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
88 | MPP_VAR_FUNCTION(5, "dev", "ad13", V_88F6920_PLUS), | 90 | MPP_VAR_FUNCTION(5, "dev", "ad13", V_88F6920_PLUS), |
@@ -95,11 +97,12 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
95 | MPP_MODE(13, | 97 | MPP_MODE(13, |
96 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 98 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
97 | MPP_VAR_FUNCTION(5, "dev", "ad15", V_88F6920_PLUS), | 99 | MPP_VAR_FUNCTION(5, "dev", "ad15", V_88F6920_PLUS), |
100 | MPP_VAR_FUNCTION(6, "pcie2", "clkreq", V_88F6920_PLUS), | ||
98 | MPP_VAR_FUNCTION(7, "led", "data", V_88F6920_PLUS)), | 101 | MPP_VAR_FUNCTION(7, "led", "data", V_88F6920_PLUS)), |
99 | MPP_MODE(14, | 102 | MPP_MODE(14, |
100 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 103 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
101 | MPP_VAR_FUNCTION(3, "m", "vtt", V_88F6920_PLUS), | 104 | MPP_VAR_FUNCTION(3, "dram", "vttctrl", V_88F6920_PLUS), |
102 | MPP_VAR_FUNCTION(5, "dev", "wen1", V_88F6920_PLUS), | 105 | MPP_VAR_FUNCTION(5, "dev", "we1", V_88F6920_PLUS), |
103 | MPP_VAR_FUNCTION(7, "ua1", "txd", V_88F6920_PLUS)), | 106 | MPP_VAR_FUNCTION(7, "ua1", "txd", V_88F6920_PLUS)), |
104 | MPP_MODE(15, | 107 | MPP_MODE(15, |
105 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 108 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
@@ -108,13 +111,16 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
108 | MPP_VAR_FUNCTION(7, "i2c1", "sck", V_88F6920_PLUS)), | 111 | MPP_VAR_FUNCTION(7, "i2c1", "sck", V_88F6920_PLUS)), |
109 | MPP_MODE(16, | 112 | MPP_MODE(16, |
110 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 113 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
111 | MPP_VAR_FUNCTION(3, "m", "decc", V_88F6920_PLUS), | 114 | MPP_VAR_FUNCTION(3, "dram", "deccerr", V_88F6920_PLUS), |
112 | MPP_VAR_FUNCTION(4, "spi0", "miso", V_88F6920_PLUS), | 115 | MPP_VAR_FUNCTION(4, "spi0", "miso", V_88F6920_PLUS), |
116 | MPP_VAR_FUNCTION(5, "pcie0", "clkreq", V_88F6920_PLUS), | ||
113 | MPP_VAR_FUNCTION(7, "i2c1", "sda", V_88F6920_PLUS)), | 117 | MPP_VAR_FUNCTION(7, "i2c1", "sda", V_88F6920_PLUS)), |
114 | MPP_MODE(17, | 118 | MPP_MODE(17, |
115 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 119 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
116 | MPP_VAR_FUNCTION(3, "ua1", "rxd", V_88F6920_PLUS), | 120 | MPP_VAR_FUNCTION(3, "ua1", "rxd", V_88F6920_PLUS), |
117 | MPP_VAR_FUNCTION(4, "spi0", "sck", V_88F6920_PLUS), | 121 | MPP_VAR_FUNCTION(4, "spi0", "sck", V_88F6920_PLUS), |
122 | MPP_VAR_FUNCTION(5, "sata1", "prsnt", V_88F6925_PLUS), | ||
123 | MPP_VAR_FUNCTION(6, "sata0", "prsnt", V_88F6925_PLUS), | ||
118 | MPP_VAR_FUNCTION(7, "smi", "mdio", V_88F6920_PLUS)), | 124 | MPP_VAR_FUNCTION(7, "smi", "mdio", V_88F6920_PLUS)), |
119 | MPP_MODE(18, | 125 | MPP_MODE(18, |
120 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 126 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
@@ -123,22 +129,23 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
123 | MPP_VAR_FUNCTION(7, "i2c2", "sck", V_88F6920_PLUS)), | 129 | MPP_VAR_FUNCTION(7, "i2c2", "sck", V_88F6920_PLUS)), |
124 | MPP_MODE(19, | 130 | MPP_MODE(19, |
125 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 131 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
126 | MPP_VAR_FUNCTION(4, "sata1", "present", V_88F6928), | 132 | MPP_VAR_FUNCTION(4, "sata1", "prsnt", V_88F6925_PLUS), |
127 | MPP_VAR_FUNCTION(5, "ua0", "cts", V_88F6920_PLUS), | 133 | MPP_VAR_FUNCTION(5, "ua0", "cts", V_88F6920_PLUS), |
128 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6920_PLUS), | 134 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6920_PLUS), |
129 | MPP_VAR_FUNCTION(7, "i2c2", "sda", V_88F6920_PLUS)), | 135 | MPP_VAR_FUNCTION(7, "i2c2", "sda", V_88F6920_PLUS)), |
130 | MPP_MODE(20, | 136 | MPP_MODE(20, |
131 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 137 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
132 | MPP_VAR_FUNCTION(4, "sata0", "present", V_88F6928), | 138 | MPP_VAR_FUNCTION(4, "sata0", "prsnt", V_88F6925_PLUS), |
133 | MPP_VAR_FUNCTION(5, "ua0", "rts", V_88F6920_PLUS), | 139 | MPP_VAR_FUNCTION(5, "ua0", "rts", V_88F6920_PLUS), |
134 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6920_PLUS), | 140 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6920_PLUS), |
135 | MPP_VAR_FUNCTION(7, "smi", "mdc", V_88F6920_PLUS)), | 141 | MPP_VAR_FUNCTION(7, "smi", "mdc", V_88F6920_PLUS)), |
136 | MPP_MODE(21, | 142 | MPP_MODE(21, |
137 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 143 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
138 | MPP_VAR_FUNCTION(1, "spi0", "cs1", V_88F6920_PLUS), | 144 | MPP_VAR_FUNCTION(1, "spi0", "cs1", V_88F6920_PLUS), |
139 | MPP_VAR_FUNCTION(3, "sata0", "present", V_88F6928), | 145 | MPP_VAR_FUNCTION(3, "sata0", "prsnt", V_88F6925_PLUS), |
140 | MPP_VAR_FUNCTION(4, "sd", "cmd", V_88F6920_PLUS), | 146 | MPP_VAR_FUNCTION(4, "sd0", "cmd", V_88F6920_PLUS), |
141 | MPP_VAR_FUNCTION(5, "dev", "bootcs", V_88F6920_PLUS), | 147 | MPP_VAR_FUNCTION(5, "dev", "bootcs", V_88F6920_PLUS), |
148 | MPP_VAR_FUNCTION(6, "sata1", "prsnt", V_88F6925_PLUS), | ||
142 | MPP_VAR_FUNCTION(8, "ge", "rxd0", V_88F6920_PLUS)), | 149 | MPP_VAR_FUNCTION(8, "ge", "rxd0", V_88F6920_PLUS)), |
143 | MPP_MODE(22, | 150 | MPP_MODE(22, |
144 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 151 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
@@ -153,31 +160,31 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
153 | MPP_VAR_FUNCTION(1, "spi0", "miso", V_88F6920_PLUS), | 160 | MPP_VAR_FUNCTION(1, "spi0", "miso", V_88F6920_PLUS), |
154 | MPP_VAR_FUNCTION(2, "ua0", "cts", V_88F6920_PLUS), | 161 | MPP_VAR_FUNCTION(2, "ua0", "cts", V_88F6920_PLUS), |
155 | MPP_VAR_FUNCTION(3, "ua1", "rxd", V_88F6920_PLUS), | 162 | MPP_VAR_FUNCTION(3, "ua1", "rxd", V_88F6920_PLUS), |
156 | MPP_VAR_FUNCTION(4, "sd", "d4", V_88F6920_PLUS), | 163 | MPP_VAR_FUNCTION(4, "sd0", "d4", V_88F6920_PLUS), |
157 | MPP_VAR_FUNCTION(5, "dev", "readyn", V_88F6920_PLUS)), | 164 | MPP_VAR_FUNCTION(5, "dev", "ready", V_88F6920_PLUS)), |
158 | MPP_MODE(25, | 165 | MPP_MODE(25, |
159 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 166 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
160 | MPP_VAR_FUNCTION(1, "spi0", "cs0", V_88F6920_PLUS), | 167 | MPP_VAR_FUNCTION(1, "spi0", "cs0", V_88F6920_PLUS), |
161 | MPP_VAR_FUNCTION(2, "ua0", "rts", V_88F6920_PLUS), | 168 | MPP_VAR_FUNCTION(2, "ua0", "rts", V_88F6920_PLUS), |
162 | MPP_VAR_FUNCTION(3, "ua1", "txd", V_88F6920_PLUS), | 169 | MPP_VAR_FUNCTION(3, "ua1", "txd", V_88F6920_PLUS), |
163 | MPP_VAR_FUNCTION(4, "sd", "d5", V_88F6920_PLUS), | 170 | MPP_VAR_FUNCTION(4, "sd0", "d5", V_88F6920_PLUS), |
164 | MPP_VAR_FUNCTION(5, "dev", "cs0", V_88F6920_PLUS)), | 171 | MPP_VAR_FUNCTION(5, "dev", "cs0", V_88F6920_PLUS)), |
165 | MPP_MODE(26, | 172 | MPP_MODE(26, |
166 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 173 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
167 | MPP_VAR_FUNCTION(1, "spi0", "cs2", V_88F6920_PLUS), | 174 | MPP_VAR_FUNCTION(1, "spi0", "cs2", V_88F6920_PLUS), |
168 | MPP_VAR_FUNCTION(3, "i2c1", "sck", V_88F6920_PLUS), | 175 | MPP_VAR_FUNCTION(3, "i2c1", "sck", V_88F6920_PLUS), |
169 | MPP_VAR_FUNCTION(4, "sd", "d6", V_88F6920_PLUS), | 176 | MPP_VAR_FUNCTION(4, "sd0", "d6", V_88F6920_PLUS), |
170 | MPP_VAR_FUNCTION(5, "dev", "cs1", V_88F6920_PLUS)), | 177 | MPP_VAR_FUNCTION(5, "dev", "cs1", V_88F6920_PLUS)), |
171 | MPP_MODE(27, | 178 | MPP_MODE(27, |
172 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 179 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
173 | MPP_VAR_FUNCTION(1, "spi0", "cs3", V_88F6920_PLUS), | 180 | MPP_VAR_FUNCTION(1, "spi0", "cs3", V_88F6920_PLUS), |
174 | MPP_VAR_FUNCTION(3, "i2c1", "sda", V_88F6920_PLUS), | 181 | MPP_VAR_FUNCTION(3, "i2c1", "sda", V_88F6920_PLUS), |
175 | MPP_VAR_FUNCTION(4, "sd", "d7", V_88F6920_PLUS), | 182 | MPP_VAR_FUNCTION(4, "sd0", "d7", V_88F6920_PLUS), |
176 | MPP_VAR_FUNCTION(5, "dev", "cs2", V_88F6920_PLUS), | 183 | MPP_VAR_FUNCTION(5, "dev", "cs2", V_88F6920_PLUS), |
177 | MPP_VAR_FUNCTION(8, "ge", "txclkout", V_88F6920_PLUS)), | 184 | MPP_VAR_FUNCTION(8, "ge", "txclkout", V_88F6920_PLUS)), |
178 | MPP_MODE(28, | 185 | MPP_MODE(28, |
179 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 186 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
180 | MPP_VAR_FUNCTION(4, "sd", "clk", V_88F6920_PLUS), | 187 | MPP_VAR_FUNCTION(4, "sd0", "clk", V_88F6920_PLUS), |
181 | MPP_VAR_FUNCTION(5, "dev", "ad5", V_88F6920_PLUS), | 188 | MPP_VAR_FUNCTION(5, "dev", "ad5", V_88F6920_PLUS), |
182 | MPP_VAR_FUNCTION(8, "ge", "txd0", V_88F6920_PLUS)), | 189 | MPP_VAR_FUNCTION(8, "ge", "txd0", V_88F6920_PLUS)), |
183 | MPP_MODE(29, | 190 | MPP_MODE(29, |
@@ -186,7 +193,7 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
186 | MPP_VAR_FUNCTION(8, "ge", "txd1", V_88F6920_PLUS)), | 193 | MPP_VAR_FUNCTION(8, "ge", "txd1", V_88F6920_PLUS)), |
187 | MPP_MODE(30, | 194 | MPP_MODE(30, |
188 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 195 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
189 | MPP_VAR_FUNCTION(5, "dev", "oen", V_88F6920_PLUS), | 196 | MPP_VAR_FUNCTION(5, "dev", "oe", V_88F6920_PLUS), |
190 | MPP_VAR_FUNCTION(8, "ge", "txd2", V_88F6920_PLUS)), | 197 | MPP_VAR_FUNCTION(8, "ge", "txd2", V_88F6920_PLUS)), |
191 | MPP_MODE(31, | 198 | MPP_MODE(31, |
192 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 199 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
@@ -194,45 +201,45 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
194 | MPP_VAR_FUNCTION(8, "ge", "txd3", V_88F6920_PLUS)), | 201 | MPP_VAR_FUNCTION(8, "ge", "txd3", V_88F6920_PLUS)), |
195 | MPP_MODE(32, | 202 | MPP_MODE(32, |
196 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 203 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
197 | MPP_VAR_FUNCTION(5, "dev", "wen0", V_88F6920_PLUS), | 204 | MPP_VAR_FUNCTION(5, "dev", "we0", V_88F6920_PLUS), |
198 | MPP_VAR_FUNCTION(8, "ge", "txctl", V_88F6920_PLUS)), | 205 | MPP_VAR_FUNCTION(8, "ge", "txctl", V_88F6920_PLUS)), |
199 | MPP_MODE(33, | 206 | MPP_MODE(33, |
200 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 207 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
201 | MPP_VAR_FUNCTION(1, "m", "decc", V_88F6920_PLUS), | 208 | MPP_VAR_FUNCTION(1, "dram", "deccerr", V_88F6920_PLUS), |
202 | MPP_VAR_FUNCTION(5, "dev", "ad3", V_88F6920_PLUS)), | 209 | MPP_VAR_FUNCTION(5, "dev", "ad3", V_88F6920_PLUS)), |
203 | MPP_MODE(34, | 210 | MPP_MODE(34, |
204 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 211 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
205 | MPP_VAR_FUNCTION(5, "dev", "ad1", V_88F6920_PLUS)), | 212 | MPP_VAR_FUNCTION(5, "dev", "ad1", V_88F6920_PLUS)), |
206 | MPP_MODE(35, | 213 | MPP_MODE(35, |
207 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 214 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
208 | MPP_VAR_FUNCTION(1, "ref", "clk", V_88F6920_PLUS), | 215 | MPP_VAR_FUNCTION(1, "ref", "clk_out1", V_88F6920_PLUS), |
209 | MPP_VAR_FUNCTION(5, "dev", "a1", V_88F6920_PLUS)), | 216 | MPP_VAR_FUNCTION(5, "dev", "a1", V_88F6920_PLUS)), |
210 | MPP_MODE(36, | 217 | MPP_MODE(36, |
211 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 218 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
212 | MPP_VAR_FUNCTION(5, "dev", "a0", V_88F6920_PLUS)), | 219 | MPP_VAR_FUNCTION(5, "dev", "a0", V_88F6920_PLUS)), |
213 | MPP_MODE(37, | 220 | MPP_MODE(37, |
214 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 221 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
215 | MPP_VAR_FUNCTION(4, "sd", "d3", V_88F6920_PLUS), | 222 | MPP_VAR_FUNCTION(4, "sd0", "d3", V_88F6920_PLUS), |
216 | MPP_VAR_FUNCTION(5, "dev", "ad8", V_88F6920_PLUS), | 223 | MPP_VAR_FUNCTION(5, "dev", "ad8", V_88F6920_PLUS), |
217 | MPP_VAR_FUNCTION(8, "ge", "rxclk", V_88F6920_PLUS)), | 224 | MPP_VAR_FUNCTION(8, "ge", "rxclk", V_88F6920_PLUS)), |
218 | MPP_MODE(38, | 225 | MPP_MODE(38, |
219 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 226 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
220 | MPP_VAR_FUNCTION(3, "ref", "clk", V_88F6920_PLUS), | 227 | MPP_VAR_FUNCTION(3, "ref", "clk_out0", V_88F6920_PLUS), |
221 | MPP_VAR_FUNCTION(4, "sd", "d0", V_88F6920_PLUS), | 228 | MPP_VAR_FUNCTION(4, "sd0", "d0", V_88F6920_PLUS), |
222 | MPP_VAR_FUNCTION(5, "dev", "ad4", V_88F6920_PLUS), | 229 | MPP_VAR_FUNCTION(5, "dev", "ad4", V_88F6920_PLUS), |
223 | MPP_VAR_FUNCTION(8, "ge", "rxd1", V_88F6920_PLUS)), | 230 | MPP_VAR_FUNCTION(8, "ge", "rxd1", V_88F6920_PLUS)), |
224 | MPP_MODE(39, | 231 | MPP_MODE(39, |
225 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 232 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
226 | MPP_VAR_FUNCTION(1, "i2c1", "sck", V_88F6920_PLUS), | 233 | MPP_VAR_FUNCTION(1, "i2c1", "sck", V_88F6920_PLUS), |
227 | MPP_VAR_FUNCTION(3, "ua0", "cts", V_88F6920_PLUS), | 234 | MPP_VAR_FUNCTION(3, "ua0", "cts", V_88F6920_PLUS), |
228 | MPP_VAR_FUNCTION(4, "sd", "d1", V_88F6920_PLUS), | 235 | MPP_VAR_FUNCTION(4, "sd0", "d1", V_88F6920_PLUS), |
229 | MPP_VAR_FUNCTION(5, "dev", "a2", V_88F6920_PLUS), | 236 | MPP_VAR_FUNCTION(5, "dev", "a2", V_88F6920_PLUS), |
230 | MPP_VAR_FUNCTION(8, "ge", "rxd2", V_88F6920_PLUS)), | 237 | MPP_VAR_FUNCTION(8, "ge", "rxd2", V_88F6920_PLUS)), |
231 | MPP_MODE(40, | 238 | MPP_MODE(40, |
232 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 239 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
233 | MPP_VAR_FUNCTION(1, "i2c1", "sda", V_88F6920_PLUS), | 240 | MPP_VAR_FUNCTION(1, "i2c1", "sda", V_88F6920_PLUS), |
234 | MPP_VAR_FUNCTION(3, "ua0", "rts", V_88F6920_PLUS), | 241 | MPP_VAR_FUNCTION(3, "ua0", "rts", V_88F6920_PLUS), |
235 | MPP_VAR_FUNCTION(4, "sd", "d2", V_88F6920_PLUS), | 242 | MPP_VAR_FUNCTION(4, "sd0", "d2", V_88F6920_PLUS), |
236 | MPP_VAR_FUNCTION(5, "dev", "ad6", V_88F6920_PLUS), | 243 | MPP_VAR_FUNCTION(5, "dev", "ad6", V_88F6920_PLUS), |
237 | MPP_VAR_FUNCTION(8, "ge", "rxd3", V_88F6920_PLUS)), | 244 | MPP_VAR_FUNCTION(8, "ge", "rxd3", V_88F6920_PLUS)), |
238 | MPP_MODE(41, | 245 | MPP_MODE(41, |
@@ -240,8 +247,8 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
240 | MPP_VAR_FUNCTION(1, "ua1", "rxd", V_88F6920_PLUS), | 247 | MPP_VAR_FUNCTION(1, "ua1", "rxd", V_88F6920_PLUS), |
241 | MPP_VAR_FUNCTION(3, "ua0", "cts", V_88F6920_PLUS), | 248 | MPP_VAR_FUNCTION(3, "ua0", "cts", V_88F6920_PLUS), |
242 | MPP_VAR_FUNCTION(4, "spi1", "cs3", V_88F6920_PLUS), | 249 | MPP_VAR_FUNCTION(4, "spi1", "cs3", V_88F6920_PLUS), |
243 | MPP_VAR_FUNCTION(5, "dev", "burstn", V_88F6920_PLUS), | 250 | MPP_VAR_FUNCTION(5, "dev", "burst/last", V_88F6920_PLUS), |
244 | MPP_VAR_FUNCTION(6, "nd", "rbn0", V_88F6920_PLUS), | 251 | MPP_VAR_FUNCTION(6, "nand", "rb0", V_88F6920_PLUS), |
245 | MPP_VAR_FUNCTION(8, "ge", "rxctl", V_88F6920_PLUS)), | 252 | MPP_VAR_FUNCTION(8, "ge", "rxctl", V_88F6920_PLUS)), |
246 | MPP_MODE(42, | 253 | MPP_MODE(42, |
247 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 254 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
@@ -251,113 +258,119 @@ static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { | |||
251 | MPP_MODE(43, | 258 | MPP_MODE(43, |
252 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 259 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
253 | MPP_VAR_FUNCTION(1, "pcie0", "clkreq", V_88F6920_PLUS), | 260 | MPP_VAR_FUNCTION(1, "pcie0", "clkreq", V_88F6920_PLUS), |
254 | MPP_VAR_FUNCTION(2, "m", "vtt", V_88F6920_PLUS), | 261 | MPP_VAR_FUNCTION(2, "dram", "vttctrl", V_88F6920_PLUS), |
255 | MPP_VAR_FUNCTION(3, "m", "decc", V_88F6920_PLUS), | 262 | MPP_VAR_FUNCTION(3, "dram", "deccerr", V_88F6920_PLUS), |
256 | MPP_VAR_FUNCTION(4, "spi1", "cs2", V_88F6920_PLUS), | 263 | MPP_VAR_FUNCTION(4, "spi1", "cs2", V_88F6920_PLUS), |
257 | MPP_VAR_FUNCTION(5, "dev", "clkout", V_88F6920_PLUS), | 264 | MPP_VAR_FUNCTION(5, "dev", "clkout", V_88F6920_PLUS), |
258 | MPP_VAR_FUNCTION(6, "nd", "rbn1", V_88F6920_PLUS)), | 265 | MPP_VAR_FUNCTION(6, "nand", "rb1", V_88F6920_PLUS)), |
259 | MPP_MODE(44, | 266 | MPP_MODE(44, |
260 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 267 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
261 | MPP_VAR_FUNCTION(1, "sata0", "present", V_88F6928), | 268 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6925_PLUS), |
262 | MPP_VAR_FUNCTION(2, "sata1", "present", V_88F6928), | 269 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6925_PLUS), |
270 | MPP_VAR_FUNCTION(3, "sata2", "prsnt", V_88F6928), | ||
271 | MPP_VAR_FUNCTION(4, "sata3", "prsnt", V_88F6928), | ||
263 | MPP_VAR_FUNCTION(7, "led", "clk", V_88F6920_PLUS)), | 272 | MPP_VAR_FUNCTION(7, "led", "clk", V_88F6920_PLUS)), |
264 | MPP_MODE(45, | 273 | MPP_MODE(45, |
265 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 274 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
266 | MPP_VAR_FUNCTION(1, "ref", "clk", V_88F6920_PLUS), | 275 | MPP_VAR_FUNCTION(1, "ref", "clk_out0", V_88F6920_PLUS), |
267 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6920_PLUS), | 276 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6920_PLUS), |
268 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6920_PLUS)), | 277 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6920_PLUS)), |
269 | MPP_MODE(46, | 278 | MPP_MODE(46, |
270 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 279 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
271 | MPP_VAR_FUNCTION(1, "ref", "clk", V_88F6920_PLUS), | 280 | MPP_VAR_FUNCTION(1, "ref", "clk_out1", V_88F6920_PLUS), |
272 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6920_PLUS), | 281 | MPP_VAR_FUNCTION(2, "pcie0", "rstout", V_88F6920_PLUS), |
273 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6920_PLUS), | 282 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6920_PLUS), |
274 | MPP_VAR_FUNCTION(7, "led", "stb", V_88F6920_PLUS)), | 283 | MPP_VAR_FUNCTION(7, "led", "stb", V_88F6920_PLUS)), |
275 | MPP_MODE(47, | 284 | MPP_MODE(47, |
276 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 285 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
277 | MPP_VAR_FUNCTION(1, "sata0", "present", V_88F6928), | 286 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6925_PLUS), |
278 | MPP_VAR_FUNCTION(2, "sata1", "present", V_88F6928), | 287 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6925_PLUS), |
288 | MPP_VAR_FUNCTION(3, "sata2", "prsnt", V_88F6928), | ||
289 | MPP_VAR_FUNCTION(5, "sata3", "prsnt", V_88F6928), | ||
279 | MPP_VAR_FUNCTION(7, "led", "data", V_88F6920_PLUS)), | 290 | MPP_VAR_FUNCTION(7, "led", "data", V_88F6920_PLUS)), |
280 | MPP_MODE(48, | 291 | MPP_MODE(48, |
281 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 292 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
282 | MPP_VAR_FUNCTION(1, "sata0", "present", V_88F6928), | 293 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6925_PLUS), |
283 | MPP_VAR_FUNCTION(2, "m", "vtt", V_88F6920_PLUS), | 294 | MPP_VAR_FUNCTION(2, "dram", "vttctrl", V_88F6920_PLUS), |
284 | MPP_VAR_FUNCTION(3, "tdm", "pclk", V_88F6928), | 295 | MPP_VAR_FUNCTION(3, "tdm", "pclk", V_88F6928), |
285 | MPP_VAR_FUNCTION(4, "audio", "mclk", V_88F6928), | 296 | MPP_VAR_FUNCTION(4, "audio", "mclk", V_88F6928), |
286 | MPP_VAR_FUNCTION(5, "sd", "d4", V_88F6920_PLUS), | 297 | MPP_VAR_FUNCTION(5, "sd0", "d4", V_88F6920_PLUS), |
287 | MPP_VAR_FUNCTION(6, "pcie0", "clkreq", V_88F6920_PLUS), | 298 | MPP_VAR_FUNCTION(6, "pcie0", "clkreq", V_88F6920_PLUS), |
288 | MPP_VAR_FUNCTION(7, "ua1", "txd", V_88F6920_PLUS)), | 299 | MPP_VAR_FUNCTION(7, "ua1", "txd", V_88F6920_PLUS)), |
289 | MPP_MODE(49, | 300 | MPP_MODE(49, |
290 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 301 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
302 | MPP_VAR_FUNCTION(1, "sata2", "prsnt", V_88F6928), | ||
303 | MPP_VAR_FUNCTION(2, "sata3", "prsnt", V_88F6928), | ||
291 | MPP_VAR_FUNCTION(3, "tdm", "fsync", V_88F6928), | 304 | MPP_VAR_FUNCTION(3, "tdm", "fsync", V_88F6928), |
292 | MPP_VAR_FUNCTION(4, "audio", "lrclk", V_88F6928), | 305 | MPP_VAR_FUNCTION(4, "audio", "lrclk", V_88F6928), |
293 | MPP_VAR_FUNCTION(5, "sd", "d5", V_88F6920_PLUS), | 306 | MPP_VAR_FUNCTION(5, "sd0", "d5", V_88F6920_PLUS), |
294 | MPP_VAR_FUNCTION(7, "ua2", "rxd", V_88F6920_PLUS)), | 307 | MPP_VAR_FUNCTION(7, "ua2", "rxd", V_88F6920_PLUS)), |
295 | MPP_MODE(50, | 308 | MPP_MODE(50, |
296 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 309 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
297 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6920_PLUS), | 310 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6920_PLUS), |
298 | MPP_VAR_FUNCTION(3, "tdm", "drx", V_88F6928), | 311 | MPP_VAR_FUNCTION(3, "tdm", "drx", V_88F6928), |
299 | MPP_VAR_FUNCTION(4, "audio", "extclk", V_88F6928), | 312 | MPP_VAR_FUNCTION(4, "audio", "extclk", V_88F6928), |
300 | MPP_VAR_FUNCTION(5, "sd", "cmd", V_88F6920_PLUS), | 313 | MPP_VAR_FUNCTION(5, "sd0", "cmd", V_88F6920_PLUS), |
301 | MPP_VAR_FUNCTION(7, "ua2", "rxd", V_88F6920_PLUS)), | 314 | MPP_VAR_FUNCTION(7, "ua2", "rxd", V_88F6920_PLUS)), |
302 | MPP_MODE(51, | 315 | MPP_MODE(51, |
303 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 316 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
304 | MPP_VAR_FUNCTION(3, "tdm", "dtx", V_88F6928), | 317 | MPP_VAR_FUNCTION(3, "tdm", "dtx", V_88F6928), |
305 | MPP_VAR_FUNCTION(4, "audio", "sdo", V_88F6928), | 318 | MPP_VAR_FUNCTION(4, "audio", "sdo", V_88F6928), |
306 | MPP_VAR_FUNCTION(5, "m", "decc", V_88F6920_PLUS), | 319 | MPP_VAR_FUNCTION(5, "dram", "deccerr", V_88F6920_PLUS), |
307 | MPP_VAR_FUNCTION(7, "ua2", "txd", V_88F6920_PLUS)), | 320 | MPP_VAR_FUNCTION(7, "ua2", "txd", V_88F6920_PLUS)), |
308 | MPP_MODE(52, | 321 | MPP_MODE(52, |
309 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 322 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
310 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6920_PLUS), | 323 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6920_PLUS), |
311 | MPP_VAR_FUNCTION(3, "tdm", "intn", V_88F6928), | 324 | MPP_VAR_FUNCTION(3, "tdm", "int", V_88F6928), |
312 | MPP_VAR_FUNCTION(4, "audio", "sdi", V_88F6928), | 325 | MPP_VAR_FUNCTION(4, "audio", "sdi", V_88F6928), |
313 | MPP_VAR_FUNCTION(5, "sd", "d6", V_88F6920_PLUS), | 326 | MPP_VAR_FUNCTION(5, "sd0", "d6", V_88F6920_PLUS), |
314 | MPP_VAR_FUNCTION(7, "i2c3", "sck", V_88F6920_PLUS)), | 327 | MPP_VAR_FUNCTION(7, "i2c3", "sck", V_88F6920_PLUS)), |
315 | MPP_MODE(53, | 328 | MPP_MODE(53, |
316 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 329 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
317 | MPP_VAR_FUNCTION(1, "sata1", "present", V_88F6928), | 330 | MPP_VAR_FUNCTION(1, "sata1", "prsnt", V_88F6925_PLUS), |
318 | MPP_VAR_FUNCTION(2, "sata0", "present", V_88F6928), | 331 | MPP_VAR_FUNCTION(2, "sata0", "prsnt", V_88F6925_PLUS), |
319 | MPP_VAR_FUNCTION(3, "tdm", "rstn", V_88F6928), | 332 | MPP_VAR_FUNCTION(3, "tdm", "rst", V_88F6928), |
320 | MPP_VAR_FUNCTION(4, "audio", "bclk", V_88F6928), | 333 | MPP_VAR_FUNCTION(4, "audio", "bclk", V_88F6928), |
321 | MPP_VAR_FUNCTION(5, "sd", "d7", V_88F6920_PLUS), | 334 | MPP_VAR_FUNCTION(5, "sd0", "d7", V_88F6920_PLUS), |
322 | MPP_VAR_FUNCTION(7, "i2c3", "sda", V_88F6920_PLUS)), | 335 | MPP_VAR_FUNCTION(7, "i2c3", "sda", V_88F6920_PLUS)), |
323 | MPP_MODE(54, | 336 | MPP_MODE(54, |
324 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 337 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
325 | MPP_VAR_FUNCTION(1, "sata0", "present", V_88F6928), | 338 | MPP_VAR_FUNCTION(1, "sata0", "prsnt", V_88F6925_PLUS), |
326 | MPP_VAR_FUNCTION(2, "sata1", "present", V_88F6928), | 339 | MPP_VAR_FUNCTION(2, "sata1", "prsnt", V_88F6925_PLUS), |
327 | MPP_VAR_FUNCTION(3, "pcie0", "rstout", V_88F6920_PLUS), | 340 | MPP_VAR_FUNCTION(3, "pcie0", "rstout", V_88F6920_PLUS), |
328 | MPP_VAR_FUNCTION(5, "sd", "d3", V_88F6920_PLUS), | 341 | MPP_VAR_FUNCTION(5, "sd0", "d3", V_88F6920_PLUS), |
329 | MPP_VAR_FUNCTION(7, "ua3", "txd", V_88F6920_PLUS)), | 342 | MPP_VAR_FUNCTION(7, "ua3", "txd", V_88F6920_PLUS)), |
330 | MPP_MODE(55, | 343 | MPP_MODE(55, |
331 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 344 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
332 | MPP_VAR_FUNCTION(1, "ua1", "cts", V_88F6920_PLUS), | 345 | MPP_VAR_FUNCTION(1, "ua1", "cts", V_88F6920_PLUS), |
333 | MPP_VAR_FUNCTION(4, "spi1", "cs1", V_88F6920_PLUS), | 346 | MPP_VAR_FUNCTION(4, "spi1", "cs1", V_88F6920_PLUS), |
334 | MPP_VAR_FUNCTION(5, "sd", "d0", V_88F6920_PLUS), | 347 | MPP_VAR_FUNCTION(5, "sd0", "d0", V_88F6920_PLUS), |
335 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6920_PLUS), | 348 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6920_PLUS), |
336 | MPP_VAR_FUNCTION(7, "ua3", "rxd", V_88F6920_PLUS)), | 349 | MPP_VAR_FUNCTION(7, "ua3", "rxd", V_88F6920_PLUS)), |
337 | MPP_MODE(56, | 350 | MPP_MODE(56, |
338 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 351 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
339 | MPP_VAR_FUNCTION(1, "ua1", "rts", V_88F6920_PLUS), | 352 | MPP_VAR_FUNCTION(1, "ua1", "rts", V_88F6920_PLUS), |
340 | MPP_VAR_FUNCTION(3, "m", "decc", V_88F6920_PLUS), | 353 | MPP_VAR_FUNCTION(3, "dram", "deccerr", V_88F6920_PLUS), |
341 | MPP_VAR_FUNCTION(4, "spi1", "mosi", V_88F6920_PLUS), | 354 | MPP_VAR_FUNCTION(4, "spi1", "mosi", V_88F6920_PLUS), |
342 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6920_PLUS)), | 355 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6920_PLUS)), |
343 | MPP_MODE(57, | 356 | MPP_MODE(57, |
344 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 357 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
345 | MPP_VAR_FUNCTION(4, "spi1", "sck", V_88F6920_PLUS), | 358 | MPP_VAR_FUNCTION(4, "spi1", "sck", V_88F6920_PLUS), |
346 | MPP_VAR_FUNCTION(5, "sd", "clk", V_88F6920_PLUS), | 359 | MPP_VAR_FUNCTION(5, "sd0", "clk", V_88F6920_PLUS), |
347 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6920_PLUS)), | 360 | MPP_VAR_FUNCTION(6, "ua1", "txd", V_88F6920_PLUS)), |
348 | MPP_MODE(58, | 361 | MPP_MODE(58, |
349 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 362 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
350 | MPP_VAR_FUNCTION(2, "i2c1", "sck", V_88F6920_PLUS), | 363 | MPP_VAR_FUNCTION(2, "i2c1", "sck", V_88F6920_PLUS), |
351 | MPP_VAR_FUNCTION(3, "pcie2", "clkreq", V_88F6920_PLUS), | 364 | MPP_VAR_FUNCTION(3, "pcie2", "clkreq", V_88F6920_PLUS), |
352 | MPP_VAR_FUNCTION(4, "spi1", "miso", V_88F6920_PLUS), | 365 | MPP_VAR_FUNCTION(4, "spi1", "miso", V_88F6920_PLUS), |
353 | MPP_VAR_FUNCTION(5, "sd", "d1", V_88F6920_PLUS), | 366 | MPP_VAR_FUNCTION(5, "sd0", "d1", V_88F6920_PLUS), |
354 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6920_PLUS)), | 367 | MPP_VAR_FUNCTION(6, "ua1", "rxd", V_88F6920_PLUS)), |
355 | MPP_MODE(59, | 368 | MPP_MODE(59, |
356 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), | 369 | MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), |
357 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6920_PLUS), | 370 | MPP_VAR_FUNCTION(1, "pcie0", "rstout", V_88F6920_PLUS), |
358 | MPP_VAR_FUNCTION(2, "i2c1", "sda", V_88F6920_PLUS), | 371 | MPP_VAR_FUNCTION(2, "i2c1", "sda", V_88F6920_PLUS), |
359 | MPP_VAR_FUNCTION(4, "spi1", "cs0", V_88F6920_PLUS), | 372 | MPP_VAR_FUNCTION(4, "spi1", "cs0", V_88F6920_PLUS), |
360 | MPP_VAR_FUNCTION(5, "sd", "d2", V_88F6920_PLUS)), | 373 | MPP_VAR_FUNCTION(5, "sd0", "d2", V_88F6920_PLUS)), |
361 | }; | 374 | }; |
362 | 375 | ||
363 | static struct mvebu_pinctrl_soc_info armada_39x_pinctrl_info; | 376 | static struct mvebu_pinctrl_soc_info armada_39x_pinctrl_info; |
@@ -368,6 +381,10 @@ static const struct of_device_id armada_39x_pinctrl_of_match[] = { | |||
368 | .data = (void *) V_88F6920, | 381 | .data = (void *) V_88F6920, |
369 | }, | 382 | }, |
370 | { | 383 | { |
384 | .compatible = "marvell,mv88f6925-pinctrl", | ||
385 | .data = (void *) V_88F6925, | ||
386 | }, | ||
387 | { | ||
371 | .compatible = "marvell,mv88f6928-pinctrl", | 388 | .compatible = "marvell,mv88f6928-pinctrl", |
372 | .data = (void *) V_88F6928, | 389 | .data = (void *) V_88F6928, |
373 | }, | 390 | }, |
@@ -380,7 +397,7 @@ static struct mvebu_mpp_ctrl armada_39x_mpp_controls[] = { | |||
380 | 397 | ||
381 | static struct pinctrl_gpio_range armada_39x_mpp_gpio_ranges[] = { | 398 | static struct pinctrl_gpio_range armada_39x_mpp_gpio_ranges[] = { |
382 | MPP_GPIO_RANGE(0, 0, 0, 32), | 399 | MPP_GPIO_RANGE(0, 0, 0, 32), |
383 | MPP_GPIO_RANGE(1, 32, 32, 27), | 400 | MPP_GPIO_RANGE(1, 32, 32, 28), |
384 | }; | 401 | }; |
385 | 402 | ||
386 | static int armada_39x_pinctrl_probe(struct platform_device *pdev) | 403 | static int armada_39x_pinctrl_probe(struct platform_device *pdev) |
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-xp.c b/drivers/pinctrl/mvebu/pinctrl-armada-xp.c index 578db9f033b2..bf70e0953576 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-xp.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-xp.c | |||
@@ -14,10 +14,7 @@ | |||
14 | * available: mv78230, mv78260 and mv78460. From a pin muxing | 14 | * available: mv78230, mv78260 and mv78460. From a pin muxing |
15 | * perspective, the mv78230 has 49 MPP pins. The mv78260 and mv78460 | 15 | * perspective, the mv78230 has 49 MPP pins. The mv78260 and mv78460 |
16 | * both have 67 MPP pins (more GPIOs and address lines for the memory | 16 | * both have 67 MPP pins (more GPIOs and address lines for the memory |
17 | * bus mainly). The only difference between the mv78260 and the | 17 | * bus mainly). |
18 | * mv78460 in terms of pin muxing is the addition of two functions on | ||
19 | * pins 43 and 56 to access the VDD of the CPU2 and 3 (mv78260 has two | ||
20 | * cores, mv78460 has four cores). | ||
21 | */ | 18 | */ |
22 | 19 | ||
23 | #include <linux/err.h> | 20 | #include <linux/err.h> |
@@ -57,7 +54,7 @@ enum armada_xp_variant { | |||
57 | static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | 54 | static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { |
58 | MPP_MODE(0, | 55 | MPP_MODE(0, |
59 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 56 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
60 | MPP_VAR_FUNCTION(0x1, "ge0", "txclko", V_MV78230_PLUS), | 57 | MPP_VAR_FUNCTION(0x1, "ge0", "txclkout", V_MV78230_PLUS), |
61 | MPP_VAR_FUNCTION(0x4, "lcd", "d0", V_MV78230_PLUS)), | 58 | MPP_VAR_FUNCTION(0x4, "lcd", "d0", V_MV78230_PLUS)), |
62 | MPP_MODE(1, | 59 | MPP_MODE(1, |
63 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 60 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
@@ -106,17 +103,19 @@ static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | |||
106 | MPP_MODE(12, | 103 | MPP_MODE(12, |
107 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 104 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
108 | MPP_VAR_FUNCTION(0x1, "ge0", "txd4", V_MV78230_PLUS), | 105 | MPP_VAR_FUNCTION(0x1, "ge0", "txd4", V_MV78230_PLUS), |
109 | MPP_VAR_FUNCTION(0x2, "ge1", "clkout", V_MV78230_PLUS), | 106 | MPP_VAR_FUNCTION(0x2, "ge1", "txclkout", V_MV78230_PLUS), |
110 | MPP_VAR_FUNCTION(0x4, "lcd", "d12", V_MV78230_PLUS)), | 107 | MPP_VAR_FUNCTION(0x4, "lcd", "d12", V_MV78230_PLUS)), |
111 | MPP_MODE(13, | 108 | MPP_MODE(13, |
112 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 109 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
113 | MPP_VAR_FUNCTION(0x1, "ge0", "txd5", V_MV78230_PLUS), | 110 | MPP_VAR_FUNCTION(0x1, "ge0", "txd5", V_MV78230_PLUS), |
114 | MPP_VAR_FUNCTION(0x2, "ge1", "txd0", V_MV78230_PLUS), | 111 | MPP_VAR_FUNCTION(0x2, "ge1", "txd0", V_MV78230_PLUS), |
112 | MPP_VAR_FUNCTION(0x3, "spi1", "mosi", V_MV78230_PLUS), | ||
115 | MPP_VAR_FUNCTION(0x4, "lcd", "d13", V_MV78230_PLUS)), | 113 | MPP_VAR_FUNCTION(0x4, "lcd", "d13", V_MV78230_PLUS)), |
116 | MPP_MODE(14, | 114 | MPP_MODE(14, |
117 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 115 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
118 | MPP_VAR_FUNCTION(0x1, "ge0", "txd6", V_MV78230_PLUS), | 116 | MPP_VAR_FUNCTION(0x1, "ge0", "txd6", V_MV78230_PLUS), |
119 | MPP_VAR_FUNCTION(0x2, "ge1", "txd1", V_MV78230_PLUS), | 117 | MPP_VAR_FUNCTION(0x2, "ge1", "txd1", V_MV78230_PLUS), |
118 | MPP_VAR_FUNCTION(0x3, "spi1", "sck", V_MV78230_PLUS), | ||
120 | MPP_VAR_FUNCTION(0x4, "lcd", "d14", V_MV78230_PLUS)), | 119 | MPP_VAR_FUNCTION(0x4, "lcd", "d14", V_MV78230_PLUS)), |
121 | MPP_MODE(15, | 120 | MPP_MODE(15, |
122 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 121 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
@@ -127,11 +126,13 @@ static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | |||
127 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 126 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
128 | MPP_VAR_FUNCTION(0x1, "ge0", "txclk", V_MV78230_PLUS), | 127 | MPP_VAR_FUNCTION(0x1, "ge0", "txclk", V_MV78230_PLUS), |
129 | MPP_VAR_FUNCTION(0x2, "ge1", "txd3", V_MV78230_PLUS), | 128 | MPP_VAR_FUNCTION(0x2, "ge1", "txd3", V_MV78230_PLUS), |
129 | MPP_VAR_FUNCTION(0x3, "spi1", "cs0", V_MV78230_PLUS), | ||
130 | MPP_VAR_FUNCTION(0x4, "lcd", "d16", V_MV78230_PLUS)), | 130 | MPP_VAR_FUNCTION(0x4, "lcd", "d16", V_MV78230_PLUS)), |
131 | MPP_MODE(17, | 131 | MPP_MODE(17, |
132 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 132 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
133 | MPP_VAR_FUNCTION(0x1, "ge0", "col", V_MV78230_PLUS), | 133 | MPP_VAR_FUNCTION(0x1, "ge0", "col", V_MV78230_PLUS), |
134 | MPP_VAR_FUNCTION(0x2, "ge1", "txctl", V_MV78230_PLUS), | 134 | MPP_VAR_FUNCTION(0x2, "ge1", "txctl", V_MV78230_PLUS), |
135 | MPP_VAR_FUNCTION(0x3, "spi1", "miso", V_MV78230_PLUS), | ||
135 | MPP_VAR_FUNCTION(0x4, "lcd", "d17", V_MV78230_PLUS)), | 136 | MPP_VAR_FUNCTION(0x4, "lcd", "d17", V_MV78230_PLUS)), |
136 | MPP_MODE(18, | 137 | MPP_MODE(18, |
137 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 138 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
@@ -155,7 +156,7 @@ static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | |||
155 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 156 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
156 | MPP_VAR_FUNCTION(0x1, "ge0", "rxd5", V_MV78230_PLUS), | 157 | MPP_VAR_FUNCTION(0x1, "ge0", "rxd5", V_MV78230_PLUS), |
157 | MPP_VAR_FUNCTION(0x2, "ge1", "rxd3", V_MV78230_PLUS), | 158 | MPP_VAR_FUNCTION(0x2, "ge1", "rxd3", V_MV78230_PLUS), |
158 | MPP_VAR_FUNCTION(0x3, "mem", "bat", V_MV78230_PLUS), | 159 | MPP_VAR_FUNCTION(0x3, "dram", "bat", V_MV78230_PLUS), |
159 | MPP_VAR_FUNCTION(0x4, "lcd", "d21", V_MV78230_PLUS)), | 160 | MPP_VAR_FUNCTION(0x4, "lcd", "d21", V_MV78230_PLUS)), |
160 | MPP_MODE(22, | 161 | MPP_MODE(22, |
161 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 162 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
@@ -172,20 +173,17 @@ static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | |||
172 | MPP_MODE(24, | 173 | MPP_MODE(24, |
173 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 174 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
174 | MPP_VAR_FUNCTION(0x1, "sata1", "prsnt", V_MV78230_PLUS), | 175 | MPP_VAR_FUNCTION(0x1, "sata1", "prsnt", V_MV78230_PLUS), |
175 | MPP_VAR_FUNCTION(0x2, "nf", "bootcs-re", V_MV78230_PLUS), | ||
176 | MPP_VAR_FUNCTION(0x3, "tdm", "rst", V_MV78230_PLUS), | 176 | MPP_VAR_FUNCTION(0x3, "tdm", "rst", V_MV78230_PLUS), |
177 | MPP_VAR_FUNCTION(0x4, "lcd", "hsync", V_MV78230_PLUS)), | 177 | MPP_VAR_FUNCTION(0x4, "lcd", "hsync", V_MV78230_PLUS)), |
178 | MPP_MODE(25, | 178 | MPP_MODE(25, |
179 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 179 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
180 | MPP_VAR_FUNCTION(0x1, "sata0", "prsnt", V_MV78230_PLUS), | 180 | MPP_VAR_FUNCTION(0x1, "sata0", "prsnt", V_MV78230_PLUS), |
181 | MPP_VAR_FUNCTION(0x2, "nf", "bootcs-we", V_MV78230_PLUS), | ||
182 | MPP_VAR_FUNCTION(0x3, "tdm", "pclk", V_MV78230_PLUS), | 181 | MPP_VAR_FUNCTION(0x3, "tdm", "pclk", V_MV78230_PLUS), |
183 | MPP_VAR_FUNCTION(0x4, "lcd", "vsync", V_MV78230_PLUS)), | 182 | MPP_VAR_FUNCTION(0x4, "lcd", "vsync", V_MV78230_PLUS)), |
184 | MPP_MODE(26, | 183 | MPP_MODE(26, |
185 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 184 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
186 | MPP_VAR_FUNCTION(0x3, "tdm", "fsync", V_MV78230_PLUS), | 185 | MPP_VAR_FUNCTION(0x3, "tdm", "fsync", V_MV78230_PLUS), |
187 | MPP_VAR_FUNCTION(0x4, "lcd", "clk", V_MV78230_PLUS), | 186 | MPP_VAR_FUNCTION(0x4, "lcd", "clk", V_MV78230_PLUS)), |
188 | MPP_VAR_FUNCTION(0x5, "vdd", "cpu1-pd", V_MV78230_PLUS)), | ||
189 | MPP_MODE(27, | 187 | MPP_MODE(27, |
190 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 188 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
191 | MPP_VAR_FUNCTION(0x1, "ptp", "trig", V_MV78230_PLUS), | 189 | MPP_VAR_FUNCTION(0x1, "ptp", "trig", V_MV78230_PLUS), |
@@ -200,8 +198,7 @@ static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | |||
200 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 198 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
201 | MPP_VAR_FUNCTION(0x1, "ptp", "clk", V_MV78230_PLUS), | 199 | MPP_VAR_FUNCTION(0x1, "ptp", "clk", V_MV78230_PLUS), |
202 | MPP_VAR_FUNCTION(0x3, "tdm", "int0", V_MV78230_PLUS), | 200 | MPP_VAR_FUNCTION(0x3, "tdm", "int0", V_MV78230_PLUS), |
203 | MPP_VAR_FUNCTION(0x4, "lcd", "ref-clk", V_MV78230_PLUS), | 201 | MPP_VAR_FUNCTION(0x4, "lcd", "ref-clk", V_MV78230_PLUS)), |
204 | MPP_VAR_FUNCTION(0x5, "vdd", "cpu0-pd", V_MV78230_PLUS)), | ||
205 | MPP_MODE(30, | 202 | MPP_MODE(30, |
206 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 203 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
207 | MPP_VAR_FUNCTION(0x1, "sd0", "clk", V_MV78230_PLUS), | 204 | MPP_VAR_FUNCTION(0x1, "sd0", "clk", V_MV78230_PLUS), |
@@ -209,23 +206,23 @@ static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | |||
209 | MPP_MODE(31, | 206 | MPP_MODE(31, |
210 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 207 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
211 | MPP_VAR_FUNCTION(0x1, "sd0", "cmd", V_MV78230_PLUS), | 208 | MPP_VAR_FUNCTION(0x1, "sd0", "cmd", V_MV78230_PLUS), |
212 | MPP_VAR_FUNCTION(0x3, "tdm", "int2", V_MV78230_PLUS), | 209 | MPP_VAR_FUNCTION(0x3, "tdm", "int2", V_MV78230_PLUS)), |
213 | MPP_VAR_FUNCTION(0x5, "vdd", "cpu0-pd", V_MV78230_PLUS)), | ||
214 | MPP_MODE(32, | 210 | MPP_MODE(32, |
215 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 211 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
216 | MPP_VAR_FUNCTION(0x1, "sd0", "d0", V_MV78230_PLUS), | 212 | MPP_VAR_FUNCTION(0x1, "sd0", "d0", V_MV78230_PLUS), |
217 | MPP_VAR_FUNCTION(0x3, "tdm", "int3", V_MV78230_PLUS), | 213 | MPP_VAR_FUNCTION(0x3, "tdm", "int3", V_MV78230_PLUS)), |
218 | MPP_VAR_FUNCTION(0x5, "vdd", "cpu1-pd", V_MV78230_PLUS)), | ||
219 | MPP_MODE(33, | 214 | MPP_MODE(33, |
220 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 215 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
221 | MPP_VAR_FUNCTION(0x1, "sd0", "d1", V_MV78230_PLUS), | 216 | MPP_VAR_FUNCTION(0x1, "sd0", "d1", V_MV78230_PLUS), |
222 | MPP_VAR_FUNCTION(0x3, "tdm", "int4", V_MV78230_PLUS), | 217 | MPP_VAR_FUNCTION(0x3, "tdm", "int4", V_MV78230_PLUS), |
223 | MPP_VAR_FUNCTION(0x4, "mem", "bat", V_MV78230_PLUS)), | 218 | MPP_VAR_FUNCTION(0x4, "dram", "bat", V_MV78230_PLUS), |
219 | MPP_VAR_FUNCTION(0x5, "dram", "vttctrl", V_MV78230_PLUS)), | ||
224 | MPP_MODE(34, | 220 | MPP_MODE(34, |
225 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 221 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
226 | MPP_VAR_FUNCTION(0x1, "sd0", "d2", V_MV78230_PLUS), | 222 | MPP_VAR_FUNCTION(0x1, "sd0", "d2", V_MV78230_PLUS), |
227 | MPP_VAR_FUNCTION(0x2, "sata0", "prsnt", V_MV78230_PLUS), | 223 | MPP_VAR_FUNCTION(0x2, "sata0", "prsnt", V_MV78230_PLUS), |
228 | MPP_VAR_FUNCTION(0x3, "tdm", "int5", V_MV78230_PLUS)), | 224 | MPP_VAR_FUNCTION(0x3, "tdm", "int5", V_MV78230_PLUS), |
225 | MPP_VAR_FUNCTION(0x4, "dram", "deccerr", V_MV78230_PLUS)), | ||
229 | MPP_MODE(35, | 226 | MPP_MODE(35, |
230 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 227 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
231 | MPP_VAR_FUNCTION(0x1, "sd0", "d3", V_MV78230_PLUS), | 228 | MPP_VAR_FUNCTION(0x1, "sd0", "d3", V_MV78230_PLUS), |
@@ -233,74 +230,80 @@ static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | |||
233 | MPP_VAR_FUNCTION(0x3, "tdm", "int6", V_MV78230_PLUS)), | 230 | MPP_VAR_FUNCTION(0x3, "tdm", "int6", V_MV78230_PLUS)), |
234 | MPP_MODE(36, | 231 | MPP_MODE(36, |
235 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 232 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
236 | MPP_VAR_FUNCTION(0x1, "spi", "mosi", V_MV78230_PLUS)), | 233 | MPP_VAR_FUNCTION(0x1, "spi0", "mosi", V_MV78230_PLUS)), |
237 | MPP_MODE(37, | 234 | MPP_MODE(37, |
238 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 235 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
239 | MPP_VAR_FUNCTION(0x1, "spi", "miso", V_MV78230_PLUS)), | 236 | MPP_VAR_FUNCTION(0x1, "spi0", "miso", V_MV78230_PLUS)), |
240 | MPP_MODE(38, | 237 | MPP_MODE(38, |
241 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 238 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
242 | MPP_VAR_FUNCTION(0x1, "spi", "sck", V_MV78230_PLUS)), | 239 | MPP_VAR_FUNCTION(0x1, "spi0", "sck", V_MV78230_PLUS)), |
243 | MPP_MODE(39, | 240 | MPP_MODE(39, |
244 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 241 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
245 | MPP_VAR_FUNCTION(0x1, "spi", "cs0", V_MV78230_PLUS)), | 242 | MPP_VAR_FUNCTION(0x1, "spi0", "cs0", V_MV78230_PLUS)), |
246 | MPP_MODE(40, | 243 | MPP_MODE(40, |
247 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 244 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
248 | MPP_VAR_FUNCTION(0x1, "spi", "cs1", V_MV78230_PLUS), | 245 | MPP_VAR_FUNCTION(0x1, "spi0", "cs1", V_MV78230_PLUS), |
249 | MPP_VAR_FUNCTION(0x2, "uart2", "cts", V_MV78230_PLUS), | 246 | MPP_VAR_FUNCTION(0x2, "uart2", "cts", V_MV78230_PLUS), |
250 | MPP_VAR_FUNCTION(0x3, "vdd", "cpu1-pd", V_MV78230_PLUS), | ||
251 | MPP_VAR_FUNCTION(0x4, "lcd", "vga-hsync", V_MV78230_PLUS), | 247 | MPP_VAR_FUNCTION(0x4, "lcd", "vga-hsync", V_MV78230_PLUS), |
252 | MPP_VAR_FUNCTION(0x5, "pcie", "clkreq0", V_MV78230_PLUS)), | 248 | MPP_VAR_FUNCTION(0x5, "pcie", "clkreq0", V_MV78230_PLUS), |
249 | MPP_VAR_FUNCTION(0x6, "spi1", "cs1", V_MV78230_PLUS)), | ||
253 | MPP_MODE(41, | 250 | MPP_MODE(41, |
254 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 251 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
255 | MPP_VAR_FUNCTION(0x1, "spi", "cs2", V_MV78230_PLUS), | 252 | MPP_VAR_FUNCTION(0x1, "spi0", "cs2", V_MV78230_PLUS), |
256 | MPP_VAR_FUNCTION(0x2, "uart2", "rts", V_MV78230_PLUS), | 253 | MPP_VAR_FUNCTION(0x2, "uart2", "rts", V_MV78230_PLUS), |
257 | MPP_VAR_FUNCTION(0x3, "sata1", "prsnt", V_MV78230_PLUS), | 254 | MPP_VAR_FUNCTION(0x3, "sata1", "prsnt", V_MV78230_PLUS), |
258 | MPP_VAR_FUNCTION(0x4, "lcd", "vga-vsync", V_MV78230_PLUS), | 255 | MPP_VAR_FUNCTION(0x4, "lcd", "vga-vsync", V_MV78230_PLUS), |
259 | MPP_VAR_FUNCTION(0x5, "pcie", "clkreq1", V_MV78230_PLUS)), | 256 | MPP_VAR_FUNCTION(0x5, "pcie", "clkreq1", V_MV78230_PLUS), |
257 | MPP_VAR_FUNCTION(0x6, "spi1", "cs2", V_MV78230_PLUS)), | ||
260 | MPP_MODE(42, | 258 | MPP_MODE(42, |
261 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 259 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
262 | MPP_VAR_FUNCTION(0x1, "uart2", "rxd", V_MV78230_PLUS), | 260 | MPP_VAR_FUNCTION(0x1, "uart2", "rxd", V_MV78230_PLUS), |
263 | MPP_VAR_FUNCTION(0x2, "uart0", "cts", V_MV78230_PLUS), | 261 | MPP_VAR_FUNCTION(0x2, "uart0", "cts", V_MV78230_PLUS), |
264 | MPP_VAR_FUNCTION(0x3, "tdm", "int7", V_MV78230_PLUS), | 262 | MPP_VAR_FUNCTION(0x3, "tdm", "int7", V_MV78230_PLUS), |
265 | MPP_VAR_FUNCTION(0x4, "tdm-1", "timer", V_MV78230_PLUS), | 263 | MPP_VAR_FUNCTION(0x4, "tdm", "timer", V_MV78230_PLUS)), |
266 | MPP_VAR_FUNCTION(0x5, "vdd", "cpu0-pd", V_MV78230_PLUS)), | ||
267 | MPP_MODE(43, | 264 | MPP_MODE(43, |
268 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 265 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
269 | MPP_VAR_FUNCTION(0x1, "uart2", "txd", V_MV78230_PLUS), | 266 | MPP_VAR_FUNCTION(0x1, "uart2", "txd", V_MV78230_PLUS), |
270 | MPP_VAR_FUNCTION(0x2, "uart0", "rts", V_MV78230_PLUS), | 267 | MPP_VAR_FUNCTION(0x2, "uart0", "rts", V_MV78230_PLUS), |
271 | MPP_VAR_FUNCTION(0x3, "spi", "cs3", V_MV78230_PLUS), | 268 | MPP_VAR_FUNCTION(0x3, "spi0", "cs3", V_MV78230_PLUS), |
272 | MPP_VAR_FUNCTION(0x4, "pcie", "rstout", V_MV78230_PLUS), | 269 | MPP_VAR_FUNCTION(0x4, "pcie", "rstout", V_MV78230_PLUS), |
273 | MPP_VAR_FUNCTION(0x5, "vdd", "cpu2-3-pd", V_MV78460)), | 270 | MPP_VAR_FUNCTION(0x6, "spi1", "cs3", V_MV78230_PLUS)), |
274 | MPP_MODE(44, | 271 | MPP_MODE(44, |
275 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 272 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
276 | MPP_VAR_FUNCTION(0x1, "uart2", "cts", V_MV78230_PLUS), | 273 | MPP_VAR_FUNCTION(0x1, "uart2", "cts", V_MV78230_PLUS), |
277 | MPP_VAR_FUNCTION(0x2, "uart3", "rxd", V_MV78230_PLUS), | 274 | MPP_VAR_FUNCTION(0x2, "uart3", "rxd", V_MV78230_PLUS), |
278 | MPP_VAR_FUNCTION(0x3, "spi", "cs4", V_MV78230_PLUS), | 275 | MPP_VAR_FUNCTION(0x3, "spi0", "cs4", V_MV78230_PLUS), |
279 | MPP_VAR_FUNCTION(0x4, "mem", "bat", V_MV78230_PLUS), | 276 | MPP_VAR_FUNCTION(0x4, "dram", "bat", V_MV78230_PLUS), |
280 | MPP_VAR_FUNCTION(0x5, "pcie", "clkreq2", V_MV78230_PLUS)), | 277 | MPP_VAR_FUNCTION(0x5, "pcie", "clkreq2", V_MV78230_PLUS), |
278 | MPP_VAR_FUNCTION(0x6, "spi1", "cs4", V_MV78230_PLUS)), | ||
281 | MPP_MODE(45, | 279 | MPP_MODE(45, |
282 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 280 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
283 | MPP_VAR_FUNCTION(0x1, "uart2", "rts", V_MV78230_PLUS), | 281 | MPP_VAR_FUNCTION(0x1, "uart2", "rts", V_MV78230_PLUS), |
284 | MPP_VAR_FUNCTION(0x2, "uart3", "txd", V_MV78230_PLUS), | 282 | MPP_VAR_FUNCTION(0x2, "uart3", "txd", V_MV78230_PLUS), |
285 | MPP_VAR_FUNCTION(0x3, "spi", "cs5", V_MV78230_PLUS), | 283 | MPP_VAR_FUNCTION(0x3, "spi0", "cs5", V_MV78230_PLUS), |
286 | MPP_VAR_FUNCTION(0x4, "sata1", "prsnt", V_MV78230_PLUS)), | 284 | MPP_VAR_FUNCTION(0x4, "sata1", "prsnt", V_MV78230_PLUS), |
285 | MPP_VAR_FUNCTION(0x5, "dram", "vttctrl", V_MV78230_PLUS), | ||
286 | MPP_VAR_FUNCTION(0x6, "spi1", "cs5", V_MV78230_PLUS)), | ||
287 | MPP_MODE(46, | 287 | MPP_MODE(46, |
288 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 288 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
289 | MPP_VAR_FUNCTION(0x1, "uart3", "rts", V_MV78230_PLUS), | 289 | MPP_VAR_FUNCTION(0x1, "uart3", "rts", V_MV78230_PLUS), |
290 | MPP_VAR_FUNCTION(0x2, "uart1", "rts", V_MV78230_PLUS), | 290 | MPP_VAR_FUNCTION(0x2, "uart1", "rts", V_MV78230_PLUS), |
291 | MPP_VAR_FUNCTION(0x3, "spi", "cs6", V_MV78230_PLUS), | 291 | MPP_VAR_FUNCTION(0x3, "spi0", "cs6", V_MV78230_PLUS), |
292 | MPP_VAR_FUNCTION(0x4, "sata0", "prsnt", V_MV78230_PLUS)), | 292 | MPP_VAR_FUNCTION(0x4, "sata0", "prsnt", V_MV78230_PLUS), |
293 | MPP_VAR_FUNCTION(0x6, "spi1", "cs6", V_MV78230_PLUS)), | ||
293 | MPP_MODE(47, | 294 | MPP_MODE(47, |
294 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 295 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
295 | MPP_VAR_FUNCTION(0x1, "uart3", "cts", V_MV78230_PLUS), | 296 | MPP_VAR_FUNCTION(0x1, "uart3", "cts", V_MV78230_PLUS), |
296 | MPP_VAR_FUNCTION(0x2, "uart1", "cts", V_MV78230_PLUS), | 297 | MPP_VAR_FUNCTION(0x2, "uart1", "cts", V_MV78230_PLUS), |
297 | MPP_VAR_FUNCTION(0x3, "spi", "cs7", V_MV78230_PLUS), | 298 | MPP_VAR_FUNCTION(0x3, "spi0", "cs7", V_MV78230_PLUS), |
298 | MPP_VAR_FUNCTION(0x4, "ref", "clkout", V_MV78230_PLUS), | 299 | MPP_VAR_FUNCTION(0x4, "ref", "clkout", V_MV78230_PLUS), |
299 | MPP_VAR_FUNCTION(0x5, "pcie", "clkreq3", V_MV78230_PLUS)), | 300 | MPP_VAR_FUNCTION(0x5, "pcie", "clkreq3", V_MV78230_PLUS), |
301 | MPP_VAR_FUNCTION(0x6, "spi1", "cs7", V_MV78230_PLUS)), | ||
300 | MPP_MODE(48, | 302 | MPP_MODE(48, |
301 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), | 303 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), |
302 | MPP_VAR_FUNCTION(0x1, "tclk", NULL, V_MV78230_PLUS), | 304 | MPP_VAR_FUNCTION(0x1, "dev", "clkout", V_MV78230_PLUS), |
303 | MPP_VAR_FUNCTION(0x2, "dev", "burst/last", V_MV78230_PLUS)), | 305 | MPP_VAR_FUNCTION(0x2, "dev", "burst/last", V_MV78230_PLUS), |
306 | MPP_VAR_FUNCTION(0x3, "nand", "rb", V_MV78230_PLUS)), | ||
304 | MPP_MODE(49, | 307 | MPP_MODE(49, |
305 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), | 308 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), |
306 | MPP_VAR_FUNCTION(0x1, "dev", "we3", V_MV78260_PLUS)), | 309 | MPP_VAR_FUNCTION(0x1, "dev", "we3", V_MV78260_PLUS)), |
@@ -321,16 +324,13 @@ static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { | |||
321 | MPP_VAR_FUNCTION(0x1, "dev", "ad19", V_MV78260_PLUS)), | 324 | MPP_VAR_FUNCTION(0x1, "dev", "ad19", V_MV78260_PLUS)), |
322 | MPP_MODE(55, | 325 | MPP_MODE(55, |
323 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), | 326 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), |
324 | MPP_VAR_FUNCTION(0x1, "dev", "ad20", V_MV78260_PLUS), | 327 | MPP_VAR_FUNCTION(0x1, "dev", "ad20", V_MV78260_PLUS)), |
325 | MPP_VAR_FUNCTION(0x2, "vdd", "cpu0-pd", V_MV78260_PLUS)), | ||
326 | MPP_MODE(56, | 328 | MPP_MODE(56, |
327 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), | 329 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), |
328 | MPP_VAR_FUNCTION(0x1, "dev", "ad21", V_MV78260_PLUS), | 330 | MPP_VAR_FUNCTION(0x1, "dev", "ad21", V_MV78260_PLUS)), |
329 | MPP_VAR_FUNCTION(0x2, "vdd", "cpu1-pd", V_MV78260_PLUS)), | ||
330 | MPP_MODE(57, | 331 | MPP_MODE(57, |
331 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), | 332 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), |
332 | MPP_VAR_FUNCTION(0x1, "dev", "ad22", V_MV78260_PLUS), | 333 | MPP_VAR_FUNCTION(0x1, "dev", "ad22", V_MV78260_PLUS)), |
333 | MPP_VAR_FUNCTION(0x2, "vdd", "cpu2-3-pd", V_MV78460)), | ||
334 | MPP_MODE(58, | 334 | MPP_MODE(58, |
335 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), | 335 | MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78260_PLUS), |
336 | MPP_VAR_FUNCTION(0x1, "dev", "ad23", V_MV78260_PLUS)), | 336 | MPP_VAR_FUNCTION(0x1, "dev", "ad23", V_MV78260_PLUS)), |
diff --git a/drivers/pinctrl/mvebu/pinctrl-mvebu.c b/drivers/pinctrl/mvebu/pinctrl-mvebu.c index f3b426cdaf8f..77d2221d379d 100644 --- a/drivers/pinctrl/mvebu/pinctrl-mvebu.c +++ b/drivers/pinctrl/mvebu/pinctrl-mvebu.c | |||
@@ -706,9 +706,9 @@ int mvebu_pinctrl_probe(struct platform_device *pdev) | |||
706 | } | 706 | } |
707 | 707 | ||
708 | pctl->pctldev = pinctrl_register(&pctl->desc, &pdev->dev, pctl); | 708 | pctl->pctldev = pinctrl_register(&pctl->desc, &pdev->dev, pctl); |
709 | if (!pctl->pctldev) { | 709 | if (IS_ERR(pctl->pctldev)) { |
710 | dev_err(&pdev->dev, "unable to register pinctrl driver\n"); | 710 | dev_err(&pdev->dev, "unable to register pinctrl driver\n"); |
711 | return -EINVAL; | 711 | return PTR_ERR(pctl->pctldev); |
712 | } | 712 | } |
713 | 713 | ||
714 | dev_info(&pdev->dev, "registered pinctrl driver\n"); | 714 | dev_info(&pdev->dev, "registered pinctrl driver\n"); |
diff --git a/drivers/pinctrl/nomadik/pinctrl-ab8505.c b/drivers/pinctrl/nomadik/pinctrl-ab8505.c index bf0ef4ac376f..42c6e1f7886b 100644 --- a/drivers/pinctrl/nomadik/pinctrl-ab8505.c +++ b/drivers/pinctrl/nomadik/pinctrl-ab8505.c | |||
@@ -286,7 +286,7 @@ alternate_functions ab8505_alternate_functions[AB8505_GPIO_MAX_NUMBER + 1] = { | |||
286 | ALTERNATE_FUNCTIONS(9, UNUSED, UNUSED, UNUSED, 0, 0, 0), /* no GPIO9, bit 0 reserved */ | 286 | ALTERNATE_FUNCTIONS(9, UNUSED, UNUSED, UNUSED, 0, 0, 0), /* no GPIO9, bit 0 reserved */ |
287 | ALTERNATE_FUNCTIONS(10, 1, 0, UNUSED, 1, 0, 0), /* GPIO10, altA and altB controlled by bit 0 */ | 287 | ALTERNATE_FUNCTIONS(10, 1, 0, UNUSED, 1, 0, 0), /* GPIO10, altA and altB controlled by bit 0 */ |
288 | ALTERNATE_FUNCTIONS(11, 2, 1, UNUSED, 0, 0, 0), /* GPIO11, altA controlled by bit 2 */ | 288 | ALTERNATE_FUNCTIONS(11, 2, 1, UNUSED, 0, 0, 0), /* GPIO11, altA controlled by bit 2 */ |
289 | ALTERNATE_FUNCTIONS(12, UNUSED, UNUSED, UNUSED, 0, 0, 0), /* no GPIO12, bit3 reseved */ | 289 | ALTERNATE_FUNCTIONS(12, UNUSED, UNUSED, UNUSED, 0, 0, 0), /* no GPIO12, bit3 reserved */ |
290 | ALTERNATE_FUNCTIONS(13, 4, 3, 4, 1, 0, 2), /* GPIO13, altA altB and altC controlled by bit 3 and 4 */ | 290 | ALTERNATE_FUNCTIONS(13, 4, 3, 4, 1, 0, 2), /* GPIO13, altA altB and altC controlled by bit 3 and 4 */ |
291 | ALTERNATE_FUNCTIONS(14, 5, UNUSED, UNUSED, 0, 0, 0), /* GPIO14, altA controlled by bit 5 */ | 291 | ALTERNATE_FUNCTIONS(14, 5, UNUSED, UNUSED, 0, 0, 0), /* GPIO14, altA controlled by bit 5 */ |
292 | ALTERNATE_FUNCTIONS(15, UNUSED, UNUSED, UNUSED, 0, 0, 0), /* no GPIO15, bit 6 reserved */ | 292 | ALTERNATE_FUNCTIONS(15, UNUSED, UNUSED, UNUSED, 0, 0, 0), /* no GPIO15, bit 6 reserved */ |
diff --git a/drivers/pinctrl/nomadik/pinctrl-abx500.c b/drivers/pinctrl/nomadik/pinctrl-abx500.c index 23db4c9ac76c..557d0f2a3031 100644 --- a/drivers/pinctrl/nomadik/pinctrl-abx500.c +++ b/drivers/pinctrl/nomadik/pinctrl-abx500.c | |||
@@ -787,6 +787,7 @@ static const struct pinmux_ops abx500_pinmux_ops = { | |||
787 | .set_mux = abx500_pmx_set, | 787 | .set_mux = abx500_pmx_set, |
788 | .gpio_request_enable = abx500_gpio_request_enable, | 788 | .gpio_request_enable = abx500_gpio_request_enable, |
789 | .gpio_disable_free = abx500_gpio_disable_free, | 789 | .gpio_disable_free = abx500_gpio_disable_free, |
790 | .strict = true, | ||
790 | }; | 791 | }; |
791 | 792 | ||
792 | static int abx500_get_groups_cnt(struct pinctrl_dev *pctldev) | 793 | static int abx500_get_groups_cnt(struct pinctrl_dev *pctldev) |
@@ -1234,10 +1235,10 @@ static int abx500_gpio_probe(struct platform_device *pdev) | |||
1234 | abx500_pinctrl_desc.pins = pct->soc->pins; | 1235 | abx500_pinctrl_desc.pins = pct->soc->pins; |
1235 | abx500_pinctrl_desc.npins = pct->soc->npins; | 1236 | abx500_pinctrl_desc.npins = pct->soc->npins; |
1236 | pct->pctldev = pinctrl_register(&abx500_pinctrl_desc, &pdev->dev, pct); | 1237 | pct->pctldev = pinctrl_register(&abx500_pinctrl_desc, &pdev->dev, pct); |
1237 | if (!pct->pctldev) { | 1238 | if (IS_ERR(pct->pctldev)) { |
1238 | dev_err(&pdev->dev, | 1239 | dev_err(&pdev->dev, |
1239 | "could not register abx500 pinctrl driver\n"); | 1240 | "could not register abx500 pinctrl driver\n"); |
1240 | ret = -EINVAL; | 1241 | ret = PTR_ERR(pct->pctldev); |
1241 | goto out_rem_chip; | 1242 | goto out_rem_chip; |
1242 | } | 1243 | } |
1243 | dev_info(&pdev->dev, "registered pin controller\n"); | 1244 | dev_info(&pdev->dev, "registered pin controller\n"); |
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.c b/drivers/pinctrl/nomadik/pinctrl-nomadik.c index a6a22054c0ba..809d88445db5 100644 --- a/drivers/pinctrl/nomadik/pinctrl-nomadik.c +++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.c | |||
@@ -246,6 +246,7 @@ enum nmk_gpio_slpm { | |||
246 | 246 | ||
247 | struct nmk_gpio_chip { | 247 | struct nmk_gpio_chip { |
248 | struct gpio_chip chip; | 248 | struct gpio_chip chip; |
249 | struct irq_chip irqchip; | ||
249 | void __iomem *addr; | 250 | void __iomem *addr; |
250 | struct clk *clk; | 251 | struct clk *clk; |
251 | unsigned int bank; | 252 | unsigned int bank; |
@@ -842,18 +843,6 @@ static void nmk_gpio_irq_shutdown(struct irq_data *d) | |||
842 | clk_disable(nmk_chip->clk); | 843 | clk_disable(nmk_chip->clk); |
843 | } | 844 | } |
844 | 845 | ||
845 | static struct irq_chip nmk_gpio_irq_chip = { | ||
846 | .name = "Nomadik-GPIO", | ||
847 | .irq_ack = nmk_gpio_irq_ack, | ||
848 | .irq_mask = nmk_gpio_irq_mask, | ||
849 | .irq_unmask = nmk_gpio_irq_unmask, | ||
850 | .irq_set_type = nmk_gpio_irq_set_type, | ||
851 | .irq_set_wake = nmk_gpio_irq_set_wake, | ||
852 | .irq_startup = nmk_gpio_irq_startup, | ||
853 | .irq_shutdown = nmk_gpio_irq_shutdown, | ||
854 | .flags = IRQCHIP_MASK_ON_SUSPEND, | ||
855 | }; | ||
856 | |||
857 | static void __nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc, | 846 | static void __nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc, |
858 | u32 status) | 847 | u32 status) |
859 | { | 848 | { |
@@ -1077,18 +1066,6 @@ static inline void nmk_gpio_dbg_show_one(struct seq_file *s, | |||
1077 | #define nmk_gpio_dbg_show NULL | 1066 | #define nmk_gpio_dbg_show NULL |
1078 | #endif | 1067 | #endif |
1079 | 1068 | ||
1080 | /* This structure is replicated for each GPIO block allocated at probe time */ | ||
1081 | static struct gpio_chip nmk_gpio_template = { | ||
1082 | .request = nmk_gpio_request, | ||
1083 | .free = nmk_gpio_free, | ||
1084 | .direction_input = nmk_gpio_make_input, | ||
1085 | .get = nmk_gpio_get_input, | ||
1086 | .direction_output = nmk_gpio_make_output, | ||
1087 | .set = nmk_gpio_set_output, | ||
1088 | .dbg_show = nmk_gpio_dbg_show, | ||
1089 | .can_sleep = false, | ||
1090 | }; | ||
1091 | |||
1092 | void nmk_gpio_clocks_enable(void) | 1069 | void nmk_gpio_clocks_enable(void) |
1093 | { | 1070 | { |
1094 | int i; | 1071 | int i; |
@@ -1190,6 +1167,7 @@ static int nmk_gpio_probe(struct platform_device *dev) | |||
1190 | struct device_node *np = dev->dev.of_node; | 1167 | struct device_node *np = dev->dev.of_node; |
1191 | struct nmk_gpio_chip *nmk_chip; | 1168 | struct nmk_gpio_chip *nmk_chip; |
1192 | struct gpio_chip *chip; | 1169 | struct gpio_chip *chip; |
1170 | struct irq_chip *irqchip; | ||
1193 | struct resource *res; | 1171 | struct resource *res; |
1194 | struct clk *clk; | 1172 | struct clk *clk; |
1195 | int latent_irq; | 1173 | int latent_irq; |
@@ -1236,19 +1214,40 @@ static int nmk_gpio_probe(struct platform_device *dev) | |||
1236 | nmk_chip->bank = dev->id; | 1214 | nmk_chip->bank = dev->id; |
1237 | nmk_chip->clk = clk; | 1215 | nmk_chip->clk = clk; |
1238 | nmk_chip->addr = base; | 1216 | nmk_chip->addr = base; |
1239 | nmk_chip->chip = nmk_gpio_template; | ||
1240 | nmk_chip->parent_irq = irq; | 1217 | nmk_chip->parent_irq = irq; |
1241 | nmk_chip->latent_parent_irq = latent_irq; | 1218 | nmk_chip->latent_parent_irq = latent_irq; |
1242 | nmk_chip->sleepmode = supports_sleepmode; | 1219 | nmk_chip->sleepmode = supports_sleepmode; |
1243 | spin_lock_init(&nmk_chip->lock); | 1220 | spin_lock_init(&nmk_chip->lock); |
1244 | 1221 | ||
1245 | chip = &nmk_chip->chip; | 1222 | chip = &nmk_chip->chip; |
1223 | chip->request = nmk_gpio_request; | ||
1224 | chip->free = nmk_gpio_free; | ||
1225 | chip->direction_input = nmk_gpio_make_input; | ||
1226 | chip->get = nmk_gpio_get_input; | ||
1227 | chip->direction_output = nmk_gpio_make_output; | ||
1228 | chip->set = nmk_gpio_set_output; | ||
1229 | chip->dbg_show = nmk_gpio_dbg_show; | ||
1230 | chip->can_sleep = false; | ||
1246 | chip->base = dev->id * NMK_GPIO_PER_CHIP; | 1231 | chip->base = dev->id * NMK_GPIO_PER_CHIP; |
1247 | chip->ngpio = NMK_GPIO_PER_CHIP; | 1232 | chip->ngpio = NMK_GPIO_PER_CHIP; |
1248 | chip->label = dev_name(&dev->dev); | 1233 | chip->label = dev_name(&dev->dev); |
1249 | chip->dev = &dev->dev; | 1234 | chip->dev = &dev->dev; |
1250 | chip->owner = THIS_MODULE; | 1235 | chip->owner = THIS_MODULE; |
1251 | 1236 | ||
1237 | irqchip = &nmk_chip->irqchip; | ||
1238 | irqchip->irq_ack = nmk_gpio_irq_ack; | ||
1239 | irqchip->irq_mask = nmk_gpio_irq_mask; | ||
1240 | irqchip->irq_unmask = nmk_gpio_irq_unmask; | ||
1241 | irqchip->irq_set_type = nmk_gpio_irq_set_type; | ||
1242 | irqchip->irq_set_wake = nmk_gpio_irq_set_wake; | ||
1243 | irqchip->irq_startup = nmk_gpio_irq_startup; | ||
1244 | irqchip->irq_shutdown = nmk_gpio_irq_shutdown; | ||
1245 | irqchip->flags = IRQCHIP_MASK_ON_SUSPEND; | ||
1246 | irqchip->name = kasprintf(GFP_KERNEL, "nmk%u-%u-%u", | ||
1247 | dev->id, | ||
1248 | chip->base, | ||
1249 | chip->base + chip->ngpio - 1); | ||
1250 | |||
1252 | clk_enable(nmk_chip->clk); | 1251 | clk_enable(nmk_chip->clk); |
1253 | nmk_chip->lowemi = readl_relaxed(nmk_chip->addr + NMK_GPIO_LOWEMI); | 1252 | nmk_chip->lowemi = readl_relaxed(nmk_chip->addr + NMK_GPIO_LOWEMI); |
1254 | clk_disable(nmk_chip->clk); | 1253 | clk_disable(nmk_chip->clk); |
@@ -1269,8 +1268,8 @@ static int nmk_gpio_probe(struct platform_device *dev) | |||
1269 | * handler will perform the actual work of handling the parent | 1268 | * handler will perform the actual work of handling the parent |
1270 | * interrupt. | 1269 | * interrupt. |
1271 | */ | 1270 | */ |
1272 | ret = gpiochip_irqchip_add(&nmk_chip->chip, | 1271 | ret = gpiochip_irqchip_add(chip, |
1273 | &nmk_gpio_irq_chip, | 1272 | irqchip, |
1274 | 0, | 1273 | 0, |
1275 | handle_edge_irq, | 1274 | handle_edge_irq, |
1276 | IRQ_TYPE_EDGE_FALLING); | 1275 | IRQ_TYPE_EDGE_FALLING); |
@@ -1280,13 +1279,13 @@ static int nmk_gpio_probe(struct platform_device *dev) | |||
1280 | return -ENODEV; | 1279 | return -ENODEV; |
1281 | } | 1280 | } |
1282 | /* Then register the chain on the parent IRQ */ | 1281 | /* Then register the chain on the parent IRQ */ |
1283 | gpiochip_set_chained_irqchip(&nmk_chip->chip, | 1282 | gpiochip_set_chained_irqchip(chip, |
1284 | &nmk_gpio_irq_chip, | 1283 | irqchip, |
1285 | nmk_chip->parent_irq, | 1284 | nmk_chip->parent_irq, |
1286 | nmk_gpio_irq_handler); | 1285 | nmk_gpio_irq_handler); |
1287 | if (nmk_chip->latent_parent_irq > 0) | 1286 | if (nmk_chip->latent_parent_irq > 0) |
1288 | gpiochip_set_chained_irqchip(&nmk_chip->chip, | 1287 | gpiochip_set_chained_irqchip(chip, |
1289 | &nmk_gpio_irq_chip, | 1288 | irqchip, |
1290 | nmk_chip->latent_parent_irq, | 1289 | nmk_chip->latent_parent_irq, |
1291 | nmk_gpio_latent_irq_handler); | 1290 | nmk_gpio_latent_irq_handler); |
1292 | 1291 | ||
@@ -1803,6 +1802,7 @@ static const struct pinmux_ops nmk_pinmux_ops = { | |||
1803 | .set_mux = nmk_pmx_set, | 1802 | .set_mux = nmk_pmx_set, |
1804 | .gpio_request_enable = nmk_gpio_request_enable, | 1803 | .gpio_request_enable = nmk_gpio_request_enable, |
1805 | .gpio_disable_free = nmk_gpio_disable_free, | 1804 | .gpio_disable_free = nmk_gpio_disable_free, |
1805 | .strict = true, | ||
1806 | }; | 1806 | }; |
1807 | 1807 | ||
1808 | static int nmk_pin_config_get(struct pinctrl_dev *pctldev, unsigned pin, | 1808 | static int nmk_pin_config_get(struct pinctrl_dev *pctldev, unsigned pin, |
@@ -2029,9 +2029,9 @@ static int nmk_pinctrl_probe(struct platform_device *pdev) | |||
2029 | npct->dev = &pdev->dev; | 2029 | npct->dev = &pdev->dev; |
2030 | 2030 | ||
2031 | npct->pctl = pinctrl_register(&nmk_pinctrl_desc, &pdev->dev, npct); | 2031 | npct->pctl = pinctrl_register(&nmk_pinctrl_desc, &pdev->dev, npct); |
2032 | if (!npct->pctl) { | 2032 | if (IS_ERR(npct->pctl)) { |
2033 | dev_err(&pdev->dev, "could not register Nomadik pinctrl driver\n"); | 2033 | dev_err(&pdev->dev, "could not register Nomadik pinctrl driver\n"); |
2034 | return -EINVAL; | 2034 | return PTR_ERR(npct->pctl); |
2035 | } | 2035 | } |
2036 | 2036 | ||
2037 | /* We will handle a range of GPIO pins */ | 2037 | /* We will handle a range of GPIO pins */ |
diff --git a/drivers/pinctrl/pinctrl-adi2.c b/drivers/pinctrl/pinctrl-adi2.c index 8434439c5017..873433da0f2c 100644 --- a/drivers/pinctrl/pinctrl-adi2.c +++ b/drivers/pinctrl/pinctrl-adi2.c | |||
@@ -703,6 +703,7 @@ static struct pinmux_ops adi_pinmux_ops = { | |||
703 | .get_function_name = adi_pinmux_get_func_name, | 703 | .get_function_name = adi_pinmux_get_func_name, |
704 | .get_function_groups = adi_pinmux_get_groups, | 704 | .get_function_groups = adi_pinmux_get_groups, |
705 | .gpio_request_enable = adi_pinmux_request_gpio, | 705 | .gpio_request_enable = adi_pinmux_request_gpio, |
706 | .strict = true, | ||
706 | }; | 707 | }; |
707 | 708 | ||
708 | 709 | ||
@@ -1069,9 +1070,9 @@ static int adi_pinctrl_probe(struct platform_device *pdev) | |||
1069 | 1070 | ||
1070 | /* Now register the pin controller and all pins it handles */ | 1071 | /* Now register the pin controller and all pins it handles */ |
1071 | pinctrl->pctl = pinctrl_register(&adi_pinmux_desc, &pdev->dev, pinctrl); | 1072 | pinctrl->pctl = pinctrl_register(&adi_pinmux_desc, &pdev->dev, pinctrl); |
1072 | if (!pinctrl->pctl) { | 1073 | if (IS_ERR(pinctrl->pctl)) { |
1073 | dev_err(&pdev->dev, "could not register pinctrl ADI2 driver\n"); | 1074 | dev_err(&pdev->dev, "could not register pinctrl ADI2 driver\n"); |
1074 | return -EINVAL; | 1075 | return PTR_ERR(pinctrl->pctl); |
1075 | } | 1076 | } |
1076 | 1077 | ||
1077 | platform_set_drvdata(pdev, pinctrl); | 1078 | platform_set_drvdata(pdev, pinctrl); |
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c index 7de3b64bf142..d8e3f7c7fea3 100644 --- a/drivers/pinctrl/pinctrl-amd.c +++ b/drivers/pinctrl/pinctrl-amd.c | |||
@@ -789,9 +789,9 @@ static int amd_gpio_probe(struct platform_device *pdev) | |||
789 | amd_pinctrl_desc.name = dev_name(&pdev->dev); | 789 | amd_pinctrl_desc.name = dev_name(&pdev->dev); |
790 | gpio_dev->pctrl = pinctrl_register(&amd_pinctrl_desc, | 790 | gpio_dev->pctrl = pinctrl_register(&amd_pinctrl_desc, |
791 | &pdev->dev, gpio_dev); | 791 | &pdev->dev, gpio_dev); |
792 | if (!gpio_dev->pctrl) { | 792 | if (IS_ERR(gpio_dev->pctrl)) { |
793 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 793 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
794 | return -ENODEV; | 794 | return PTR_ERR(gpio_dev->pctrl); |
795 | } | 795 | } |
796 | 796 | ||
797 | ret = gpiochip_add(&gpio_dev->gc); | 797 | ret = gpiochip_add(&gpio_dev->gc); |
@@ -855,7 +855,6 @@ MODULE_DEVICE_TABLE(acpi, amd_gpio_acpi_match); | |||
855 | static struct platform_driver amd_gpio_driver = { | 855 | static struct platform_driver amd_gpio_driver = { |
856 | .driver = { | 856 | .driver = { |
857 | .name = "amd_gpio", | 857 | .name = "amd_gpio", |
858 | .owner = THIS_MODULE, | ||
859 | .acpi_match_table = ACPI_PTR(amd_gpio_acpi_match), | 858 | .acpi_match_table = ACPI_PTR(amd_gpio_acpi_match), |
860 | }, | 859 | }, |
861 | .probe = amd_gpio_probe, | 860 | .probe = amd_gpio_probe, |
diff --git a/drivers/pinctrl/pinctrl-as3722.c b/drivers/pinctrl/pinctrl-as3722.c index db0571ffbe99..4747e08f5389 100644 --- a/drivers/pinctrl/pinctrl-as3722.c +++ b/drivers/pinctrl/pinctrl-as3722.c | |||
@@ -586,9 +586,9 @@ static int as3722_pinctrl_probe(struct platform_device *pdev) | |||
586 | as3722_pinctrl_desc.npins = ARRAY_SIZE(as3722_pins_desc); | 586 | as3722_pinctrl_desc.npins = ARRAY_SIZE(as3722_pins_desc); |
587 | as_pci->pctl = pinctrl_register(&as3722_pinctrl_desc, | 587 | as_pci->pctl = pinctrl_register(&as3722_pinctrl_desc, |
588 | &pdev->dev, as_pci); | 588 | &pdev->dev, as_pci); |
589 | if (!as_pci->pctl) { | 589 | if (IS_ERR(as_pci->pctl)) { |
590 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 590 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
591 | return -EINVAL; | 591 | return PTR_ERR(as_pci->pctl); |
592 | } | 592 | } |
593 | 593 | ||
594 | as_pci->gpio_chip = as3722_gpio_chip; | 594 | as_pci->gpio_chip = as3722_gpio_chip; |
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c index 2f797cb7e205..a0824477072b 100644 --- a/drivers/pinctrl/pinctrl-at91.c +++ b/drivers/pinctrl/pinctrl-at91.c | |||
@@ -1238,9 +1238,9 @@ static int at91_pinctrl_probe(struct platform_device *pdev) | |||
1238 | platform_set_drvdata(pdev, info); | 1238 | platform_set_drvdata(pdev, info); |
1239 | info->pctl = pinctrl_register(&at91_pinctrl_desc, &pdev->dev, info); | 1239 | info->pctl = pinctrl_register(&at91_pinctrl_desc, &pdev->dev, info); |
1240 | 1240 | ||
1241 | if (!info->pctl) { | 1241 | if (IS_ERR(info->pctl)) { |
1242 | dev_err(&pdev->dev, "could not register AT91 pinctrl driver\n"); | 1242 | dev_err(&pdev->dev, "could not register AT91 pinctrl driver\n"); |
1243 | return -EINVAL; | 1243 | return PTR_ERR(info->pctl); |
1244 | } | 1244 | } |
1245 | 1245 | ||
1246 | /* We will handle a range of GPIO pins */ | 1246 | /* We will handle a range of GPIO pins */ |
@@ -1326,6 +1326,21 @@ static void at91_gpio_set(struct gpio_chip *chip, unsigned offset, | |||
1326 | writel_relaxed(mask, pio + (val ? PIO_SODR : PIO_CODR)); | 1326 | writel_relaxed(mask, pio + (val ? PIO_SODR : PIO_CODR)); |
1327 | } | 1327 | } |
1328 | 1328 | ||
1329 | static void at91_gpio_set_multiple(struct gpio_chip *chip, | ||
1330 | unsigned long *mask, unsigned long *bits) | ||
1331 | { | ||
1332 | struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); | ||
1333 | void __iomem *pio = at91_gpio->regbase; | ||
1334 | |||
1335 | #define BITS_MASK(bits) (((bits) == 32) ? ~0U : (BIT(bits) - 1)) | ||
1336 | /* Mask additionally to ngpio as not all GPIO controllers have 32 pins */ | ||
1337 | uint32_t set_mask = (*mask & *bits) & BITS_MASK(chip->ngpio); | ||
1338 | uint32_t clear_mask = (*mask & ~(*bits)) & BITS_MASK(chip->ngpio); | ||
1339 | |||
1340 | writel_relaxed(set_mask, pio + PIO_SODR); | ||
1341 | writel_relaxed(clear_mask, pio + PIO_CODR); | ||
1342 | } | ||
1343 | |||
1329 | static int at91_gpio_direction_output(struct gpio_chip *chip, unsigned offset, | 1344 | static int at91_gpio_direction_output(struct gpio_chip *chip, unsigned offset, |
1330 | int val) | 1345 | int val) |
1331 | { | 1346 | { |
@@ -1685,6 +1700,7 @@ static struct gpio_chip at91_gpio_template = { | |||
1685 | .get = at91_gpio_get, | 1700 | .get = at91_gpio_get, |
1686 | .direction_output = at91_gpio_direction_output, | 1701 | .direction_output = at91_gpio_direction_output, |
1687 | .set = at91_gpio_set, | 1702 | .set = at91_gpio_set, |
1703 | .set_multiple = at91_gpio_set_multiple, | ||
1688 | .dbg_show = at91_gpio_dbg_show, | 1704 | .dbg_show = at91_gpio_dbg_show, |
1689 | .can_sleep = false, | 1705 | .can_sleep = false, |
1690 | .ngpio = MAX_NB_GPIO_PER_BANK, | 1706 | .ngpio = MAX_NB_GPIO_PER_BANK, |
diff --git a/drivers/pinctrl/pinctrl-lantiq.c b/drivers/pinctrl/pinctrl-lantiq.c index 296e5b37f768..fc38a8540544 100644 --- a/drivers/pinctrl/pinctrl-lantiq.c +++ b/drivers/pinctrl/pinctrl-lantiq.c | |||
@@ -337,9 +337,9 @@ int ltq_pinctrl_register(struct platform_device *pdev, | |||
337 | info->dev = &pdev->dev; | 337 | info->dev = &pdev->dev; |
338 | 338 | ||
339 | info->pctrl = pinctrl_register(desc, &pdev->dev, info); | 339 | info->pctrl = pinctrl_register(desc, &pdev->dev, info); |
340 | if (!info->pctrl) { | 340 | if (IS_ERR(info->pctrl)) { |
341 | dev_err(&pdev->dev, "failed to register LTQ pinmux driver\n"); | 341 | dev_err(&pdev->dev, "failed to register LTQ pinmux driver\n"); |
342 | return -EINVAL; | 342 | return PTR_ERR(info->pctrl); |
343 | } | 343 | } |
344 | platform_set_drvdata(pdev, info); | 344 | platform_set_drvdata(pdev, info); |
345 | return 0; | 345 | return 0; |
diff --git a/drivers/pinctrl/pinctrl-lpc18xx.c b/drivers/pinctrl/pinctrl-lpc18xx.c new file mode 100644 index 000000000000..ef0b697639a7 --- /dev/null +++ b/drivers/pinctrl/pinctrl-lpc18xx.c | |||
@@ -0,0 +1,1220 @@ | |||
1 | /* | ||
2 | * Pinctrl driver for NXP LPC18xx/LPC43xx System Control Unit (SCU) | ||
3 | * | ||
4 | * Copyright (C) 2015 Joachim Eastwood <manabian@gmail.com> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <linux/bitops.h> | ||
12 | #include <linux/clk.h> | ||
13 | #include <linux/io.h> | ||
14 | #include <linux/module.h> | ||
15 | #include <linux/of.h> | ||
16 | #include <linux/of_device.h> | ||
17 | #include <linux/pinctrl/pinctrl.h> | ||
18 | #include <linux/pinctrl/pinmux.h> | ||
19 | #include <linux/pinctrl/pinconf-generic.h> | ||
20 | |||
21 | #include "core.h" | ||
22 | #include "pinctrl-utils.h" | ||
23 | |||
24 | /* LPC18XX SCU analog function registers */ | ||
25 | #define LPC18XX_SCU_REG_ENAIO0 0xc88 | ||
26 | #define LPC18XX_SCU_REG_ENAIO1 0xc8c | ||
27 | #define LPC18XX_SCU_REG_ENAIO2 0xc90 | ||
28 | #define LPC18XX_SCU_REG_ENAIO2_DAC BIT(0) | ||
29 | |||
30 | /* LPC18XX SCU pin register definitions */ | ||
31 | #define LPC18XX_SCU_PIN_MODE_MASK 0x7 | ||
32 | #define LPC18XX_SCU_PIN_EPD BIT(3) | ||
33 | #define LPC18XX_SCU_PIN_EPUN BIT(4) | ||
34 | #define LPC18XX_SCU_PIN_EHS BIT(5) | ||
35 | #define LPC18XX_SCU_PIN_EZI BIT(6) | ||
36 | #define LPC18XX_SCU_PIN_ZIF BIT(7) | ||
37 | #define LPC18XX_SCU_PIN_EHD_MASK 0x300 | ||
38 | #define LPC18XX_SCU_PIN_EHD_POS 8 | ||
39 | |||
40 | #define LPC18XX_SCU_I2C0_EFP BIT(0) | ||
41 | #define LPC18XX_SCU_I2C0_EHD BIT(2) | ||
42 | #define LPC18XX_SCU_I2C0_EZI BIT(3) | ||
43 | #define LPC18XX_SCU_I2C0_ZIF BIT(7) | ||
44 | #define LPC18XX_SCU_I2C0_SCL_SHIFT 0 | ||
45 | #define LPC18XX_SCU_I2C0_SDA_SHIFT 8 | ||
46 | |||
47 | #define LPC18XX_SCU_FUNC_PER_PIN 8 | ||
48 | |||
49 | /* LPC18xx pin types */ | ||
50 | enum { | ||
51 | TYPE_ND, /* Normal-drive */ | ||
52 | TYPE_HD, /* High-drive */ | ||
53 | TYPE_HS, /* High-speed */ | ||
54 | TYPE_I2C0, | ||
55 | TYPE_USB1, | ||
56 | }; | ||
57 | |||
58 | /* LPC18xx pin functions */ | ||
59 | enum { | ||
60 | FUNC_R, /* Reserved */ | ||
61 | FUNC_ADC, | ||
62 | FUNC_ADCTRIG, | ||
63 | FUNC_CAN0, | ||
64 | FUNC_CAN1, | ||
65 | FUNC_CGU_OUT, | ||
66 | FUNC_CLKIN, | ||
67 | FUNC_CLKOUT, | ||
68 | FUNC_CTIN, | ||
69 | FUNC_CTOUT, | ||
70 | FUNC_DAC, | ||
71 | FUNC_EMC, | ||
72 | FUNC_EMC_ALT, | ||
73 | FUNC_ENET, | ||
74 | FUNC_ENET_ALT, | ||
75 | FUNC_GPIO, | ||
76 | FUNC_I2C0, | ||
77 | FUNC_I2C1, | ||
78 | FUNC_I2S0_RX_MCLK, | ||
79 | FUNC_I2S0_RX_SCK, | ||
80 | FUNC_I2S0_RX_SDA, | ||
81 | FUNC_I2S0_RX_WS, | ||
82 | FUNC_I2S0_TX_MCLK, | ||
83 | FUNC_I2S0_TX_SCK, | ||
84 | FUNC_I2S0_TX_SDA, | ||
85 | FUNC_I2S0_TX_WS, | ||
86 | FUNC_I2S1, | ||
87 | FUNC_LCD, | ||
88 | FUNC_LCD_ALT, | ||
89 | FUNC_MCTRL, | ||
90 | FUNC_NMI, | ||
91 | FUNC_QEI, | ||
92 | FUNC_SDMMC, | ||
93 | FUNC_SGPIO, | ||
94 | FUNC_SPI, | ||
95 | FUNC_SPIFI, | ||
96 | FUNC_SSP0, | ||
97 | FUNC_SSP0_ALT, | ||
98 | FUNC_SSP1, | ||
99 | FUNC_TIMER0, | ||
100 | FUNC_TIMER1, | ||
101 | FUNC_TIMER2, | ||
102 | FUNC_TIMER3, | ||
103 | FUNC_TRACE, | ||
104 | FUNC_UART0, | ||
105 | FUNC_UART1, | ||
106 | FUNC_UART2, | ||
107 | FUNC_UART3, | ||
108 | FUNC_USB0, | ||
109 | FUNC_USB1, | ||
110 | FUNC_MAX | ||
111 | }; | ||
112 | |||
113 | static const char *const lpc18xx_function_names[] = { | ||
114 | [FUNC_R] = "reserved", | ||
115 | [FUNC_ADC] = "adc", | ||
116 | [FUNC_ADCTRIG] = "adctrig", | ||
117 | [FUNC_CAN0] = "can0", | ||
118 | [FUNC_CAN1] = "can1", | ||
119 | [FUNC_CGU_OUT] = "cgu_out", | ||
120 | [FUNC_CLKIN] = "clkin", | ||
121 | [FUNC_CLKOUT] = "clkout", | ||
122 | [FUNC_CTIN] = "ctin", | ||
123 | [FUNC_CTOUT] = "ctout", | ||
124 | [FUNC_DAC] = "dac", | ||
125 | [FUNC_EMC] = "emc", | ||
126 | [FUNC_EMC_ALT] = "emc_alt", | ||
127 | [FUNC_ENET] = "enet", | ||
128 | [FUNC_ENET_ALT] = "enet_alt", | ||
129 | [FUNC_GPIO] = "gpio", | ||
130 | [FUNC_I2C0] = "i2c0", | ||
131 | [FUNC_I2C1] = "i2c1", | ||
132 | [FUNC_I2S0_RX_MCLK] = "i2s0_rx_mclk", | ||
133 | [FUNC_I2S0_RX_SCK] = "i2s0_rx_sck", | ||
134 | [FUNC_I2S0_RX_SDA] = "i2s0_rx_sda", | ||
135 | [FUNC_I2S0_RX_WS] = "i2s0_rx_ws", | ||
136 | [FUNC_I2S0_TX_MCLK] = "i2s0_tx_mclk", | ||
137 | [FUNC_I2S0_TX_SCK] = "i2s0_tx_sck", | ||
138 | [FUNC_I2S0_TX_SDA] = "i2s0_tx_sda", | ||
139 | [FUNC_I2S0_TX_WS] = "i2s0_tx_ws", | ||
140 | [FUNC_I2S1] = "i2s1", | ||
141 | [FUNC_LCD] = "lcd", | ||
142 | [FUNC_LCD_ALT] = "lcd_alt", | ||
143 | [FUNC_MCTRL] = "mctrl", | ||
144 | [FUNC_NMI] = "nmi", | ||
145 | [FUNC_QEI] = "qei", | ||
146 | [FUNC_SDMMC] = "sdmmc", | ||
147 | [FUNC_SGPIO] = "sgpio", | ||
148 | [FUNC_SPI] = "spi", | ||
149 | [FUNC_SPIFI] = "spifi", | ||
150 | [FUNC_SSP0] = "ssp0", | ||
151 | [FUNC_SSP0_ALT] = "ssp0_alt", | ||
152 | [FUNC_SSP1] = "ssp1", | ||
153 | [FUNC_TIMER0] = "timer0", | ||
154 | [FUNC_TIMER1] = "timer1", | ||
155 | [FUNC_TIMER2] = "timer2", | ||
156 | [FUNC_TIMER3] = "timer3", | ||
157 | [FUNC_TRACE] = "trace", | ||
158 | [FUNC_UART0] = "uart0", | ||
159 | [FUNC_UART1] = "uart1", | ||
160 | [FUNC_UART2] = "uart2", | ||
161 | [FUNC_UART3] = "uart3", | ||
162 | [FUNC_USB0] = "usb0", | ||
163 | [FUNC_USB1] = "usb1", | ||
164 | }; | ||
165 | |||
166 | struct lpc18xx_pmx_func { | ||
167 | const char **groups; | ||
168 | unsigned ngroups; | ||
169 | }; | ||
170 | |||
171 | struct lpc18xx_scu_data { | ||
172 | struct pinctrl_dev *pctl; | ||
173 | void __iomem *base; | ||
174 | struct clk *clk; | ||
175 | struct lpc18xx_pmx_func func[FUNC_MAX]; | ||
176 | }; | ||
177 | |||
178 | struct lpc18xx_pin_caps { | ||
179 | unsigned int offset; | ||
180 | unsigned char functions[LPC18XX_SCU_FUNC_PER_PIN]; | ||
181 | unsigned char analog; | ||
182 | unsigned char type; | ||
183 | }; | ||
184 | |||
185 | /* Analog pins are required to have both bias and input disabled */ | ||
186 | #define LPC18XX_SCU_ANALOG_PIN_CFG 0x10 | ||
187 | |||
188 | /* Macros to maniupluate analog member in lpc18xx_pin_caps */ | ||
189 | #define LPC18XX_ANALOG_PIN BIT(7) | ||
190 | #define LPC18XX_ANALOG_ADC(a) ((a >> 5) & 0x3) | ||
191 | #define LPC18XX_ANALOG_BIT_MASK 0x1f | ||
192 | #define ADC0 (LPC18XX_ANALOG_PIN | (0x00 << 5)) | ||
193 | #define ADC1 (LPC18XX_ANALOG_PIN | (0x01 << 5)) | ||
194 | #define DAC LPC18XX_ANALOG_PIN | ||
195 | |||
196 | #define LPC_P(port, pin, f0, f1, f2, f3, f4, f5, f6, f7, a, t) \ | ||
197 | static struct lpc18xx_pin_caps lpc18xx_pin_p##port##_##pin = { \ | ||
198 | .offset = 0x##port * 32 * 4 + pin * 4, \ | ||
199 | .functions = { \ | ||
200 | FUNC_##f0, FUNC_##f1, FUNC_##f2, \ | ||
201 | FUNC_##f3, FUNC_##f4, FUNC_##f5, \ | ||
202 | FUNC_##f6, FUNC_##f7, \ | ||
203 | }, \ | ||
204 | .analog = a, \ | ||
205 | .type = TYPE_##t, \ | ||
206 | } | ||
207 | |||
208 | #define LPC_N(pname, off, f0, f1, f2, f3, f4, f5, f6, f7, a, t) \ | ||
209 | static struct lpc18xx_pin_caps lpc18xx_pin_##pname = { \ | ||
210 | .offset = off, \ | ||
211 | .functions = { \ | ||
212 | FUNC_##f0, FUNC_##f1, FUNC_##f2, \ | ||
213 | FUNC_##f3, FUNC_##f4, FUNC_##f5, \ | ||
214 | FUNC_##f6, FUNC_##f7, \ | ||
215 | }, \ | ||
216 | .analog = a, \ | ||
217 | .type = TYPE_##t, \ | ||
218 | } | ||
219 | |||
220 | |||
221 | /* Pinmuxing table taken from data sheet */ | ||
222 | /* Pin FUNC0 FUNC1 FUNC2 FUNC3 FUNC4 FUNC5 FUNC6 FUNC7 ANALOG TYPE */ | ||
223 | LPC_P(0,0, GPIO, SSP1, ENET, SGPIO, R, R, I2S0_TX_WS,I2S1, 0, ND); | ||
224 | LPC_P(0,1, GPIO, SSP1,ENET_ALT,SGPIO, R, R, ENET, I2S1, 0, ND); | ||
225 | LPC_P(1,0, GPIO, CTIN, EMC, R, R, SSP0, SGPIO, R, 0, ND); | ||
226 | LPC_P(1,1, GPIO, CTOUT, EMC, SGPIO, R, SSP0, R, R, 0, ND); | ||
227 | LPC_P(1,2, GPIO, CTOUT, EMC, SGPIO, R, SSP0, R, R, 0, ND); | ||
228 | LPC_P(1,3, GPIO, CTOUT, SGPIO, EMC, USB0, SSP1, R, SDMMC, 0, ND); | ||
229 | LPC_P(1,4, GPIO, CTOUT, SGPIO, EMC, USB0, SSP1, R, SDMMC, 0, ND); | ||
230 | LPC_P(1,5, GPIO, CTOUT, R, EMC, USB0, SSP1, SGPIO, SDMMC, 0, ND); | ||
231 | LPC_P(1,6, GPIO, CTIN, R, EMC, R, R, SGPIO, SDMMC, 0, ND); | ||
232 | LPC_P(1,7, GPIO, UART1, CTOUT, EMC, USB0, R, R, R, 0, ND); | ||
233 | LPC_P(1,8, GPIO, UART1, CTOUT, EMC, R, R, R, SDMMC, 0, ND); | ||
234 | LPC_P(1,9, GPIO, UART1, CTOUT, EMC, R, R, R, SDMMC, 0, ND); | ||
235 | LPC_P(1,10, GPIO, UART1, CTOUT, EMC, R, R, R, SDMMC, 0, ND); | ||
236 | LPC_P(1,11, GPIO, UART1, CTOUT, EMC, R, R, R, SDMMC, 0, ND); | ||
237 | LPC_P(1,12, GPIO, UART1, R, EMC, TIMER0, R, SGPIO, SDMMC, 0, ND); | ||
238 | LPC_P(1,13, GPIO, UART1, R, EMC, TIMER0, R, SGPIO, SDMMC, 0, ND); | ||
239 | LPC_P(1,14, GPIO, UART1, R, EMC, TIMER0, R, SGPIO, R, 0, ND); | ||
240 | LPC_P(1,15, GPIO, UART2, SGPIO, ENET, TIMER0, R, R, R, 0, ND); | ||
241 | LPC_P(1,16, GPIO, UART2, SGPIO,ENET_ALT,TIMER0, R, R, ENET, 0, ND); | ||
242 | LPC_P(1,17, GPIO, UART2, R, ENET, TIMER0, CAN1, SGPIO, R, 0, HD); | ||
243 | LPC_P(1,18, GPIO, UART2, R, ENET, TIMER0, CAN1, SGPIO, R, 0, ND); | ||
244 | LPC_P(1,19, ENET, SSP1, R, R, CLKOUT, R, I2S0_RX_MCLK,I2S1, 0, ND); | ||
245 | LPC_P(1,20, GPIO, SSP1, R, ENET, TIMER0, R, SGPIO, R, 0, ND); | ||
246 | LPC_P(2,0, SGPIO, UART0, EMC, USB0, GPIO, R, TIMER3, ENET, 0, ND); | ||
247 | LPC_P(2,1, SGPIO, UART0, EMC, USB0, GPIO, R, TIMER3, R, 0, ND); | ||
248 | LPC_P(2,2, SGPIO, UART0, EMC, USB0, GPIO, CTIN, TIMER3, R, 0, ND); | ||
249 | LPC_P(2,3, SGPIO, I2C1, UART3, CTIN, GPIO, R, TIMER3, USB0, 0, HD); | ||
250 | LPC_P(2,4, SGPIO, I2C1, UART3, CTIN, GPIO, R, TIMER3, USB0, 0, HD); | ||
251 | LPC_P(2,5, SGPIO, CTIN, USB1, ADCTRIG, GPIO, R, TIMER3, USB0, 0, HD); | ||
252 | LPC_P(2,6, SGPIO, UART0, EMC, USB0, GPIO, CTIN, TIMER3, R, 0, ND); | ||
253 | LPC_P(2,7, GPIO, CTOUT, UART3, EMC, R, R, TIMER3, R, 0, ND); | ||
254 | LPC_P(2,8, SGPIO, CTOUT, UART3, EMC, GPIO, R, R, R, 0, ND); | ||
255 | LPC_P(2,9, GPIO, CTOUT, UART3, EMC, R, R, R, R, 0, ND); | ||
256 | LPC_P(2,10, GPIO, CTOUT, UART2, EMC, R, R, R, R, 0, ND); | ||
257 | LPC_P(2,11, GPIO, CTOUT, UART2, EMC, R, R, R, R, 0, ND); | ||
258 | LPC_P(2,12, GPIO, CTOUT, R, EMC, R, R, R, UART2, 0, ND); | ||
259 | LPC_P(2,13, GPIO, CTIN, R, EMC, R, R, R, UART2, 0, ND); | ||
260 | LPC_P(3,0, I2S0_RX_SCK, I2S0_RX_MCLK, I2S0_TX_SCK, I2S0_TX_MCLK,SSP0,R,R,R, 0, ND); | ||
261 | LPC_P(3,1, I2S0_TX_WS, I2S0_RX_WS,CAN0,USB1,GPIO, R, LCD, R, 0, ND); | ||
262 | LPC_P(3,2, I2S0_TX_SDA, I2S0_RX_SDA,CAN0,USB1,GPIO, R, LCD, R, 0, ND); | ||
263 | LPC_P(3,3, R, SPI, SSP0, SPIFI, CGU_OUT,R, I2S0_TX_MCLK, I2S1, 0, HS); | ||
264 | LPC_P(3,4, GPIO, R, R, SPIFI, UART1, I2S0_TX_WS, I2S1, LCD, 0, ND); | ||
265 | LPC_P(3,5, GPIO, R, R, SPIFI, UART1, I2S0_TX_SDA,I2S1, LCD, 0, ND); | ||
266 | LPC_P(3,6, GPIO, SPI, SSP0, SPIFI, R, SSP0_ALT, R, R, 0, ND); | ||
267 | LPC_P(3,7, R, SPI, SSP0, SPIFI, GPIO, SSP0_ALT, R, R, 0, ND); | ||
268 | LPC_P(3,8, R, SPI, SSP0, SPIFI, GPIO, SSP0_ALT, R, R, 0, ND); | ||
269 | LPC_P(4,0, GPIO, MCTRL, NMI, R, R, LCD, UART3, R, 0, ND); | ||
270 | LPC_P(4,1, GPIO, CTOUT, LCD, R, R, LCD_ALT, UART3, ENET, ADC0|1, ND); | ||
271 | LPC_P(4,2, GPIO, CTOUT, LCD, R, R, LCD_ALT, UART3, SGPIO, 0, ND); | ||
272 | LPC_P(4,3, GPIO, CTOUT, LCD, R, R, LCD_ALT, UART3, SGPIO, ADC0|0, ND); | ||
273 | LPC_P(4,4, GPIO, CTOUT, LCD, R, R, LCD_ALT, UART3, SGPIO, DAC, ND); | ||
274 | LPC_P(4,5, GPIO, CTOUT, LCD, R, R, R, R, SGPIO, 0, ND); | ||
275 | LPC_P(4,6, GPIO, CTOUT, LCD, R, R, R, R, SGPIO, 0, ND); | ||
276 | LPC_P(4,7, LCD, CLKIN, R, R, R, R, I2S1,I2S0_TX_SCK, 0, ND); | ||
277 | LPC_P(4,8, R, CTIN, LCD, R, GPIO, LCD_ALT, CAN1, SGPIO, 0, ND); | ||
278 | LPC_P(4,9, R, CTIN, LCD, R, GPIO, LCD_ALT, CAN1, SGPIO, 0, ND); | ||
279 | LPC_P(4,10, R, CTIN, LCD, R, GPIO, LCD_ALT, R, SGPIO, 0, ND); | ||
280 | LPC_P(5,0, GPIO, MCTRL, EMC, R, UART1, TIMER1, R, R, 0, ND); | ||
281 | LPC_P(5,1, GPIO, MCTRL, EMC, R, UART1, TIMER1, R, R, 0, ND); | ||
282 | LPC_P(5,2, GPIO, MCTRL, EMC, R, UART1, TIMER1, R, R, 0, ND); | ||
283 | LPC_P(5,3, GPIO, MCTRL, EMC, R, UART1, TIMER1, R, R, 0, ND); | ||
284 | LPC_P(5,4, GPIO, MCTRL, EMC, R, UART1, TIMER1, R, R, 0, ND); | ||
285 | LPC_P(5,5, GPIO, MCTRL, EMC, R, UART1, TIMER1, R, R, 0, ND); | ||
286 | LPC_P(5,6, GPIO, MCTRL, EMC, R, UART1, TIMER1, R, R, 0, ND); | ||
287 | LPC_P(5,7, GPIO, MCTRL, EMC, R, UART1, TIMER1, R, R, 0, ND); | ||
288 | LPC_P(6,0, R, I2S0_RX_MCLK,R, R, I2S0_RX_SCK, R, R, R, 0, ND); | ||
289 | LPC_P(6,1, GPIO, EMC, UART0, I2S0_RX_WS, R, TIMER2, R, R, 0, ND); | ||
290 | LPC_P(6,2, GPIO, EMC, UART0, I2S0_RX_SDA, R, TIMER2, R, R, 0, ND); | ||
291 | LPC_P(6,3, GPIO, USB0, SGPIO, EMC, R, TIMER2, R, R, 0, ND); | ||
292 | LPC_P(6,4, GPIO, CTIN, UART0, EMC, R, R, R, R, 0, ND); | ||
293 | LPC_P(6,5, GPIO, CTOUT, UART0, EMC, R, R, R, R, 0, ND); | ||
294 | LPC_P(6,6, GPIO, EMC, SGPIO, USB0, R, TIMER2, R, R, 0, ND); | ||
295 | LPC_P(6,7, R, EMC, SGPIO, USB0, GPIO, TIMER2, R, R, 0, ND); | ||
296 | LPC_P(6,8, R, EMC, SGPIO, USB0, GPIO, TIMER2, R, R, 0, ND); | ||
297 | LPC_P(6,9, GPIO, R, R, EMC, R, TIMER2, R, R, 0, ND); | ||
298 | LPC_P(6,10, GPIO, MCTRL, R, EMC, R, R, R, R, 0, ND); | ||
299 | LPC_P(6,11, GPIO, R, R, EMC, R, TIMER2, R, R, 0, ND); | ||
300 | LPC_P(6,12, GPIO, CTOUT, R, EMC, R, R, R, R, 0, ND); | ||
301 | LPC_P(7,0, GPIO, CTOUT, R, LCD, R, R, R, SGPIO, 0, ND); | ||
302 | LPC_P(7,1, GPIO, CTOUT,I2S0_TX_WS,LCD,LCD_ALT, R, UART2, SGPIO, 0, ND); | ||
303 | LPC_P(7,2, GPIO, CTIN,I2S0_TX_SDA,LCD,LCD_ALT, R, UART2, SGPIO, 0, ND); | ||
304 | LPC_P(7,3, GPIO, CTIN, R, LCD,LCD_ALT, R, R, R, 0, ND); | ||
305 | LPC_P(7,4, GPIO, CTOUT, R, LCD,LCD_ALT, TRACE, R, R, ADC0|4, ND); | ||
306 | LPC_P(7,5, GPIO, CTOUT, R, LCD,LCD_ALT, TRACE, R, R, ADC0|3, ND); | ||
307 | LPC_P(7,6, GPIO, CTOUT, R, LCD, R, TRACE, R, R, 0, ND); | ||
308 | LPC_P(7,7, GPIO, CTOUT, R, LCD, R, TRACE, ENET, SGPIO, ADC1|6, ND); | ||
309 | LPC_P(8,0, GPIO, USB0, R, MCTRL, SGPIO, R, R, TIMER0, 0, HD); | ||
310 | LPC_P(8,1, GPIO, USB0, R, MCTRL, SGPIO, R, R, TIMER0, 0, HD); | ||
311 | LPC_P(8,2, GPIO, USB0, R, MCTRL, SGPIO, R, R, TIMER0, 0, HD); | ||
312 | LPC_P(8,3, GPIO, USB1, R, LCD, LCD_ALT, R, R, TIMER0, 0, ND); | ||
313 | LPC_P(8,4, GPIO, USB1, R, LCD, LCD_ALT, R, R, TIMER0, 0, ND); | ||
314 | LPC_P(8,5, GPIO, USB1, R, LCD, LCD_ALT, R, R, TIMER0, 0, ND); | ||
315 | LPC_P(8,6, GPIO, USB1, R, LCD, LCD_ALT, R, R, TIMER0, 0, ND); | ||
316 | LPC_P(8,7, GPIO, USB1, R, LCD, LCD_ALT, R, R, TIMER0, 0, ND); | ||
317 | LPC_P(8,8, R, USB1, R, R, R, R,CGU_OUT, I2S1, 0, ND); | ||
318 | LPC_P(9,0, GPIO, MCTRL, R, R, R, ENET, SGPIO, SSP0, 0, ND); | ||
319 | LPC_P(9,1, GPIO, MCTRL, R, R, I2S0_TX_WS,ENET, SGPIO, SSP0, 0, ND); | ||
320 | LPC_P(9,2, GPIO, MCTRL, R, R, I2S0_TX_SDA,ENET,SGPIO, SSP0, 0, ND); | ||
321 | LPC_P(9,3, GPIO, MCTRL, USB1, R, R, ENET, SGPIO, UART3, 0, ND); | ||
322 | LPC_P(9,4, R, MCTRL, USB1, R, GPIO, ENET, SGPIO, UART3, 0, ND); | ||
323 | LPC_P(9,5, R, MCTRL, USB1, R, GPIO, ENET, SGPIO, UART0, 0, ND); | ||
324 | LPC_P(9,6, GPIO, MCTRL, USB1, R, R, ENET, SGPIO, UART0, 0, ND); | ||
325 | LPC_P(a,0, R, R, R, R, R, I2S1, CGU_OUT, R, 0, ND); | ||
326 | LPC_P(a,1, GPIO, QEI, R, UART2, R, R, R, R, 0, HD); | ||
327 | LPC_P(a,2, GPIO, QEI, R, UART2, R, R, R, R, 0, HD); | ||
328 | LPC_P(a,3, GPIO, QEI, R, R, R, R, R, R, 0, HD); | ||
329 | LPC_P(a,4, R, CTOUT, R, EMC, GPIO, R, R, R, 0, ND); | ||
330 | LPC_P(b,0, R, CTOUT, LCD, R, GPIO, R, R, R, 0, ND); | ||
331 | LPC_P(b,1, R, USB1, LCD, R, GPIO, CTOUT, R, R, 0, ND); | ||
332 | LPC_P(b,2, R, USB1, LCD, R, GPIO, CTOUT, R, R, 0, ND); | ||
333 | LPC_P(b,3, R, USB1, LCD, R, GPIO, CTOUT, R, R, 0, ND); | ||
334 | LPC_P(b,4, R, USB1, LCD, R, GPIO, CTIN, R, R, 0, ND); | ||
335 | LPC_P(b,5, R, USB1, LCD, R, GPIO, CTIN, LCD_ALT, R, 0, ND); | ||
336 | LPC_P(b,6, R, USB1, LCD, R, GPIO, CTIN, LCD_ALT, R, ADC0|6, ND); | ||
337 | LPC_P(c,0, R, USB1, R, ENET, LCD, R, R, SDMMC, ADC1|1, ND); | ||
338 | LPC_P(c,1, USB1, R, UART1, ENET, GPIO, R, TIMER3, SDMMC, 0, ND); | ||
339 | LPC_P(c,2, USB1, R, UART1, ENET, GPIO, R, R, SDMMC, 0, ND); | ||
340 | LPC_P(c,3, USB1, R, UART1, ENET, GPIO, R, R, SDMMC, ADC1|0, ND); | ||
341 | LPC_P(c,4, R, USB1, R, ENET, GPIO, R, TIMER3, SDMMC, 0, ND); | ||
342 | LPC_P(c,5, R, USB1, R, ENET, GPIO, R, TIMER3, SDMMC, 0, ND); | ||
343 | LPC_P(c,6, R, USB1, R, ENET, GPIO, R, TIMER3, SDMMC, 0, ND); | ||
344 | LPC_P(c,7, R, USB1, R, ENET, GPIO, R, TIMER3, SDMMC, 0, ND); | ||
345 | LPC_P(c,8, R, USB1, R, ENET, GPIO, R, TIMER3, SDMMC, 0, ND); | ||
346 | LPC_P(c,9, R, USB1, R, ENET, GPIO, R, TIMER3, SDMMC, 0, ND); | ||
347 | LPC_P(c,10, R, USB1, UART1, R, GPIO, R, TIMER3, SDMMC, 0, ND); | ||
348 | LPC_P(c,11, R, USB1, UART1, R, GPIO, R, R, SDMMC, 0, ND); | ||
349 | LPC_P(c,12, R, R, UART1, R, GPIO, SGPIO, I2S0_TX_SDA,SDMMC, 0, ND); | ||
350 | LPC_P(c,13, R, R, UART1, R, GPIO, SGPIO, I2S0_TX_WS, SDMMC, 0, ND); | ||
351 | LPC_P(c,14, R, R, UART1, R, GPIO, SGPIO, ENET, SDMMC, 0, ND); | ||
352 | LPC_P(d,0, R, CTOUT, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
353 | LPC_P(d,1, R, R, EMC, R, GPIO, SDMMC, R, SGPIO, 0, ND); | ||
354 | LPC_P(d,2, R, CTOUT, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
355 | LPC_P(d,3, R, CTOUT, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
356 | LPC_P(d,4, R, CTOUT, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
357 | LPC_P(d,5, R, CTOUT, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
358 | LPC_P(d,6, R, CTOUT, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
359 | LPC_P(d,7, R, CTIN, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
360 | LPC_P(d,8, R, CTIN, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
361 | LPC_P(d,9, R, CTOUT, EMC, R, GPIO, R, R, SGPIO, 0, ND); | ||
362 | LPC_P(d,10, R, CTIN, EMC, R, GPIO, R, R, R, 0, ND); | ||
363 | LPC_P(d,11, R, R, EMC, R, GPIO, USB1, CTOUT, R, 0, ND); | ||
364 | LPC_P(d,12, R, R, EMC, R, GPIO, R, CTOUT, R, 0, ND); | ||
365 | LPC_P(d,13, R, CTIN, EMC, R, GPIO, R, CTOUT, R, 0, ND); | ||
366 | LPC_P(d,14, R, R, EMC, R, GPIO, R, CTOUT, R, 0, ND); | ||
367 | LPC_P(d,15, R, R, EMC, R, GPIO, SDMMC, CTOUT, R, 0, ND); | ||
368 | LPC_P(d,16, R, R, EMC, R, GPIO, SDMMC, CTOUT, R, 0, ND); | ||
369 | LPC_P(e,0, R, R, R, EMC, GPIO, CAN1, R, R, 0, ND); | ||
370 | LPC_P(e,1, R, R, R, EMC, GPIO, CAN1, R, R, 0, ND); | ||
371 | LPC_P(e,2,ADCTRIG, CAN0, R, EMC, GPIO, R, R, R, 0, ND); | ||
372 | LPC_P(e,3, R, CAN0,ADCTRIG, EMC, GPIO, R, R, R, 0, ND); | ||
373 | LPC_P(e,4, R, NMI, R, EMC, GPIO, R, R, R, 0, ND); | ||
374 | LPC_P(e,5, R, CTOUT, UART1, EMC, GPIO, R, R, R, 0, ND); | ||
375 | LPC_P(e,6, R, CTOUT, UART1, EMC, GPIO, R, R, R, 0, ND); | ||
376 | LPC_P(e,7, R, CTOUT, UART1, EMC, GPIO, R, R, R, 0, ND); | ||
377 | LPC_P(e,8, R, CTOUT, UART1, EMC, GPIO, R, R, R, 0, ND); | ||
378 | LPC_P(e,9, R, CTIN, UART1, EMC, GPIO, R, R, R, 0, ND); | ||
379 | LPC_P(e,10, R, CTIN, UART1, EMC, GPIO, R, R, R, 0, ND); | ||
380 | LPC_P(e,11, R, CTOUT, UART1, EMC, GPIO, R, R, R, 0, ND); | ||
381 | LPC_P(e,12, R, CTOUT, UART1, EMC, GPIO, R, R, R, 0, ND); | ||
382 | LPC_P(e,13, R, CTOUT, I2C1, EMC, GPIO, R, R, R, 0, ND); | ||
383 | LPC_P(e,14, R, R, R, EMC, GPIO, R, R, R, 0, ND); | ||
384 | LPC_P(e,15, R, CTOUT, I2C1, EMC, GPIO, R, R, R, 0, ND); | ||
385 | LPC_P(f,0, SSP0, CLKIN, R, R, R, R, R, I2S1, 0, ND); | ||
386 | LPC_P(f,1, R, R, SSP0, R, GPIO, R, SGPIO, R, 0, ND); | ||
387 | LPC_P(f,2, R, UART3, SSP0, R, GPIO, R, SGPIO, R, 0, ND); | ||
388 | LPC_P(f,3, R, UART3, SSP0, R, GPIO, R, SGPIO, R, 0, ND); | ||
389 | LPC_P(f,4, SSP1, CLKIN, TRACE, R, R, R, I2S0_TX_MCLK,I2S0_RX_SCK, 0, ND); | ||
390 | LPC_P(f,5, R, UART3, SSP1, TRACE, GPIO, R, SGPIO, R, ADC1|4, ND); | ||
391 | LPC_P(f,6, R, UART3, SSP1, TRACE, GPIO, R, SGPIO, I2S1, ADC1|3, ND); | ||
392 | LPC_P(f,7, R, UART3, SSP1, TRACE, GPIO, R, SGPIO, I2S1, ADC1|7, ND); | ||
393 | LPC_P(f,8, R, UART0, CTIN, TRACE, GPIO, R, SGPIO, R, ADC0|2, ND); | ||
394 | LPC_P(f,9, R, UART0, CTOUT, R, GPIO, R, SGPIO, R, ADC1|2, ND); | ||
395 | LPC_P(f,10, R, UART0, R, R, GPIO, R, SDMMC, R, ADC0|5, ND); | ||
396 | LPC_P(f,11, R, UART0, R, R, GPIO, R, SDMMC, R, ADC1|5, ND); | ||
397 | |||
398 | /* Pin Offset FUNC0 FUNC1 FUNC2 FUNC3 FUNC4 FUNC5 FUNC6 FUNC7 ANALOG TYPE */ | ||
399 | LPC_N(clk0, 0xc00, EMC, CLKOUT, R, R, SDMMC, EMC_ALT, SSP1, ENET, 0, HS); | ||
400 | LPC_N(clk1, 0xc04, EMC, CLKOUT, R, R, R, CGU_OUT, R, I2S1, 0, HS); | ||
401 | LPC_N(clk2, 0xc08, EMC, CLKOUT, R, R, SDMMC, EMC_ALT,I2S0_TX_MCLK,I2S1, 0, HS); | ||
402 | LPC_N(clk3, 0xc0c, EMC, CLKOUT, R, R, R, CGU_OUT, R, I2S1, 0, HS); | ||
403 | LPC_N(usb1_dm, 0xc80, R, R, R, R, R, R, R, R, 0, USB1); | ||
404 | LPC_N(usb1_dp, 0xc80, R, R, R, R, R, R, R, R, 0, USB1); | ||
405 | LPC_N(i2c0_scl, 0xc84, R, R, R, R, R, R, R, R, 0, I2C0); | ||
406 | LPC_N(i2c0_sda, 0xc84, R, R, R, R, R, R, R, R, 0, I2C0); | ||
407 | |||
408 | #define LPC18XX_PIN_P(port, pin) { \ | ||
409 | .number = 0x##port * 32 + pin, \ | ||
410 | .name = "p"#port"_"#pin, \ | ||
411 | .drv_data = &lpc18xx_pin_p##port##_##pin \ | ||
412 | } | ||
413 | |||
414 | /* Pin numbers for special pins */ | ||
415 | enum { | ||
416 | PIN_CLK0 = 600, | ||
417 | PIN_CLK1, | ||
418 | PIN_CLK2, | ||
419 | PIN_CLK3, | ||
420 | PIN_USB1_DM, | ||
421 | PIN_USB1_DP, | ||
422 | PIN_I2C0_SCL, | ||
423 | PIN_I2C0_SDA, | ||
424 | }; | ||
425 | |||
426 | #define LPC18XX_PIN(pname, n) { \ | ||
427 | .number = n, \ | ||
428 | .name = #pname, \ | ||
429 | .drv_data = &lpc18xx_pin_##pname \ | ||
430 | } | ||
431 | |||
432 | static const struct pinctrl_pin_desc lpc18xx_pins[] = { | ||
433 | LPC18XX_PIN_P(0,0), | ||
434 | LPC18XX_PIN_P(0,1), | ||
435 | LPC18XX_PIN_P(1,0), | ||
436 | LPC18XX_PIN_P(1,1), | ||
437 | LPC18XX_PIN_P(1,2), | ||
438 | LPC18XX_PIN_P(1,3), | ||
439 | LPC18XX_PIN_P(1,4), | ||
440 | LPC18XX_PIN_P(1,5), | ||
441 | LPC18XX_PIN_P(1,6), | ||
442 | LPC18XX_PIN_P(1,7), | ||
443 | LPC18XX_PIN_P(1,8), | ||
444 | LPC18XX_PIN_P(1,9), | ||
445 | LPC18XX_PIN_P(1,10), | ||
446 | LPC18XX_PIN_P(1,11), | ||
447 | LPC18XX_PIN_P(1,12), | ||
448 | LPC18XX_PIN_P(1,13), | ||
449 | LPC18XX_PIN_P(1,14), | ||
450 | LPC18XX_PIN_P(1,15), | ||
451 | LPC18XX_PIN_P(1,16), | ||
452 | LPC18XX_PIN_P(1,17), | ||
453 | LPC18XX_PIN_P(1,18), | ||
454 | LPC18XX_PIN_P(1,19), | ||
455 | LPC18XX_PIN_P(1,20), | ||
456 | LPC18XX_PIN_P(2,0), | ||
457 | LPC18XX_PIN_P(2,1), | ||
458 | LPC18XX_PIN_P(2,2), | ||
459 | LPC18XX_PIN_P(2,3), | ||
460 | LPC18XX_PIN_P(2,4), | ||
461 | LPC18XX_PIN_P(2,5), | ||
462 | LPC18XX_PIN_P(2,6), | ||
463 | LPC18XX_PIN_P(2,7), | ||
464 | LPC18XX_PIN_P(2,8), | ||
465 | LPC18XX_PIN_P(2,9), | ||
466 | LPC18XX_PIN_P(2,10), | ||
467 | LPC18XX_PIN_P(2,11), | ||
468 | LPC18XX_PIN_P(2,12), | ||
469 | LPC18XX_PIN_P(2,13), | ||
470 | LPC18XX_PIN_P(3,0), | ||
471 | LPC18XX_PIN_P(3,1), | ||
472 | LPC18XX_PIN_P(3,2), | ||
473 | LPC18XX_PIN_P(3,3), | ||
474 | LPC18XX_PIN_P(3,4), | ||
475 | LPC18XX_PIN_P(3,5), | ||
476 | LPC18XX_PIN_P(3,6), | ||
477 | LPC18XX_PIN_P(3,7), | ||
478 | LPC18XX_PIN_P(3,8), | ||
479 | LPC18XX_PIN_P(4,0), | ||
480 | LPC18XX_PIN_P(4,1), | ||
481 | LPC18XX_PIN_P(4,2), | ||
482 | LPC18XX_PIN_P(4,3), | ||
483 | LPC18XX_PIN_P(4,4), | ||
484 | LPC18XX_PIN_P(4,5), | ||
485 | LPC18XX_PIN_P(4,6), | ||
486 | LPC18XX_PIN_P(4,7), | ||
487 | LPC18XX_PIN_P(4,8), | ||
488 | LPC18XX_PIN_P(4,9), | ||
489 | LPC18XX_PIN_P(4,10), | ||
490 | LPC18XX_PIN_P(5,0), | ||
491 | LPC18XX_PIN_P(5,1), | ||
492 | LPC18XX_PIN_P(5,2), | ||
493 | LPC18XX_PIN_P(5,3), | ||
494 | LPC18XX_PIN_P(5,4), | ||
495 | LPC18XX_PIN_P(5,5), | ||
496 | LPC18XX_PIN_P(5,6), | ||
497 | LPC18XX_PIN_P(5,7), | ||
498 | LPC18XX_PIN_P(6,0), | ||
499 | LPC18XX_PIN_P(6,1), | ||
500 | LPC18XX_PIN_P(6,2), | ||
501 | LPC18XX_PIN_P(6,3), | ||
502 | LPC18XX_PIN_P(6,4), | ||
503 | LPC18XX_PIN_P(6,5), | ||
504 | LPC18XX_PIN_P(6,6), | ||
505 | LPC18XX_PIN_P(6,7), | ||
506 | LPC18XX_PIN_P(6,8), | ||
507 | LPC18XX_PIN_P(6,9), | ||
508 | LPC18XX_PIN_P(6,10), | ||
509 | LPC18XX_PIN_P(6,11), | ||
510 | LPC18XX_PIN_P(6,12), | ||
511 | LPC18XX_PIN_P(7,0), | ||
512 | LPC18XX_PIN_P(7,1), | ||
513 | LPC18XX_PIN_P(7,2), | ||
514 | LPC18XX_PIN_P(7,3), | ||
515 | LPC18XX_PIN_P(7,4), | ||
516 | LPC18XX_PIN_P(7,5), | ||
517 | LPC18XX_PIN_P(7,6), | ||
518 | LPC18XX_PIN_P(7,7), | ||
519 | LPC18XX_PIN_P(8,0), | ||
520 | LPC18XX_PIN_P(8,1), | ||
521 | LPC18XX_PIN_P(8,2), | ||
522 | LPC18XX_PIN_P(8,3), | ||
523 | LPC18XX_PIN_P(8,4), | ||
524 | LPC18XX_PIN_P(8,5), | ||
525 | LPC18XX_PIN_P(8,6), | ||
526 | LPC18XX_PIN_P(8,7), | ||
527 | LPC18XX_PIN_P(8,8), | ||
528 | LPC18XX_PIN_P(9,0), | ||
529 | LPC18XX_PIN_P(9,1), | ||
530 | LPC18XX_PIN_P(9,2), | ||
531 | LPC18XX_PIN_P(9,3), | ||
532 | LPC18XX_PIN_P(9,4), | ||
533 | LPC18XX_PIN_P(9,5), | ||
534 | LPC18XX_PIN_P(9,6), | ||
535 | LPC18XX_PIN_P(a,0), | ||
536 | LPC18XX_PIN_P(a,1), | ||
537 | LPC18XX_PIN_P(a,2), | ||
538 | LPC18XX_PIN_P(a,3), | ||
539 | LPC18XX_PIN_P(a,4), | ||
540 | LPC18XX_PIN_P(b,0), | ||
541 | LPC18XX_PIN_P(b,1), | ||
542 | LPC18XX_PIN_P(b,2), | ||
543 | LPC18XX_PIN_P(b,3), | ||
544 | LPC18XX_PIN_P(b,4), | ||
545 | LPC18XX_PIN_P(b,5), | ||
546 | LPC18XX_PIN_P(b,6), | ||
547 | LPC18XX_PIN_P(c,0), | ||
548 | LPC18XX_PIN_P(c,1), | ||
549 | LPC18XX_PIN_P(c,2), | ||
550 | LPC18XX_PIN_P(c,3), | ||
551 | LPC18XX_PIN_P(c,4), | ||
552 | LPC18XX_PIN_P(c,5), | ||
553 | LPC18XX_PIN_P(c,6), | ||
554 | LPC18XX_PIN_P(c,7), | ||
555 | LPC18XX_PIN_P(c,8), | ||
556 | LPC18XX_PIN_P(c,9), | ||
557 | LPC18XX_PIN_P(c,10), | ||
558 | LPC18XX_PIN_P(c,11), | ||
559 | LPC18XX_PIN_P(c,12), | ||
560 | LPC18XX_PIN_P(c,13), | ||
561 | LPC18XX_PIN_P(c,14), | ||
562 | LPC18XX_PIN_P(d,0), | ||
563 | LPC18XX_PIN_P(d,1), | ||
564 | LPC18XX_PIN_P(d,2), | ||
565 | LPC18XX_PIN_P(d,3), | ||
566 | LPC18XX_PIN_P(d,4), | ||
567 | LPC18XX_PIN_P(d,5), | ||
568 | LPC18XX_PIN_P(d,6), | ||
569 | LPC18XX_PIN_P(d,7), | ||
570 | LPC18XX_PIN_P(d,8), | ||
571 | LPC18XX_PIN_P(d,9), | ||
572 | LPC18XX_PIN_P(d,10), | ||
573 | LPC18XX_PIN_P(d,11), | ||
574 | LPC18XX_PIN_P(d,12), | ||
575 | LPC18XX_PIN_P(d,13), | ||
576 | LPC18XX_PIN_P(d,14), | ||
577 | LPC18XX_PIN_P(d,15), | ||
578 | LPC18XX_PIN_P(d,16), | ||
579 | LPC18XX_PIN_P(e,0), | ||
580 | LPC18XX_PIN_P(e,1), | ||
581 | LPC18XX_PIN_P(e,2), | ||
582 | LPC18XX_PIN_P(e,3), | ||
583 | LPC18XX_PIN_P(e,4), | ||
584 | LPC18XX_PIN_P(e,5), | ||
585 | LPC18XX_PIN_P(e,6), | ||
586 | LPC18XX_PIN_P(e,7), | ||
587 | LPC18XX_PIN_P(e,8), | ||
588 | LPC18XX_PIN_P(e,9), | ||
589 | LPC18XX_PIN_P(e,10), | ||
590 | LPC18XX_PIN_P(e,11), | ||
591 | LPC18XX_PIN_P(e,12), | ||
592 | LPC18XX_PIN_P(e,13), | ||
593 | LPC18XX_PIN_P(e,14), | ||
594 | LPC18XX_PIN_P(e,15), | ||
595 | LPC18XX_PIN_P(f,0), | ||
596 | LPC18XX_PIN_P(f,1), | ||
597 | LPC18XX_PIN_P(f,2), | ||
598 | LPC18XX_PIN_P(f,3), | ||
599 | LPC18XX_PIN_P(f,4), | ||
600 | LPC18XX_PIN_P(f,5), | ||
601 | LPC18XX_PIN_P(f,6), | ||
602 | LPC18XX_PIN_P(f,7), | ||
603 | LPC18XX_PIN_P(f,8), | ||
604 | LPC18XX_PIN_P(f,9), | ||
605 | LPC18XX_PIN_P(f,10), | ||
606 | LPC18XX_PIN_P(f,11), | ||
607 | |||
608 | LPC18XX_PIN(clk0, PIN_CLK0), | ||
609 | LPC18XX_PIN(clk1, PIN_CLK1), | ||
610 | LPC18XX_PIN(clk2, PIN_CLK2), | ||
611 | LPC18XX_PIN(clk3, PIN_CLK3), | ||
612 | LPC18XX_PIN(usb1_dm, PIN_USB1_DM), | ||
613 | LPC18XX_PIN(usb1_dp, PIN_USB1_DP), | ||
614 | LPC18XX_PIN(i2c0_scl, PIN_I2C0_SCL), | ||
615 | LPC18XX_PIN(i2c0_sda, PIN_I2C0_SDA), | ||
616 | }; | ||
617 | |||
618 | static int lpc18xx_pconf_get_usb1(enum pin_config_param param, int *arg, u32 reg) | ||
619 | { | ||
620 | /* TODO */ | ||
621 | return -ENOTSUPP; | ||
622 | } | ||
623 | |||
624 | static int lpc18xx_pconf_get_i2c0(enum pin_config_param param, int *arg, u32 reg, | ||
625 | unsigned pin) | ||
626 | { | ||
627 | u8 shift; | ||
628 | |||
629 | if (pin == PIN_I2C0_SCL) | ||
630 | shift = LPC18XX_SCU_I2C0_SCL_SHIFT; | ||
631 | else | ||
632 | shift = LPC18XX_SCU_I2C0_SDA_SHIFT; | ||
633 | |||
634 | switch (param) { | ||
635 | case PIN_CONFIG_INPUT_ENABLE: | ||
636 | if (reg & (LPC18XX_SCU_I2C0_EZI << shift)) | ||
637 | *arg = 1; | ||
638 | else | ||
639 | return -EINVAL; | ||
640 | break; | ||
641 | |||
642 | case PIN_CONFIG_SLEW_RATE: | ||
643 | if (reg & (LPC18XX_SCU_I2C0_EHD << shift)) | ||
644 | *arg = 1; | ||
645 | else | ||
646 | *arg = 0; | ||
647 | break; | ||
648 | |||
649 | case PIN_CONFIG_INPUT_SCHMITT: | ||
650 | if (reg & (LPC18XX_SCU_I2C0_EFP << shift)) | ||
651 | *arg = 3; | ||
652 | else | ||
653 | *arg = 50; | ||
654 | break; | ||
655 | |||
656 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: | ||
657 | if (reg & (LPC18XX_SCU_I2C0_ZIF << shift)) | ||
658 | return -EINVAL; | ||
659 | else | ||
660 | *arg = 1; | ||
661 | break; | ||
662 | |||
663 | default: | ||
664 | return -ENOTSUPP; | ||
665 | } | ||
666 | |||
667 | return 0; | ||
668 | } | ||
669 | |||
670 | static int lpc18xx_pconf_get_pin(enum pin_config_param param, int *arg, u32 reg, | ||
671 | struct lpc18xx_pin_caps *pin_cap) | ||
672 | { | ||
673 | switch (param) { | ||
674 | case PIN_CONFIG_BIAS_DISABLE: | ||
675 | if ((!(reg & LPC18XX_SCU_PIN_EPD)) && (reg & LPC18XX_SCU_PIN_EPUN)) | ||
676 | ; | ||
677 | else | ||
678 | return -EINVAL; | ||
679 | break; | ||
680 | |||
681 | case PIN_CONFIG_BIAS_PULL_UP: | ||
682 | if (reg & LPC18XX_SCU_PIN_EPUN) | ||
683 | return -EINVAL; | ||
684 | else | ||
685 | *arg = 1; | ||
686 | break; | ||
687 | |||
688 | case PIN_CONFIG_BIAS_PULL_DOWN: | ||
689 | if (reg & LPC18XX_SCU_PIN_EPD) | ||
690 | *arg = 1; | ||
691 | else | ||
692 | return -EINVAL; | ||
693 | break; | ||
694 | |||
695 | case PIN_CONFIG_INPUT_ENABLE: | ||
696 | if (reg & LPC18XX_SCU_PIN_EZI) | ||
697 | *arg = 1; | ||
698 | else | ||
699 | return -EINVAL; | ||
700 | break; | ||
701 | |||
702 | case PIN_CONFIG_SLEW_RATE: | ||
703 | if (pin_cap->type == TYPE_HD) | ||
704 | return -ENOTSUPP; | ||
705 | |||
706 | if (reg & LPC18XX_SCU_PIN_EHS) | ||
707 | *arg = 1; | ||
708 | else | ||
709 | *arg = 0; | ||
710 | break; | ||
711 | |||
712 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: | ||
713 | if (reg & LPC18XX_SCU_PIN_ZIF) | ||
714 | return -EINVAL; | ||
715 | else | ||
716 | *arg = 1; | ||
717 | break; | ||
718 | |||
719 | case PIN_CONFIG_DRIVE_STRENGTH: | ||
720 | if (pin_cap->type != TYPE_HD) | ||
721 | return -ENOTSUPP; | ||
722 | |||
723 | *arg = (reg & LPC18XX_SCU_PIN_EHD_MASK) >> LPC18XX_SCU_PIN_EHD_POS; | ||
724 | switch (*arg) { | ||
725 | case 3: *arg += 5; | ||
726 | case 2: *arg += 5; | ||
727 | case 1: *arg += 3; | ||
728 | case 0: *arg += 4; | ||
729 | } | ||
730 | break; | ||
731 | |||
732 | default: | ||
733 | return -ENOTSUPP; | ||
734 | } | ||
735 | |||
736 | return 0; | ||
737 | } | ||
738 | |||
739 | static struct lpc18xx_pin_caps *lpc18xx_get_pin_caps(unsigned pin) | ||
740 | { | ||
741 | int i; | ||
742 | |||
743 | for (i = 0; i < ARRAY_SIZE(lpc18xx_pins); i++) { | ||
744 | if (lpc18xx_pins[i].number == pin) | ||
745 | return lpc18xx_pins[i].drv_data; | ||
746 | } | ||
747 | |||
748 | return NULL; | ||
749 | } | ||
750 | |||
751 | static int lpc18xx_pconf_get(struct pinctrl_dev *pctldev, unsigned pin, | ||
752 | unsigned long *config) | ||
753 | { | ||
754 | struct lpc18xx_scu_data *scu = pinctrl_dev_get_drvdata(pctldev); | ||
755 | enum pin_config_param param = pinconf_to_config_param(*config); | ||
756 | struct lpc18xx_pin_caps *pin_cap; | ||
757 | int ret, arg = 0; | ||
758 | u32 reg; | ||
759 | |||
760 | pin_cap = lpc18xx_get_pin_caps(pin); | ||
761 | if (!pin_cap) | ||
762 | return -EINVAL; | ||
763 | |||
764 | reg = readl(scu->base + pin_cap->offset); | ||
765 | |||
766 | if (pin_cap->type == TYPE_I2C0) | ||
767 | ret = lpc18xx_pconf_get_i2c0(param, &arg, reg, pin); | ||
768 | else if (pin_cap->type == TYPE_USB1) | ||
769 | ret = lpc18xx_pconf_get_usb1(param, &arg, reg); | ||
770 | else | ||
771 | ret = lpc18xx_pconf_get_pin(param, &arg, reg, pin_cap); | ||
772 | |||
773 | if (ret < 0) | ||
774 | return ret; | ||
775 | |||
776 | *config = pinconf_to_config_packed(param, (u16)arg); | ||
777 | |||
778 | return 0; | ||
779 | } | ||
780 | |||
781 | static int lpc18xx_pconf_set_usb1(struct pinctrl_dev *pctldev, | ||
782 | enum pin_config_param param, | ||
783 | u16 param_val, u32 *reg) | ||
784 | { | ||
785 | /* TODO */ | ||
786 | return -ENOTSUPP; | ||
787 | } | ||
788 | |||
789 | static int lpc18xx_pconf_set_i2c0(struct pinctrl_dev *pctldev, | ||
790 | enum pin_config_param param, | ||
791 | u16 param_val, u32 *reg, | ||
792 | unsigned pin) | ||
793 | { | ||
794 | u8 shift; | ||
795 | |||
796 | if (pin == PIN_I2C0_SCL) | ||
797 | shift = LPC18XX_SCU_I2C0_SCL_SHIFT; | ||
798 | else | ||
799 | shift = LPC18XX_SCU_I2C0_SDA_SHIFT; | ||
800 | |||
801 | switch (param) { | ||
802 | case PIN_CONFIG_INPUT_ENABLE: | ||
803 | if (param_val) | ||
804 | *reg |= (LPC18XX_SCU_I2C0_EZI << shift); | ||
805 | else | ||
806 | *reg &= ~(LPC18XX_SCU_I2C0_EZI << shift); | ||
807 | break; | ||
808 | |||
809 | case PIN_CONFIG_SLEW_RATE: | ||
810 | if (param_val) | ||
811 | *reg |= (LPC18XX_SCU_I2C0_EHD << shift); | ||
812 | else | ||
813 | *reg &= ~(LPC18XX_SCU_I2C0_EHD << shift); | ||
814 | break; | ||
815 | |||
816 | case PIN_CONFIG_INPUT_SCHMITT: | ||
817 | if (param_val == 3) | ||
818 | *reg |= (LPC18XX_SCU_I2C0_EFP << shift); | ||
819 | else if (param_val == 50) | ||
820 | *reg &= ~(LPC18XX_SCU_I2C0_EFP << shift); | ||
821 | else | ||
822 | return -ENOTSUPP; | ||
823 | break; | ||
824 | |||
825 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: | ||
826 | if (param) | ||
827 | *reg &= ~(LPC18XX_SCU_I2C0_ZIF << shift); | ||
828 | else | ||
829 | *reg |= (LPC18XX_SCU_I2C0_ZIF << shift); | ||
830 | break; | ||
831 | |||
832 | default: | ||
833 | dev_err(pctldev->dev, "Property not supported\n"); | ||
834 | return -ENOTSUPP; | ||
835 | } | ||
836 | |||
837 | return 0; | ||
838 | } | ||
839 | |||
840 | static int lpc18xx_pconf_set_pin(struct pinctrl_dev *pctldev, | ||
841 | enum pin_config_param param, | ||
842 | u16 param_val, u32 *reg, | ||
843 | struct lpc18xx_pin_caps *pin_cap) | ||
844 | { | ||
845 | switch (param) { | ||
846 | case PIN_CONFIG_BIAS_DISABLE: | ||
847 | *reg &= ~LPC18XX_SCU_PIN_EPD; | ||
848 | *reg |= LPC18XX_SCU_PIN_EPUN; | ||
849 | break; | ||
850 | |||
851 | case PIN_CONFIG_BIAS_PULL_UP: | ||
852 | *reg &= ~LPC18XX_SCU_PIN_EPUN; | ||
853 | break; | ||
854 | |||
855 | case PIN_CONFIG_BIAS_PULL_DOWN: | ||
856 | *reg |= LPC18XX_SCU_PIN_EPD; | ||
857 | break; | ||
858 | |||
859 | case PIN_CONFIG_INPUT_ENABLE: | ||
860 | if (param_val) | ||
861 | *reg |= LPC18XX_SCU_PIN_EZI; | ||
862 | else | ||
863 | *reg &= ~LPC18XX_SCU_PIN_EZI; | ||
864 | break; | ||
865 | |||
866 | case PIN_CONFIG_SLEW_RATE: | ||
867 | if (pin_cap->type == TYPE_HD) { | ||
868 | dev_err(pctldev->dev, "Slew rate unsupported on high-drive pins\n"); | ||
869 | return -ENOTSUPP; | ||
870 | } | ||
871 | |||
872 | if (param_val == 0) | ||
873 | *reg &= ~LPC18XX_SCU_PIN_EHS; | ||
874 | else | ||
875 | *reg |= LPC18XX_SCU_PIN_EHS; | ||
876 | break; | ||
877 | |||
878 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: | ||
879 | if (param) | ||
880 | *reg &= ~LPC18XX_SCU_PIN_ZIF; | ||
881 | else | ||
882 | *reg |= LPC18XX_SCU_PIN_ZIF; | ||
883 | break; | ||
884 | |||
885 | case PIN_CONFIG_DRIVE_STRENGTH: | ||
886 | if (pin_cap->type != TYPE_HD) { | ||
887 | dev_err(pctldev->dev, "Drive strength available only on high-drive pins\n"); | ||
888 | return -ENOTSUPP; | ||
889 | } | ||
890 | *reg &= ~LPC18XX_SCU_PIN_EHD_MASK; | ||
891 | |||
892 | switch (param_val) { | ||
893 | case 20: param_val -= 5; | ||
894 | case 14: param_val -= 5; | ||
895 | case 8: param_val -= 3; | ||
896 | case 4: param_val -= 4; | ||
897 | break; | ||
898 | default: | ||
899 | dev_err(pctldev->dev, "Drive strength %u unsupported\n", param_val); | ||
900 | return -ENOTSUPP; | ||
901 | } | ||
902 | *reg |= param_val << LPC18XX_SCU_PIN_EHD_POS; | ||
903 | break; | ||
904 | |||
905 | default: | ||
906 | dev_err(pctldev->dev, "Property not supported\n"); | ||
907 | return -ENOTSUPP; | ||
908 | } | ||
909 | |||
910 | return 0; | ||
911 | } | ||
912 | |||
913 | static int lpc18xx_pconf_set(struct pinctrl_dev *pctldev, unsigned pin, | ||
914 | unsigned long *configs, unsigned num_configs) | ||
915 | { | ||
916 | struct lpc18xx_scu_data *scu = pinctrl_dev_get_drvdata(pctldev); | ||
917 | struct lpc18xx_pin_caps *pin_cap; | ||
918 | enum pin_config_param param; | ||
919 | u16 param_val; | ||
920 | u32 reg; | ||
921 | int ret; | ||
922 | int i; | ||
923 | |||
924 | pin_cap = lpc18xx_get_pin_caps(pin); | ||
925 | if (!pin_cap) | ||
926 | return -EINVAL; | ||
927 | |||
928 | reg = readl(scu->base + pin_cap->offset); | ||
929 | |||
930 | for (i = 0; i < num_configs; i++) { | ||
931 | param = pinconf_to_config_param(configs[i]); | ||
932 | param_val = pinconf_to_config_argument(configs[i]); | ||
933 | |||
934 | if (pin_cap->type == TYPE_I2C0) | ||
935 | ret = lpc18xx_pconf_set_i2c0(pctldev, param, param_val, ®, pin); | ||
936 | else if (pin_cap->type == TYPE_USB1) | ||
937 | ret = lpc18xx_pconf_set_usb1(pctldev, param, param_val, ®); | ||
938 | else | ||
939 | ret = lpc18xx_pconf_set_pin(pctldev, param, param_val, ®, pin_cap); | ||
940 | |||
941 | if (ret) | ||
942 | return ret; | ||
943 | } | ||
944 | |||
945 | writel(reg, scu->base + pin_cap->offset); | ||
946 | |||
947 | return 0; | ||
948 | } | ||
949 | |||
950 | static const struct pinconf_ops lpc18xx_pconf_ops = { | ||
951 | .is_generic = true, | ||
952 | .pin_config_get = lpc18xx_pconf_get, | ||
953 | .pin_config_set = lpc18xx_pconf_set, | ||
954 | }; | ||
955 | |||
956 | static int lpc18xx_pmx_get_funcs_count(struct pinctrl_dev *pctldev) | ||
957 | { | ||
958 | return ARRAY_SIZE(lpc18xx_function_names); | ||
959 | } | ||
960 | |||
961 | static const char *lpc18xx_pmx_get_func_name(struct pinctrl_dev *pctldev, | ||
962 | unsigned function) | ||
963 | { | ||
964 | return lpc18xx_function_names[function]; | ||
965 | } | ||
966 | |||
967 | static int lpc18xx_pmx_get_func_groups(struct pinctrl_dev *pctldev, | ||
968 | unsigned function, | ||
969 | const char *const **groups, | ||
970 | unsigned *const num_groups) | ||
971 | { | ||
972 | struct lpc18xx_scu_data *scu = pinctrl_dev_get_drvdata(pctldev); | ||
973 | |||
974 | *groups = scu->func[function].groups; | ||
975 | *num_groups = scu->func[function].ngroups; | ||
976 | |||
977 | return 0; | ||
978 | } | ||
979 | |||
980 | static int lpc18xx_pmx_set(struct pinctrl_dev *pctldev, unsigned function, | ||
981 | unsigned group) | ||
982 | { | ||
983 | struct lpc18xx_scu_data *scu = pinctrl_dev_get_drvdata(pctldev); | ||
984 | struct lpc18xx_pin_caps *pin = lpc18xx_pins[group].drv_data; | ||
985 | int func; | ||
986 | u32 reg; | ||
987 | |||
988 | /* Dedicated USB1 and I2C0 pins doesn't support muxing */ | ||
989 | if (pin->type == TYPE_USB1) { | ||
990 | if (function == FUNC_USB1) | ||
991 | return 0; | ||
992 | |||
993 | goto fail; | ||
994 | } | ||
995 | |||
996 | if (pin->type == TYPE_I2C0) { | ||
997 | if (function == FUNC_I2C0) | ||
998 | return 0; | ||
999 | |||
1000 | goto fail; | ||
1001 | } | ||
1002 | |||
1003 | if (function == FUNC_ADC && (pin->analog & LPC18XX_ANALOG_PIN)) { | ||
1004 | u32 offset; | ||
1005 | |||
1006 | writel(LPC18XX_SCU_ANALOG_PIN_CFG, scu->base + pin->offset); | ||
1007 | |||
1008 | if (LPC18XX_ANALOG_ADC(pin->analog) == 0) | ||
1009 | offset = LPC18XX_SCU_REG_ENAIO0; | ||
1010 | else | ||
1011 | offset = LPC18XX_SCU_REG_ENAIO1; | ||
1012 | |||
1013 | reg = readl(scu->base + offset); | ||
1014 | reg |= pin->analog & LPC18XX_ANALOG_BIT_MASK; | ||
1015 | writel(reg, scu->base + offset); | ||
1016 | |||
1017 | return 0; | ||
1018 | } | ||
1019 | |||
1020 | if (function == FUNC_DAC && (pin->analog & LPC18XX_ANALOG_PIN)) { | ||
1021 | writel(LPC18XX_SCU_ANALOG_PIN_CFG, scu->base + pin->offset); | ||
1022 | |||
1023 | reg = readl(scu->base + LPC18XX_SCU_REG_ENAIO2); | ||
1024 | reg |= LPC18XX_SCU_REG_ENAIO2_DAC; | ||
1025 | writel(reg, scu->base + LPC18XX_SCU_REG_ENAIO2); | ||
1026 | |||
1027 | return 0; | ||
1028 | } | ||
1029 | |||
1030 | for (func = 0; func < LPC18XX_SCU_FUNC_PER_PIN; func++) { | ||
1031 | if (function == pin->functions[func]) | ||
1032 | break; | ||
1033 | } | ||
1034 | |||
1035 | if (func >= LPC18XX_SCU_FUNC_PER_PIN) | ||
1036 | goto fail; | ||
1037 | |||
1038 | reg = readl(scu->base + pin->offset); | ||
1039 | reg &= ~LPC18XX_SCU_PIN_MODE_MASK; | ||
1040 | writel(reg | func, scu->base + pin->offset); | ||
1041 | |||
1042 | return 0; | ||
1043 | fail: | ||
1044 | dev_err(pctldev->dev, "Pin %s can't be %s\n", lpc18xx_pins[group].name, | ||
1045 | lpc18xx_function_names[function]); | ||
1046 | return -EINVAL; | ||
1047 | } | ||
1048 | |||
1049 | static const struct pinmux_ops lpc18xx_pmx_ops = { | ||
1050 | .get_functions_count = lpc18xx_pmx_get_funcs_count, | ||
1051 | .get_function_name = lpc18xx_pmx_get_func_name, | ||
1052 | .get_function_groups = lpc18xx_pmx_get_func_groups, | ||
1053 | .set_mux = lpc18xx_pmx_set, | ||
1054 | }; | ||
1055 | |||
1056 | static int lpc18xx_pctl_get_groups_count(struct pinctrl_dev *pctldev) | ||
1057 | { | ||
1058 | return ARRAY_SIZE(lpc18xx_pins); | ||
1059 | } | ||
1060 | |||
1061 | static const char *lpc18xx_pctl_get_group_name(struct pinctrl_dev *pctldev, | ||
1062 | unsigned group) | ||
1063 | { | ||
1064 | return lpc18xx_pins[group].name; | ||
1065 | } | ||
1066 | |||
1067 | static int lpc18xx_pctl_get_group_pins(struct pinctrl_dev *pctldev, | ||
1068 | unsigned group, | ||
1069 | const unsigned **pins, | ||
1070 | unsigned *num_pins) | ||
1071 | { | ||
1072 | *pins = &lpc18xx_pins[group].number; | ||
1073 | *num_pins = 1; | ||
1074 | |||
1075 | return 0; | ||
1076 | } | ||
1077 | |||
1078 | static const struct pinctrl_ops lpc18xx_pctl_ops = { | ||
1079 | .get_groups_count = lpc18xx_pctl_get_groups_count, | ||
1080 | .get_group_name = lpc18xx_pctl_get_group_name, | ||
1081 | .get_group_pins = lpc18xx_pctl_get_group_pins, | ||
1082 | .dt_node_to_map = pinconf_generic_dt_node_to_map_pin, | ||
1083 | .dt_free_map = pinctrl_utils_dt_free_map, | ||
1084 | }; | ||
1085 | |||
1086 | static struct pinctrl_desc lpc18xx_scu_desc = { | ||
1087 | .name = "lpc18xx/43xx-scu", | ||
1088 | .pins = lpc18xx_pins, | ||
1089 | .npins = ARRAY_SIZE(lpc18xx_pins), | ||
1090 | .pctlops = &lpc18xx_pctl_ops, | ||
1091 | .pmxops = &lpc18xx_pmx_ops, | ||
1092 | .confops = &lpc18xx_pconf_ops, | ||
1093 | .owner = THIS_MODULE, | ||
1094 | }; | ||
1095 | |||
1096 | static bool lpc18xx_valid_pin_function(unsigned pin, unsigned function) | ||
1097 | { | ||
1098 | struct lpc18xx_pin_caps *p = lpc18xx_pins[pin].drv_data; | ||
1099 | int i; | ||
1100 | |||
1101 | if (function == FUNC_DAC && p->analog == DAC) | ||
1102 | return true; | ||
1103 | |||
1104 | if (function == FUNC_ADC && p->analog) | ||
1105 | return true; | ||
1106 | |||
1107 | if (function == FUNC_I2C0 && p->type == TYPE_I2C0) | ||
1108 | return true; | ||
1109 | |||
1110 | if (function == FUNC_USB1 && p->type == TYPE_USB1) | ||
1111 | return true; | ||
1112 | |||
1113 | for (i = 0; i < LPC18XX_SCU_FUNC_PER_PIN; i++) { | ||
1114 | if (function == p->functions[i]) | ||
1115 | return true; | ||
1116 | } | ||
1117 | |||
1118 | return false; | ||
1119 | } | ||
1120 | |||
1121 | static int lpc18xx_create_group_func_map(struct device *dev, | ||
1122 | struct lpc18xx_scu_data *scu) | ||
1123 | { | ||
1124 | u16 pins[ARRAY_SIZE(lpc18xx_pins)]; | ||
1125 | int func, ngroups, i; | ||
1126 | |||
1127 | for (func = 0; func < FUNC_MAX; ngroups = 0, func++) { | ||
1128 | |||
1129 | for (i = 0; i < ARRAY_SIZE(lpc18xx_pins); i++) { | ||
1130 | if (lpc18xx_valid_pin_function(i, func)) | ||
1131 | pins[ngroups++] = i; | ||
1132 | } | ||
1133 | |||
1134 | scu->func[func].ngroups = ngroups; | ||
1135 | scu->func[func].groups = devm_kzalloc(dev, ngroups * | ||
1136 | sizeof(char *), GFP_KERNEL); | ||
1137 | if (!scu->func[func].groups) | ||
1138 | return -ENOMEM; | ||
1139 | |||
1140 | for (i = 0; i < ngroups; i++) | ||
1141 | scu->func[func].groups[i] = lpc18xx_pins[pins[i]].name; | ||
1142 | } | ||
1143 | |||
1144 | return 0; | ||
1145 | } | ||
1146 | |||
1147 | static int lpc18xx_scu_probe(struct platform_device *pdev) | ||
1148 | { | ||
1149 | struct lpc18xx_scu_data *scu; | ||
1150 | struct resource *res; | ||
1151 | int ret; | ||
1152 | |||
1153 | scu = devm_kzalloc(&pdev->dev, sizeof(*scu), GFP_KERNEL); | ||
1154 | if (!scu) | ||
1155 | return -ENOMEM; | ||
1156 | |||
1157 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
1158 | scu->base = devm_ioremap_resource(&pdev->dev, res); | ||
1159 | if (IS_ERR(scu->base)) | ||
1160 | return PTR_ERR(scu->base); | ||
1161 | |||
1162 | scu->clk = devm_clk_get(&pdev->dev, NULL); | ||
1163 | if (IS_ERR(scu->clk)) { | ||
1164 | dev_err(&pdev->dev, "Input clock not found.\n"); | ||
1165 | return PTR_ERR(scu->clk); | ||
1166 | } | ||
1167 | |||
1168 | ret = lpc18xx_create_group_func_map(&pdev->dev, scu); | ||
1169 | if (ret) { | ||
1170 | dev_err(&pdev->dev, "Unable to create group func map.\n"); | ||
1171 | return ret; | ||
1172 | } | ||
1173 | |||
1174 | ret = clk_prepare_enable(scu->clk); | ||
1175 | if (ret) { | ||
1176 | dev_err(&pdev->dev, "Unable to enable clock.\n"); | ||
1177 | return ret; | ||
1178 | } | ||
1179 | |||
1180 | platform_set_drvdata(pdev, scu); | ||
1181 | |||
1182 | scu->pctl = pinctrl_register(&lpc18xx_scu_desc, &pdev->dev, scu); | ||
1183 | if (IS_ERR(scu->pctl)) { | ||
1184 | dev_err(&pdev->dev, "Could not register pinctrl driver\n"); | ||
1185 | clk_disable_unprepare(scu->clk); | ||
1186 | return PTR_ERR(scu->pctl); | ||
1187 | } | ||
1188 | |||
1189 | return 0; | ||
1190 | } | ||
1191 | |||
1192 | static int lpc18xx_scu_remove(struct platform_device *pdev) | ||
1193 | { | ||
1194 | struct lpc18xx_scu_data *scu = platform_get_drvdata(pdev); | ||
1195 | |||
1196 | pinctrl_unregister(scu->pctl); | ||
1197 | clk_disable_unprepare(scu->clk); | ||
1198 | |||
1199 | return 0; | ||
1200 | } | ||
1201 | |||
1202 | static const struct of_device_id lpc18xx_scu_match[] = { | ||
1203 | { .compatible = "nxp,lpc1850-scu" }, | ||
1204 | {}, | ||
1205 | }; | ||
1206 | MODULE_DEVICE_TABLE(of, lpc18xx_scu_match); | ||
1207 | |||
1208 | static struct platform_driver lpc18xx_scu_driver = { | ||
1209 | .probe = lpc18xx_scu_probe, | ||
1210 | .remove = lpc18xx_scu_remove, | ||
1211 | .driver = { | ||
1212 | .name = "lpc18xx-scu", | ||
1213 | .of_match_table = lpc18xx_scu_match, | ||
1214 | }, | ||
1215 | }; | ||
1216 | module_platform_driver(lpc18xx_scu_driver); | ||
1217 | |||
1218 | MODULE_AUTHOR("Joachim Eastwood <manabian@gmail.com>"); | ||
1219 | MODULE_DESCRIPTION("Pinctrl driver for NXP LPC18xx/43xx SCU"); | ||
1220 | MODULE_LICENSE("GPL v2"); | ||
diff --git a/drivers/pinctrl/pinctrl-palmas.c b/drivers/pinctrl/pinctrl-palmas.c index 2631df0504bd..f7e168044baf 100644 --- a/drivers/pinctrl/pinctrl-palmas.c +++ b/drivers/pinctrl/pinctrl-palmas.c | |||
@@ -1044,9 +1044,9 @@ static int palmas_pinctrl_probe(struct platform_device *pdev) | |||
1044 | palmas_pinctrl_desc.pins = palmas_pins_desc; | 1044 | palmas_pinctrl_desc.pins = palmas_pins_desc; |
1045 | palmas_pinctrl_desc.npins = ARRAY_SIZE(palmas_pins_desc); | 1045 | palmas_pinctrl_desc.npins = ARRAY_SIZE(palmas_pins_desc); |
1046 | pci->pctl = pinctrl_register(&palmas_pinctrl_desc, &pdev->dev, pci); | 1046 | pci->pctl = pinctrl_register(&palmas_pinctrl_desc, &pdev->dev, pci); |
1047 | if (!pci->pctl) { | 1047 | if (IS_ERR(pci->pctl)) { |
1048 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 1048 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
1049 | return -ENODEV; | 1049 | return PTR_ERR(pci->pctl); |
1050 | } | 1050 | } |
1051 | return 0; | 1051 | return 0; |
1052 | } | 1052 | } |
diff --git a/drivers/pinctrl/pinctrl-pistachio.c b/drivers/pinctrl/pinctrl-pistachio.c new file mode 100644 index 000000000000..63100be81015 --- /dev/null +++ b/drivers/pinctrl/pinctrl-pistachio.c | |||
@@ -0,0 +1,1504 @@ | |||
1 | /* | ||
2 | * Pistachio SoC pinctrl driver | ||
3 | * | ||
4 | * Copyright (C) 2014 Imagination Technologies Ltd. | ||
5 | * Copyright (C) 2014 Google, Inc. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms and conditions of the GNU General Public License, | ||
9 | * version 2, as published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #include <linux/gpio.h> | ||
13 | #include <linux/gpio/driver.h> | ||
14 | #include <linux/interrupt.h> | ||
15 | #include <linux/io.h> | ||
16 | #include <linux/irq.h> | ||
17 | #include <linux/of.h> | ||
18 | #include <linux/of_irq.h> | ||
19 | #include <linux/pinctrl/pinconf.h> | ||
20 | #include <linux/pinctrl/pinconf-generic.h> | ||
21 | #include <linux/pinctrl/pinctrl.h> | ||
22 | #include <linux/pinctrl/pinmux.h> | ||
23 | #include <linux/platform_device.h> | ||
24 | #include <linux/slab.h> | ||
25 | #include <linux/spinlock.h> | ||
26 | |||
27 | #include "pinctrl-utils.h" | ||
28 | |||
29 | #define PADS_SCHMITT_EN0 0x000 | ||
30 | #define PADS_SCHMITT_EN_REG(pin) (PADS_SCHMITT_EN0 + 0x4 * ((pin) / 32)) | ||
31 | #define PADS_SCHMITT_EN_BIT(pin) BIT((pin) % 32) | ||
32 | |||
33 | #define PADS_PU_PD0 0x040 | ||
34 | #define PADS_PU_PD_REG(pin) (PADS_PU_PD0 + 0x4 * ((pin) / 16)) | ||
35 | #define PADS_PU_PD_SHIFT(pin) (2 * ((pin) % 16)) | ||
36 | #define PADS_PU_PD_MASK 0x3 | ||
37 | #define PADS_PU_PD_HIGHZ 0x0 | ||
38 | #define PADS_PU_PD_UP 0x1 | ||
39 | #define PADS_PU_PD_DOWN 0x2 | ||
40 | #define PADS_PU_PD_BUS 0x3 | ||
41 | |||
42 | #define PADS_FUNCTION_SELECT0 0x0c0 | ||
43 | #define PADS_FUNCTION_SELECT1 0x0c4 | ||
44 | #define PADS_FUNCTION_SELECT2 0x0c8 | ||
45 | #define PADS_SCENARIO_SELECT 0x0f8 | ||
46 | |||
47 | #define PADS_SLEW_RATE0 0x100 | ||
48 | #define PADS_SLEW_RATE_REG(pin) (PADS_SLEW_RATE0 + 0x4 * ((pin) / 32)) | ||
49 | #define PADS_SLEW_RATE_BIT(pin) BIT((pin) % 32) | ||
50 | |||
51 | #define PADS_DRIVE_STRENGTH0 0x120 | ||
52 | #define PADS_DRIVE_STRENGTH_REG(pin) \ | ||
53 | (PADS_DRIVE_STRENGTH0 + 0x4 * ((pin) / 16)) | ||
54 | #define PADS_DRIVE_STRENGTH_SHIFT(pin) (2 * ((pin) % 16)) | ||
55 | #define PADS_DRIVE_STRENGTH_MASK 0x3 | ||
56 | #define PADS_DRIVE_STRENGTH_2MA 0x0 | ||
57 | #define PADS_DRIVE_STRENGTH_4MA 0x1 | ||
58 | #define PADS_DRIVE_STRENGTH_8MA 0x2 | ||
59 | #define PADS_DRIVE_STRENGTH_12MA 0x3 | ||
60 | |||
61 | #define GPIO_BANK_BASE(bank) (0x200 + 0x24 * (bank)) | ||
62 | |||
63 | #define GPIO_BIT_EN 0x00 | ||
64 | #define GPIO_OUTPUT_EN 0x04 | ||
65 | #define GPIO_OUTPUT 0x08 | ||
66 | #define GPIO_INPUT 0x0c | ||
67 | #define GPIO_INPUT_POLARITY 0x10 | ||
68 | #define GPIO_INTERRUPT_TYPE 0x14 | ||
69 | #define GPIO_INTERRUPT_TYPE_LEVEL 0x0 | ||
70 | #define GPIO_INTERRUPT_TYPE_EDGE 0x1 | ||
71 | #define GPIO_INTERRUPT_EDGE 0x18 | ||
72 | #define GPIO_INTERRUPT_EDGE_SINGLE 0x0 | ||
73 | #define GPIO_INTERRUPT_EDGE_DUAL 0x1 | ||
74 | #define GPIO_INTERRUPT_EN 0x1c | ||
75 | #define GPIO_INTERRUPT_STATUS 0x20 | ||
76 | |||
77 | struct pistachio_function { | ||
78 | const char *name; | ||
79 | const char * const *groups; | ||
80 | unsigned int ngroups; | ||
81 | const int *scenarios; | ||
82 | unsigned int nscenarios; | ||
83 | unsigned int scenario_reg; | ||
84 | unsigned int scenario_shift; | ||
85 | unsigned int scenario_mask; | ||
86 | }; | ||
87 | |||
88 | struct pistachio_pin_group { | ||
89 | const char *name; | ||
90 | unsigned int pin; | ||
91 | int mux_option[3]; | ||
92 | int mux_reg; | ||
93 | int mux_shift; | ||
94 | int mux_mask; | ||
95 | }; | ||
96 | |||
97 | struct pistachio_gpio_bank { | ||
98 | struct pistachio_pinctrl *pctl; | ||
99 | void __iomem *base; | ||
100 | unsigned int pin_base; | ||
101 | unsigned int npins; | ||
102 | struct gpio_chip gpio_chip; | ||
103 | struct irq_chip irq_chip; | ||
104 | }; | ||
105 | |||
106 | struct pistachio_pinctrl { | ||
107 | struct device *dev; | ||
108 | void __iomem *base; | ||
109 | struct pinctrl_dev *pctldev; | ||
110 | const struct pinctrl_pin_desc *pins; | ||
111 | unsigned int npins; | ||
112 | const struct pistachio_function *functions; | ||
113 | unsigned int nfunctions; | ||
114 | const struct pistachio_pin_group *groups; | ||
115 | unsigned int ngroups; | ||
116 | struct pistachio_gpio_bank *gpio_banks; | ||
117 | unsigned int nbanks; | ||
118 | }; | ||
119 | |||
120 | #define PISTACHIO_PIN_MFIO(p) (p) | ||
121 | #define PISTACHIO_PIN_TCK 90 | ||
122 | #define PISTACHIO_PIN_TRSTN 91 | ||
123 | #define PISTACHIO_PIN_TDI 92 | ||
124 | #define PISTACHIO_PIN_TMS 93 | ||
125 | #define PISTACHIO_PIN_TDO 94 | ||
126 | #define PISTACHIO_PIN_JTAG_COMPLY 95 | ||
127 | #define PISTACHIO_PIN_SAFE_MODE 96 | ||
128 | #define PISTACHIO_PIN_POR_DISABLE 97 | ||
129 | #define PISTACHIO_PIN_RESETN 98 | ||
130 | |||
131 | #define MFIO_PIN_DESC(p) PINCTRL_PIN(PISTACHIO_PIN_MFIO(p), "mfio" #p) | ||
132 | |||
133 | static const struct pinctrl_pin_desc pistachio_pins[] = { | ||
134 | MFIO_PIN_DESC(0), | ||
135 | MFIO_PIN_DESC(1), | ||
136 | MFIO_PIN_DESC(2), | ||
137 | MFIO_PIN_DESC(3), | ||
138 | MFIO_PIN_DESC(4), | ||
139 | MFIO_PIN_DESC(5), | ||
140 | MFIO_PIN_DESC(6), | ||
141 | MFIO_PIN_DESC(7), | ||
142 | MFIO_PIN_DESC(8), | ||
143 | MFIO_PIN_DESC(9), | ||
144 | MFIO_PIN_DESC(10), | ||
145 | MFIO_PIN_DESC(11), | ||
146 | MFIO_PIN_DESC(12), | ||
147 | MFIO_PIN_DESC(13), | ||
148 | MFIO_PIN_DESC(14), | ||
149 | MFIO_PIN_DESC(15), | ||
150 | MFIO_PIN_DESC(16), | ||
151 | MFIO_PIN_DESC(17), | ||
152 | MFIO_PIN_DESC(18), | ||
153 | MFIO_PIN_DESC(19), | ||
154 | MFIO_PIN_DESC(20), | ||
155 | MFIO_PIN_DESC(21), | ||
156 | MFIO_PIN_DESC(22), | ||
157 | MFIO_PIN_DESC(23), | ||
158 | MFIO_PIN_DESC(24), | ||
159 | MFIO_PIN_DESC(25), | ||
160 | MFIO_PIN_DESC(26), | ||
161 | MFIO_PIN_DESC(27), | ||
162 | MFIO_PIN_DESC(28), | ||
163 | MFIO_PIN_DESC(29), | ||
164 | MFIO_PIN_DESC(30), | ||
165 | MFIO_PIN_DESC(31), | ||
166 | MFIO_PIN_DESC(32), | ||
167 | MFIO_PIN_DESC(33), | ||
168 | MFIO_PIN_DESC(34), | ||
169 | MFIO_PIN_DESC(35), | ||
170 | MFIO_PIN_DESC(36), | ||
171 | MFIO_PIN_DESC(37), | ||
172 | MFIO_PIN_DESC(38), | ||
173 | MFIO_PIN_DESC(39), | ||
174 | MFIO_PIN_DESC(40), | ||
175 | MFIO_PIN_DESC(41), | ||
176 | MFIO_PIN_DESC(42), | ||
177 | MFIO_PIN_DESC(43), | ||
178 | MFIO_PIN_DESC(44), | ||
179 | MFIO_PIN_DESC(45), | ||
180 | MFIO_PIN_DESC(46), | ||
181 | MFIO_PIN_DESC(47), | ||
182 | MFIO_PIN_DESC(48), | ||
183 | MFIO_PIN_DESC(49), | ||
184 | MFIO_PIN_DESC(50), | ||
185 | MFIO_PIN_DESC(51), | ||
186 | MFIO_PIN_DESC(52), | ||
187 | MFIO_PIN_DESC(53), | ||
188 | MFIO_PIN_DESC(54), | ||
189 | MFIO_PIN_DESC(55), | ||
190 | MFIO_PIN_DESC(56), | ||
191 | MFIO_PIN_DESC(57), | ||
192 | MFIO_PIN_DESC(58), | ||
193 | MFIO_PIN_DESC(59), | ||
194 | MFIO_PIN_DESC(60), | ||
195 | MFIO_PIN_DESC(61), | ||
196 | MFIO_PIN_DESC(62), | ||
197 | MFIO_PIN_DESC(63), | ||
198 | MFIO_PIN_DESC(64), | ||
199 | MFIO_PIN_DESC(65), | ||
200 | MFIO_PIN_DESC(66), | ||
201 | MFIO_PIN_DESC(67), | ||
202 | MFIO_PIN_DESC(68), | ||
203 | MFIO_PIN_DESC(69), | ||
204 | MFIO_PIN_DESC(70), | ||
205 | MFIO_PIN_DESC(71), | ||
206 | MFIO_PIN_DESC(72), | ||
207 | MFIO_PIN_DESC(73), | ||
208 | MFIO_PIN_DESC(74), | ||
209 | MFIO_PIN_DESC(75), | ||
210 | MFIO_PIN_DESC(76), | ||
211 | MFIO_PIN_DESC(77), | ||
212 | MFIO_PIN_DESC(78), | ||
213 | MFIO_PIN_DESC(79), | ||
214 | MFIO_PIN_DESC(80), | ||
215 | MFIO_PIN_DESC(81), | ||
216 | MFIO_PIN_DESC(82), | ||
217 | MFIO_PIN_DESC(83), | ||
218 | MFIO_PIN_DESC(84), | ||
219 | MFIO_PIN_DESC(85), | ||
220 | MFIO_PIN_DESC(86), | ||
221 | MFIO_PIN_DESC(87), | ||
222 | MFIO_PIN_DESC(88), | ||
223 | MFIO_PIN_DESC(89), | ||
224 | PINCTRL_PIN(PISTACHIO_PIN_TCK, "tck"), | ||
225 | PINCTRL_PIN(PISTACHIO_PIN_TRSTN, "trstn"), | ||
226 | PINCTRL_PIN(PISTACHIO_PIN_TDI, "tdi"), | ||
227 | PINCTRL_PIN(PISTACHIO_PIN_TMS, "tms"), | ||
228 | PINCTRL_PIN(PISTACHIO_PIN_TDO, "tdo"), | ||
229 | PINCTRL_PIN(PISTACHIO_PIN_JTAG_COMPLY, "jtag_comply"), | ||
230 | PINCTRL_PIN(PISTACHIO_PIN_SAFE_MODE, "safe_mode"), | ||
231 | PINCTRL_PIN(PISTACHIO_PIN_POR_DISABLE, "por_disable"), | ||
232 | PINCTRL_PIN(PISTACHIO_PIN_RESETN, "resetn"), | ||
233 | }; | ||
234 | |||
235 | static const char * const pistachio_spim0_groups[] = { | ||
236 | "mfio1", "mfio2", "mfio8", "mfio9", "mfio10", "mfio28", "mfio29", | ||
237 | "mfio30", "mfio55", "mfio56", "mfio57", | ||
238 | }; | ||
239 | |||
240 | static const char * const pistachio_spim1_groups[] = { | ||
241 | "mfio0", "mfio1", "mfio2", "mfio3", "mfio4", "mfio5", "mfio6", | ||
242 | "mfio7", "mfio31", "mfio55", "mfio56", "mfio57", "mfio58", | ||
243 | }; | ||
244 | |||
245 | static const char * const pistachio_spis_groups[] = { | ||
246 | "mfio11", "mfio12", "mfio13", "mfio14", | ||
247 | }; | ||
248 | |||
249 | static const char *const pistachio_sdhost_groups[] = { | ||
250 | "mfio15", "mfio16", "mfio17", "mfio18", "mfio19", "mfio20", | ||
251 | "mfio21", "mfio22", "mfio23", "mfio24", "mfio25", "mfio26", | ||
252 | "mfio27", | ||
253 | }; | ||
254 | |||
255 | static const char * const pistachio_i2c0_groups[] = { | ||
256 | "mfio28", "mfio29", | ||
257 | }; | ||
258 | |||
259 | static const char * const pistachio_i2c1_groups[] = { | ||
260 | "mfio30", "mfio31", | ||
261 | }; | ||
262 | |||
263 | static const char * const pistachio_i2c2_groups[] = { | ||
264 | "mfio32", "mfio33", | ||
265 | }; | ||
266 | |||
267 | static const char * const pistachio_i2c3_groups[] = { | ||
268 | "mfio34", "mfio35", | ||
269 | }; | ||
270 | |||
271 | static const char * const pistachio_audio_clk_in_groups[] = { | ||
272 | "mfio36", | ||
273 | }; | ||
274 | |||
275 | static const char * const pistachio_i2s_out_groups[] = { | ||
276 | "mfio36", "mfio37", "mfio38", "mfio39", "mfio40", "mfio41", | ||
277 | "mfio42", "mfio43", "mfio44", | ||
278 | }; | ||
279 | |||
280 | static const char * const pistachio_debug_raw_cca_ind_groups[] = { | ||
281 | "mfio37", | ||
282 | }; | ||
283 | |||
284 | static const char * const pistachio_debug_ed_sec20_cca_ind_groups[] = { | ||
285 | "mfio38", | ||
286 | }; | ||
287 | |||
288 | static const char * const pistachio_debug_ed_sec40_cca_ind_groups[] = { | ||
289 | "mfio39", | ||
290 | }; | ||
291 | |||
292 | static const char * const pistachio_debug_agc_done_0_groups[] = { | ||
293 | "mfio40", | ||
294 | }; | ||
295 | |||
296 | static const char * const pistachio_debug_agc_done_1_groups[] = { | ||
297 | "mfio41", | ||
298 | }; | ||
299 | |||
300 | static const char * const pistachio_debug_ed_cca_ind_groups[] = { | ||
301 | "mfio42", | ||
302 | }; | ||
303 | |||
304 | static const char * const pistachio_debug_s2l_done_groups[] = { | ||
305 | "mfio43", | ||
306 | }; | ||
307 | |||
308 | static const char * const pistachio_i2s_dac_clk_groups[] = { | ||
309 | "mfio45", | ||
310 | }; | ||
311 | |||
312 | static const char * const pistachio_audio_sync_groups[] = { | ||
313 | "mfio45", | ||
314 | }; | ||
315 | |||
316 | static const char * const pistachio_audio_trigger_groups[] = { | ||
317 | "mfio46", | ||
318 | }; | ||
319 | |||
320 | static const char * const pistachio_i2s_in_groups[] = { | ||
321 | "mfio47", "mfio48", "mfio49", "mfio50", "mfio51", "mfio52", | ||
322 | "mfio53", "mfio54", | ||
323 | }; | ||
324 | |||
325 | static const char * const pistachio_uart0_groups[] = { | ||
326 | "mfio55", "mfio56", "mfio57", "mfio58", | ||
327 | }; | ||
328 | |||
329 | static const char * const pistachio_uart1_groups[] = { | ||
330 | "mfio59", "mfio60", "mfio1", "mfio2", | ||
331 | }; | ||
332 | |||
333 | static const char * const pistachio_spdif_out_groups[] = { | ||
334 | "mfio61", | ||
335 | }; | ||
336 | |||
337 | static const char * const pistachio_spdif_in_groups[] = { | ||
338 | "mfio62", "mfio54", | ||
339 | }; | ||
340 | static const int pistachio_spdif_in_scenarios[] = { | ||
341 | PISTACHIO_PIN_MFIO(62), | ||
342 | PISTACHIO_PIN_MFIO(54), | ||
343 | }; | ||
344 | |||
345 | static const char * const pistachio_eth_groups[] = { | ||
346 | "mfio63", "mfio64", "mfio65", "mfio66", "mfio67", "mfio68", | ||
347 | "mfio69", "mfio70", "mfio71", | ||
348 | }; | ||
349 | |||
350 | static const char * const pistachio_ir_groups[] = { | ||
351 | "mfio72", | ||
352 | }; | ||
353 | |||
354 | static const char * const pistachio_pwmpdm_groups[] = { | ||
355 | "mfio73", "mfio74", "mfio75", "mfio76", | ||
356 | }; | ||
357 | |||
358 | static const char * const pistachio_mips_trace_clk_groups[] = { | ||
359 | "mfio15", "mfio63", "mfio73", | ||
360 | }; | ||
361 | |||
362 | static const char * const pistachio_mips_trace_dint_groups[] = { | ||
363 | "mfio16", "mfio64", "mfio74", | ||
364 | }; | ||
365 | static const int pistachio_mips_trace_dint_scenarios[] = { | ||
366 | PISTACHIO_PIN_MFIO(16), | ||
367 | PISTACHIO_PIN_MFIO(64), | ||
368 | PISTACHIO_PIN_MFIO(74), | ||
369 | }; | ||
370 | |||
371 | static const char * const pistachio_mips_trace_trigout_groups[] = { | ||
372 | "mfio17", "mfio65", "mfio75", | ||
373 | }; | ||
374 | |||
375 | static const char * const pistachio_mips_trace_trigin_groups[] = { | ||
376 | "mfio18", "mfio66", "mfio76", | ||
377 | }; | ||
378 | static const int pistachio_mips_trace_trigin_scenarios[] = { | ||
379 | PISTACHIO_PIN_MFIO(18), | ||
380 | PISTACHIO_PIN_MFIO(66), | ||
381 | PISTACHIO_PIN_MFIO(76), | ||
382 | }; | ||
383 | |||
384 | static const char * const pistachio_mips_trace_dm_groups[] = { | ||
385 | "mfio19", "mfio67", "mfio77", | ||
386 | }; | ||
387 | |||
388 | static const char * const pistachio_mips_probe_n_groups[] = { | ||
389 | "mfio20", "mfio68", "mfio78", | ||
390 | }; | ||
391 | static const int pistachio_mips_probe_n_scenarios[] = { | ||
392 | PISTACHIO_PIN_MFIO(20), | ||
393 | PISTACHIO_PIN_MFIO(68), | ||
394 | PISTACHIO_PIN_MFIO(78), | ||
395 | }; | ||
396 | |||
397 | static const char * const pistachio_mips_trace_data_groups[] = { | ||
398 | "mfio15", "mfio16", "mfio17", "mfio18", "mfio19", "mfio20", | ||
399 | "mfio21", "mfio22", "mfio63", "mfio64", "mfio65", "mfio66", | ||
400 | "mfio67", "mfio68", "mfio69", "mfio70", "mfio79", "mfio80", | ||
401 | "mfio81", "mfio82", "mfio83", "mfio84", "mfio85", "mfio86", | ||
402 | }; | ||
403 | |||
404 | static const char * const pistachio_sram_debug_groups[] = { | ||
405 | "mfio73", "mfio74", | ||
406 | }; | ||
407 | |||
408 | static const char * const pistachio_rom_debug_groups[] = { | ||
409 | "mfio75", "mfio76", | ||
410 | }; | ||
411 | |||
412 | static const char * const pistachio_rpu_debug_groups[] = { | ||
413 | "mfio77", "mfio78", | ||
414 | }; | ||
415 | |||
416 | static const char * const pistachio_mips_debug_groups[] = { | ||
417 | "mfio79", "mfio80", | ||
418 | }; | ||
419 | |||
420 | static const char * const pistachio_eth_debug_groups[] = { | ||
421 | "mfio81", "mfio82", | ||
422 | }; | ||
423 | |||
424 | static const char * const pistachio_usb_debug_groups[] = { | ||
425 | "mfio83", "mfio84", | ||
426 | }; | ||
427 | |||
428 | static const char * const pistachio_sdhost_debug_groups[] = { | ||
429 | "mfio85", "mfio86", | ||
430 | }; | ||
431 | |||
432 | static const char * const pistachio_socif_debug_groups[] = { | ||
433 | "mfio87", "mfio88", | ||
434 | }; | ||
435 | |||
436 | static const char * const pistachio_mdc_debug_groups[] = { | ||
437 | "mfio77", "mfio78", | ||
438 | }; | ||
439 | |||
440 | static const char * const pistachio_ddr_debug_groups[] = { | ||
441 | "mfio79", "mfio80", | ||
442 | }; | ||
443 | |||
444 | static const char * const pistachio_dreq0_groups[] = { | ||
445 | "mfio81", | ||
446 | }; | ||
447 | |||
448 | static const char * const pistachio_dreq1_groups[] = { | ||
449 | "mfio82", | ||
450 | }; | ||
451 | |||
452 | static const char * const pistachio_dreq2_groups[] = { | ||
453 | "mfio87", | ||
454 | }; | ||
455 | |||
456 | static const char * const pistachio_dreq3_groups[] = { | ||
457 | "mfio88", | ||
458 | }; | ||
459 | |||
460 | static const char * const pistachio_dreq4_groups[] = { | ||
461 | "mfio89", | ||
462 | }; | ||
463 | |||
464 | static const char * const pistachio_dreq5_groups[] = { | ||
465 | "mfio89", | ||
466 | }; | ||
467 | |||
468 | static const char * const pistachio_mips_pll_lock_groups[] = { | ||
469 | "mfio83", | ||
470 | }; | ||
471 | |||
472 | static const char * const pistachio_sys_pll_lock_groups[] = { | ||
473 | "mfio84", | ||
474 | }; | ||
475 | |||
476 | static const char * const pistachio_wifi_pll_lock_groups[] = { | ||
477 | "mfio85", | ||
478 | }; | ||
479 | |||
480 | static const char * const pistachio_bt_pll_lock_groups[] = { | ||
481 | "mfio86", | ||
482 | }; | ||
483 | |||
484 | static const char * const pistachio_rpu_v_pll_lock_groups[] = { | ||
485 | "mfio87", | ||
486 | }; | ||
487 | |||
488 | static const char * const pistachio_rpu_l_pll_lock_groups[] = { | ||
489 | "mfio88", | ||
490 | }; | ||
491 | |||
492 | static const char * const pistachio_audio_pll_lock_groups[] = { | ||
493 | "mfio89", | ||
494 | }; | ||
495 | |||
496 | #define FUNCTION(_name) \ | ||
497 | { \ | ||
498 | .name = #_name, \ | ||
499 | .groups = pistachio_##_name##_groups, \ | ||
500 | .ngroups = ARRAY_SIZE(pistachio_##_name##_groups), \ | ||
501 | } | ||
502 | |||
503 | #define FUNCTION_SCENARIO(_name, _reg, _shift, _mask) \ | ||
504 | { \ | ||
505 | .name = #_name, \ | ||
506 | .groups = pistachio_##_name##_groups, \ | ||
507 | .ngroups = ARRAY_SIZE(pistachio_##_name##_groups), \ | ||
508 | .scenarios = pistachio_##_name##_scenarios, \ | ||
509 | .nscenarios = ARRAY_SIZE(pistachio_##_name##_scenarios),\ | ||
510 | .scenario_reg = _reg, \ | ||
511 | .scenario_shift = _shift, \ | ||
512 | .scenario_mask = _mask, \ | ||
513 | } | ||
514 | |||
515 | enum pistachio_mux_option { | ||
516 | PISTACHIO_FUNCTION_NONE = -1, | ||
517 | PISTACHIO_FUNCTION_SPIM0, | ||
518 | PISTACHIO_FUNCTION_SPIM1, | ||
519 | PISTACHIO_FUNCTION_SPIS, | ||
520 | PISTACHIO_FUNCTION_SDHOST, | ||
521 | PISTACHIO_FUNCTION_I2C0, | ||
522 | PISTACHIO_FUNCTION_I2C1, | ||
523 | PISTACHIO_FUNCTION_I2C2, | ||
524 | PISTACHIO_FUNCTION_I2C3, | ||
525 | PISTACHIO_FUNCTION_AUDIO_CLK_IN, | ||
526 | PISTACHIO_FUNCTION_I2S_OUT, | ||
527 | PISTACHIO_FUNCTION_I2S_DAC_CLK, | ||
528 | PISTACHIO_FUNCTION_AUDIO_SYNC, | ||
529 | PISTACHIO_FUNCTION_AUDIO_TRIGGER, | ||
530 | PISTACHIO_FUNCTION_I2S_IN, | ||
531 | PISTACHIO_FUNCTION_UART0, | ||
532 | PISTACHIO_FUNCTION_UART1, | ||
533 | PISTACHIO_FUNCTION_SPDIF_OUT, | ||
534 | PISTACHIO_FUNCTION_SPDIF_IN, | ||
535 | PISTACHIO_FUNCTION_ETH, | ||
536 | PISTACHIO_FUNCTION_IR, | ||
537 | PISTACHIO_FUNCTION_PWMPDM, | ||
538 | PISTACHIO_FUNCTION_MIPS_TRACE_CLK, | ||
539 | PISTACHIO_FUNCTION_MIPS_TRACE_DINT, | ||
540 | PISTACHIO_FUNCTION_MIPS_TRACE_TRIGOUT, | ||
541 | PISTACHIO_FUNCTION_MIPS_TRACE_TRIGIN, | ||
542 | PISTACHIO_FUNCTION_MIPS_TRACE_DM, | ||
543 | PISTACHIO_FUNCTION_MIPS_TRACE_PROBE_N, | ||
544 | PISTACHIO_FUNCTION_MIPS_TRACE_DATA, | ||
545 | PISTACHIO_FUNCTION_SRAM_DEBUG, | ||
546 | PISTACHIO_FUNCTION_ROM_DEBUG, | ||
547 | PISTACHIO_FUNCTION_RPU_DEBUG, | ||
548 | PISTACHIO_FUNCTION_MIPS_DEBUG, | ||
549 | PISTACHIO_FUNCTION_ETH_DEBUG, | ||
550 | PISTACHIO_FUNCTION_USB_DEBUG, | ||
551 | PISTACHIO_FUNCTION_SDHOST_DEBUG, | ||
552 | PISTACHIO_FUNCTION_SOCIF_DEBUG, | ||
553 | PISTACHIO_FUNCTION_MDC_DEBUG, | ||
554 | PISTACHIO_FUNCTION_DDR_DEBUG, | ||
555 | PISTACHIO_FUNCTION_DREQ0, | ||
556 | PISTACHIO_FUNCTION_DREQ1, | ||
557 | PISTACHIO_FUNCTION_DREQ2, | ||
558 | PISTACHIO_FUNCTION_DREQ3, | ||
559 | PISTACHIO_FUNCTION_DREQ4, | ||
560 | PISTACHIO_FUNCTION_DREQ5, | ||
561 | PISTACHIO_FUNCTION_MIPS_PLL_LOCK, | ||
562 | PISTACHIO_FUNCTION_SYS_PLL_LOCK, | ||
563 | PISTACHIO_FUNCTION_WIFI_PLL_LOCK, | ||
564 | PISTACHIO_FUNCTION_BT_PLL_LOCK, | ||
565 | PISTACHIO_FUNCTION_RPU_V_PLL_LOCK, | ||
566 | PISTACHIO_FUNCTION_RPU_L_PLL_LOCK, | ||
567 | PISTACHIO_FUNCTION_AUDIO_PLL_LOCK, | ||
568 | PISTACHIO_FUNCTION_DEBUG_RAW_CCA_IND, | ||
569 | PISTACHIO_FUNCTION_DEBUG_ED_SEC20_CCA_IND, | ||
570 | PISTACHIO_FUNCTION_DEBUG_ED_SEC40_CCA_IND, | ||
571 | PISTACHIO_FUNCTION_DEBUG_AGC_DONE_0, | ||
572 | PISTACHIO_FUNCTION_DEBUG_AGC_DONE_1, | ||
573 | PISTACHIO_FUNCTION_DEBUG_ED_CCA_IND, | ||
574 | PISTACHIO_FUNCTION_DEBUG_S2L_DONE, | ||
575 | }; | ||
576 | |||
577 | static const struct pistachio_function pistachio_functions[] = { | ||
578 | FUNCTION(spim0), | ||
579 | FUNCTION(spim1), | ||
580 | FUNCTION(spis), | ||
581 | FUNCTION(sdhost), | ||
582 | FUNCTION(i2c0), | ||
583 | FUNCTION(i2c1), | ||
584 | FUNCTION(i2c2), | ||
585 | FUNCTION(i2c3), | ||
586 | FUNCTION(audio_clk_in), | ||
587 | FUNCTION(i2s_out), | ||
588 | FUNCTION(i2s_dac_clk), | ||
589 | FUNCTION(audio_sync), | ||
590 | FUNCTION(audio_trigger), | ||
591 | FUNCTION(i2s_in), | ||
592 | FUNCTION(uart0), | ||
593 | FUNCTION(uart1), | ||
594 | FUNCTION(spdif_out), | ||
595 | FUNCTION_SCENARIO(spdif_in, PADS_SCENARIO_SELECT, 0, 0x1), | ||
596 | FUNCTION(eth), | ||
597 | FUNCTION(ir), | ||
598 | FUNCTION(pwmpdm), | ||
599 | FUNCTION(mips_trace_clk), | ||
600 | FUNCTION_SCENARIO(mips_trace_dint, PADS_SCENARIO_SELECT, 1, 0x3), | ||
601 | FUNCTION(mips_trace_trigout), | ||
602 | FUNCTION_SCENARIO(mips_trace_trigin, PADS_SCENARIO_SELECT, 3, 0x3), | ||
603 | FUNCTION(mips_trace_dm), | ||
604 | FUNCTION_SCENARIO(mips_probe_n, PADS_SCENARIO_SELECT, 5, 0x3), | ||
605 | FUNCTION(mips_trace_data), | ||
606 | FUNCTION(sram_debug), | ||
607 | FUNCTION(rom_debug), | ||
608 | FUNCTION(rpu_debug), | ||
609 | FUNCTION(mips_debug), | ||
610 | FUNCTION(eth_debug), | ||
611 | FUNCTION(usb_debug), | ||
612 | FUNCTION(sdhost_debug), | ||
613 | FUNCTION(socif_debug), | ||
614 | FUNCTION(mdc_debug), | ||
615 | FUNCTION(ddr_debug), | ||
616 | FUNCTION(dreq0), | ||
617 | FUNCTION(dreq1), | ||
618 | FUNCTION(dreq2), | ||
619 | FUNCTION(dreq3), | ||
620 | FUNCTION(dreq4), | ||
621 | FUNCTION(dreq5), | ||
622 | FUNCTION(mips_pll_lock), | ||
623 | FUNCTION(sys_pll_lock), | ||
624 | FUNCTION(wifi_pll_lock), | ||
625 | FUNCTION(bt_pll_lock), | ||
626 | FUNCTION(rpu_v_pll_lock), | ||
627 | FUNCTION(rpu_l_pll_lock), | ||
628 | FUNCTION(audio_pll_lock), | ||
629 | FUNCTION(debug_raw_cca_ind), | ||
630 | FUNCTION(debug_ed_sec20_cca_ind), | ||
631 | FUNCTION(debug_ed_sec40_cca_ind), | ||
632 | FUNCTION(debug_agc_done_0), | ||
633 | FUNCTION(debug_agc_done_1), | ||
634 | FUNCTION(debug_ed_cca_ind), | ||
635 | FUNCTION(debug_s2l_done), | ||
636 | }; | ||
637 | |||
638 | #define PIN_GROUP(_pin, _name) \ | ||
639 | { \ | ||
640 | .name = #_name, \ | ||
641 | .pin = PISTACHIO_PIN_##_pin, \ | ||
642 | .mux_option = { \ | ||
643 | PISTACHIO_FUNCTION_NONE, \ | ||
644 | PISTACHIO_FUNCTION_NONE, \ | ||
645 | PISTACHIO_FUNCTION_NONE, \ | ||
646 | }, \ | ||
647 | .mux_reg = -1, \ | ||
648 | .mux_shift = -1, \ | ||
649 | .mux_mask = -1, \ | ||
650 | } | ||
651 | |||
652 | #define MFIO_PIN_GROUP(_pin, _func) \ | ||
653 | { \ | ||
654 | .name = "mfio" #_pin, \ | ||
655 | .pin = PISTACHIO_PIN_MFIO(_pin), \ | ||
656 | .mux_option = { \ | ||
657 | PISTACHIO_FUNCTION_##_func, \ | ||
658 | PISTACHIO_FUNCTION_NONE, \ | ||
659 | PISTACHIO_FUNCTION_NONE, \ | ||
660 | }, \ | ||
661 | .mux_reg = -1, \ | ||
662 | .mux_shift = -1, \ | ||
663 | .mux_mask = -1, \ | ||
664 | } | ||
665 | |||
666 | #define MFIO_MUX_PIN_GROUP(_pin, _f0, _f1, _f2, _reg, _shift, _mask) \ | ||
667 | { \ | ||
668 | .name = "mfio" #_pin, \ | ||
669 | .pin = PISTACHIO_PIN_MFIO(_pin), \ | ||
670 | .mux_option = { \ | ||
671 | PISTACHIO_FUNCTION_##_f0, \ | ||
672 | PISTACHIO_FUNCTION_##_f1, \ | ||
673 | PISTACHIO_FUNCTION_##_f2, \ | ||
674 | }, \ | ||
675 | .mux_reg = _reg, \ | ||
676 | .mux_shift = _shift, \ | ||
677 | .mux_mask = _mask, \ | ||
678 | } | ||
679 | |||
680 | static const struct pistachio_pin_group pistachio_groups[] = { | ||
681 | MFIO_PIN_GROUP(0, SPIM1), | ||
682 | MFIO_MUX_PIN_GROUP(1, SPIM1, SPIM0, UART1, | ||
683 | PADS_FUNCTION_SELECT0, 0, 0x3), | ||
684 | MFIO_MUX_PIN_GROUP(2, SPIM1, SPIM0, UART1, | ||
685 | PADS_FUNCTION_SELECT0, 2, 0x3), | ||
686 | MFIO_PIN_GROUP(3, SPIM1), | ||
687 | MFIO_PIN_GROUP(4, SPIM1), | ||
688 | MFIO_PIN_GROUP(5, SPIM1), | ||
689 | MFIO_PIN_GROUP(6, SPIM1), | ||
690 | MFIO_PIN_GROUP(7, SPIM1), | ||
691 | MFIO_PIN_GROUP(8, SPIM0), | ||
692 | MFIO_PIN_GROUP(9, SPIM0), | ||
693 | MFIO_PIN_GROUP(10, SPIM0), | ||
694 | MFIO_PIN_GROUP(11, SPIS), | ||
695 | MFIO_PIN_GROUP(12, SPIS), | ||
696 | MFIO_PIN_GROUP(13, SPIS), | ||
697 | MFIO_PIN_GROUP(14, SPIS), | ||
698 | MFIO_MUX_PIN_GROUP(15, SDHOST, MIPS_TRACE_CLK, MIPS_TRACE_DATA, | ||
699 | PADS_FUNCTION_SELECT0, 4, 0x3), | ||
700 | MFIO_MUX_PIN_GROUP(16, SDHOST, MIPS_TRACE_DINT, MIPS_TRACE_DATA, | ||
701 | PADS_FUNCTION_SELECT0, 6, 0x3), | ||
702 | MFIO_MUX_PIN_GROUP(17, SDHOST, MIPS_TRACE_TRIGOUT, MIPS_TRACE_DATA, | ||
703 | PADS_FUNCTION_SELECT0, 8, 0x3), | ||
704 | MFIO_MUX_PIN_GROUP(18, SDHOST, MIPS_TRACE_TRIGIN, MIPS_TRACE_DATA, | ||
705 | PADS_FUNCTION_SELECT0, 10, 0x3), | ||
706 | MFIO_MUX_PIN_GROUP(19, SDHOST, MIPS_TRACE_DM, MIPS_TRACE_DATA, | ||
707 | PADS_FUNCTION_SELECT0, 12, 0x3), | ||
708 | MFIO_MUX_PIN_GROUP(20, SDHOST, MIPS_TRACE_PROBE_N, MIPS_TRACE_DATA, | ||
709 | PADS_FUNCTION_SELECT0, 14, 0x3), | ||
710 | MFIO_MUX_PIN_GROUP(21, SDHOST, NONE, MIPS_TRACE_DATA, | ||
711 | PADS_FUNCTION_SELECT0, 16, 0x3), | ||
712 | MFIO_MUX_PIN_GROUP(22, SDHOST, NONE, MIPS_TRACE_DATA, | ||
713 | PADS_FUNCTION_SELECT0, 18, 0x3), | ||
714 | MFIO_PIN_GROUP(23, SDHOST), | ||
715 | MFIO_PIN_GROUP(24, SDHOST), | ||
716 | MFIO_PIN_GROUP(25, SDHOST), | ||
717 | MFIO_PIN_GROUP(26, SDHOST), | ||
718 | MFIO_PIN_GROUP(27, SDHOST), | ||
719 | MFIO_MUX_PIN_GROUP(28, I2C0, SPIM0, NONE, | ||
720 | PADS_FUNCTION_SELECT0, 20, 0x1), | ||
721 | MFIO_MUX_PIN_GROUP(29, I2C0, SPIM0, NONE, | ||
722 | PADS_FUNCTION_SELECT0, 21, 0x1), | ||
723 | MFIO_MUX_PIN_GROUP(30, I2C1, SPIM0, NONE, | ||
724 | PADS_FUNCTION_SELECT0, 22, 0x1), | ||
725 | MFIO_MUX_PIN_GROUP(31, I2C1, SPIM1, NONE, | ||
726 | PADS_FUNCTION_SELECT0, 23, 0x1), | ||
727 | MFIO_PIN_GROUP(32, I2C2), | ||
728 | MFIO_PIN_GROUP(33, I2C2), | ||
729 | MFIO_PIN_GROUP(34, I2C3), | ||
730 | MFIO_PIN_GROUP(35, I2C3), | ||
731 | MFIO_MUX_PIN_GROUP(36, I2S_OUT, AUDIO_CLK_IN, NONE, | ||
732 | PADS_FUNCTION_SELECT0, 24, 0x1), | ||
733 | MFIO_MUX_PIN_GROUP(37, I2S_OUT, DEBUG_RAW_CCA_IND, NONE, | ||
734 | PADS_FUNCTION_SELECT0, 25, 0x1), | ||
735 | MFIO_MUX_PIN_GROUP(38, I2S_OUT, DEBUG_ED_SEC20_CCA_IND, NONE, | ||
736 | PADS_FUNCTION_SELECT0, 26, 0x1), | ||
737 | MFIO_MUX_PIN_GROUP(39, I2S_OUT, DEBUG_ED_SEC40_CCA_IND, NONE, | ||
738 | PADS_FUNCTION_SELECT0, 27, 0x1), | ||
739 | MFIO_MUX_PIN_GROUP(40, I2S_OUT, DEBUG_AGC_DONE_0, NONE, | ||
740 | PADS_FUNCTION_SELECT0, 28, 0x1), | ||
741 | MFIO_MUX_PIN_GROUP(41, I2S_OUT, DEBUG_AGC_DONE_1, NONE, | ||
742 | PADS_FUNCTION_SELECT0, 29, 0x1), | ||
743 | MFIO_MUX_PIN_GROUP(42, I2S_OUT, DEBUG_ED_CCA_IND, NONE, | ||
744 | PADS_FUNCTION_SELECT0, 30, 0x1), | ||
745 | MFIO_MUX_PIN_GROUP(43, I2S_OUT, DEBUG_S2L_DONE, NONE, | ||
746 | PADS_FUNCTION_SELECT0, 31, 0x1), | ||
747 | MFIO_PIN_GROUP(44, I2S_OUT), | ||
748 | MFIO_MUX_PIN_GROUP(45, I2S_DAC_CLK, AUDIO_SYNC, NONE, | ||
749 | PADS_FUNCTION_SELECT1, 0, 0x1), | ||
750 | MFIO_PIN_GROUP(46, AUDIO_TRIGGER), | ||
751 | MFIO_PIN_GROUP(47, I2S_IN), | ||
752 | MFIO_PIN_GROUP(48, I2S_IN), | ||
753 | MFIO_PIN_GROUP(49, I2S_IN), | ||
754 | MFIO_PIN_GROUP(50, I2S_IN), | ||
755 | MFIO_PIN_GROUP(51, I2S_IN), | ||
756 | MFIO_PIN_GROUP(52, I2S_IN), | ||
757 | MFIO_PIN_GROUP(53, I2S_IN), | ||
758 | MFIO_MUX_PIN_GROUP(54, I2S_IN, NONE, SPDIF_IN, | ||
759 | PADS_FUNCTION_SELECT1, 1, 0x3), | ||
760 | MFIO_MUX_PIN_GROUP(55, UART0, SPIM0, SPIM1, | ||
761 | PADS_FUNCTION_SELECT1, 3, 0x3), | ||
762 | MFIO_MUX_PIN_GROUP(56, UART0, SPIM0, SPIM1, | ||
763 | PADS_FUNCTION_SELECT1, 5, 0x3), | ||
764 | MFIO_MUX_PIN_GROUP(57, UART0, SPIM0, SPIM1, | ||
765 | PADS_FUNCTION_SELECT1, 7, 0x3), | ||
766 | MFIO_MUX_PIN_GROUP(58, UART0, SPIM1, NONE, | ||
767 | PADS_FUNCTION_SELECT1, 9, 0x1), | ||
768 | MFIO_PIN_GROUP(59, UART1), | ||
769 | MFIO_PIN_GROUP(60, UART1), | ||
770 | MFIO_PIN_GROUP(61, SPDIF_OUT), | ||
771 | MFIO_PIN_GROUP(62, SPDIF_IN), | ||
772 | MFIO_MUX_PIN_GROUP(63, ETH, MIPS_TRACE_CLK, MIPS_TRACE_DATA, | ||
773 | PADS_FUNCTION_SELECT1, 10, 0x3), | ||
774 | MFIO_MUX_PIN_GROUP(64, ETH, MIPS_TRACE_DINT, MIPS_TRACE_DATA, | ||
775 | PADS_FUNCTION_SELECT1, 12, 0x3), | ||
776 | MFIO_MUX_PIN_GROUP(65, ETH, MIPS_TRACE_TRIGOUT, MIPS_TRACE_DATA, | ||
777 | PADS_FUNCTION_SELECT1, 14, 0x3), | ||
778 | MFIO_MUX_PIN_GROUP(66, ETH, MIPS_TRACE_TRIGIN, MIPS_TRACE_DATA, | ||
779 | PADS_FUNCTION_SELECT1, 16, 0x3), | ||
780 | MFIO_MUX_PIN_GROUP(67, ETH, MIPS_TRACE_DM, MIPS_TRACE_DATA, | ||
781 | PADS_FUNCTION_SELECT1, 18, 0x3), | ||
782 | MFIO_MUX_PIN_GROUP(68, ETH, MIPS_TRACE_PROBE_N, MIPS_TRACE_DATA, | ||
783 | PADS_FUNCTION_SELECT1, 20, 0x3), | ||
784 | MFIO_MUX_PIN_GROUP(69, ETH, NONE, MIPS_TRACE_DATA, | ||
785 | PADS_FUNCTION_SELECT1, 22, 0x3), | ||
786 | MFIO_MUX_PIN_GROUP(70, ETH, NONE, MIPS_TRACE_DATA, | ||
787 | PADS_FUNCTION_SELECT1, 24, 0x3), | ||
788 | MFIO_PIN_GROUP(71, ETH), | ||
789 | MFIO_PIN_GROUP(72, IR), | ||
790 | MFIO_MUX_PIN_GROUP(73, PWMPDM, MIPS_TRACE_CLK, SRAM_DEBUG, | ||
791 | PADS_FUNCTION_SELECT1, 26, 0x3), | ||
792 | MFIO_MUX_PIN_GROUP(74, PWMPDM, MIPS_TRACE_DINT, SRAM_DEBUG, | ||
793 | PADS_FUNCTION_SELECT1, 28, 0x3), | ||
794 | MFIO_MUX_PIN_GROUP(75, PWMPDM, MIPS_TRACE_TRIGOUT, ROM_DEBUG, | ||
795 | PADS_FUNCTION_SELECT1, 30, 0x3), | ||
796 | MFIO_MUX_PIN_GROUP(76, PWMPDM, MIPS_TRACE_TRIGIN, ROM_DEBUG, | ||
797 | PADS_FUNCTION_SELECT2, 0, 0x3), | ||
798 | MFIO_MUX_PIN_GROUP(77, MDC_DEBUG, MIPS_TRACE_DM, RPU_DEBUG, | ||
799 | PADS_FUNCTION_SELECT2, 2, 0x3), | ||
800 | MFIO_MUX_PIN_GROUP(78, MDC_DEBUG, MIPS_TRACE_PROBE_N, RPU_DEBUG, | ||
801 | PADS_FUNCTION_SELECT2, 4, 0x3), | ||
802 | MFIO_MUX_PIN_GROUP(79, DDR_DEBUG, MIPS_TRACE_DATA, MIPS_DEBUG, | ||
803 | PADS_FUNCTION_SELECT2, 6, 0x3), | ||
804 | MFIO_MUX_PIN_GROUP(80, DDR_DEBUG, MIPS_TRACE_DATA, MIPS_DEBUG, | ||
805 | PADS_FUNCTION_SELECT2, 8, 0x3), | ||
806 | MFIO_MUX_PIN_GROUP(81, DREQ0, MIPS_TRACE_DATA, ETH_DEBUG, | ||
807 | PADS_FUNCTION_SELECT2, 10, 0x3), | ||
808 | MFIO_MUX_PIN_GROUP(82, DREQ1, MIPS_TRACE_DATA, ETH_DEBUG, | ||
809 | PADS_FUNCTION_SELECT2, 12, 0x3), | ||
810 | MFIO_MUX_PIN_GROUP(83, MIPS_PLL_LOCK, MIPS_TRACE_DATA, USB_DEBUG, | ||
811 | PADS_FUNCTION_SELECT2, 14, 0x3), | ||
812 | MFIO_MUX_PIN_GROUP(84, SYS_PLL_LOCK, MIPS_TRACE_DATA, USB_DEBUG, | ||
813 | PADS_FUNCTION_SELECT2, 16, 0x3), | ||
814 | MFIO_MUX_PIN_GROUP(85, WIFI_PLL_LOCK, MIPS_TRACE_DATA, SDHOST_DEBUG, | ||
815 | PADS_FUNCTION_SELECT2, 18, 0x3), | ||
816 | MFIO_MUX_PIN_GROUP(86, BT_PLL_LOCK, MIPS_TRACE_DATA, SDHOST_DEBUG, | ||
817 | PADS_FUNCTION_SELECT2, 20, 0x3), | ||
818 | MFIO_MUX_PIN_GROUP(87, RPU_V_PLL_LOCK, DREQ2, SOCIF_DEBUG, | ||
819 | PADS_FUNCTION_SELECT2, 22, 0x3), | ||
820 | MFIO_MUX_PIN_GROUP(88, RPU_L_PLL_LOCK, DREQ3, SOCIF_DEBUG, | ||
821 | PADS_FUNCTION_SELECT2, 24, 0x3), | ||
822 | MFIO_MUX_PIN_GROUP(89, AUDIO_PLL_LOCK, DREQ4, DREQ5, | ||
823 | PADS_FUNCTION_SELECT2, 26, 0x3), | ||
824 | PIN_GROUP(TCK, "tck"), | ||
825 | PIN_GROUP(TRSTN, "trstn"), | ||
826 | PIN_GROUP(TDI, "tdi"), | ||
827 | PIN_GROUP(TMS, "tms"), | ||
828 | PIN_GROUP(TDO, "tdo"), | ||
829 | PIN_GROUP(JTAG_COMPLY, "jtag_comply"), | ||
830 | PIN_GROUP(SAFE_MODE, "safe_mode"), | ||
831 | PIN_GROUP(POR_DISABLE, "por_disable"), | ||
832 | PIN_GROUP(RESETN, "resetn"), | ||
833 | }; | ||
834 | |||
835 | static inline u32 pctl_readl(struct pistachio_pinctrl *pctl, u32 reg) | ||
836 | { | ||
837 | return readl(pctl->base + reg); | ||
838 | } | ||
839 | |||
840 | static inline void pctl_writel(struct pistachio_pinctrl *pctl, u32 val, u32 reg) | ||
841 | { | ||
842 | writel(val, pctl->base + reg); | ||
843 | } | ||
844 | |||
845 | static inline struct pistachio_gpio_bank *gc_to_bank(struct gpio_chip *gc) | ||
846 | { | ||
847 | return container_of(gc, struct pistachio_gpio_bank, gpio_chip); | ||
848 | } | ||
849 | |||
850 | static inline struct pistachio_gpio_bank *irqd_to_bank(struct irq_data *d) | ||
851 | { | ||
852 | return gc_to_bank(irq_data_get_irq_chip_data(d)); | ||
853 | } | ||
854 | |||
855 | static inline u32 gpio_readl(struct pistachio_gpio_bank *bank, u32 reg) | ||
856 | { | ||
857 | return readl(bank->base + reg); | ||
858 | } | ||
859 | |||
860 | static inline void gpio_writel(struct pistachio_gpio_bank *bank, u32 val, | ||
861 | u32 reg) | ||
862 | { | ||
863 | writel(val, bank->base + reg); | ||
864 | } | ||
865 | |||
866 | static inline void gpio_mask_writel(struct pistachio_gpio_bank *bank, | ||
867 | u32 reg, unsigned int bit, u32 val) | ||
868 | { | ||
869 | /* | ||
870 | * For most of the GPIO registers, bit 16 + X must be set in order to | ||
871 | * write bit X. | ||
872 | */ | ||
873 | gpio_writel(bank, (0x10000 | val) << bit, reg); | ||
874 | } | ||
875 | |||
876 | static inline void gpio_enable(struct pistachio_gpio_bank *bank, | ||
877 | unsigned offset) | ||
878 | { | ||
879 | gpio_mask_writel(bank, GPIO_BIT_EN, offset, 1); | ||
880 | } | ||
881 | |||
882 | static inline void gpio_disable(struct pistachio_gpio_bank *bank, | ||
883 | unsigned offset) | ||
884 | { | ||
885 | gpio_mask_writel(bank, GPIO_BIT_EN, offset, 0); | ||
886 | } | ||
887 | |||
888 | static int pistachio_pinctrl_get_groups_count(struct pinctrl_dev *pctldev) | ||
889 | { | ||
890 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
891 | |||
892 | return pctl->ngroups; | ||
893 | } | ||
894 | |||
895 | static const char *pistachio_pinctrl_get_group_name(struct pinctrl_dev *pctldev, | ||
896 | unsigned group) | ||
897 | { | ||
898 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
899 | |||
900 | return pctl->groups[group].name; | ||
901 | } | ||
902 | |||
903 | static int pistachio_pinctrl_get_group_pins(struct pinctrl_dev *pctldev, | ||
904 | unsigned group, | ||
905 | const unsigned **pins, | ||
906 | unsigned *num_pins) | ||
907 | { | ||
908 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
909 | |||
910 | *pins = &pctl->groups[group].pin; | ||
911 | *num_pins = 1; | ||
912 | |||
913 | return 0; | ||
914 | } | ||
915 | |||
916 | static const struct pinctrl_ops pistachio_pinctrl_ops = { | ||
917 | .get_groups_count = pistachio_pinctrl_get_groups_count, | ||
918 | .get_group_name = pistachio_pinctrl_get_group_name, | ||
919 | .get_group_pins = pistachio_pinctrl_get_group_pins, | ||
920 | .dt_node_to_map = pinconf_generic_dt_node_to_map_pin, | ||
921 | .dt_free_map = pinctrl_utils_dt_free_map, | ||
922 | }; | ||
923 | |||
924 | static int pistachio_pinmux_get_functions_count(struct pinctrl_dev *pctldev) | ||
925 | { | ||
926 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
927 | |||
928 | return pctl->nfunctions; | ||
929 | } | ||
930 | |||
931 | static const char * | ||
932 | pistachio_pinmux_get_function_name(struct pinctrl_dev *pctldev, unsigned func) | ||
933 | { | ||
934 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
935 | |||
936 | return pctl->functions[func].name; | ||
937 | } | ||
938 | |||
939 | static int pistachio_pinmux_get_function_groups(struct pinctrl_dev *pctldev, | ||
940 | unsigned func, | ||
941 | const char * const **groups, | ||
942 | unsigned * const num_groups) | ||
943 | { | ||
944 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
945 | |||
946 | *groups = pctl->functions[func].groups; | ||
947 | *num_groups = pctl->functions[func].ngroups; | ||
948 | |||
949 | return 0; | ||
950 | } | ||
951 | |||
952 | static int pistachio_pinmux_enable(struct pinctrl_dev *pctldev, | ||
953 | unsigned func, unsigned group) | ||
954 | { | ||
955 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
956 | const struct pistachio_pin_group *pg = &pctl->groups[group]; | ||
957 | const struct pistachio_function *pf = &pctl->functions[func]; | ||
958 | struct pinctrl_gpio_range *range; | ||
959 | unsigned int i; | ||
960 | u32 val; | ||
961 | |||
962 | if (pg->mux_reg > 0) { | ||
963 | for (i = 0; i < ARRAY_SIZE(pg->mux_option); i++) { | ||
964 | if (pg->mux_option[i] == func) | ||
965 | break; | ||
966 | } | ||
967 | if (i == ARRAY_SIZE(pg->mux_option)) { | ||
968 | dev_err(pctl->dev, "Cannot mux pin %u to function %u\n", | ||
969 | group, func); | ||
970 | return -EINVAL; | ||
971 | } | ||
972 | |||
973 | val = pctl_readl(pctl, pg->mux_reg); | ||
974 | val &= ~(pg->mux_mask << pg->mux_shift); | ||
975 | val |= i << pg->mux_shift; | ||
976 | pctl_writel(pctl, val, pg->mux_reg); | ||
977 | |||
978 | if (pf->scenarios) { | ||
979 | for (i = 0; i < pf->nscenarios; i++) { | ||
980 | if (pf->scenarios[i] == group) | ||
981 | break; | ||
982 | } | ||
983 | if (WARN_ON(i == pf->nscenarios)) | ||
984 | return -EINVAL; | ||
985 | |||
986 | val = pctl_readl(pctl, pf->scenario_reg); | ||
987 | val &= ~(pf->scenario_mask << pf->scenario_shift); | ||
988 | val |= i << pf->scenario_shift; | ||
989 | pctl_writel(pctl, val, pf->scenario_reg); | ||
990 | } | ||
991 | } | ||
992 | |||
993 | range = pinctrl_find_gpio_range_from_pin(pctl->pctldev, pg->pin); | ||
994 | if (range) | ||
995 | gpio_disable(gc_to_bank(range->gc), pg->pin - range->pin_base); | ||
996 | |||
997 | return 0; | ||
998 | } | ||
999 | |||
1000 | static const struct pinmux_ops pistachio_pinmux_ops = { | ||
1001 | .get_functions_count = pistachio_pinmux_get_functions_count, | ||
1002 | .get_function_name = pistachio_pinmux_get_function_name, | ||
1003 | .get_function_groups = pistachio_pinmux_get_function_groups, | ||
1004 | .set_mux = pistachio_pinmux_enable, | ||
1005 | }; | ||
1006 | |||
1007 | static int pistachio_pinconf_get(struct pinctrl_dev *pctldev, unsigned pin, | ||
1008 | unsigned long *config) | ||
1009 | { | ||
1010 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
1011 | enum pin_config_param param = pinconf_to_config_param(*config); | ||
1012 | u32 val, arg; | ||
1013 | |||
1014 | switch (param) { | ||
1015 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: | ||
1016 | val = pctl_readl(pctl, PADS_SCHMITT_EN_REG(pin)); | ||
1017 | arg = !!(val & PADS_SCHMITT_EN_BIT(pin)); | ||
1018 | break; | ||
1019 | case PIN_CONFIG_BIAS_HIGH_IMPEDANCE: | ||
1020 | val = pctl_readl(pctl, PADS_PU_PD_REG(pin)) >> | ||
1021 | PADS_PU_PD_SHIFT(pin); | ||
1022 | arg = (val & PADS_PU_PD_MASK) == PADS_PU_PD_HIGHZ; | ||
1023 | break; | ||
1024 | case PIN_CONFIG_BIAS_PULL_UP: | ||
1025 | val = pctl_readl(pctl, PADS_PU_PD_REG(pin)) >> | ||
1026 | PADS_PU_PD_SHIFT(pin); | ||
1027 | arg = (val & PADS_PU_PD_MASK) == PADS_PU_PD_UP; | ||
1028 | break; | ||
1029 | case PIN_CONFIG_BIAS_PULL_DOWN: | ||
1030 | val = pctl_readl(pctl, PADS_PU_PD_REG(pin)) >> | ||
1031 | PADS_PU_PD_SHIFT(pin); | ||
1032 | arg = (val & PADS_PU_PD_MASK) == PADS_PU_PD_DOWN; | ||
1033 | break; | ||
1034 | case PIN_CONFIG_BIAS_BUS_HOLD: | ||
1035 | val = pctl_readl(pctl, PADS_PU_PD_REG(pin)) >> | ||
1036 | PADS_PU_PD_SHIFT(pin); | ||
1037 | arg = (val & PADS_PU_PD_MASK) == PADS_PU_PD_BUS; | ||
1038 | break; | ||
1039 | case PIN_CONFIG_SLEW_RATE: | ||
1040 | val = pctl_readl(pctl, PADS_SLEW_RATE_REG(pin)); | ||
1041 | arg = !!(val & PADS_SLEW_RATE_BIT(pin)); | ||
1042 | break; | ||
1043 | case PIN_CONFIG_DRIVE_STRENGTH: | ||
1044 | val = pctl_readl(pctl, PADS_DRIVE_STRENGTH_REG(pin)) >> | ||
1045 | PADS_DRIVE_STRENGTH_SHIFT(pin); | ||
1046 | switch (val & PADS_DRIVE_STRENGTH_MASK) { | ||
1047 | case PADS_DRIVE_STRENGTH_2MA: | ||
1048 | arg = 2; | ||
1049 | break; | ||
1050 | case PADS_DRIVE_STRENGTH_4MA: | ||
1051 | arg = 4; | ||
1052 | break; | ||
1053 | case PADS_DRIVE_STRENGTH_8MA: | ||
1054 | arg = 8; | ||
1055 | break; | ||
1056 | case PADS_DRIVE_STRENGTH_12MA: | ||
1057 | default: | ||
1058 | arg = 12; | ||
1059 | break; | ||
1060 | } | ||
1061 | break; | ||
1062 | default: | ||
1063 | dev_dbg(pctl->dev, "Property %u not supported\n", param); | ||
1064 | return -ENOTSUPP; | ||
1065 | } | ||
1066 | |||
1067 | *config = pinconf_to_config_packed(param, arg); | ||
1068 | |||
1069 | return 0; | ||
1070 | } | ||
1071 | |||
1072 | static int pistachio_pinconf_set(struct pinctrl_dev *pctldev, unsigned pin, | ||
1073 | unsigned long *configs, unsigned num_configs) | ||
1074 | { | ||
1075 | struct pistachio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); | ||
1076 | enum pin_config_param param; | ||
1077 | u32 drv, val, arg; | ||
1078 | unsigned int i; | ||
1079 | |||
1080 | for (i = 0; i < num_configs; i++) { | ||
1081 | param = pinconf_to_config_param(configs[i]); | ||
1082 | arg = pinconf_to_config_argument(configs[i]); | ||
1083 | |||
1084 | switch (param) { | ||
1085 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: | ||
1086 | val = pctl_readl(pctl, PADS_SCHMITT_EN_REG(pin)); | ||
1087 | if (arg) | ||
1088 | val |= PADS_SCHMITT_EN_BIT(pin); | ||
1089 | else | ||
1090 | val &= ~PADS_SCHMITT_EN_BIT(pin); | ||
1091 | pctl_writel(pctl, val, PADS_SCHMITT_EN_REG(pin)); | ||
1092 | break; | ||
1093 | case PIN_CONFIG_BIAS_HIGH_IMPEDANCE: | ||
1094 | val = pctl_readl(pctl, PADS_PU_PD_REG(pin)); | ||
1095 | val &= ~(PADS_PU_PD_MASK << PADS_PU_PD_SHIFT(pin)); | ||
1096 | val |= PADS_PU_PD_HIGHZ << PADS_PU_PD_SHIFT(pin); | ||
1097 | pctl_writel(pctl, val, PADS_PU_PD_REG(pin)); | ||
1098 | break; | ||
1099 | case PIN_CONFIG_BIAS_PULL_UP: | ||
1100 | val = pctl_readl(pctl, PADS_PU_PD_REG(pin)); | ||
1101 | val &= ~(PADS_PU_PD_MASK << PADS_PU_PD_SHIFT(pin)); | ||
1102 | val |= PADS_PU_PD_UP << PADS_PU_PD_SHIFT(pin); | ||
1103 | pctl_writel(pctl, val, PADS_PU_PD_REG(pin)); | ||
1104 | break; | ||
1105 | case PIN_CONFIG_BIAS_PULL_DOWN: | ||
1106 | val = pctl_readl(pctl, PADS_PU_PD_REG(pin)); | ||
1107 | val &= ~(PADS_PU_PD_MASK << PADS_PU_PD_SHIFT(pin)); | ||
1108 | val |= PADS_PU_PD_DOWN << PADS_PU_PD_SHIFT(pin); | ||
1109 | pctl_writel(pctl, val, PADS_PU_PD_REG(pin)); | ||
1110 | break; | ||
1111 | case PIN_CONFIG_BIAS_BUS_HOLD: | ||
1112 | val = pctl_readl(pctl, PADS_PU_PD_REG(pin)); | ||
1113 | val &= ~(PADS_PU_PD_MASK << PADS_PU_PD_SHIFT(pin)); | ||
1114 | val |= PADS_PU_PD_BUS << PADS_PU_PD_SHIFT(pin); | ||
1115 | pctl_writel(pctl, val, PADS_PU_PD_REG(pin)); | ||
1116 | break; | ||
1117 | case PIN_CONFIG_SLEW_RATE: | ||
1118 | val = pctl_readl(pctl, PADS_SLEW_RATE_REG(pin)); | ||
1119 | if (arg) | ||
1120 | val |= PADS_SLEW_RATE_BIT(pin); | ||
1121 | else | ||
1122 | val &= ~PADS_SLEW_RATE_BIT(pin); | ||
1123 | pctl_writel(pctl, val, PADS_SLEW_RATE_REG(pin)); | ||
1124 | break; | ||
1125 | case PIN_CONFIG_DRIVE_STRENGTH: | ||
1126 | val = pctl_readl(pctl, PADS_DRIVE_STRENGTH_REG(pin)); | ||
1127 | val &= ~(PADS_DRIVE_STRENGTH_MASK << | ||
1128 | PADS_DRIVE_STRENGTH_SHIFT(pin)); | ||
1129 | switch (arg) { | ||
1130 | case 2: | ||
1131 | drv = PADS_DRIVE_STRENGTH_2MA; | ||
1132 | break; | ||
1133 | case 4: | ||
1134 | drv = PADS_DRIVE_STRENGTH_4MA; | ||
1135 | break; | ||
1136 | case 8: | ||
1137 | drv = PADS_DRIVE_STRENGTH_8MA; | ||
1138 | break; | ||
1139 | case 12: | ||
1140 | drv = PADS_DRIVE_STRENGTH_12MA; | ||
1141 | break; | ||
1142 | default: | ||
1143 | dev_err(pctl->dev, | ||
1144 | "Drive strength %umA not supported\n", | ||
1145 | arg); | ||
1146 | return -EINVAL; | ||
1147 | } | ||
1148 | val |= drv << PADS_DRIVE_STRENGTH_SHIFT(pin); | ||
1149 | pctl_writel(pctl, val, PADS_DRIVE_STRENGTH_REG(pin)); | ||
1150 | break; | ||
1151 | default: | ||
1152 | dev_err(pctl->dev, "Property %u not supported\n", | ||
1153 | param); | ||
1154 | return -ENOTSUPP; | ||
1155 | } | ||
1156 | } | ||
1157 | |||
1158 | return 0; | ||
1159 | } | ||
1160 | |||
1161 | static const struct pinconf_ops pistachio_pinconf_ops = { | ||
1162 | .pin_config_get = pistachio_pinconf_get, | ||
1163 | .pin_config_set = pistachio_pinconf_set, | ||
1164 | .is_generic = true, | ||
1165 | }; | ||
1166 | |||
1167 | static struct pinctrl_desc pistachio_pinctrl_desc = { | ||
1168 | .name = "pistachio-pinctrl", | ||
1169 | .pctlops = &pistachio_pinctrl_ops, | ||
1170 | .pmxops = &pistachio_pinmux_ops, | ||
1171 | .confops = &pistachio_pinconf_ops, | ||
1172 | }; | ||
1173 | |||
1174 | static int pistachio_gpio_request(struct gpio_chip *chip, unsigned offset) | ||
1175 | { | ||
1176 | return pinctrl_request_gpio(chip->base + offset); | ||
1177 | } | ||
1178 | |||
1179 | static void pistachio_gpio_free(struct gpio_chip *chip, unsigned offset) | ||
1180 | { | ||
1181 | pinctrl_free_gpio(chip->base + offset); | ||
1182 | } | ||
1183 | |||
1184 | static int pistachio_gpio_get_direction(struct gpio_chip *chip, unsigned offset) | ||
1185 | { | ||
1186 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | ||
1187 | |||
1188 | return !(gpio_readl(bank, GPIO_OUTPUT_EN) & BIT(offset)); | ||
1189 | } | ||
1190 | |||
1191 | static int pistachio_gpio_get(struct gpio_chip *chip, unsigned offset) | ||
1192 | { | ||
1193 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | ||
1194 | u32 reg; | ||
1195 | |||
1196 | if (gpio_readl(bank, GPIO_OUTPUT_EN) & BIT(offset)) | ||
1197 | reg = GPIO_OUTPUT; | ||
1198 | else | ||
1199 | reg = GPIO_INPUT; | ||
1200 | |||
1201 | return !!(gpio_readl(bank, reg) & BIT(offset)); | ||
1202 | } | ||
1203 | |||
1204 | static void pistachio_gpio_set(struct gpio_chip *chip, unsigned offset, | ||
1205 | int value) | ||
1206 | { | ||
1207 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | ||
1208 | |||
1209 | gpio_mask_writel(bank, GPIO_OUTPUT, offset, !!value); | ||
1210 | } | ||
1211 | |||
1212 | static int pistachio_gpio_direction_input(struct gpio_chip *chip, | ||
1213 | unsigned offset) | ||
1214 | { | ||
1215 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | ||
1216 | |||
1217 | gpio_mask_writel(bank, GPIO_OUTPUT_EN, offset, 0); | ||
1218 | gpio_enable(bank, offset); | ||
1219 | |||
1220 | return 0; | ||
1221 | } | ||
1222 | |||
1223 | static int pistachio_gpio_direction_output(struct gpio_chip *chip, | ||
1224 | unsigned offset, int value) | ||
1225 | { | ||
1226 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | ||
1227 | |||
1228 | pistachio_gpio_set(chip, offset, value); | ||
1229 | gpio_mask_writel(bank, GPIO_OUTPUT_EN, offset, 1); | ||
1230 | gpio_enable(bank, offset); | ||
1231 | |||
1232 | return 0; | ||
1233 | } | ||
1234 | |||
1235 | static void pistachio_gpio_irq_ack(struct irq_data *data) | ||
1236 | { | ||
1237 | struct pistachio_gpio_bank *bank = irqd_to_bank(data); | ||
1238 | |||
1239 | gpio_mask_writel(bank, GPIO_INTERRUPT_STATUS, data->hwirq, 0); | ||
1240 | } | ||
1241 | |||
1242 | static void pistachio_gpio_irq_mask(struct irq_data *data) | ||
1243 | { | ||
1244 | struct pistachio_gpio_bank *bank = irqd_to_bank(data); | ||
1245 | |||
1246 | gpio_mask_writel(bank, GPIO_INTERRUPT_EN, data->hwirq, 0); | ||
1247 | } | ||
1248 | |||
1249 | static void pistachio_gpio_irq_unmask(struct irq_data *data) | ||
1250 | { | ||
1251 | struct pistachio_gpio_bank *bank = irqd_to_bank(data); | ||
1252 | |||
1253 | gpio_mask_writel(bank, GPIO_INTERRUPT_EN, data->hwirq, 1); | ||
1254 | } | ||
1255 | |||
1256 | static unsigned int pistachio_gpio_irq_startup(struct irq_data *data) | ||
1257 | { | ||
1258 | struct gpio_chip *chip = irq_data_get_irq_chip_data(data); | ||
1259 | |||
1260 | pistachio_gpio_direction_input(chip, data->hwirq); | ||
1261 | pistachio_gpio_irq_unmask(data); | ||
1262 | |||
1263 | return 0; | ||
1264 | } | ||
1265 | |||
1266 | static int pistachio_gpio_irq_set_type(struct irq_data *data, unsigned int type) | ||
1267 | { | ||
1268 | struct pistachio_gpio_bank *bank = irqd_to_bank(data); | ||
1269 | |||
1270 | switch (type & IRQ_TYPE_SENSE_MASK) { | ||
1271 | case IRQ_TYPE_EDGE_RISING: | ||
1272 | gpio_mask_writel(bank, GPIO_INPUT_POLARITY, data->hwirq, 1); | ||
1273 | gpio_mask_writel(bank, GPIO_INTERRUPT_TYPE, data->hwirq, | ||
1274 | GPIO_INTERRUPT_TYPE_EDGE); | ||
1275 | gpio_mask_writel(bank, GPIO_INTERRUPT_EDGE, data->hwirq, | ||
1276 | GPIO_INTERRUPT_EDGE_SINGLE); | ||
1277 | break; | ||
1278 | case IRQ_TYPE_EDGE_FALLING: | ||
1279 | gpio_mask_writel(bank, GPIO_INPUT_POLARITY, data->hwirq, 0); | ||
1280 | gpio_mask_writel(bank, GPIO_INTERRUPT_TYPE, data->hwirq, | ||
1281 | GPIO_INTERRUPT_TYPE_EDGE); | ||
1282 | gpio_mask_writel(bank, GPIO_INTERRUPT_EDGE, data->hwirq, | ||
1283 | GPIO_INTERRUPT_EDGE_SINGLE); | ||
1284 | break; | ||
1285 | case IRQ_TYPE_EDGE_BOTH: | ||
1286 | gpio_mask_writel(bank, GPIO_INTERRUPT_TYPE, data->hwirq, | ||
1287 | GPIO_INTERRUPT_TYPE_EDGE); | ||
1288 | gpio_mask_writel(bank, GPIO_INTERRUPT_EDGE, data->hwirq, | ||
1289 | GPIO_INTERRUPT_EDGE_DUAL); | ||
1290 | break; | ||
1291 | case IRQ_TYPE_LEVEL_HIGH: | ||
1292 | gpio_mask_writel(bank, GPIO_INPUT_POLARITY, data->hwirq, 1); | ||
1293 | gpio_mask_writel(bank, GPIO_INTERRUPT_TYPE, data->hwirq, | ||
1294 | GPIO_INTERRUPT_TYPE_LEVEL); | ||
1295 | break; | ||
1296 | case IRQ_TYPE_LEVEL_LOW: | ||
1297 | gpio_mask_writel(bank, GPIO_INPUT_POLARITY, data->hwirq, 0); | ||
1298 | gpio_mask_writel(bank, GPIO_INTERRUPT_TYPE, data->hwirq, | ||
1299 | GPIO_INTERRUPT_TYPE_LEVEL); | ||
1300 | break; | ||
1301 | default: | ||
1302 | return -EINVAL; | ||
1303 | } | ||
1304 | |||
1305 | if (type & IRQ_TYPE_LEVEL_MASK) | ||
1306 | __irq_set_handler_locked(data->irq, handle_level_irq); | ||
1307 | else | ||
1308 | __irq_set_handler_locked(data->irq, handle_edge_irq); | ||
1309 | |||
1310 | return 0; | ||
1311 | } | ||
1312 | |||
1313 | static void pistachio_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | ||
1314 | { | ||
1315 | struct gpio_chip *gc = irq_get_handler_data(irq); | ||
1316 | struct pistachio_gpio_bank *bank = gc_to_bank(gc); | ||
1317 | struct irq_chip *chip = irq_get_chip(irq); | ||
1318 | unsigned long pending; | ||
1319 | unsigned int pin; | ||
1320 | |||
1321 | chained_irq_enter(chip, desc); | ||
1322 | pending = gpio_readl(bank, GPIO_INTERRUPT_STATUS) & | ||
1323 | gpio_readl(bank, GPIO_INTERRUPT_EN); | ||
1324 | for_each_set_bit(pin, &pending, 16) | ||
1325 | generic_handle_irq(irq_linear_revmap(gc->irqdomain, pin)); | ||
1326 | chained_irq_exit(chip, desc); | ||
1327 | } | ||
1328 | |||
1329 | #define GPIO_BANK(_bank, _pin_base, _npins) \ | ||
1330 | { \ | ||
1331 | .pin_base = _pin_base, \ | ||
1332 | .npins = _npins, \ | ||
1333 | .gpio_chip = { \ | ||
1334 | .label = "GPIO" #_bank, \ | ||
1335 | .request = pistachio_gpio_request, \ | ||
1336 | .free = pistachio_gpio_free, \ | ||
1337 | .get_direction = pistachio_gpio_get_direction, \ | ||
1338 | .direction_input = pistachio_gpio_direction_input, \ | ||
1339 | .direction_output = pistachio_gpio_direction_output, \ | ||
1340 | .get = pistachio_gpio_get, \ | ||
1341 | .set = pistachio_gpio_set, \ | ||
1342 | .base = _pin_base, \ | ||
1343 | .ngpio = _npins, \ | ||
1344 | }, \ | ||
1345 | .irq_chip = { \ | ||
1346 | .name = "GPIO" #_bank, \ | ||
1347 | .irq_startup = pistachio_gpio_irq_startup, \ | ||
1348 | .irq_ack = pistachio_gpio_irq_ack, \ | ||
1349 | .irq_mask = pistachio_gpio_irq_mask, \ | ||
1350 | .irq_unmask = pistachio_gpio_irq_unmask, \ | ||
1351 | .irq_set_type = pistachio_gpio_irq_set_type, \ | ||
1352 | }, \ | ||
1353 | } | ||
1354 | |||
1355 | static struct pistachio_gpio_bank pistachio_gpio_banks[] = { | ||
1356 | GPIO_BANK(0, PISTACHIO_PIN_MFIO(0), 16), | ||
1357 | GPIO_BANK(1, PISTACHIO_PIN_MFIO(16), 16), | ||
1358 | GPIO_BANK(2, PISTACHIO_PIN_MFIO(32), 16), | ||
1359 | GPIO_BANK(3, PISTACHIO_PIN_MFIO(48), 16), | ||
1360 | GPIO_BANK(4, PISTACHIO_PIN_MFIO(64), 16), | ||
1361 | GPIO_BANK(5, PISTACHIO_PIN_MFIO(80), 10), | ||
1362 | }; | ||
1363 | |||
1364 | static int pistachio_gpio_register(struct pistachio_pinctrl *pctl) | ||
1365 | { | ||
1366 | struct device_node *node = pctl->dev->of_node; | ||
1367 | struct pistachio_gpio_bank *bank; | ||
1368 | unsigned int i; | ||
1369 | int irq, ret = 0; | ||
1370 | |||
1371 | for (i = 0; i < pctl->nbanks; i++) { | ||
1372 | char child_name[sizeof("gpioXX")]; | ||
1373 | struct device_node *child; | ||
1374 | |||
1375 | snprintf(child_name, sizeof(child_name), "gpio%d", i); | ||
1376 | child = of_get_child_by_name(node, child_name); | ||
1377 | if (!child) { | ||
1378 | dev_err(pctl->dev, "No node for bank %u\n", i); | ||
1379 | ret = -ENODEV; | ||
1380 | goto err; | ||
1381 | } | ||
1382 | |||
1383 | if (!of_find_property(child, "gpio-controller", NULL)) { | ||
1384 | dev_err(pctl->dev, | ||
1385 | "No gpio-controller property for bank %u\n", i); | ||
1386 | ret = -ENODEV; | ||
1387 | goto err; | ||
1388 | } | ||
1389 | |||
1390 | irq = irq_of_parse_and_map(child, 0); | ||
1391 | if (irq < 0) { | ||
1392 | dev_err(pctl->dev, "No IRQ for bank %u: %d\n", i, irq); | ||
1393 | ret = irq; | ||
1394 | goto err; | ||
1395 | } | ||
1396 | |||
1397 | bank = &pctl->gpio_banks[i]; | ||
1398 | bank->pctl = pctl; | ||
1399 | bank->base = pctl->base + GPIO_BANK_BASE(i); | ||
1400 | |||
1401 | bank->gpio_chip.dev = pctl->dev; | ||
1402 | bank->gpio_chip.of_node = child; | ||
1403 | ret = gpiochip_add(&bank->gpio_chip); | ||
1404 | if (ret < 0) { | ||
1405 | dev_err(pctl->dev, "Failed to add GPIO chip %u: %d\n", | ||
1406 | i, ret); | ||
1407 | goto err; | ||
1408 | } | ||
1409 | |||
1410 | ret = gpiochip_irqchip_add(&bank->gpio_chip, &bank->irq_chip, | ||
1411 | 0, handle_level_irq, IRQ_TYPE_NONE); | ||
1412 | if (ret < 0) { | ||
1413 | dev_err(pctl->dev, "Failed to add IRQ chip %u: %d\n", | ||
1414 | i, ret); | ||
1415 | gpiochip_remove(&bank->gpio_chip); | ||
1416 | goto err; | ||
1417 | } | ||
1418 | gpiochip_set_chained_irqchip(&bank->gpio_chip, &bank->irq_chip, | ||
1419 | irq, pistachio_gpio_irq_handler); | ||
1420 | |||
1421 | ret = gpiochip_add_pin_range(&bank->gpio_chip, | ||
1422 | dev_name(pctl->dev), 0, | ||
1423 | bank->pin_base, bank->npins); | ||
1424 | if (ret < 0) { | ||
1425 | dev_err(pctl->dev, "Failed to add GPIO range %u: %d\n", | ||
1426 | i, ret); | ||
1427 | gpiochip_remove(&bank->gpio_chip); | ||
1428 | goto err; | ||
1429 | } | ||
1430 | } | ||
1431 | |||
1432 | return 0; | ||
1433 | err: | ||
1434 | for (; i > 0; i--) { | ||
1435 | bank = &pctl->gpio_banks[i - 1]; | ||
1436 | gpiochip_remove(&bank->gpio_chip); | ||
1437 | } | ||
1438 | return ret; | ||
1439 | } | ||
1440 | |||
1441 | static const struct of_device_id pistachio_pinctrl_of_match[] = { | ||
1442 | { .compatible = "img,pistachio-system-pinctrl", }, | ||
1443 | { }, | ||
1444 | }; | ||
1445 | |||
1446 | static int pistachio_pinctrl_probe(struct platform_device *pdev) | ||
1447 | { | ||
1448 | struct pistachio_pinctrl *pctl; | ||
1449 | struct resource *res; | ||
1450 | int ret; | ||
1451 | |||
1452 | pctl = devm_kzalloc(&pdev->dev, sizeof(*pctl), GFP_KERNEL); | ||
1453 | if (!pctl) | ||
1454 | return -ENOMEM; | ||
1455 | pctl->dev = &pdev->dev; | ||
1456 | dev_set_drvdata(&pdev->dev, pctl); | ||
1457 | |||
1458 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
1459 | pctl->base = devm_ioremap_resource(&pdev->dev, res); | ||
1460 | if (IS_ERR(pctl->base)) | ||
1461 | return PTR_ERR(pctl->base); | ||
1462 | |||
1463 | pctl->pins = pistachio_pins; | ||
1464 | pctl->npins = ARRAY_SIZE(pistachio_pins); | ||
1465 | pctl->functions = pistachio_functions; | ||
1466 | pctl->nfunctions = ARRAY_SIZE(pistachio_functions); | ||
1467 | pctl->groups = pistachio_groups; | ||
1468 | pctl->ngroups = ARRAY_SIZE(pistachio_groups); | ||
1469 | pctl->gpio_banks = pistachio_gpio_banks; | ||
1470 | pctl->nbanks = ARRAY_SIZE(pistachio_gpio_banks); | ||
1471 | |||
1472 | pistachio_pinctrl_desc.pins = pctl->pins; | ||
1473 | pistachio_pinctrl_desc.npins = pctl->npins; | ||
1474 | |||
1475 | pctl->pctldev = pinctrl_register(&pistachio_pinctrl_desc, &pdev->dev, | ||
1476 | pctl); | ||
1477 | if (IS_ERR(pctl->pctldev)) { | ||
1478 | dev_err(&pdev->dev, "Failed to register pinctrl device\n"); | ||
1479 | return PTR_ERR(pctl->pctldev); | ||
1480 | } | ||
1481 | |||
1482 | ret = pistachio_gpio_register(pctl); | ||
1483 | if (ret < 0) { | ||
1484 | pinctrl_unregister(pctl->pctldev); | ||
1485 | return ret; | ||
1486 | } | ||
1487 | |||
1488 | return 0; | ||
1489 | } | ||
1490 | |||
1491 | static struct platform_driver pistachio_pinctrl_driver = { | ||
1492 | .driver = { | ||
1493 | .name = "pistachio-pinctrl", | ||
1494 | .of_match_table = pistachio_pinctrl_of_match, | ||
1495 | .suppress_bind_attrs = true, | ||
1496 | }, | ||
1497 | .probe = pistachio_pinctrl_probe, | ||
1498 | }; | ||
1499 | |||
1500 | static int __init pistachio_pinctrl_register(void) | ||
1501 | { | ||
1502 | return platform_driver_register(&pistachio_pinctrl_driver); | ||
1503 | } | ||
1504 | arch_initcall(pistachio_pinctrl_register); | ||
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index dee7d5f06c60..9affcd725776 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c | |||
@@ -63,6 +63,7 @@ enum rockchip_pinctrl_type { | |||
63 | RK3066B, | 63 | RK3066B, |
64 | RK3188, | 64 | RK3188, |
65 | RK3288, | 65 | RK3288, |
66 | RK3368, | ||
66 | }; | 67 | }; |
67 | 68 | ||
68 | /** | 69 | /** |
@@ -163,6 +164,9 @@ struct rockchip_pin_ctrl { | |||
163 | void (*pull_calc_reg)(struct rockchip_pin_bank *bank, | 164 | void (*pull_calc_reg)(struct rockchip_pin_bank *bank, |
164 | int pin_num, struct regmap **regmap, | 165 | int pin_num, struct regmap **regmap, |
165 | int *reg, u8 *bit); | 166 | int *reg, u8 *bit); |
167 | void (*drv_calc_reg)(struct rockchip_pin_bank *bank, | ||
168 | int pin_num, struct regmap **regmap, | ||
169 | int *reg, u8 *bit); | ||
166 | }; | 170 | }; |
167 | 171 | ||
168 | struct rockchip_pin_config { | 172 | struct rockchip_pin_config { |
@@ -581,7 +585,6 @@ static void rk3288_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, | |||
581 | #define RK3288_DRV_BITS_PER_PIN 2 | 585 | #define RK3288_DRV_BITS_PER_PIN 2 |
582 | #define RK3288_DRV_PINS_PER_REG 8 | 586 | #define RK3288_DRV_PINS_PER_REG 8 |
583 | #define RK3288_DRV_BANK_STRIDE 16 | 587 | #define RK3288_DRV_BANK_STRIDE 16 |
584 | static int rk3288_drv_list[] = { 2, 4, 8, 12 }; | ||
585 | 588 | ||
586 | static void rk3288_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, | 589 | static void rk3288_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, |
587 | int pin_num, struct regmap **regmap, | 590 | int pin_num, struct regmap **regmap, |
@@ -611,14 +614,81 @@ static void rk3288_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, | |||
611 | } | 614 | } |
612 | } | 615 | } |
613 | 616 | ||
614 | static int rk3288_get_drive(struct rockchip_pin_bank *bank, int pin_num) | 617 | #define RK3368_PULL_GRF_OFFSET 0x100 |
618 | #define RK3368_PULL_PMU_OFFSET 0x10 | ||
619 | |||
620 | static void rk3368_calc_pull_reg_and_bit(struct rockchip_pin_bank *bank, | ||
621 | int pin_num, struct regmap **regmap, | ||
622 | int *reg, u8 *bit) | ||
615 | { | 623 | { |
624 | struct rockchip_pinctrl *info = bank->drvdata; | ||
625 | |||
626 | /* The first 32 pins of the first bank are located in PMU */ | ||
627 | if (bank->bank_num == 0) { | ||
628 | *regmap = info->regmap_pmu; | ||
629 | *reg = RK3368_PULL_PMU_OFFSET; | ||
630 | |||
631 | *reg += ((pin_num / RK3188_PULL_PINS_PER_REG) * 4); | ||
632 | *bit = pin_num % RK3188_PULL_PINS_PER_REG; | ||
633 | *bit *= RK3188_PULL_BITS_PER_PIN; | ||
634 | } else { | ||
635 | *regmap = info->regmap_base; | ||
636 | *reg = RK3368_PULL_GRF_OFFSET; | ||
637 | |||
638 | /* correct the offset, as we're starting with the 2nd bank */ | ||
639 | *reg -= 0x10; | ||
640 | *reg += bank->bank_num * RK3188_PULL_BANK_STRIDE; | ||
641 | *reg += ((pin_num / RK3188_PULL_PINS_PER_REG) * 4); | ||
642 | |||
643 | *bit = (pin_num % RK3188_PULL_PINS_PER_REG); | ||
644 | *bit *= RK3188_PULL_BITS_PER_PIN; | ||
645 | } | ||
646 | } | ||
647 | |||
648 | #define RK3368_DRV_PMU_OFFSET 0x20 | ||
649 | #define RK3368_DRV_GRF_OFFSET 0x200 | ||
650 | |||
651 | static void rk3368_calc_drv_reg_and_bit(struct rockchip_pin_bank *bank, | ||
652 | int pin_num, struct regmap **regmap, | ||
653 | int *reg, u8 *bit) | ||
654 | { | ||
655 | struct rockchip_pinctrl *info = bank->drvdata; | ||
656 | |||
657 | /* The first 32 pins of the first bank are located in PMU */ | ||
658 | if (bank->bank_num == 0) { | ||
659 | *regmap = info->regmap_pmu; | ||
660 | *reg = RK3368_DRV_PMU_OFFSET; | ||
661 | |||
662 | *reg += ((pin_num / RK3288_DRV_PINS_PER_REG) * 4); | ||
663 | *bit = pin_num % RK3288_DRV_PINS_PER_REG; | ||
664 | *bit *= RK3288_DRV_BITS_PER_PIN; | ||
665 | } else { | ||
666 | *regmap = info->regmap_base; | ||
667 | *reg = RK3368_DRV_GRF_OFFSET; | ||
668 | |||
669 | /* correct the offset, as we're starting with the 2nd bank */ | ||
670 | *reg -= 0x10; | ||
671 | *reg += bank->bank_num * RK3288_DRV_BANK_STRIDE; | ||
672 | *reg += ((pin_num / RK3288_DRV_PINS_PER_REG) * 4); | ||
673 | |||
674 | *bit = (pin_num % RK3288_DRV_PINS_PER_REG); | ||
675 | *bit *= RK3288_DRV_BITS_PER_PIN; | ||
676 | } | ||
677 | } | ||
678 | |||
679 | static int rockchip_perpin_drv_list[] = { 2, 4, 8, 12 }; | ||
680 | |||
681 | static int rockchip_get_drive_perpin(struct rockchip_pin_bank *bank, | ||
682 | int pin_num) | ||
683 | { | ||
684 | struct rockchip_pinctrl *info = bank->drvdata; | ||
685 | struct rockchip_pin_ctrl *ctrl = info->ctrl; | ||
616 | struct regmap *regmap; | 686 | struct regmap *regmap; |
617 | int reg, ret; | 687 | int reg, ret; |
618 | u32 data; | 688 | u32 data; |
619 | u8 bit; | 689 | u8 bit; |
620 | 690 | ||
621 | rk3288_calc_drv_reg_and_bit(bank, pin_num, ®map, ®, &bit); | 691 | ctrl->drv_calc_reg(bank, pin_num, ®map, ®, &bit); |
622 | 692 | ||
623 | ret = regmap_read(regmap, reg, &data); | 693 | ret = regmap_read(regmap, reg, &data); |
624 | if (ret) | 694 | if (ret) |
@@ -627,24 +697,25 @@ static int rk3288_get_drive(struct rockchip_pin_bank *bank, int pin_num) | |||
627 | data >>= bit; | 697 | data >>= bit; |
628 | data &= (1 << RK3288_DRV_BITS_PER_PIN) - 1; | 698 | data &= (1 << RK3288_DRV_BITS_PER_PIN) - 1; |
629 | 699 | ||
630 | return rk3288_drv_list[data]; | 700 | return rockchip_perpin_drv_list[data]; |
631 | } | 701 | } |
632 | 702 | ||
633 | static int rk3288_set_drive(struct rockchip_pin_bank *bank, int pin_num, | 703 | static int rockchip_set_drive_perpin(struct rockchip_pin_bank *bank, |
634 | int strength) | 704 | int pin_num, int strength) |
635 | { | 705 | { |
636 | struct rockchip_pinctrl *info = bank->drvdata; | 706 | struct rockchip_pinctrl *info = bank->drvdata; |
707 | struct rockchip_pin_ctrl *ctrl = info->ctrl; | ||
637 | struct regmap *regmap; | 708 | struct regmap *regmap; |
638 | unsigned long flags; | 709 | unsigned long flags; |
639 | int reg, ret, i; | 710 | int reg, ret, i; |
640 | u32 data, rmask; | 711 | u32 data, rmask; |
641 | u8 bit; | 712 | u8 bit; |
642 | 713 | ||
643 | rk3288_calc_drv_reg_and_bit(bank, pin_num, ®map, ®, &bit); | 714 | ctrl->drv_calc_reg(bank, pin_num, ®map, ®, &bit); |
644 | 715 | ||
645 | ret = -EINVAL; | 716 | ret = -EINVAL; |
646 | for (i = 0; i < ARRAY_SIZE(rk3288_drv_list); i++) { | 717 | for (i = 0; i < ARRAY_SIZE(rockchip_perpin_drv_list); i++) { |
647 | if (rk3288_drv_list[i] == strength) { | 718 | if (rockchip_perpin_drv_list[i] == strength) { |
648 | ret = i; | 719 | ret = i; |
649 | break; | 720 | break; |
650 | } | 721 | } |
@@ -695,6 +766,7 @@ static int rockchip_get_pull(struct rockchip_pin_bank *bank, int pin_num) | |||
695 | : PIN_CONFIG_BIAS_DISABLE; | 766 | : PIN_CONFIG_BIAS_DISABLE; |
696 | case RK3188: | 767 | case RK3188: |
697 | case RK3288: | 768 | case RK3288: |
769 | case RK3368: | ||
698 | data >>= bit; | 770 | data >>= bit; |
699 | data &= (1 << RK3188_PULL_BITS_PER_PIN) - 1; | 771 | data &= (1 << RK3188_PULL_BITS_PER_PIN) - 1; |
700 | 772 | ||
@@ -750,6 +822,7 @@ static int rockchip_set_pull(struct rockchip_pin_bank *bank, | |||
750 | break; | 822 | break; |
751 | case RK3188: | 823 | case RK3188: |
752 | case RK3288: | 824 | case RK3288: |
825 | case RK3368: | ||
753 | spin_lock_irqsave(&bank->slock, flags); | 826 | spin_lock_irqsave(&bank->slock, flags); |
754 | 827 | ||
755 | /* enable the write to the equivalent lower bits */ | 828 | /* enable the write to the equivalent lower bits */ |
@@ -927,6 +1000,7 @@ static bool rockchip_pinconf_pull_valid(struct rockchip_pin_ctrl *ctrl, | |||
927 | return pull ? false : true; | 1000 | return pull ? false : true; |
928 | case RK3188: | 1001 | case RK3188: |
929 | case RK3288: | 1002 | case RK3288: |
1003 | case RK3368: | ||
930 | return (pull != PIN_CONFIG_BIAS_PULL_PIN_DEFAULT); | 1004 | return (pull != PIN_CONFIG_BIAS_PULL_PIN_DEFAULT); |
931 | } | 1005 | } |
932 | 1006 | ||
@@ -983,10 +1057,11 @@ static int rockchip_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin, | |||
983 | break; | 1057 | break; |
984 | case PIN_CONFIG_DRIVE_STRENGTH: | 1058 | case PIN_CONFIG_DRIVE_STRENGTH: |
985 | /* rk3288 is the first with per-pin drive-strength */ | 1059 | /* rk3288 is the first with per-pin drive-strength */ |
986 | if (info->ctrl->type != RK3288) | 1060 | if (!info->ctrl->drv_calc_reg) |
987 | return -ENOTSUPP; | 1061 | return -ENOTSUPP; |
988 | 1062 | ||
989 | rc = rk3288_set_drive(bank, pin - bank->pin_base, arg); | 1063 | rc = rockchip_set_drive_perpin(bank, |
1064 | pin - bank->pin_base, arg); | ||
990 | if (rc < 0) | 1065 | if (rc < 0) |
991 | return rc; | 1066 | return rc; |
992 | break; | 1067 | break; |
@@ -1041,10 +1116,10 @@ static int rockchip_pinconf_get(struct pinctrl_dev *pctldev, unsigned int pin, | |||
1041 | break; | 1116 | break; |
1042 | case PIN_CONFIG_DRIVE_STRENGTH: | 1117 | case PIN_CONFIG_DRIVE_STRENGTH: |
1043 | /* rk3288 is the first with per-pin drive-strength */ | 1118 | /* rk3288 is the first with per-pin drive-strength */ |
1044 | if (info->ctrl->type != RK3288) | 1119 | if (!info->ctrl->drv_calc_reg) |
1045 | return -ENOTSUPP; | 1120 | return -ENOTSUPP; |
1046 | 1121 | ||
1047 | rc = rk3288_get_drive(bank, pin - bank->pin_base); | 1122 | rc = rockchip_get_drive_perpin(bank, pin - bank->pin_base); |
1048 | if (rc < 0) | 1123 | if (rc < 0) |
1049 | return rc; | 1124 | return rc; |
1050 | 1125 | ||
@@ -1274,9 +1349,9 @@ static int rockchip_pinctrl_register(struct platform_device *pdev, | |||
1274 | return ret; | 1349 | return ret; |
1275 | 1350 | ||
1276 | info->pctl_dev = pinctrl_register(ctrldesc, &pdev->dev, info); | 1351 | info->pctl_dev = pinctrl_register(ctrldesc, &pdev->dev, info); |
1277 | if (!info->pctl_dev) { | 1352 | if (IS_ERR(info->pctl_dev)) { |
1278 | dev_err(&pdev->dev, "could not register pinctrl driver\n"); | 1353 | dev_err(&pdev->dev, "could not register pinctrl driver\n"); |
1279 | return -EINVAL; | 1354 | return PTR_ERR(info->pctl_dev); |
1280 | } | 1355 | } |
1281 | 1356 | ||
1282 | for (bank = 0; bank < info->ctrl->nr_banks; ++bank) { | 1357 | for (bank = 0; bank < info->ctrl->nr_banks; ++bank) { |
@@ -2056,8 +2131,32 @@ static struct rockchip_pin_ctrl rk3288_pin_ctrl = { | |||
2056 | .grf_mux_offset = 0x0, | 2131 | .grf_mux_offset = 0x0, |
2057 | .pmu_mux_offset = 0x84, | 2132 | .pmu_mux_offset = 0x84, |
2058 | .pull_calc_reg = rk3288_calc_pull_reg_and_bit, | 2133 | .pull_calc_reg = rk3288_calc_pull_reg_and_bit, |
2134 | .drv_calc_reg = rk3288_calc_drv_reg_and_bit, | ||
2059 | }; | 2135 | }; |
2060 | 2136 | ||
2137 | static struct rockchip_pin_bank rk3368_pin_banks[] = { | ||
2138 | PIN_BANK_IOMUX_FLAGS(0, 32, "gpio0", IOMUX_SOURCE_PMU, | ||
2139 | IOMUX_SOURCE_PMU, | ||
2140 | IOMUX_SOURCE_PMU, | ||
2141 | IOMUX_SOURCE_PMU | ||
2142 | ), | ||
2143 | PIN_BANK(1, 32, "gpio1"), | ||
2144 | PIN_BANK(2, 32, "gpio2"), | ||
2145 | PIN_BANK(3, 32, "gpio3"), | ||
2146 | }; | ||
2147 | |||
2148 | static struct rockchip_pin_ctrl rk3368_pin_ctrl = { | ||
2149 | .pin_banks = rk3368_pin_banks, | ||
2150 | .nr_banks = ARRAY_SIZE(rk3368_pin_banks), | ||
2151 | .label = "RK3368-GPIO", | ||
2152 | .type = RK3368, | ||
2153 | .grf_mux_offset = 0x0, | ||
2154 | .pmu_mux_offset = 0x0, | ||
2155 | .pull_calc_reg = rk3368_calc_pull_reg_and_bit, | ||
2156 | .drv_calc_reg = rk3368_calc_drv_reg_and_bit, | ||
2157 | }; | ||
2158 | |||
2159 | |||
2061 | static const struct of_device_id rockchip_pinctrl_dt_match[] = { | 2160 | static const struct of_device_id rockchip_pinctrl_dt_match[] = { |
2062 | { .compatible = "rockchip,rk2928-pinctrl", | 2161 | { .compatible = "rockchip,rk2928-pinctrl", |
2063 | .data = (void *)&rk2928_pin_ctrl }, | 2162 | .data = (void *)&rk2928_pin_ctrl }, |
@@ -2069,6 +2168,8 @@ static const struct of_device_id rockchip_pinctrl_dt_match[] = { | |||
2069 | .data = (void *)&rk3188_pin_ctrl }, | 2168 | .data = (void *)&rk3188_pin_ctrl }, |
2070 | { .compatible = "rockchip,rk3288-pinctrl", | 2169 | { .compatible = "rockchip,rk3288-pinctrl", |
2071 | .data = (void *)&rk3288_pin_ctrl }, | 2170 | .data = (void *)&rk3288_pin_ctrl }, |
2171 | { .compatible = "rockchip,rk3368-pinctrl", | ||
2172 | .data = (void *)&rk3368_pin_ctrl }, | ||
2072 | {}, | 2173 | {}, |
2073 | }; | 2174 | }; |
2074 | MODULE_DEVICE_TABLE(of, rockchip_pinctrl_dt_match); | 2175 | MODULE_DEVICE_TABLE(of, rockchip_pinctrl_dt_match); |
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c index 13b45f297727..b2de09d3b1a0 100644 --- a/drivers/pinctrl/pinctrl-single.c +++ b/drivers/pinctrl/pinctrl-single.c | |||
@@ -1726,7 +1726,7 @@ static int pcs_irqdomain_map(struct irq_domain *d, unsigned int irq, | |||
1726 | return 0; | 1726 | return 0; |
1727 | } | 1727 | } |
1728 | 1728 | ||
1729 | static struct irq_domain_ops pcs_irqdomain_ops = { | 1729 | static const struct irq_domain_ops pcs_irqdomain_ops = { |
1730 | .map = pcs_irqdomain_map, | 1730 | .map = pcs_irqdomain_map, |
1731 | .xlate = irq_domain_xlate_onecell, | 1731 | .xlate = irq_domain_xlate_onecell, |
1732 | }; | 1732 | }; |
@@ -1921,9 +1921,9 @@ static int pcs_probe(struct platform_device *pdev) | |||
1921 | goto free; | 1921 | goto free; |
1922 | 1922 | ||
1923 | pcs->pctl = pinctrl_register(&pcs->desc, pcs->dev, pcs); | 1923 | pcs->pctl = pinctrl_register(&pcs->desc, pcs->dev, pcs); |
1924 | if (!pcs->pctl) { | 1924 | if (IS_ERR(pcs->pctl)) { |
1925 | dev_err(pcs->dev, "could not register single pinctrl driver\n"); | 1925 | dev_err(pcs->dev, "could not register single pinctrl driver\n"); |
1926 | ret = -EINVAL; | 1926 | ret = PTR_ERR(pcs->pctl); |
1927 | goto free; | 1927 | goto free; |
1928 | } | 1928 | } |
1929 | 1929 | ||
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c index 65bf73b70e34..d34ac879af9e 100644 --- a/drivers/pinctrl/pinctrl-st.c +++ b/drivers/pinctrl/pinctrl-st.c | |||
@@ -1737,9 +1737,9 @@ static int st_pctl_probe(struct platform_device *pdev) | |||
1737 | pctl_desc->name = dev_name(&pdev->dev); | 1737 | pctl_desc->name = dev_name(&pdev->dev); |
1738 | 1738 | ||
1739 | info->pctl = pinctrl_register(pctl_desc, &pdev->dev, info); | 1739 | info->pctl = pinctrl_register(pctl_desc, &pdev->dev, info); |
1740 | if (!info->pctl) { | 1740 | if (IS_ERR(info->pctl)) { |
1741 | dev_err(&pdev->dev, "Failed pinctrl registration\n"); | 1741 | dev_err(&pdev->dev, "Failed pinctrl registration\n"); |
1742 | return -EINVAL; | 1742 | return PTR_ERR(info->pctl); |
1743 | } | 1743 | } |
1744 | 1744 | ||
1745 | for (i = 0; i < info->nbanks; i++) | 1745 | for (i = 0; i < info->nbanks; i++) |
diff --git a/drivers/pinctrl/pinctrl-tb10x.c b/drivers/pinctrl/pinctrl-tb10x.c index 160a1f5e9896..6546b9bb2e06 100644 --- a/drivers/pinctrl/pinctrl-tb10x.c +++ b/drivers/pinctrl/pinctrl-tb10x.c | |||
@@ -807,9 +807,9 @@ static int tb10x_pinctrl_probe(struct platform_device *pdev) | |||
807 | } | 807 | } |
808 | 808 | ||
809 | state->pctl = pinctrl_register(&tb10x_pindesc, dev, state); | 809 | state->pctl = pinctrl_register(&tb10x_pindesc, dev, state); |
810 | if (!state->pctl) { | 810 | if (IS_ERR(state->pctl)) { |
811 | dev_err(dev, "could not register TB10x pin driver\n"); | 811 | dev_err(dev, "could not register TB10x pin driver\n"); |
812 | ret = -EINVAL; | 812 | ret = PTR_ERR(state->pctl); |
813 | goto fail; | 813 | goto fail; |
814 | } | 814 | } |
815 | 815 | ||
diff --git a/drivers/pinctrl/pinctrl-tegra-xusb.c b/drivers/pinctrl/pinctrl-tegra-xusb.c index 753d747d4261..2651d04bd1be 100644 --- a/drivers/pinctrl/pinctrl-tegra-xusb.c +++ b/drivers/pinctrl/pinctrl-tegra-xusb.c | |||
@@ -59,11 +59,6 @@ struct tegra_xusb_padctl_function { | |||
59 | unsigned int num_groups; | 59 | unsigned int num_groups; |
60 | }; | 60 | }; |
61 | 61 | ||
62 | struct tegra_xusb_padctl_group { | ||
63 | const unsigned int *funcs; | ||
64 | unsigned int num_funcs; | ||
65 | }; | ||
66 | |||
67 | struct tegra_xusb_padctl_soc { | 62 | struct tegra_xusb_padctl_soc { |
68 | const struct pinctrl_pin_desc *pins; | 63 | const struct pinctrl_pin_desc *pins; |
69 | unsigned int num_pins; | 64 | unsigned int num_pins; |
@@ -130,6 +125,21 @@ static const char *tegra_xusb_padctl_get_group_name(struct pinctrl_dev *pinctrl, | |||
130 | return padctl->soc->pins[group].name; | 125 | return padctl->soc->pins[group].name; |
131 | } | 126 | } |
132 | 127 | ||
128 | static int tegra_xusb_padctl_get_group_pins(struct pinctrl_dev *pinctrl, | ||
129 | unsigned group, | ||
130 | const unsigned **pins, | ||
131 | unsigned *num_pins) | ||
132 | { | ||
133 | /* | ||
134 | * For the tegra-xusb pad controller groups are synonomous | ||
135 | * with lanes/pins and there is always one lane/pin per group. | ||
136 | */ | ||
137 | *pins = &pinctrl->desc->pins[group].number; | ||
138 | *num_pins = 1; | ||
139 | |||
140 | return 0; | ||
141 | } | ||
142 | |||
133 | enum tegra_xusb_padctl_param { | 143 | enum tegra_xusb_padctl_param { |
134 | TEGRA_XUSB_PADCTL_IDDQ, | 144 | TEGRA_XUSB_PADCTL_IDDQ, |
135 | }; | 145 | }; |
@@ -253,6 +263,7 @@ static int tegra_xusb_padctl_dt_node_to_map(struct pinctrl_dev *pinctrl, | |||
253 | static const struct pinctrl_ops tegra_xusb_padctl_pinctrl_ops = { | 263 | static const struct pinctrl_ops tegra_xusb_padctl_pinctrl_ops = { |
254 | .get_groups_count = tegra_xusb_padctl_get_groups_count, | 264 | .get_groups_count = tegra_xusb_padctl_get_groups_count, |
255 | .get_group_name = tegra_xusb_padctl_get_group_name, | 265 | .get_group_name = tegra_xusb_padctl_get_group_name, |
266 | .get_group_pins = tegra_xusb_padctl_get_group_pins, | ||
256 | .dt_node_to_map = tegra_xusb_padctl_dt_node_to_map, | 267 | .dt_node_to_map = tegra_xusb_padctl_dt_node_to_map, |
257 | .dt_free_map = pinctrl_utils_dt_free_map, | 268 | .dt_free_map = pinctrl_utils_dt_free_map, |
258 | }; | 269 | }; |
@@ -903,15 +914,17 @@ static int tegra_xusb_padctl_probe(struct platform_device *pdev) | |||
903 | 914 | ||
904 | memset(&padctl->desc, 0, sizeof(padctl->desc)); | 915 | memset(&padctl->desc, 0, sizeof(padctl->desc)); |
905 | padctl->desc.name = dev_name(padctl->dev); | 916 | padctl->desc.name = dev_name(padctl->dev); |
917 | padctl->desc.pins = tegra124_pins; | ||
918 | padctl->desc.npins = ARRAY_SIZE(tegra124_pins); | ||
906 | padctl->desc.pctlops = &tegra_xusb_padctl_pinctrl_ops; | 919 | padctl->desc.pctlops = &tegra_xusb_padctl_pinctrl_ops; |
907 | padctl->desc.pmxops = &tegra_xusb_padctl_pinmux_ops; | 920 | padctl->desc.pmxops = &tegra_xusb_padctl_pinmux_ops; |
908 | padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; | 921 | padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops; |
909 | padctl->desc.owner = THIS_MODULE; | 922 | padctl->desc.owner = THIS_MODULE; |
910 | 923 | ||
911 | padctl->pinctrl = pinctrl_register(&padctl->desc, &pdev->dev, padctl); | 924 | padctl->pinctrl = pinctrl_register(&padctl->desc, &pdev->dev, padctl); |
912 | if (!padctl->pinctrl) { | 925 | if (IS_ERR(padctl->pinctrl)) { |
913 | dev_err(&pdev->dev, "failed to register pincontrol\n"); | 926 | dev_err(&pdev->dev, "failed to register pincontrol\n"); |
914 | err = -ENODEV; | 927 | err = PTR_ERR(padctl->pinctrl); |
915 | goto reset; | 928 | goto reset; |
916 | } | 929 | } |
917 | 930 | ||
diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c index 4c95c2024a1c..0f982b829be1 100644 --- a/drivers/pinctrl/pinctrl-tegra.c +++ b/drivers/pinctrl/pinctrl-tegra.c | |||
@@ -703,9 +703,9 @@ int tegra_pinctrl_probe(struct platform_device *pdev, | |||
703 | } | 703 | } |
704 | 704 | ||
705 | pmx->pctl = pinctrl_register(&tegra_pinctrl_desc, &pdev->dev, pmx); | 705 | pmx->pctl = pinctrl_register(&tegra_pinctrl_desc, &pdev->dev, pmx); |
706 | if (!pmx->pctl) { | 706 | if (IS_ERR(pmx->pctl)) { |
707 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 707 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
708 | return -ENODEV; | 708 | return PTR_ERR(pmx->pctl); |
709 | } | 709 | } |
710 | 710 | ||
711 | pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); | 711 | pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); |
diff --git a/drivers/pinctrl/pinctrl-tz1090-pdc.c b/drivers/pinctrl/pinctrl-tz1090-pdc.c index 8a8911bb883a..c349911708ef 100644 --- a/drivers/pinctrl/pinctrl-tz1090-pdc.c +++ b/drivers/pinctrl/pinctrl-tz1090-pdc.c | |||
@@ -948,9 +948,9 @@ static int tz1090_pdc_pinctrl_probe(struct platform_device *pdev) | |||
948 | return PTR_ERR(pmx->regs); | 948 | return PTR_ERR(pmx->regs); |
949 | 949 | ||
950 | pmx->pctl = pinctrl_register(&tz1090_pdc_pinctrl_desc, &pdev->dev, pmx); | 950 | pmx->pctl = pinctrl_register(&tz1090_pdc_pinctrl_desc, &pdev->dev, pmx); |
951 | if (!pmx->pctl) { | 951 | if (IS_ERR(pmx->pctl)) { |
952 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 952 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
953 | return -ENODEV; | 953 | return PTR_ERR(pmx->pctl); |
954 | } | 954 | } |
955 | 955 | ||
956 | platform_set_drvdata(pdev, pmx); | 956 | platform_set_drvdata(pdev, pmx); |
diff --git a/drivers/pinctrl/pinctrl-tz1090.c b/drivers/pinctrl/pinctrl-tz1090.c index fc5594a530c2..6d07a2f64d97 100644 --- a/drivers/pinctrl/pinctrl-tz1090.c +++ b/drivers/pinctrl/pinctrl-tz1090.c | |||
@@ -1963,9 +1963,9 @@ static int tz1090_pinctrl_probe(struct platform_device *pdev) | |||
1963 | return PTR_ERR(pmx->regs); | 1963 | return PTR_ERR(pmx->regs); |
1964 | 1964 | ||
1965 | pmx->pctl = pinctrl_register(&tz1090_pinctrl_desc, &pdev->dev, pmx); | 1965 | pmx->pctl = pinctrl_register(&tz1090_pinctrl_desc, &pdev->dev, pmx); |
1966 | if (!pmx->pctl) { | 1966 | if (IS_ERR(pmx->pctl)) { |
1967 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 1967 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
1968 | return -ENODEV; | 1968 | return PTR_ERR(pmx->pctl); |
1969 | } | 1969 | } |
1970 | 1970 | ||
1971 | platform_set_drvdata(pdev, pmx); | 1971 | platform_set_drvdata(pdev, pmx); |
diff --git a/drivers/pinctrl/pinctrl-u300.c b/drivers/pinctrl/pinctrl-u300.c index f931e65aba3a..c076021f37d2 100644 --- a/drivers/pinctrl/pinctrl-u300.c +++ b/drivers/pinctrl/pinctrl-u300.c | |||
@@ -1068,9 +1068,9 @@ static int u300_pmx_probe(struct platform_device *pdev) | |||
1068 | return PTR_ERR(upmx->virtbase); | 1068 | return PTR_ERR(upmx->virtbase); |
1069 | 1069 | ||
1070 | upmx->pctl = pinctrl_register(&u300_pmx_desc, &pdev->dev, upmx); | 1070 | upmx->pctl = pinctrl_register(&u300_pmx_desc, &pdev->dev, upmx); |
1071 | if (!upmx->pctl) { | 1071 | if (IS_ERR(upmx->pctl)) { |
1072 | dev_err(&pdev->dev, "could not register U300 pinmux driver\n"); | 1072 | dev_err(&pdev->dev, "could not register U300 pinmux driver\n"); |
1073 | return -EINVAL; | 1073 | return PTR_ERR(upmx->pctl); |
1074 | } | 1074 | } |
1075 | 1075 | ||
1076 | platform_set_drvdata(pdev, upmx); | 1076 | platform_set_drvdata(pdev, upmx); |
diff --git a/drivers/pinctrl/pinctrl-zynq.c b/drivers/pinctrl/pinctrl-zynq.c index 22280bddb9e2..7ce23b6282ad 100644 --- a/drivers/pinctrl/pinctrl-zynq.c +++ b/drivers/pinctrl/pinctrl-zynq.c | |||
@@ -101,6 +101,8 @@ enum zynq_pinmux_functions { | |||
101 | ZYNQ_PMUX_qspi_cs1, | 101 | ZYNQ_PMUX_qspi_cs1, |
102 | ZYNQ_PMUX_spi0, | 102 | ZYNQ_PMUX_spi0, |
103 | ZYNQ_PMUX_spi1, | 103 | ZYNQ_PMUX_spi1, |
104 | ZYNQ_PMUX_spi0_ss, | ||
105 | ZYNQ_PMUX_spi1_ss, | ||
104 | ZYNQ_PMUX_sdio0, | 106 | ZYNQ_PMUX_sdio0, |
105 | ZYNQ_PMUX_sdio0_pc, | 107 | ZYNQ_PMUX_sdio0_pc, |
106 | ZYNQ_PMUX_sdio0_cd, | 108 | ZYNQ_PMUX_sdio0_cd, |
@@ -123,7 +125,7 @@ enum zynq_pinmux_functions { | |||
123 | ZYNQ_PMUX_MAX_FUNC | 125 | ZYNQ_PMUX_MAX_FUNC |
124 | }; | 126 | }; |
125 | 127 | ||
126 | const struct pinctrl_pin_desc zynq_pins[] = { | 128 | static const struct pinctrl_pin_desc zynq_pins[] = { |
127 | PINCTRL_PIN(0, "MIO0"), | 129 | PINCTRL_PIN(0, "MIO0"), |
128 | PINCTRL_PIN(1, "MIO1"), | 130 | PINCTRL_PIN(1, "MIO1"), |
129 | PINCTRL_PIN(2, "MIO2"), | 131 | PINCTRL_PIN(2, "MIO2"), |
@@ -196,13 +198,35 @@ static const unsigned int qspi0_0_pins[] = {1, 2, 3, 4, 5, 6}; | |||
196 | static const unsigned int qspi1_0_pins[] = {9, 10, 11, 12, 13}; | 198 | static const unsigned int qspi1_0_pins[] = {9, 10, 11, 12, 13}; |
197 | static const unsigned int qspi_cs1_pins[] = {0}; | 199 | static const unsigned int qspi_cs1_pins[] = {0}; |
198 | static const unsigned int qspi_fbclk_pins[] = {8}; | 200 | static const unsigned int qspi_fbclk_pins[] = {8}; |
199 | static const unsigned int spi0_0_pins[] = {16, 17, 18, 19, 20, 21}; | 201 | static const unsigned int spi0_0_pins[] = {16, 17, 21}; |
200 | static const unsigned int spi0_1_pins[] = {28, 29, 30, 31, 32, 33}; | 202 | static const unsigned int spi0_0_ss0_pins[] = {18}; |
201 | static const unsigned int spi0_2_pins[] = {40, 41, 42, 43, 44, 45}; | 203 | static const unsigned int spi0_0_ss1_pins[] = {19}; |
202 | static const unsigned int spi1_0_pins[] = {10, 11, 12, 13, 14, 15}; | 204 | static const unsigned int spi0_0_ss2_pins[] = {20,}; |
203 | static const unsigned int spi1_1_pins[] = {22, 23, 24, 25, 26, 27}; | 205 | static const unsigned int spi0_1_pins[] = {28, 29, 33}; |
204 | static const unsigned int spi1_2_pins[] = {34, 35, 36, 37, 38, 39}; | 206 | static const unsigned int spi0_1_ss0_pins[] = {30}; |
205 | static const unsigned int spi1_3_pins[] = {46, 47, 48, 49, 40, 51}; | 207 | static const unsigned int spi0_1_ss1_pins[] = {31}; |
208 | static const unsigned int spi0_1_ss2_pins[] = {32}; | ||
209 | static const unsigned int spi0_2_pins[] = {40, 41, 45}; | ||
210 | static const unsigned int spi0_2_ss0_pins[] = {42}; | ||
211 | static const unsigned int spi0_2_ss1_pins[] = {43}; | ||
212 | static const unsigned int spi0_2_ss2_pins[] = {44}; | ||
213 | static const unsigned int spi1_0_pins[] = {10, 11, 12}; | ||
214 | static const unsigned int spi1_0_ss0_pins[] = {13}; | ||
215 | static const unsigned int spi1_0_ss1_pins[] = {14}; | ||
216 | static const unsigned int spi1_0_ss2_pins[] = {15}; | ||
217 | static const unsigned int spi1_1_pins[] = {22, 23, 24}; | ||
218 | static const unsigned int spi1_1_ss0_pins[] = {25}; | ||
219 | static const unsigned int spi1_1_ss1_pins[] = {26}; | ||
220 | static const unsigned int spi1_1_ss2_pins[] = {27}; | ||
221 | static const unsigned int spi1_2_pins[] = {34, 35, 36}; | ||
222 | static const unsigned int spi1_2_ss0_pins[] = {37}; | ||
223 | static const unsigned int spi1_2_ss1_pins[] = {38}; | ||
224 | static const unsigned int spi1_2_ss2_pins[] = {39}; | ||
225 | static const unsigned int spi1_3_pins[] = {46, 47, 48, 49}; | ||
226 | static const unsigned int spi1_3_ss0_pins[] = {49}; | ||
227 | static const unsigned int spi1_3_ss1_pins[] = {50}; | ||
228 | static const unsigned int spi1_3_ss2_pins[] = {51}; | ||
229 | |||
206 | static const unsigned int sdio0_0_pins[] = {16, 17, 18, 19, 20, 21}; | 230 | static const unsigned int sdio0_0_pins[] = {16, 17, 18, 19, 20, 21}; |
207 | static const unsigned int sdio0_1_pins[] = {28, 29, 30, 31, 32, 33}; | 231 | static const unsigned int sdio0_1_pins[] = {28, 29, 30, 31, 32, 33}; |
208 | static const unsigned int sdio0_2_pins[] = {40, 41, 42, 43, 44, 45}; | 232 | static const unsigned int sdio0_2_pins[] = {40, 41, 42, 43, 44, 45}; |
@@ -369,7 +393,7 @@ static const unsigned int usb1_0_pins[] = {40, 41, 42, 43, 44, 45, 46, 47, 48, | |||
369 | .npins = ARRAY_SIZE(nm ## _pins), \ | 393 | .npins = ARRAY_SIZE(nm ## _pins), \ |
370 | } | 394 | } |
371 | 395 | ||
372 | struct zynq_pctrl_group zynq_pctrl_groups[] = { | 396 | static const struct zynq_pctrl_group zynq_pctrl_groups[] = { |
373 | DEFINE_ZYNQ_PINCTRL_GRP(ethernet0_0), | 397 | DEFINE_ZYNQ_PINCTRL_GRP(ethernet0_0), |
374 | DEFINE_ZYNQ_PINCTRL_GRP(ethernet1_0), | 398 | DEFINE_ZYNQ_PINCTRL_GRP(ethernet1_0), |
375 | DEFINE_ZYNQ_PINCTRL_GRP(mdio0_0), | 399 | DEFINE_ZYNQ_PINCTRL_GRP(mdio0_0), |
@@ -379,12 +403,33 @@ struct zynq_pctrl_group zynq_pctrl_groups[] = { | |||
379 | DEFINE_ZYNQ_PINCTRL_GRP(qspi_fbclk), | 403 | DEFINE_ZYNQ_PINCTRL_GRP(qspi_fbclk), |
380 | DEFINE_ZYNQ_PINCTRL_GRP(qspi_cs1), | 404 | DEFINE_ZYNQ_PINCTRL_GRP(qspi_cs1), |
381 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_0), | 405 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_0), |
406 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_0_ss0), | ||
407 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_0_ss1), | ||
408 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_0_ss2), | ||
382 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_1), | 409 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_1), |
410 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_1_ss0), | ||
411 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_1_ss1), | ||
412 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_1_ss2), | ||
383 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_2), | 413 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_2), |
414 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_2_ss0), | ||
415 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_2_ss1), | ||
416 | DEFINE_ZYNQ_PINCTRL_GRP(spi0_2_ss2), | ||
384 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_0), | 417 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_0), |
418 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_0_ss0), | ||
419 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_0_ss1), | ||
420 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_0_ss2), | ||
385 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_1), | 421 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_1), |
422 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_1_ss0), | ||
423 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_1_ss1), | ||
424 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_1_ss2), | ||
386 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_2), | 425 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_2), |
426 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_2_ss0), | ||
427 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_2_ss1), | ||
428 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_2_ss2), | ||
387 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_3), | 429 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_3), |
430 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_3_ss0), | ||
431 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_3_ss1), | ||
432 | DEFINE_ZYNQ_PINCTRL_GRP(spi1_3_ss2), | ||
388 | DEFINE_ZYNQ_PINCTRL_GRP(sdio0_0), | 433 | DEFINE_ZYNQ_PINCTRL_GRP(sdio0_0), |
389 | DEFINE_ZYNQ_PINCTRL_GRP(sdio0_1), | 434 | DEFINE_ZYNQ_PINCTRL_GRP(sdio0_1), |
390 | DEFINE_ZYNQ_PINCTRL_GRP(sdio0_2), | 435 | DEFINE_ZYNQ_PINCTRL_GRP(sdio0_2), |
@@ -552,6 +597,15 @@ static const char * const spi0_groups[] = {"spi0_0_grp", "spi0_1_grp", | |||
552 | "spi0_2_grp"}; | 597 | "spi0_2_grp"}; |
553 | static const char * const spi1_groups[] = {"spi1_0_grp", "spi1_1_grp", | 598 | static const char * const spi1_groups[] = {"spi1_0_grp", "spi1_1_grp", |
554 | "spi1_2_grp", "spi1_3_grp"}; | 599 | "spi1_2_grp", "spi1_3_grp"}; |
600 | static const char * const spi0_ss_groups[] = {"spi0_0_ss0_grp", | ||
601 | "spi0_0_ss1_grp", "spi0_0_ss2_grp", "spi0_1_ss0_grp", | ||
602 | "spi0_1_ss1_grp", "spi0_1_ss2_grp", "spi0_2_ss0_grp", | ||
603 | "spi0_2_ss1_grp", "spi0_2_ss2_grp"}; | ||
604 | static const char * const spi1_ss_groups[] = {"spi1_0_ss0_grp", | ||
605 | "spi1_0_ss1_grp", "spi1_0_ss2_grp", "spi1_1_ss0_grp", | ||
606 | "spi1_1_ss1_grp", "spi1_1_ss2_grp", "spi1_2_ss0_grp", | ||
607 | "spi1_2_ss1_grp", "spi1_2_ss2_grp", "spi1_3_ss0_grp", | ||
608 | "spi1_3_ss1_grp", "spi1_3_ss2_grp"}; | ||
555 | static const char * const sdio0_groups[] = {"sdio0_0_grp", "sdio0_1_grp", | 609 | static const char * const sdio0_groups[] = {"sdio0_0_grp", "sdio0_1_grp", |
556 | "sdio0_2_grp"}; | 610 | "sdio0_2_grp"}; |
557 | static const char * const sdio1_groups[] = {"sdio1_0_grp", "sdio1_1_grp", | 611 | static const char * const sdio1_groups[] = {"sdio1_0_grp", "sdio1_1_grp", |
@@ -714,12 +768,13 @@ static const char * const gpio0_groups[] = {"gpio0_0_grp", | |||
714 | .mux_val = mval, \ | 768 | .mux_val = mval, \ |
715 | } | 769 | } |
716 | 770 | ||
717 | #define DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(fname, mval, mux, mask, shift) \ | 771 | #define DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(fname, mval, offset, mask, shift)\ |
718 | [ZYNQ_PMUX_##fname] = { \ | 772 | [ZYNQ_PMUX_##fname] = { \ |
719 | .name = #fname, \ | 773 | .name = #fname, \ |
720 | .groups = fname##_groups, \ | 774 | .groups = fname##_groups, \ |
721 | .ngroups = ARRAY_SIZE(fname##_groups), \ | 775 | .ngroups = ARRAY_SIZE(fname##_groups), \ |
722 | .mux_val = mval, \ | 776 | .mux_val = mval, \ |
777 | .mux = offset, \ | ||
723 | .mux_mask = mask, \ | 778 | .mux_mask = mask, \ |
724 | .mux_shift = shift, \ | 779 | .mux_shift = shift, \ |
725 | } | 780 | } |
@@ -742,17 +797,19 @@ static const struct zynq_pinmux_function zynq_pmux_functions[] = { | |||
742 | DEFINE_ZYNQ_PINMUX_FUNCTION(qspi_cs1, 1), | 797 | DEFINE_ZYNQ_PINMUX_FUNCTION(qspi_cs1, 1), |
743 | DEFINE_ZYNQ_PINMUX_FUNCTION(spi0, 0x50), | 798 | DEFINE_ZYNQ_PINMUX_FUNCTION(spi0, 0x50), |
744 | DEFINE_ZYNQ_PINMUX_FUNCTION(spi1, 0x50), | 799 | DEFINE_ZYNQ_PINMUX_FUNCTION(spi1, 0x50), |
800 | DEFINE_ZYNQ_PINMUX_FUNCTION(spi0_ss, 0x50), | ||
801 | DEFINE_ZYNQ_PINMUX_FUNCTION(spi1_ss, 0x50), | ||
745 | DEFINE_ZYNQ_PINMUX_FUNCTION(sdio0, 0x40), | 802 | DEFINE_ZYNQ_PINMUX_FUNCTION(sdio0, 0x40), |
746 | DEFINE_ZYNQ_PINMUX_FUNCTION(sdio0_pc, 0xc), | 803 | DEFINE_ZYNQ_PINMUX_FUNCTION(sdio0_pc, 0xc), |
747 | DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(sdio0_wp, 0, 130, ZYNQ_SDIO_WP_MASK, | 804 | DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(sdio0_wp, 0, 0x130, ZYNQ_SDIO_WP_MASK, |
748 | ZYNQ_SDIO_WP_SHIFT), | 805 | ZYNQ_SDIO_WP_SHIFT), |
749 | DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(sdio0_cd, 0, 130, ZYNQ_SDIO_CD_MASK, | 806 | DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(sdio0_cd, 0, 0x130, ZYNQ_SDIO_CD_MASK, |
750 | ZYNQ_SDIO_CD_SHIFT), | 807 | ZYNQ_SDIO_CD_SHIFT), |
751 | DEFINE_ZYNQ_PINMUX_FUNCTION(sdio1, 0x40), | 808 | DEFINE_ZYNQ_PINMUX_FUNCTION(sdio1, 0x40), |
752 | DEFINE_ZYNQ_PINMUX_FUNCTION(sdio1_pc, 0xc), | 809 | DEFINE_ZYNQ_PINMUX_FUNCTION(sdio1_pc, 0xc), |
753 | DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(sdio1_wp, 0, 134, ZYNQ_SDIO_WP_MASK, | 810 | DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(sdio1_wp, 0, 0x134, ZYNQ_SDIO_WP_MASK, |
754 | ZYNQ_SDIO_WP_SHIFT), | 811 | ZYNQ_SDIO_WP_SHIFT), |
755 | DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(sdio1_cd, 0, 134, ZYNQ_SDIO_CD_MASK, | 812 | DEFINE_ZYNQ_PINMUX_FUNCTION_MUX(sdio1_cd, 0, 0x134, ZYNQ_SDIO_CD_MASK, |
756 | ZYNQ_SDIO_CD_SHIFT), | 813 | ZYNQ_SDIO_CD_SHIFT), |
757 | DEFINE_ZYNQ_PINMUX_FUNCTION(smc0_nor, 4), | 814 | DEFINE_ZYNQ_PINMUX_FUNCTION(smc0_nor, 4), |
758 | DEFINE_ZYNQ_PINMUX_FUNCTION(smc0_nor_cs1, 8), | 815 | DEFINE_ZYNQ_PINMUX_FUNCTION(smc0_nor_cs1, 8), |
@@ -1139,8 +1196,8 @@ static int zynq_pinctrl_probe(struct platform_device *pdev) | |||
1139 | pctrl->nfuncs = ARRAY_SIZE(zynq_pmux_functions); | 1196 | pctrl->nfuncs = ARRAY_SIZE(zynq_pmux_functions); |
1140 | 1197 | ||
1141 | pctrl->pctrl = pinctrl_register(&zynq_desc, &pdev->dev, pctrl); | 1198 | pctrl->pctrl = pinctrl_register(&zynq_desc, &pdev->dev, pctrl); |
1142 | if (!pctrl->pctrl) | 1199 | if (IS_ERR(pctrl->pctrl)) |
1143 | return -ENOMEM; | 1200 | return PTR_ERR(pctrl->pctrl); |
1144 | 1201 | ||
1145 | platform_set_drvdata(pdev, pctrl); | 1202 | platform_set_drvdata(pdev, pctrl); |
1146 | 1203 | ||
@@ -1149,7 +1206,7 @@ static int zynq_pinctrl_probe(struct platform_device *pdev) | |||
1149 | return 0; | 1206 | return 0; |
1150 | } | 1207 | } |
1151 | 1208 | ||
1152 | int zynq_pinctrl_remove(struct platform_device *pdev) | 1209 | static int zynq_pinctrl_remove(struct platform_device *pdev) |
1153 | { | 1210 | { |
1154 | struct zynq_pinctrl *pctrl = platform_get_drvdata(pdev); | 1211 | struct zynq_pinctrl *pctrl = platform_get_drvdata(pdev); |
1155 | 1212 | ||
diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c index b874458dcb88..e7ae890dcf1a 100644 --- a/drivers/pinctrl/pinmux.c +++ b/drivers/pinctrl/pinmux.c | |||
@@ -107,6 +107,13 @@ static int pin_request(struct pinctrl_dev *pctldev, | |||
107 | desc->name, desc->gpio_owner, owner); | 107 | desc->name, desc->gpio_owner, owner); |
108 | goto out; | 108 | goto out; |
109 | } | 109 | } |
110 | if (ops->strict && desc->mux_usecount && | ||
111 | strcmp(desc->mux_owner, owner)) { | ||
112 | dev_err(pctldev->dev, | ||
113 | "pin %s already requested by %s; cannot claim for %s\n", | ||
114 | desc->name, desc->mux_owner, owner); | ||
115 | goto out; | ||
116 | } | ||
110 | 117 | ||
111 | desc->gpio_owner = owner; | 118 | desc->gpio_owner = owner; |
112 | } else { | 119 | } else { |
@@ -116,6 +123,12 @@ static int pin_request(struct pinctrl_dev *pctldev, | |||
116 | desc->name, desc->mux_owner, owner); | 123 | desc->name, desc->mux_owner, owner); |
117 | goto out; | 124 | goto out; |
118 | } | 125 | } |
126 | if (ops->strict && desc->gpio_owner) { | ||
127 | dev_err(pctldev->dev, | ||
128 | "pin %s already requested by %s; cannot claim for %s\n", | ||
129 | desc->name, desc->gpio_owner, owner); | ||
130 | goto out; | ||
131 | } | ||
119 | 132 | ||
120 | desc->mux_usecount++; | 133 | desc->mux_usecount++; |
121 | if (desc->mux_usecount > 1) | 134 | if (desc->mux_usecount > 1) |
@@ -544,9 +557,12 @@ static int pinmux_functions_show(struct seq_file *s, void *what) | |||
544 | 557 | ||
545 | ret = pmxops->get_function_groups(pctldev, func_selector, | 558 | ret = pmxops->get_function_groups(pctldev, func_selector, |
546 | &groups, &num_groups); | 559 | &groups, &num_groups); |
547 | if (ret) | 560 | if (ret) { |
548 | seq_printf(s, "function %s: COULD NOT GET GROUPS\n", | 561 | seq_printf(s, "function %s: COULD NOT GET GROUPS\n", |
549 | func); | 562 | func); |
563 | func_selector++; | ||
564 | continue; | ||
565 | } | ||
550 | 566 | ||
551 | seq_printf(s, "function: %s, groups = [ ", func); | 567 | seq_printf(s, "function: %s, groups = [ ", func); |
552 | for (i = 0; i < num_groups; i++) | 568 | for (i = 0; i < num_groups; i++) |
@@ -572,7 +588,12 @@ static int pinmux_pins_show(struct seq_file *s, void *what) | |||
572 | return 0; | 588 | return 0; |
573 | 589 | ||
574 | seq_puts(s, "Pinmux settings per pin\n"); | 590 | seq_puts(s, "Pinmux settings per pin\n"); |
575 | seq_puts(s, "Format: pin (name): mux_owner gpio_owner hog?\n"); | 591 | if (pmxops->strict) |
592 | seq_puts(s, | ||
593 | "Format: pin (name): mux_owner|gpio_owner (strict) hog?\n"); | ||
594 | else | ||
595 | seq_puts(s, | ||
596 | "Format: pin (name): mux_owner gpio_owner hog?\n"); | ||
576 | 597 | ||
577 | mutex_lock(&pctldev->mutex); | 598 | mutex_lock(&pctldev->mutex); |
578 | 599 | ||
@@ -591,14 +612,34 @@ static int pinmux_pins_show(struct seq_file *s, void *what) | |||
591 | !strcmp(desc->mux_owner, pinctrl_dev_get_name(pctldev))) | 612 | !strcmp(desc->mux_owner, pinctrl_dev_get_name(pctldev))) |
592 | is_hog = true; | 613 | is_hog = true; |
593 | 614 | ||
594 | seq_printf(s, "pin %d (%s): %s %s%s", pin, | 615 | if (pmxops->strict) { |
595 | desc->name ? desc->name : "unnamed", | 616 | if (desc->mux_owner) |
596 | desc->mux_owner ? desc->mux_owner | 617 | seq_printf(s, "pin %d (%s): device %s%s", |
597 | : "(MUX UNCLAIMED)", | 618 | pin, |
598 | desc->gpio_owner ? desc->gpio_owner | 619 | desc->name ? desc->name : "unnamed", |
599 | : "(GPIO UNCLAIMED)", | 620 | desc->mux_owner, |
600 | is_hog ? " (HOG)" : ""); | 621 | is_hog ? " (HOG)" : ""); |
622 | else if (desc->gpio_owner) | ||
623 | seq_printf(s, "pin %d (%s): GPIO %s", | ||
624 | pin, | ||
625 | desc->name ? desc->name : "unnamed", | ||
626 | desc->gpio_owner); | ||
627 | else | ||
628 | seq_printf(s, "pin %d (%s): UNCLAIMED", | ||
629 | pin, | ||
630 | desc->name ? desc->name : "unnamed"); | ||
631 | } else { | ||
632 | /* For non-strict controllers */ | ||
633 | seq_printf(s, "pin %d (%s): %s %s%s", pin, | ||
634 | desc->name ? desc->name : "unnamed", | ||
635 | desc->mux_owner ? desc->mux_owner | ||
636 | : "(MUX UNCLAIMED)", | ||
637 | desc->gpio_owner ? desc->gpio_owner | ||
638 | : "(GPIO UNCLAIMED)", | ||
639 | is_hog ? " (HOG)" : ""); | ||
640 | } | ||
601 | 641 | ||
642 | /* If mux: print function+group claiming the pin */ | ||
602 | if (desc->mux_setting) | 643 | if (desc->mux_setting) |
603 | seq_printf(s, " function %s group %s\n", | 644 | seq_printf(s, " function %s group %s\n", |
604 | pmxops->get_function_name(pctldev, | 645 | pmxops->get_function_name(pctldev, |
diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig index ea575f60f001..58f5632b27f4 100644 --- a/drivers/pinctrl/qcom/Kconfig +++ b/drivers/pinctrl/qcom/Kconfig | |||
@@ -31,6 +31,14 @@ config PINCTRL_IPQ8064 | |||
31 | This is the pinctrl, pinmux, pinconf and gpiolib driver for the | 31 | This is the pinctrl, pinmux, pinconf and gpiolib driver for the |
32 | Qualcomm TLMM block found in the Qualcomm IPQ8064 platform. | 32 | Qualcomm TLMM block found in the Qualcomm IPQ8064 platform. |
33 | 33 | ||
34 | config PINCTRL_MSM8660 | ||
35 | tristate "Qualcomm 8660 pin controller driver" | ||
36 | depends on GPIOLIB && OF | ||
37 | select PINCTRL_MSM | ||
38 | help | ||
39 | This is the pinctrl, pinmux, pinconf and gpiolib driver for the | ||
40 | Qualcomm TLMM block found in the Qualcomm 8660 platform. | ||
41 | |||
34 | config PINCTRL_MSM8960 | 42 | config PINCTRL_MSM8960 |
35 | tristate "Qualcomm 8960 pin controller driver" | 43 | tristate "Qualcomm 8960 pin controller driver" |
36 | depends on GPIOLIB && OF | 44 | depends on GPIOLIB && OF |
diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile index 68958702917d..3666c703ce88 100644 --- a/drivers/pinctrl/qcom/Makefile +++ b/drivers/pinctrl/qcom/Makefile | |||
@@ -3,6 +3,7 @@ obj-$(CONFIG_PINCTRL_MSM) += pinctrl-msm.o | |||
3 | obj-$(CONFIG_PINCTRL_APQ8064) += pinctrl-apq8064.o | 3 | obj-$(CONFIG_PINCTRL_APQ8064) += pinctrl-apq8064.o |
4 | obj-$(CONFIG_PINCTRL_APQ8084) += pinctrl-apq8084.o | 4 | obj-$(CONFIG_PINCTRL_APQ8084) += pinctrl-apq8084.o |
5 | obj-$(CONFIG_PINCTRL_IPQ8064) += pinctrl-ipq8064.o | 5 | obj-$(CONFIG_PINCTRL_IPQ8064) += pinctrl-ipq8064.o |
6 | obj-$(CONFIG_PINCTRL_MSM8660) += pinctrl-msm8660.o | ||
6 | obj-$(CONFIG_PINCTRL_MSM8960) += pinctrl-msm8960.o | 7 | obj-$(CONFIG_PINCTRL_MSM8960) += pinctrl-msm8960.o |
7 | obj-$(CONFIG_PINCTRL_MSM8X74) += pinctrl-msm8x74.o | 8 | obj-$(CONFIG_PINCTRL_MSM8X74) += pinctrl-msm8x74.o |
8 | obj-$(CONFIG_PINCTRL_MSM8916) += pinctrl-msm8916.o | 9 | obj-$(CONFIG_PINCTRL_MSM8916) += pinctrl-msm8916.o |
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c index f3d800f796c2..e457d52302a2 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm.c +++ b/drivers/pinctrl/qcom/pinctrl-msm.c | |||
@@ -906,9 +906,9 @@ int msm_pinctrl_probe(struct platform_device *pdev, | |||
906 | msm_pinctrl_desc.pins = pctrl->soc->pins; | 906 | msm_pinctrl_desc.pins = pctrl->soc->pins; |
907 | msm_pinctrl_desc.npins = pctrl->soc->npins; | 907 | msm_pinctrl_desc.npins = pctrl->soc->npins; |
908 | pctrl->pctrl = pinctrl_register(&msm_pinctrl_desc, &pdev->dev, pctrl); | 908 | pctrl->pctrl = pinctrl_register(&msm_pinctrl_desc, &pdev->dev, pctrl); |
909 | if (!pctrl->pctrl) { | 909 | if (IS_ERR(pctrl->pctrl)) { |
910 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 910 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
911 | return -ENODEV; | 911 | return PTR_ERR(pctrl->pctrl); |
912 | } | 912 | } |
913 | 913 | ||
914 | ret = msm_gpio_init(pctrl); | 914 | ret = msm_gpio_init(pctrl); |
diff --git a/drivers/pinctrl/qcom/pinctrl-msm8660.c b/drivers/pinctrl/qcom/pinctrl-msm8660.c new file mode 100644 index 000000000000..3e8f7ac2ac8a --- /dev/null +++ b/drivers/pinctrl/qcom/pinctrl-msm8660.c | |||
@@ -0,0 +1,984 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2015, Sony Mobile Communications AB. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 and | ||
6 | * only version 2 as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | */ | ||
13 | |||
14 | #include <linux/module.h> | ||
15 | #include <linux/of.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/pinctrl/pinctrl.h> | ||
18 | |||
19 | #include "pinctrl-msm.h" | ||
20 | |||
21 | static const struct pinctrl_pin_desc msm8660_pins[] = { | ||
22 | PINCTRL_PIN(0, "GPIO_0"), | ||
23 | PINCTRL_PIN(1, "GPIO_1"), | ||
24 | PINCTRL_PIN(2, "GPIO_2"), | ||
25 | PINCTRL_PIN(3, "GPIO_3"), | ||
26 | PINCTRL_PIN(4, "GPIO_4"), | ||
27 | PINCTRL_PIN(5, "GPIO_5"), | ||
28 | PINCTRL_PIN(6, "GPIO_6"), | ||
29 | PINCTRL_PIN(7, "GPIO_7"), | ||
30 | PINCTRL_PIN(8, "GPIO_8"), | ||
31 | PINCTRL_PIN(9, "GPIO_9"), | ||
32 | PINCTRL_PIN(10, "GPIO_10"), | ||
33 | PINCTRL_PIN(11, "GPIO_11"), | ||
34 | PINCTRL_PIN(12, "GPIO_12"), | ||
35 | PINCTRL_PIN(13, "GPIO_13"), | ||
36 | PINCTRL_PIN(14, "GPIO_14"), | ||
37 | PINCTRL_PIN(15, "GPIO_15"), | ||
38 | PINCTRL_PIN(16, "GPIO_16"), | ||
39 | PINCTRL_PIN(17, "GPIO_17"), | ||
40 | PINCTRL_PIN(18, "GPIO_18"), | ||
41 | PINCTRL_PIN(19, "GPIO_19"), | ||
42 | PINCTRL_PIN(20, "GPIO_20"), | ||
43 | PINCTRL_PIN(21, "GPIO_21"), | ||
44 | PINCTRL_PIN(22, "GPIO_22"), | ||
45 | PINCTRL_PIN(23, "GPIO_23"), | ||
46 | PINCTRL_PIN(24, "GPIO_24"), | ||
47 | PINCTRL_PIN(25, "GPIO_25"), | ||
48 | PINCTRL_PIN(26, "GPIO_26"), | ||
49 | PINCTRL_PIN(27, "GPIO_27"), | ||
50 | PINCTRL_PIN(28, "GPIO_28"), | ||
51 | PINCTRL_PIN(29, "GPIO_29"), | ||
52 | PINCTRL_PIN(30, "GPIO_30"), | ||
53 | PINCTRL_PIN(31, "GPIO_31"), | ||
54 | PINCTRL_PIN(32, "GPIO_32"), | ||
55 | PINCTRL_PIN(33, "GPIO_33"), | ||
56 | PINCTRL_PIN(34, "GPIO_34"), | ||
57 | PINCTRL_PIN(35, "GPIO_35"), | ||
58 | PINCTRL_PIN(36, "GPIO_36"), | ||
59 | PINCTRL_PIN(37, "GPIO_37"), | ||
60 | PINCTRL_PIN(38, "GPIO_38"), | ||
61 | PINCTRL_PIN(39, "GPIO_39"), | ||
62 | PINCTRL_PIN(40, "GPIO_40"), | ||
63 | PINCTRL_PIN(41, "GPIO_41"), | ||
64 | PINCTRL_PIN(42, "GPIO_42"), | ||
65 | PINCTRL_PIN(43, "GPIO_43"), | ||
66 | PINCTRL_PIN(44, "GPIO_44"), | ||
67 | PINCTRL_PIN(45, "GPIO_45"), | ||
68 | PINCTRL_PIN(46, "GPIO_46"), | ||
69 | PINCTRL_PIN(47, "GPIO_47"), | ||
70 | PINCTRL_PIN(48, "GPIO_48"), | ||
71 | PINCTRL_PIN(49, "GPIO_49"), | ||
72 | PINCTRL_PIN(50, "GPIO_50"), | ||
73 | PINCTRL_PIN(51, "GPIO_51"), | ||
74 | PINCTRL_PIN(52, "GPIO_52"), | ||
75 | PINCTRL_PIN(53, "GPIO_53"), | ||
76 | PINCTRL_PIN(54, "GPIO_54"), | ||
77 | PINCTRL_PIN(55, "GPIO_55"), | ||
78 | PINCTRL_PIN(56, "GPIO_56"), | ||
79 | PINCTRL_PIN(57, "GPIO_57"), | ||
80 | PINCTRL_PIN(58, "GPIO_58"), | ||
81 | PINCTRL_PIN(59, "GPIO_59"), | ||
82 | PINCTRL_PIN(60, "GPIO_60"), | ||
83 | PINCTRL_PIN(61, "GPIO_61"), | ||
84 | PINCTRL_PIN(62, "GPIO_62"), | ||
85 | PINCTRL_PIN(63, "GPIO_63"), | ||
86 | PINCTRL_PIN(64, "GPIO_64"), | ||
87 | PINCTRL_PIN(65, "GPIO_65"), | ||
88 | PINCTRL_PIN(66, "GPIO_66"), | ||
89 | PINCTRL_PIN(67, "GPIO_67"), | ||
90 | PINCTRL_PIN(68, "GPIO_68"), | ||
91 | PINCTRL_PIN(69, "GPIO_69"), | ||
92 | PINCTRL_PIN(70, "GPIO_70"), | ||
93 | PINCTRL_PIN(71, "GPIO_71"), | ||
94 | PINCTRL_PIN(72, "GPIO_72"), | ||
95 | PINCTRL_PIN(73, "GPIO_73"), | ||
96 | PINCTRL_PIN(74, "GPIO_74"), | ||
97 | PINCTRL_PIN(75, "GPIO_75"), | ||
98 | PINCTRL_PIN(76, "GPIO_76"), | ||
99 | PINCTRL_PIN(77, "GPIO_77"), | ||
100 | PINCTRL_PIN(78, "GPIO_78"), | ||
101 | PINCTRL_PIN(79, "GPIO_79"), | ||
102 | PINCTRL_PIN(80, "GPIO_80"), | ||
103 | PINCTRL_PIN(81, "GPIO_81"), | ||
104 | PINCTRL_PIN(82, "GPIO_82"), | ||
105 | PINCTRL_PIN(83, "GPIO_83"), | ||
106 | PINCTRL_PIN(84, "GPIO_84"), | ||
107 | PINCTRL_PIN(85, "GPIO_85"), | ||
108 | PINCTRL_PIN(86, "GPIO_86"), | ||
109 | PINCTRL_PIN(87, "GPIO_87"), | ||
110 | PINCTRL_PIN(88, "GPIO_88"), | ||
111 | PINCTRL_PIN(89, "GPIO_89"), | ||
112 | PINCTRL_PIN(90, "GPIO_90"), | ||
113 | PINCTRL_PIN(91, "GPIO_91"), | ||
114 | PINCTRL_PIN(92, "GPIO_92"), | ||
115 | PINCTRL_PIN(93, "GPIO_93"), | ||
116 | PINCTRL_PIN(94, "GPIO_94"), | ||
117 | PINCTRL_PIN(95, "GPIO_95"), | ||
118 | PINCTRL_PIN(96, "GPIO_96"), | ||
119 | PINCTRL_PIN(97, "GPIO_97"), | ||
120 | PINCTRL_PIN(98, "GPIO_98"), | ||
121 | PINCTRL_PIN(99, "GPIO_99"), | ||
122 | PINCTRL_PIN(100, "GPIO_100"), | ||
123 | PINCTRL_PIN(101, "GPIO_101"), | ||
124 | PINCTRL_PIN(102, "GPIO_102"), | ||
125 | PINCTRL_PIN(103, "GPIO_103"), | ||
126 | PINCTRL_PIN(104, "GPIO_104"), | ||
127 | PINCTRL_PIN(105, "GPIO_105"), | ||
128 | PINCTRL_PIN(106, "GPIO_106"), | ||
129 | PINCTRL_PIN(107, "GPIO_107"), | ||
130 | PINCTRL_PIN(108, "GPIO_108"), | ||
131 | PINCTRL_PIN(109, "GPIO_109"), | ||
132 | PINCTRL_PIN(110, "GPIO_110"), | ||
133 | PINCTRL_PIN(111, "GPIO_111"), | ||
134 | PINCTRL_PIN(112, "GPIO_112"), | ||
135 | PINCTRL_PIN(113, "GPIO_113"), | ||
136 | PINCTRL_PIN(114, "GPIO_114"), | ||
137 | PINCTRL_PIN(115, "GPIO_115"), | ||
138 | PINCTRL_PIN(116, "GPIO_116"), | ||
139 | PINCTRL_PIN(117, "GPIO_117"), | ||
140 | PINCTRL_PIN(118, "GPIO_118"), | ||
141 | PINCTRL_PIN(119, "GPIO_119"), | ||
142 | PINCTRL_PIN(120, "GPIO_120"), | ||
143 | PINCTRL_PIN(121, "GPIO_121"), | ||
144 | PINCTRL_PIN(122, "GPIO_122"), | ||
145 | PINCTRL_PIN(123, "GPIO_123"), | ||
146 | PINCTRL_PIN(124, "GPIO_124"), | ||
147 | PINCTRL_PIN(125, "GPIO_125"), | ||
148 | PINCTRL_PIN(126, "GPIO_126"), | ||
149 | PINCTRL_PIN(127, "GPIO_127"), | ||
150 | PINCTRL_PIN(128, "GPIO_128"), | ||
151 | PINCTRL_PIN(129, "GPIO_129"), | ||
152 | PINCTRL_PIN(130, "GPIO_130"), | ||
153 | PINCTRL_PIN(131, "GPIO_131"), | ||
154 | PINCTRL_PIN(132, "GPIO_132"), | ||
155 | PINCTRL_PIN(133, "GPIO_133"), | ||
156 | PINCTRL_PIN(134, "GPIO_134"), | ||
157 | PINCTRL_PIN(135, "GPIO_135"), | ||
158 | PINCTRL_PIN(136, "GPIO_136"), | ||
159 | PINCTRL_PIN(137, "GPIO_137"), | ||
160 | PINCTRL_PIN(138, "GPIO_138"), | ||
161 | PINCTRL_PIN(139, "GPIO_139"), | ||
162 | PINCTRL_PIN(140, "GPIO_140"), | ||
163 | PINCTRL_PIN(141, "GPIO_141"), | ||
164 | PINCTRL_PIN(142, "GPIO_142"), | ||
165 | PINCTRL_PIN(143, "GPIO_143"), | ||
166 | PINCTRL_PIN(144, "GPIO_144"), | ||
167 | PINCTRL_PIN(145, "GPIO_145"), | ||
168 | PINCTRL_PIN(146, "GPIO_146"), | ||
169 | PINCTRL_PIN(147, "GPIO_147"), | ||
170 | PINCTRL_PIN(148, "GPIO_148"), | ||
171 | PINCTRL_PIN(149, "GPIO_149"), | ||
172 | PINCTRL_PIN(150, "GPIO_150"), | ||
173 | PINCTRL_PIN(151, "GPIO_151"), | ||
174 | PINCTRL_PIN(152, "GPIO_152"), | ||
175 | PINCTRL_PIN(153, "GPIO_153"), | ||
176 | PINCTRL_PIN(154, "GPIO_154"), | ||
177 | PINCTRL_PIN(155, "GPIO_155"), | ||
178 | PINCTRL_PIN(156, "GPIO_156"), | ||
179 | PINCTRL_PIN(157, "GPIO_157"), | ||
180 | PINCTRL_PIN(158, "GPIO_158"), | ||
181 | PINCTRL_PIN(159, "GPIO_159"), | ||
182 | PINCTRL_PIN(160, "GPIO_160"), | ||
183 | PINCTRL_PIN(161, "GPIO_161"), | ||
184 | PINCTRL_PIN(162, "GPIO_162"), | ||
185 | PINCTRL_PIN(163, "GPIO_163"), | ||
186 | PINCTRL_PIN(164, "GPIO_164"), | ||
187 | PINCTRL_PIN(165, "GPIO_165"), | ||
188 | PINCTRL_PIN(166, "GPIO_166"), | ||
189 | PINCTRL_PIN(167, "GPIO_167"), | ||
190 | PINCTRL_PIN(168, "GPIO_168"), | ||
191 | PINCTRL_PIN(169, "GPIO_169"), | ||
192 | PINCTRL_PIN(170, "GPIO_170"), | ||
193 | PINCTRL_PIN(171, "GPIO_171"), | ||
194 | PINCTRL_PIN(172, "GPIO_172"), | ||
195 | |||
196 | PINCTRL_PIN(173, "SDC1_CLK"), | ||
197 | PINCTRL_PIN(174, "SDC1_CMD"), | ||
198 | PINCTRL_PIN(175, "SDC1_DATA"), | ||
199 | PINCTRL_PIN(176, "SDC3_CLK"), | ||
200 | PINCTRL_PIN(177, "SDC3_CMD"), | ||
201 | PINCTRL_PIN(178, "SDC3_DATA"), | ||
202 | }; | ||
203 | |||
204 | #define DECLARE_MSM_GPIO_PIN(pin) static const unsigned int gpio##pin##_pins[] = { pin } | ||
205 | DECLARE_MSM_GPIO_PIN(0); | ||
206 | DECLARE_MSM_GPIO_PIN(1); | ||
207 | DECLARE_MSM_GPIO_PIN(2); | ||
208 | DECLARE_MSM_GPIO_PIN(3); | ||
209 | DECLARE_MSM_GPIO_PIN(4); | ||
210 | DECLARE_MSM_GPIO_PIN(5); | ||
211 | DECLARE_MSM_GPIO_PIN(6); | ||
212 | DECLARE_MSM_GPIO_PIN(7); | ||
213 | DECLARE_MSM_GPIO_PIN(8); | ||
214 | DECLARE_MSM_GPIO_PIN(9); | ||
215 | DECLARE_MSM_GPIO_PIN(10); | ||
216 | DECLARE_MSM_GPIO_PIN(11); | ||
217 | DECLARE_MSM_GPIO_PIN(12); | ||
218 | DECLARE_MSM_GPIO_PIN(13); | ||
219 | DECLARE_MSM_GPIO_PIN(14); | ||
220 | DECLARE_MSM_GPIO_PIN(15); | ||
221 | DECLARE_MSM_GPIO_PIN(16); | ||
222 | DECLARE_MSM_GPIO_PIN(17); | ||
223 | DECLARE_MSM_GPIO_PIN(18); | ||
224 | DECLARE_MSM_GPIO_PIN(19); | ||
225 | DECLARE_MSM_GPIO_PIN(20); | ||
226 | DECLARE_MSM_GPIO_PIN(21); | ||
227 | DECLARE_MSM_GPIO_PIN(22); | ||
228 | DECLARE_MSM_GPIO_PIN(23); | ||
229 | DECLARE_MSM_GPIO_PIN(24); | ||
230 | DECLARE_MSM_GPIO_PIN(25); | ||
231 | DECLARE_MSM_GPIO_PIN(26); | ||
232 | DECLARE_MSM_GPIO_PIN(27); | ||
233 | DECLARE_MSM_GPIO_PIN(28); | ||
234 | DECLARE_MSM_GPIO_PIN(29); | ||
235 | DECLARE_MSM_GPIO_PIN(30); | ||
236 | DECLARE_MSM_GPIO_PIN(31); | ||
237 | DECLARE_MSM_GPIO_PIN(32); | ||
238 | DECLARE_MSM_GPIO_PIN(33); | ||
239 | DECLARE_MSM_GPIO_PIN(34); | ||
240 | DECLARE_MSM_GPIO_PIN(35); | ||
241 | DECLARE_MSM_GPIO_PIN(36); | ||
242 | DECLARE_MSM_GPIO_PIN(37); | ||
243 | DECLARE_MSM_GPIO_PIN(38); | ||
244 | DECLARE_MSM_GPIO_PIN(39); | ||
245 | DECLARE_MSM_GPIO_PIN(40); | ||
246 | DECLARE_MSM_GPIO_PIN(41); | ||
247 | DECLARE_MSM_GPIO_PIN(42); | ||
248 | DECLARE_MSM_GPIO_PIN(43); | ||
249 | DECLARE_MSM_GPIO_PIN(44); | ||
250 | DECLARE_MSM_GPIO_PIN(45); | ||
251 | DECLARE_MSM_GPIO_PIN(46); | ||
252 | DECLARE_MSM_GPIO_PIN(47); | ||
253 | DECLARE_MSM_GPIO_PIN(48); | ||
254 | DECLARE_MSM_GPIO_PIN(49); | ||
255 | DECLARE_MSM_GPIO_PIN(50); | ||
256 | DECLARE_MSM_GPIO_PIN(51); | ||
257 | DECLARE_MSM_GPIO_PIN(52); | ||
258 | DECLARE_MSM_GPIO_PIN(53); | ||
259 | DECLARE_MSM_GPIO_PIN(54); | ||
260 | DECLARE_MSM_GPIO_PIN(55); | ||
261 | DECLARE_MSM_GPIO_PIN(56); | ||
262 | DECLARE_MSM_GPIO_PIN(57); | ||
263 | DECLARE_MSM_GPIO_PIN(58); | ||
264 | DECLARE_MSM_GPIO_PIN(59); | ||
265 | DECLARE_MSM_GPIO_PIN(60); | ||
266 | DECLARE_MSM_GPIO_PIN(61); | ||
267 | DECLARE_MSM_GPIO_PIN(62); | ||
268 | DECLARE_MSM_GPIO_PIN(63); | ||
269 | DECLARE_MSM_GPIO_PIN(64); | ||
270 | DECLARE_MSM_GPIO_PIN(65); | ||
271 | DECLARE_MSM_GPIO_PIN(66); | ||
272 | DECLARE_MSM_GPIO_PIN(67); | ||
273 | DECLARE_MSM_GPIO_PIN(68); | ||
274 | DECLARE_MSM_GPIO_PIN(69); | ||
275 | DECLARE_MSM_GPIO_PIN(70); | ||
276 | DECLARE_MSM_GPIO_PIN(71); | ||
277 | DECLARE_MSM_GPIO_PIN(72); | ||
278 | DECLARE_MSM_GPIO_PIN(73); | ||
279 | DECLARE_MSM_GPIO_PIN(74); | ||
280 | DECLARE_MSM_GPIO_PIN(75); | ||
281 | DECLARE_MSM_GPIO_PIN(76); | ||
282 | DECLARE_MSM_GPIO_PIN(77); | ||
283 | DECLARE_MSM_GPIO_PIN(78); | ||
284 | DECLARE_MSM_GPIO_PIN(79); | ||
285 | DECLARE_MSM_GPIO_PIN(80); | ||
286 | DECLARE_MSM_GPIO_PIN(81); | ||
287 | DECLARE_MSM_GPIO_PIN(82); | ||
288 | DECLARE_MSM_GPIO_PIN(83); | ||
289 | DECLARE_MSM_GPIO_PIN(84); | ||
290 | DECLARE_MSM_GPIO_PIN(85); | ||
291 | DECLARE_MSM_GPIO_PIN(86); | ||
292 | DECLARE_MSM_GPIO_PIN(87); | ||
293 | DECLARE_MSM_GPIO_PIN(88); | ||
294 | DECLARE_MSM_GPIO_PIN(89); | ||
295 | DECLARE_MSM_GPIO_PIN(90); | ||
296 | DECLARE_MSM_GPIO_PIN(91); | ||
297 | DECLARE_MSM_GPIO_PIN(92); | ||
298 | DECLARE_MSM_GPIO_PIN(93); | ||
299 | DECLARE_MSM_GPIO_PIN(94); | ||
300 | DECLARE_MSM_GPIO_PIN(95); | ||
301 | DECLARE_MSM_GPIO_PIN(96); | ||
302 | DECLARE_MSM_GPIO_PIN(97); | ||
303 | DECLARE_MSM_GPIO_PIN(98); | ||
304 | DECLARE_MSM_GPIO_PIN(99); | ||
305 | DECLARE_MSM_GPIO_PIN(100); | ||
306 | DECLARE_MSM_GPIO_PIN(101); | ||
307 | DECLARE_MSM_GPIO_PIN(102); | ||
308 | DECLARE_MSM_GPIO_PIN(103); | ||
309 | DECLARE_MSM_GPIO_PIN(104); | ||
310 | DECLARE_MSM_GPIO_PIN(105); | ||
311 | DECLARE_MSM_GPIO_PIN(106); | ||
312 | DECLARE_MSM_GPIO_PIN(107); | ||
313 | DECLARE_MSM_GPIO_PIN(108); | ||
314 | DECLARE_MSM_GPIO_PIN(109); | ||
315 | DECLARE_MSM_GPIO_PIN(110); | ||
316 | DECLARE_MSM_GPIO_PIN(111); | ||
317 | DECLARE_MSM_GPIO_PIN(112); | ||
318 | DECLARE_MSM_GPIO_PIN(113); | ||
319 | DECLARE_MSM_GPIO_PIN(114); | ||
320 | DECLARE_MSM_GPIO_PIN(115); | ||
321 | DECLARE_MSM_GPIO_PIN(116); | ||
322 | DECLARE_MSM_GPIO_PIN(117); | ||
323 | DECLARE_MSM_GPIO_PIN(118); | ||
324 | DECLARE_MSM_GPIO_PIN(119); | ||
325 | DECLARE_MSM_GPIO_PIN(120); | ||
326 | DECLARE_MSM_GPIO_PIN(121); | ||
327 | DECLARE_MSM_GPIO_PIN(122); | ||
328 | DECLARE_MSM_GPIO_PIN(123); | ||
329 | DECLARE_MSM_GPIO_PIN(124); | ||
330 | DECLARE_MSM_GPIO_PIN(125); | ||
331 | DECLARE_MSM_GPIO_PIN(126); | ||
332 | DECLARE_MSM_GPIO_PIN(127); | ||
333 | DECLARE_MSM_GPIO_PIN(128); | ||
334 | DECLARE_MSM_GPIO_PIN(129); | ||
335 | DECLARE_MSM_GPIO_PIN(130); | ||
336 | DECLARE_MSM_GPIO_PIN(131); | ||
337 | DECLARE_MSM_GPIO_PIN(132); | ||
338 | DECLARE_MSM_GPIO_PIN(133); | ||
339 | DECLARE_MSM_GPIO_PIN(134); | ||
340 | DECLARE_MSM_GPIO_PIN(135); | ||
341 | DECLARE_MSM_GPIO_PIN(136); | ||
342 | DECLARE_MSM_GPIO_PIN(137); | ||
343 | DECLARE_MSM_GPIO_PIN(138); | ||
344 | DECLARE_MSM_GPIO_PIN(139); | ||
345 | DECLARE_MSM_GPIO_PIN(140); | ||
346 | DECLARE_MSM_GPIO_PIN(141); | ||
347 | DECLARE_MSM_GPIO_PIN(142); | ||
348 | DECLARE_MSM_GPIO_PIN(143); | ||
349 | DECLARE_MSM_GPIO_PIN(144); | ||
350 | DECLARE_MSM_GPIO_PIN(145); | ||
351 | DECLARE_MSM_GPIO_PIN(146); | ||
352 | DECLARE_MSM_GPIO_PIN(147); | ||
353 | DECLARE_MSM_GPIO_PIN(148); | ||
354 | DECLARE_MSM_GPIO_PIN(149); | ||
355 | DECLARE_MSM_GPIO_PIN(150); | ||
356 | DECLARE_MSM_GPIO_PIN(151); | ||
357 | DECLARE_MSM_GPIO_PIN(152); | ||
358 | DECLARE_MSM_GPIO_PIN(153); | ||
359 | DECLARE_MSM_GPIO_PIN(154); | ||
360 | DECLARE_MSM_GPIO_PIN(155); | ||
361 | DECLARE_MSM_GPIO_PIN(156); | ||
362 | DECLARE_MSM_GPIO_PIN(157); | ||
363 | DECLARE_MSM_GPIO_PIN(158); | ||
364 | DECLARE_MSM_GPIO_PIN(159); | ||
365 | DECLARE_MSM_GPIO_PIN(160); | ||
366 | DECLARE_MSM_GPIO_PIN(161); | ||
367 | DECLARE_MSM_GPIO_PIN(162); | ||
368 | DECLARE_MSM_GPIO_PIN(163); | ||
369 | DECLARE_MSM_GPIO_PIN(164); | ||
370 | DECLARE_MSM_GPIO_PIN(165); | ||
371 | DECLARE_MSM_GPIO_PIN(166); | ||
372 | DECLARE_MSM_GPIO_PIN(167); | ||
373 | DECLARE_MSM_GPIO_PIN(168); | ||
374 | DECLARE_MSM_GPIO_PIN(169); | ||
375 | DECLARE_MSM_GPIO_PIN(170); | ||
376 | DECLARE_MSM_GPIO_PIN(171); | ||
377 | DECLARE_MSM_GPIO_PIN(172); | ||
378 | |||
379 | static const unsigned int sdc4_clk_pins[] = { 173 }; | ||
380 | static const unsigned int sdc4_cmd_pins[] = { 174 }; | ||
381 | static const unsigned int sdc4_data_pins[] = { 175 }; | ||
382 | static const unsigned int sdc3_clk_pins[] = { 176 }; | ||
383 | static const unsigned int sdc3_cmd_pins[] = { 177 }; | ||
384 | static const unsigned int sdc3_data_pins[] = { 178 }; | ||
385 | |||
386 | #define FUNCTION(fname) \ | ||
387 | [MSM_MUX_##fname] = { \ | ||
388 | .name = #fname, \ | ||
389 | .groups = fname##_groups, \ | ||
390 | .ngroups = ARRAY_SIZE(fname##_groups), \ | ||
391 | } | ||
392 | |||
393 | #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7) \ | ||
394 | { \ | ||
395 | .name = "gpio" #id, \ | ||
396 | .pins = gpio##id##_pins, \ | ||
397 | .npins = ARRAY_SIZE(gpio##id##_pins), \ | ||
398 | .funcs = (int[]){ \ | ||
399 | MSM_MUX_gpio, \ | ||
400 | MSM_MUX_##f1, \ | ||
401 | MSM_MUX_##f2, \ | ||
402 | MSM_MUX_##f3, \ | ||
403 | MSM_MUX_##f4, \ | ||
404 | MSM_MUX_##f5, \ | ||
405 | MSM_MUX_##f6, \ | ||
406 | MSM_MUX_##f7, \ | ||
407 | }, \ | ||
408 | .nfuncs = 8, \ | ||
409 | .ctl_reg = 0x1000 + 0x10 * id, \ | ||
410 | .io_reg = 0x1004 + 0x10 * id, \ | ||
411 | .intr_cfg_reg = 0x1008 + 0x10 * id, \ | ||
412 | .intr_status_reg = 0x100c + 0x10 * id, \ | ||
413 | .intr_target_reg = 0x400 + 0x4 * id, \ | ||
414 | .mux_bit = 2, \ | ||
415 | .pull_bit = 0, \ | ||
416 | .drv_bit = 6, \ | ||
417 | .oe_bit = 9, \ | ||
418 | .in_bit = 0, \ | ||
419 | .out_bit = 1, \ | ||
420 | .intr_enable_bit = 0, \ | ||
421 | .intr_status_bit = 0, \ | ||
422 | .intr_ack_high = 1, \ | ||
423 | .intr_target_bit = 0, \ | ||
424 | .intr_target_kpss_val = 4, \ | ||
425 | .intr_raw_status_bit = 3, \ | ||
426 | .intr_polarity_bit = 1, \ | ||
427 | .intr_detection_bit = 2, \ | ||
428 | .intr_detection_width = 1, \ | ||
429 | } | ||
430 | |||
431 | #define SDC_PINGROUP(pg_name, ctl, pull, drv) \ | ||
432 | { \ | ||
433 | .name = #pg_name, \ | ||
434 | .pins = pg_name##_pins, \ | ||
435 | .npins = ARRAY_SIZE(pg_name##_pins), \ | ||
436 | .ctl_reg = ctl, \ | ||
437 | .io_reg = 0, \ | ||
438 | .intr_cfg_reg = 0, \ | ||
439 | .intr_status_reg = 0, \ | ||
440 | .intr_target_reg = 0, \ | ||
441 | .mux_bit = -1, \ | ||
442 | .pull_bit = pull, \ | ||
443 | .drv_bit = drv, \ | ||
444 | .oe_bit = -1, \ | ||
445 | .in_bit = -1, \ | ||
446 | .out_bit = -1, \ | ||
447 | .intr_enable_bit = -1, \ | ||
448 | .intr_status_bit = -1, \ | ||
449 | .intr_target_bit = -1, \ | ||
450 | .intr_target_kpss_val = -1, \ | ||
451 | .intr_raw_status_bit = -1, \ | ||
452 | .intr_polarity_bit = -1, \ | ||
453 | .intr_detection_bit = -1, \ | ||
454 | .intr_detection_width = -1, \ | ||
455 | } | ||
456 | |||
457 | enum msm8660_functions { | ||
458 | MSM_MUX_gpio, | ||
459 | MSM_MUX_cam_mclk, | ||
460 | MSM_MUX_dsub, | ||
461 | MSM_MUX_ext_gps, | ||
462 | MSM_MUX_gp_clk_0a, | ||
463 | MSM_MUX_gp_clk_0b, | ||
464 | MSM_MUX_gp_clk_1a, | ||
465 | MSM_MUX_gp_clk_1b, | ||
466 | MSM_MUX_gp_clk_2a, | ||
467 | MSM_MUX_gp_clk_2b, | ||
468 | MSM_MUX_gp_mn, | ||
469 | MSM_MUX_gsbi1, | ||
470 | MSM_MUX_gsbi1_spi_cs1_n, | ||
471 | MSM_MUX_gsbi1_spi_cs2a_n, | ||
472 | MSM_MUX_gsbi1_spi_cs2b_n, | ||
473 | MSM_MUX_gsbi1_spi_cs3_n, | ||
474 | MSM_MUX_gsbi2, | ||
475 | MSM_MUX_gsbi2_spi_cs1_n, | ||
476 | MSM_MUX_gsbi2_spi_cs2_n, | ||
477 | MSM_MUX_gsbi2_spi_cs3_n, | ||
478 | MSM_MUX_gsbi3, | ||
479 | MSM_MUX_gsbi3_spi_cs1_n, | ||
480 | MSM_MUX_gsbi3_spi_cs2_n, | ||
481 | MSM_MUX_gsbi3_spi_cs3_n, | ||
482 | MSM_MUX_gsbi4, | ||
483 | MSM_MUX_gsbi5, | ||
484 | MSM_MUX_gsbi6, | ||
485 | MSM_MUX_gsbi7, | ||
486 | MSM_MUX_gsbi8, | ||
487 | MSM_MUX_gsbi9, | ||
488 | MSM_MUX_gsbi10, | ||
489 | MSM_MUX_gsbi11, | ||
490 | MSM_MUX_gsbi12, | ||
491 | MSM_MUX_hdmi, | ||
492 | MSM_MUX_i2s, | ||
493 | MSM_MUX_lcdc, | ||
494 | MSM_MUX_mdp_vsync, | ||
495 | MSM_MUX_mi2s, | ||
496 | MSM_MUX_pcm, | ||
497 | MSM_MUX_ps_hold, | ||
498 | MSM_MUX_sdc1, | ||
499 | MSM_MUX_sdc2, | ||
500 | MSM_MUX_sdc5, | ||
501 | MSM_MUX_tsif1, | ||
502 | MSM_MUX_tsif2, | ||
503 | MSM_MUX_usb_fs1, | ||
504 | MSM_MUX_usb_fs1_oe_n, | ||
505 | MSM_MUX_usb_fs2, | ||
506 | MSM_MUX_usb_fs2_oe_n, | ||
507 | MSM_MUX_vfe, | ||
508 | MSM_MUX_vsens_alarm, | ||
509 | MSM_MUX__, | ||
510 | }; | ||
511 | |||
512 | static const char * const gpio_groups[] = { | ||
513 | "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", | ||
514 | "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", | ||
515 | "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", | ||
516 | "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", | ||
517 | "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", | ||
518 | "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42", | ||
519 | "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49", | ||
520 | "gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56", | ||
521 | "gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63", | ||
522 | "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70", | ||
523 | "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77", | ||
524 | "gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84", | ||
525 | "gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91", | ||
526 | "gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98", | ||
527 | "gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104", | ||
528 | "gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110", | ||
529 | "gpio111", "gpio112", "gpio113", "gpio114", "gpio115", "gpio116", | ||
530 | "gpio117", "gpio118", "gpio119", "gpio120", "gpio121", "gpio122", | ||
531 | "gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128", | ||
532 | "gpio129", "gpio130", "gpio131", "gpio132", "gpio133", "gpio134", | ||
533 | "gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140", | ||
534 | "gpio141", "gpio142", "gpio143", "gpio144", "gpio145", "gpio146", | ||
535 | "gpio147", "gpio148", "gpio149", "gpio150", "gpio151", "gpio152", | ||
536 | "gpio153", "gpio154", "gpio155", "gpio156", "gpio157", "gpio158", | ||
537 | "gpio159", "gpio160", "gpio161", "gpio162", "gpio163", "gpio164", | ||
538 | "gpio165", "gpio166", "gpio167", "gpio168", "gpio169", "gpio170", | ||
539 | "gpio171", "gpio172" | ||
540 | }; | ||
541 | |||
542 | static const char * const cam_mclk_groups[] = { | ||
543 | "gpio32" | ||
544 | }; | ||
545 | static const char * const dsub_groups[] = { | ||
546 | "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", | ||
547 | "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", | ||
548 | "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", | ||
549 | "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27" | ||
550 | }; | ||
551 | static const char * const ext_gps_groups[] = { | ||
552 | "gpio66", "gpio67", "gpio68", "gpio69" | ||
553 | }; | ||
554 | static const char * const gp_clk_0a_groups[] = { | ||
555 | "gpio30" | ||
556 | }; | ||
557 | static const char * const gp_clk_0b_groups[] = { | ||
558 | "gpio115" | ||
559 | }; | ||
560 | static const char * const gp_clk_1a_groups[] = { | ||
561 | "gpio31" | ||
562 | }; | ||
563 | static const char * const gp_clk_1b_groups[] = { | ||
564 | "gpio122" | ||
565 | }; | ||
566 | static const char * const gp_clk_2a_groups[] = { | ||
567 | "gpio103" | ||
568 | }; | ||
569 | static const char * const gp_clk_2b_groups[] = { | ||
570 | "gpio70" | ||
571 | }; | ||
572 | static const char * const gp_mn_groups[] = { | ||
573 | "gpio29" | ||
574 | }; | ||
575 | static const char * const gsbi1_groups[] = { | ||
576 | "gpio33", "gpio34", "gpio35", "gpio36" | ||
577 | }; | ||
578 | static const char * const gsbi1_spi_cs1_n_groups[] = { | ||
579 | }; | ||
580 | static const char * const gsbi1_spi_cs2a_n_groups[] = { | ||
581 | }; | ||
582 | static const char * const gsbi1_spi_cs2b_n_groups[] = { | ||
583 | }; | ||
584 | static const char * const gsbi1_spi_cs3_n_groups[] = { | ||
585 | }; | ||
586 | static const char * const gsbi2_groups[] = { | ||
587 | "gpio37", "gpio38", "gpio39", "gpio40" | ||
588 | }; | ||
589 | static const char * const gsbi2_spi_cs1_n_groups[] = { | ||
590 | "gpio123" | ||
591 | }; | ||
592 | static const char * const gsbi2_spi_cs2_n_groups[] = { | ||
593 | "gpio124" | ||
594 | }; | ||
595 | static const char * const gsbi2_spi_cs3_n_groups[] = { | ||
596 | "gpio125" | ||
597 | }; | ||
598 | static const char * const gsbi3_groups[] = { | ||
599 | "gpio41", "gpio42", "gpio43", "gpio44" | ||
600 | }; | ||
601 | static const char * const gsbi3_spi_cs1_n_groups[] = { | ||
602 | "gpio62" | ||
603 | }; | ||
604 | static const char * const gsbi3_spi_cs2_n_groups[] = { | ||
605 | "gpio45" | ||
606 | }; | ||
607 | static const char * const gsbi3_spi_cs3_n_groups[] = { | ||
608 | "gpio46" | ||
609 | }; | ||
610 | static const char * const gsbi4_groups[] = { | ||
611 | "gpio45", "gpio56", "gpio47", "gpio48" | ||
612 | }; | ||
613 | static const char * const gsbi5_groups[] = { | ||
614 | "gpio49", "gpio50", "gpio51", "gpio52" | ||
615 | }; | ||
616 | static const char * const gsbi6_groups[] = { | ||
617 | "gpio53", "gpio54", "gpio55", "gpio56" | ||
618 | }; | ||
619 | static const char * const gsbi7_groups[] = { | ||
620 | "gpio57", "gpio58", "gpio59", "gpio60" | ||
621 | }; | ||
622 | static const char * const gsbi8_groups[] = { | ||
623 | "gpio62", "gpio63", "gpio64", "gpio65" | ||
624 | }; | ||
625 | static const char * const gsbi9_groups[] = { | ||
626 | "gpio66", "gpio67", "gpio68", "gpio69" | ||
627 | }; | ||
628 | static const char * const gsbi10_groups[] = { | ||
629 | "gpio70", "gpio71", "gpio72", "gpio73" | ||
630 | }; | ||
631 | static const char * const gsbi11_groups[] = { | ||
632 | "gpio103", "gpio104", "gpio105", "gpio106" | ||
633 | }; | ||
634 | static const char * const gsbi12_groups[] = { | ||
635 | "gpio115", "gpio116", "gpio117", "gpio118" | ||
636 | }; | ||
637 | static const char * const hdmi_groups[] = { | ||
638 | "gpio169", "gpio170", "gpio171", "gpio172" | ||
639 | }; | ||
640 | static const char * const i2s_groups[] = { | ||
641 | "gpio108", "gpio109", "gpio110", "gpio115", "gpio116", "gpio117", | ||
642 | "gpio118", "gpio119", "gpio120", "gpio121", "gpio122" | ||
643 | }; | ||
644 | static const char * const lcdc_groups[] = { | ||
645 | "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", | ||
646 | "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", | ||
647 | "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", | ||
648 | "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27" | ||
649 | }; | ||
650 | static const char * const mdp_vsync_groups[] = { | ||
651 | "gpio28", "gpio39", "gpio41" | ||
652 | }; | ||
653 | static const char * const mi2s_groups[] = { | ||
654 | "gpio101", "gpio102", "gpio103", "gpio104", "gpio105", "gpio106", | ||
655 | "gpio107" | ||
656 | }; | ||
657 | static const char * const pcm_groups[] = { | ||
658 | "gpio111", "gpio112", "gpio113", "gpio114" | ||
659 | }; | ||
660 | static const char * const ps_hold_groups[] = { | ||
661 | "gpio92" | ||
662 | }; | ||
663 | static const char * const sdc1_groups[] = { | ||
664 | "gpio159", "gpio160", "gpio161", "gpio162", "gpio163", "gpio164", | ||
665 | "gpio165", "gpio166", "gpio167", "gpio168" | ||
666 | }; | ||
667 | static const char * const sdc2_groups[] = { | ||
668 | "gpio143", "gpio144", "gpio145", "gpio146", "gpio147", "gpio148", | ||
669 | "gpio149", "gpio150", "gpio151", "gpio152" | ||
670 | }; | ||
671 | static const char * const sdc5_groups[] = { | ||
672 | "gpio95", "gpio96", "gpio97", "gpio98", "gpio99", "gpio100" | ||
673 | }; | ||
674 | static const char * const tsif1_groups[] = { | ||
675 | "gpio93", "gpio94", "gpio95", "gpio96" | ||
676 | }; | ||
677 | static const char * const tsif2_groups[] = { | ||
678 | "gpio97", "gpio98", "gpio99", "gpio100" | ||
679 | }; | ||
680 | static const char * const usb_fs1_groups[] = { | ||
681 | "gpio49", "gpio50", "gpio51" | ||
682 | }; | ||
683 | static const char * const usb_fs1_oe_n_groups[] = { | ||
684 | "gpio51" | ||
685 | }; | ||
686 | static const char * const usb_fs2_groups[] = { | ||
687 | "gpio71", "gpio72", "gpio73" | ||
688 | }; | ||
689 | static const char * const usb_fs2_oe_n_groups[] = { | ||
690 | "gpio73" | ||
691 | }; | ||
692 | static const char * const vfe_groups[] = { | ||
693 | "gpio29", "gpio30", "gpio31", "gpio42", "gpio46", "gpio105", "gpio106", | ||
694 | "gpio117" | ||
695 | }; | ||
696 | static const char * const vsens_alarm_groups[] = { | ||
697 | "gpio127" | ||
698 | }; | ||
699 | |||
700 | static const struct msm_function msm8660_functions[] = { | ||
701 | FUNCTION(gpio), | ||
702 | FUNCTION(cam_mclk), | ||
703 | FUNCTION(dsub), | ||
704 | FUNCTION(ext_gps), | ||
705 | FUNCTION(gp_clk_0a), | ||
706 | FUNCTION(gp_clk_0b), | ||
707 | FUNCTION(gp_clk_1a), | ||
708 | FUNCTION(gp_clk_1b), | ||
709 | FUNCTION(gp_clk_2a), | ||
710 | FUNCTION(gp_clk_2b), | ||
711 | FUNCTION(gp_mn), | ||
712 | FUNCTION(gsbi1), | ||
713 | FUNCTION(gsbi1_spi_cs1_n), | ||
714 | FUNCTION(gsbi1_spi_cs2a_n), | ||
715 | FUNCTION(gsbi1_spi_cs2b_n), | ||
716 | FUNCTION(gsbi1_spi_cs3_n), | ||
717 | FUNCTION(gsbi2), | ||
718 | FUNCTION(gsbi2_spi_cs1_n), | ||
719 | FUNCTION(gsbi2_spi_cs2_n), | ||
720 | FUNCTION(gsbi2_spi_cs3_n), | ||
721 | FUNCTION(gsbi3), | ||
722 | FUNCTION(gsbi3_spi_cs1_n), | ||
723 | FUNCTION(gsbi3_spi_cs2_n), | ||
724 | FUNCTION(gsbi3_spi_cs3_n), | ||
725 | FUNCTION(gsbi4), | ||
726 | FUNCTION(gsbi5), | ||
727 | FUNCTION(gsbi6), | ||
728 | FUNCTION(gsbi7), | ||
729 | FUNCTION(gsbi8), | ||
730 | FUNCTION(gsbi9), | ||
731 | FUNCTION(gsbi10), | ||
732 | FUNCTION(gsbi11), | ||
733 | FUNCTION(gsbi12), | ||
734 | FUNCTION(hdmi), | ||
735 | FUNCTION(i2s), | ||
736 | FUNCTION(lcdc), | ||
737 | FUNCTION(mdp_vsync), | ||
738 | FUNCTION(mi2s), | ||
739 | FUNCTION(pcm), | ||
740 | FUNCTION(ps_hold), | ||
741 | FUNCTION(sdc1), | ||
742 | FUNCTION(sdc2), | ||
743 | FUNCTION(sdc5), | ||
744 | FUNCTION(tsif1), | ||
745 | FUNCTION(tsif2), | ||
746 | FUNCTION(usb_fs1), | ||
747 | FUNCTION(usb_fs1_oe_n), | ||
748 | FUNCTION(usb_fs2), | ||
749 | FUNCTION(usb_fs2_oe_n), | ||
750 | FUNCTION(vfe), | ||
751 | FUNCTION(vsens_alarm), | ||
752 | }; | ||
753 | |||
754 | static const struct msm_pingroup msm8660_groups[] = { | ||
755 | PINGROUP(0, lcdc, dsub, _, _, _, _, _), | ||
756 | PINGROUP(1, lcdc, dsub, _, _, _, _, _), | ||
757 | PINGROUP(2, lcdc, dsub, _, _, _, _, _), | ||
758 | PINGROUP(3, lcdc, dsub, _, _, _, _, _), | ||
759 | PINGROUP(4, lcdc, dsub, _, _, _, _, _), | ||
760 | PINGROUP(5, lcdc, dsub, _, _, _, _, _), | ||
761 | PINGROUP(6, lcdc, dsub, _, _, _, _, _), | ||
762 | PINGROUP(7, lcdc, dsub, _, _, _, _, _), | ||
763 | PINGROUP(8, lcdc, dsub, _, _, _, _, _), | ||
764 | PINGROUP(9, lcdc, dsub, _, _, _, _, _), | ||
765 | PINGROUP(10, lcdc, dsub, _, _, _, _, _), | ||
766 | PINGROUP(11, lcdc, dsub, _, _, _, _, _), | ||
767 | PINGROUP(12, lcdc, dsub, _, _, _, _, _), | ||
768 | PINGROUP(13, lcdc, dsub, _, _, _, _, _), | ||
769 | PINGROUP(14, lcdc, dsub, _, _, _, _, _), | ||
770 | PINGROUP(15, lcdc, dsub, _, _, _, _, _), | ||
771 | PINGROUP(16, lcdc, dsub, _, _, _, _, _), | ||
772 | PINGROUP(17, lcdc, dsub, _, _, _, _, _), | ||
773 | PINGROUP(18, lcdc, dsub, _, _, _, _, _), | ||
774 | PINGROUP(19, lcdc, dsub, _, _, _, _, _), | ||
775 | PINGROUP(20, lcdc, dsub, _, _, _, _, _), | ||
776 | PINGROUP(21, lcdc, dsub, _, _, _, _, _), | ||
777 | PINGROUP(22, lcdc, dsub, _, _, _, _, _), | ||
778 | PINGROUP(23, lcdc, dsub, _, _, _, _, _), | ||
779 | PINGROUP(24, lcdc, dsub, _, _, _, _, _), | ||
780 | PINGROUP(25, lcdc, dsub, _, _, _, _, _), | ||
781 | PINGROUP(26, lcdc, dsub, _, _, _, _, _), | ||
782 | PINGROUP(27, lcdc, dsub, _, _, _, _, _), | ||
783 | PINGROUP(28, mdp_vsync, _, _, _, _, _, _), | ||
784 | PINGROUP(29, vfe, gp_mn, _, _, _, _, _), | ||
785 | PINGROUP(30, vfe, gp_clk_0a, _, _, _, _, _), | ||
786 | PINGROUP(31, vfe, gp_clk_1a, _, _, _, _, _), | ||
787 | PINGROUP(32, cam_mclk, _, _, _, _, _, _), | ||
788 | PINGROUP(33, gsbi1, _, _, _, _, _, _), | ||
789 | PINGROUP(34, gsbi1, _, _, _, _, _, _), | ||
790 | PINGROUP(35, gsbi1, _, _, _, _, _, _), | ||
791 | PINGROUP(36, gsbi1, _, _, _, _, _, _), | ||
792 | PINGROUP(37, gsbi2, _, _, _, _, _, _), | ||
793 | PINGROUP(38, gsbi2, _, _, _, _, _, _), | ||
794 | PINGROUP(39, gsbi2, _, mdp_vsync, _, _, _, _), | ||
795 | PINGROUP(40, gsbi2, _, _, _, _, _, _), | ||
796 | PINGROUP(41, gsbi3, mdp_vsync, _, _, _, _, _), | ||
797 | PINGROUP(42, gsbi3, vfe, _, _, _, _, _), | ||
798 | PINGROUP(43, gsbi3, _, _, _, _, _, _), | ||
799 | PINGROUP(44, gsbi3, _, _, _, _, _, _), | ||
800 | PINGROUP(45, gsbi4, gsbi3_spi_cs2_n, _, _, _, _, _), | ||
801 | PINGROUP(46, gsbi4, gsbi3_spi_cs3_n, vfe, _, _, _, _), | ||
802 | PINGROUP(47, gsbi4, _, _, _, _, _, _), | ||
803 | PINGROUP(48, gsbi4, _, _, _, _, _, _), | ||
804 | PINGROUP(49, gsbi5, usb_fs1, _, _, _, _, _), | ||
805 | PINGROUP(50, gsbi5, usb_fs1, _, _, _, _, _), | ||
806 | PINGROUP(51, gsbi5, usb_fs1, usb_fs1_oe_n, _, _, _, _), | ||
807 | PINGROUP(52, gsbi5, _, _, _, _, _, _), | ||
808 | PINGROUP(53, gsbi6, _, _, _, _, _, _), | ||
809 | PINGROUP(54, gsbi6, _, _, _, _, _, _), | ||
810 | PINGROUP(55, gsbi6, _, _, _, _, _, _), | ||
811 | PINGROUP(56, gsbi6, _, _, _, _, _, _), | ||
812 | PINGROUP(57, gsbi7, _, _, _, _, _, _), | ||
813 | PINGROUP(58, gsbi7, _, _, _, _, _, _), | ||
814 | PINGROUP(59, gsbi7, _, _, _, _, _, _), | ||
815 | PINGROUP(60, gsbi7, _, _, _, _, _, _), | ||
816 | PINGROUP(61, _, _, _, _, _, _, _), | ||
817 | PINGROUP(62, gsbi8, gsbi3_spi_cs1_n, gsbi1_spi_cs2a_n, _, _, _, _), | ||
818 | PINGROUP(63, gsbi8, gsbi1_spi_cs1_n, _, _, _, _, _), | ||
819 | PINGROUP(64, gsbi8, gsbi1_spi_cs2b_n, _, _, _, _, _), | ||
820 | PINGROUP(65, gsbi8, gsbi1_spi_cs3_n, _, _, _, _, _), | ||
821 | PINGROUP(66, gsbi9, ext_gps, _, _, _, _, _), | ||
822 | PINGROUP(67, gsbi9, ext_gps, _, _, _, _, _), | ||
823 | PINGROUP(68, gsbi9, ext_gps, _, _, _, _, _), | ||
824 | PINGROUP(69, gsbi9, ext_gps, _, _, _, _, _), | ||
825 | PINGROUP(70, gsbi10, gp_clk_2b, _, _, _, _, _), | ||
826 | PINGROUP(71, gsbi10, usb_fs2, _, _, _, _, _), | ||
827 | PINGROUP(72, gsbi10, usb_fs2, _, _, _, _, _), | ||
828 | PINGROUP(73, gsbi10, usb_fs2, usb_fs2_oe_n, _, _, _, _), | ||
829 | PINGROUP(74, _, _, _, _, _, _, _), | ||
830 | PINGROUP(75, _, _, _, _, _, _, _), | ||
831 | PINGROUP(76, _, _, _, _, _, _, _), | ||
832 | PINGROUP(77, _, _, _, _, _, _, _), | ||
833 | PINGROUP(78, _, _, _, _, _, _, _), | ||
834 | PINGROUP(79, _, _, _, _, _, _, _), | ||
835 | PINGROUP(80, _, _, _, _, _, _, _), | ||
836 | PINGROUP(81, _, _, _, _, _, _, _), | ||
837 | PINGROUP(82, _, _, _, _, _, _, _), | ||
838 | PINGROUP(83, _, _, _, _, _, _, _), | ||
839 | PINGROUP(84, _, _, _, _, _, _, _), | ||
840 | PINGROUP(85, _, _, _, _, _, _, _), | ||
841 | PINGROUP(86, _, _, _, _, _, _, _), | ||
842 | PINGROUP(87, _, _, _, _, _, _, _), | ||
843 | PINGROUP(88, _, _, _, _, _, _, _), | ||
844 | PINGROUP(89, _, _, _, _, _, _, _), | ||
845 | PINGROUP(90, _, _, _, _, _, _, _), | ||
846 | PINGROUP(91, _, _, _, _, _, _, _), | ||
847 | PINGROUP(92, ps_hold, _, _, _, _, _, _), | ||
848 | PINGROUP(93, tsif1, _, _, _, _, _, _), | ||
849 | PINGROUP(94, tsif1, _, _, _, _, _, _), | ||
850 | PINGROUP(95, tsif1, sdc5, _, _, _, _, _), | ||
851 | PINGROUP(96, tsif1, sdc5, _, _, _, _, _), | ||
852 | PINGROUP(97, tsif2, sdc5, _, _, _, _, _), | ||
853 | PINGROUP(98, tsif2, sdc5, _, _, _, _, _), | ||
854 | PINGROUP(99, tsif2, sdc5, _, _, _, _, _), | ||
855 | PINGROUP(100, tsif2, sdc5, _, _, _, _, _), | ||
856 | PINGROUP(101, mi2s, _, _, _, _, _, _), | ||
857 | PINGROUP(102, mi2s, _, _, _, _, _, _), | ||
858 | PINGROUP(103, mi2s, gsbi11, gp_clk_2a, _, _, _, _), | ||
859 | PINGROUP(104, mi2s, gsbi11, _, _, _, _, _), | ||
860 | PINGROUP(105, mi2s, gsbi11, vfe, _, _, _, _), | ||
861 | PINGROUP(106, mi2s, gsbi11, vfe, _, _, _, _), | ||
862 | PINGROUP(107, mi2s, _, _, _, _, _, _), | ||
863 | PINGROUP(108, i2s, _, _, _, _, _, _), | ||
864 | PINGROUP(109, i2s, _, _, _, _, _, _), | ||
865 | PINGROUP(110, i2s, _, _, _, _, _, _), | ||
866 | PINGROUP(111, pcm, _, _, _, _, _, _), | ||
867 | PINGROUP(112, pcm, _, _, _, _, _, _), | ||
868 | PINGROUP(113, pcm, _, _, _, _, _, _), | ||
869 | PINGROUP(114, pcm, _, _, _, _, _, _), | ||
870 | PINGROUP(115, i2s, gsbi12, gp_clk_0b, _, _, _, _), | ||
871 | PINGROUP(116, i2s, gsbi12, _, _, _, _, _), | ||
872 | PINGROUP(117, i2s, gsbi12, vfe, _, _, _, _), | ||
873 | PINGROUP(118, i2s, gsbi12, _, _, _, _, _), | ||
874 | PINGROUP(119, i2s, _, _, _, _, _, _), | ||
875 | PINGROUP(120, i2s, _, _, _, _, _, _), | ||
876 | PINGROUP(121, i2s, _, _, _, _, _, _), | ||
877 | PINGROUP(122, i2s, gp_clk_1b, _, _, _, _, _), | ||
878 | PINGROUP(123, _, gsbi2_spi_cs1_n, _, _, _, _, _), | ||
879 | PINGROUP(124, _, gsbi2_spi_cs2_n, _, _, _, _, _), | ||
880 | PINGROUP(125, _, gsbi2_spi_cs3_n, _, _, _, _, _), | ||
881 | PINGROUP(126, _, _, _, _, _, _, _), | ||
882 | PINGROUP(127, _, vsens_alarm, _, _, _, _, _), | ||
883 | PINGROUP(128, _, _, _, _, _, _, _), | ||
884 | PINGROUP(129, _, _, _, _, _, _, _), | ||
885 | PINGROUP(130, _, _, _, _, _, _, _), | ||
886 | PINGROUP(131, _, _, _, _, _, _, _), | ||
887 | PINGROUP(132, _, _, _, _, _, _, _), | ||
888 | PINGROUP(133, _, _, _, _, _, _, _), | ||
889 | PINGROUP(134, _, _, _, _, _, _, _), | ||
890 | PINGROUP(135, _, _, _, _, _, _, _), | ||
891 | PINGROUP(136, _, _, _, _, _, _, _), | ||
892 | PINGROUP(137, _, _, _, _, _, _, _), | ||
893 | PINGROUP(138, _, _, _, _, _, _, _), | ||
894 | PINGROUP(139, _, _, _, _, _, _, _), | ||
895 | PINGROUP(140, _, _, _, _, _, _, _), | ||
896 | PINGROUP(141, _, _, _, _, _, _, _), | ||
897 | PINGROUP(142, _, _, _, _, _, _, _), | ||
898 | PINGROUP(143, _, sdc2, _, _, _, _, _), | ||
899 | PINGROUP(144, _, sdc2, _, _, _, _, _), | ||
900 | PINGROUP(145, _, sdc2, _, _, _, _, _), | ||
901 | PINGROUP(146, _, sdc2, _, _, _, _, _), | ||
902 | PINGROUP(147, _, sdc2, _, _, _, _, _), | ||
903 | PINGROUP(148, _, sdc2, _, _, _, _, _), | ||
904 | PINGROUP(149, _, sdc2, _, _, _, _, _), | ||
905 | PINGROUP(150, _, sdc2, _, _, _, _, _), | ||
906 | PINGROUP(151, _, sdc2, _, _, _, _, _), | ||
907 | PINGROUP(152, _, sdc2, _, _, _, _, _), | ||
908 | PINGROUP(153, _, _, _, _, _, _, _), | ||
909 | PINGROUP(154, _, _, _, _, _, _, _), | ||
910 | PINGROUP(155, _, _, _, _, _, _, _), | ||
911 | PINGROUP(156, _, _, _, _, _, _, _), | ||
912 | PINGROUP(157, _, _, _, _, _, _, _), | ||
913 | PINGROUP(158, _, _, _, _, _, _, _), | ||
914 | PINGROUP(159, sdc1, _, _, _, _, _, _), | ||
915 | PINGROUP(160, sdc1, _, _, _, _, _, _), | ||
916 | PINGROUP(161, sdc1, _, _, _, _, _, _), | ||
917 | PINGROUP(162, sdc1, _, _, _, _, _, _), | ||
918 | PINGROUP(163, sdc1, _, _, _, _, _, _), | ||
919 | PINGROUP(164, sdc1, _, _, _, _, _, _), | ||
920 | PINGROUP(165, sdc1, _, _, _, _, _, _), | ||
921 | PINGROUP(166, sdc1, _, _, _, _, _, _), | ||
922 | PINGROUP(167, sdc1, _, _, _, _, _, _), | ||
923 | PINGROUP(168, sdc1, _, _, _, _, _, _), | ||
924 | PINGROUP(169, hdmi, _, _, _, _, _, _), | ||
925 | PINGROUP(170, hdmi, _, _, _, _, _, _), | ||
926 | PINGROUP(171, hdmi, _, _, _, _, _, _), | ||
927 | PINGROUP(172, hdmi, _, _, _, _, _, _), | ||
928 | |||
929 | SDC_PINGROUP(sdc4_clk, 0x20a0, -1, 6), | ||
930 | SDC_PINGROUP(sdc4_cmd, 0x20a0, 11, 3), | ||
931 | SDC_PINGROUP(sdc4_data, 0x20a0, 9, 0), | ||
932 | |||
933 | SDC_PINGROUP(sdc3_clk, 0x20a4, -1, 6), | ||
934 | SDC_PINGROUP(sdc3_cmd, 0x20a4, 11, 3), | ||
935 | SDC_PINGROUP(sdc3_data, 0x20a4, 9, 0), | ||
936 | }; | ||
937 | |||
938 | #define NUM_GPIO_PINGROUPS 173 | ||
939 | |||
940 | static const struct msm_pinctrl_soc_data msm8660_pinctrl = { | ||
941 | .pins = msm8660_pins, | ||
942 | .npins = ARRAY_SIZE(msm8660_pins), | ||
943 | .functions = msm8660_functions, | ||
944 | .nfunctions = ARRAY_SIZE(msm8660_functions), | ||
945 | .groups = msm8660_groups, | ||
946 | .ngroups = ARRAY_SIZE(msm8660_groups), | ||
947 | .ngpios = NUM_GPIO_PINGROUPS, | ||
948 | }; | ||
949 | |||
950 | static int msm8660_pinctrl_probe(struct platform_device *pdev) | ||
951 | { | ||
952 | return msm_pinctrl_probe(pdev, &msm8660_pinctrl); | ||
953 | } | ||
954 | |||
955 | static const struct of_device_id msm8660_pinctrl_of_match[] = { | ||
956 | { .compatible = "qcom,msm8660-pinctrl", }, | ||
957 | { }, | ||
958 | }; | ||
959 | |||
960 | static struct platform_driver msm8660_pinctrl_driver = { | ||
961 | .driver = { | ||
962 | .name = "msm8660-pinctrl", | ||
963 | .of_match_table = msm8660_pinctrl_of_match, | ||
964 | }, | ||
965 | .probe = msm8660_pinctrl_probe, | ||
966 | .remove = msm_pinctrl_remove, | ||
967 | }; | ||
968 | |||
969 | static int __init msm8660_pinctrl_init(void) | ||
970 | { | ||
971 | return platform_driver_register(&msm8660_pinctrl_driver); | ||
972 | } | ||
973 | arch_initcall(msm8660_pinctrl_init); | ||
974 | |||
975 | static void __exit msm8660_pinctrl_exit(void) | ||
976 | { | ||
977 | platform_driver_unregister(&msm8660_pinctrl_driver); | ||
978 | } | ||
979 | module_exit(msm8660_pinctrl_exit); | ||
980 | |||
981 | MODULE_AUTHOR("Bjorn Andersson <bjorn.andersson@sonymobile.com>"); | ||
982 | MODULE_DESCRIPTION("Qualcomm MSM8660 pinctrl driver"); | ||
983 | MODULE_LICENSE("GPL v2"); | ||
984 | MODULE_DEVICE_TABLE(of, msm8660_pinctrl_of_match); | ||
diff --git a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c index ae4115e4b4ef..bd1e24598e12 100644 --- a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +++ b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | |||
@@ -778,8 +778,8 @@ static int pmic_gpio_probe(struct platform_device *pdev) | |||
778 | state->chip.can_sleep = false; | 778 | state->chip.can_sleep = false; |
779 | 779 | ||
780 | state->ctrl = pinctrl_register(pctrldesc, dev, state); | 780 | state->ctrl = pinctrl_register(pctrldesc, dev, state); |
781 | if (!state->ctrl) | 781 | if (IS_ERR(state->ctrl)) |
782 | return -ENODEV; | 782 | return PTR_ERR(state->ctrl); |
783 | 783 | ||
784 | ret = gpiochip_add(&state->chip); | 784 | ret = gpiochip_add(&state->chip); |
785 | if (ret) { | 785 | if (ret) { |
diff --git a/drivers/pinctrl/qcom/pinctrl-spmi-mpp.c b/drivers/pinctrl/qcom/pinctrl-spmi-mpp.c index 211b942ad6d5..3121de9b6331 100644 --- a/drivers/pinctrl/qcom/pinctrl-spmi-mpp.c +++ b/drivers/pinctrl/qcom/pinctrl-spmi-mpp.c | |||
@@ -892,8 +892,8 @@ static int pmic_mpp_probe(struct platform_device *pdev) | |||
892 | state->chip.can_sleep = false; | 892 | state->chip.can_sleep = false; |
893 | 893 | ||
894 | state->ctrl = pinctrl_register(pctrldesc, dev, state); | 894 | state->ctrl = pinctrl_register(pctrldesc, dev, state); |
895 | if (!state->ctrl) | 895 | if (IS_ERR(state->ctrl)) |
896 | return -ENODEV; | 896 | return PTR_ERR(state->ctrl); |
897 | 897 | ||
898 | ret = gpiochip_add(&state->chip); | 898 | ret = gpiochip_add(&state->chip); |
899 | if (ret) { | 899 | if (ret) { |
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c index 86192be3b679..f5619fb50447 100644 --- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c +++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c | |||
@@ -822,9 +822,9 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev, | |||
822 | return ret; | 822 | return ret; |
823 | 823 | ||
824 | pctl_dev = pinctrl_register(ctrldesc, &pdev->dev, priv); | 824 | pctl_dev = pinctrl_register(ctrldesc, &pdev->dev, priv); |
825 | if (!pctl_dev) { | 825 | if (IS_ERR(pctl_dev)) { |
826 | dev_err(&pdev->dev, "could not register pinctrl driver\n"); | 826 | dev_err(&pdev->dev, "could not register pinctrl driver\n"); |
827 | return -EINVAL; | 827 | return PTR_ERR(pctl_dev); |
828 | } | 828 | } |
829 | 829 | ||
830 | grange.name = "exynos5440-pctrl-gpio-range"; | 830 | grange.name = "exynos5440-pctrl-gpio-range"; |
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c index ed165ba2eb2f..3dd5a3b2ac62 100644 --- a/drivers/pinctrl/samsung/pinctrl-samsung.c +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c | |||
@@ -806,7 +806,7 @@ static int samsung_pinctrl_parse_dt(struct platform_device *pdev, | |||
806 | functions = samsung_pinctrl_create_functions(dev, drvdata, &func_cnt); | 806 | functions = samsung_pinctrl_create_functions(dev, drvdata, &func_cnt); |
807 | if (IS_ERR(functions)) { | 807 | if (IS_ERR(functions)) { |
808 | dev_err(dev, "failed to parse pin functions\n"); | 808 | dev_err(dev, "failed to parse pin functions\n"); |
809 | return PTR_ERR(groups); | 809 | return PTR_ERR(functions); |
810 | } | 810 | } |
811 | 811 | ||
812 | drvdata->pin_groups = groups; | 812 | drvdata->pin_groups = groups; |
@@ -873,9 +873,9 @@ static int samsung_pinctrl_register(struct platform_device *pdev, | |||
873 | return ret; | 873 | return ret; |
874 | 874 | ||
875 | drvdata->pctl_dev = pinctrl_register(ctrldesc, &pdev->dev, drvdata); | 875 | drvdata->pctl_dev = pinctrl_register(ctrldesc, &pdev->dev, drvdata); |
876 | if (!drvdata->pctl_dev) { | 876 | if (IS_ERR(drvdata->pctl_dev)) { |
877 | dev_err(&pdev->dev, "could not register pinctrl driver\n"); | 877 | dev_err(&pdev->dev, "could not register pinctrl driver\n"); |
878 | return -EINVAL; | 878 | return PTR_ERR(drvdata->pctl_dev); |
879 | } | 879 | } |
880 | 880 | ||
881 | for (bank = 0; bank < drvdata->nr_banks; ++bank) { | 881 | for (bank = 0; bank < drvdata->nr_banks; ++bank) { |
diff --git a/drivers/pinctrl/sh-pfc/Kconfig b/drivers/pinctrl/sh-pfc/Kconfig index 8c4b3d391823..8e024c9c9115 100644 --- a/drivers/pinctrl/sh-pfc/Kconfig +++ b/drivers/pinctrl/sh-pfc/Kconfig | |||
@@ -55,6 +55,16 @@ config PINCTRL_PFC_R8A7791 | |||
55 | depends on ARCH_R8A7791 | 55 | depends on ARCH_R8A7791 |
56 | select PINCTRL_SH_PFC | 56 | select PINCTRL_SH_PFC |
57 | 57 | ||
58 | config PINCTRL_PFC_R8A7793 | ||
59 | def_bool y | ||
60 | depends on ARCH_R8A7793 | ||
61 | select PINCTRL_SH_PFC | ||
62 | |||
63 | config PINCTRL_PFC_R8A7794 | ||
64 | def_bool y | ||
65 | depends on ARCH_R8A7794 | ||
66 | select PINCTRL_SH_PFC | ||
67 | |||
58 | config PINCTRL_PFC_SH7203 | 68 | config PINCTRL_PFC_SH7203 |
59 | def_bool y | 69 | def_bool y |
60 | depends on CPU_SUBTYPE_SH7203 | 70 | depends on CPU_SUBTYPE_SH7203 |
diff --git a/drivers/pinctrl/sh-pfc/Makefile b/drivers/pinctrl/sh-pfc/Makefile index f4074e166bcf..ea2a60ef122a 100644 --- a/drivers/pinctrl/sh-pfc/Makefile +++ b/drivers/pinctrl/sh-pfc/Makefile | |||
@@ -10,6 +10,8 @@ obj-$(CONFIG_PINCTRL_PFC_R8A7778) += pfc-r8a7778.o | |||
10 | obj-$(CONFIG_PINCTRL_PFC_R8A7779) += pfc-r8a7779.o | 10 | obj-$(CONFIG_PINCTRL_PFC_R8A7779) += pfc-r8a7779.o |
11 | obj-$(CONFIG_PINCTRL_PFC_R8A7790) += pfc-r8a7790.o | 11 | obj-$(CONFIG_PINCTRL_PFC_R8A7790) += pfc-r8a7790.o |
12 | obj-$(CONFIG_PINCTRL_PFC_R8A7791) += pfc-r8a7791.o | 12 | obj-$(CONFIG_PINCTRL_PFC_R8A7791) += pfc-r8a7791.o |
13 | obj-$(CONFIG_PINCTRL_PFC_R8A7793) += pfc-r8a7791.o | ||
14 | obj-$(CONFIG_PINCTRL_PFC_R8A7794) += pfc-r8a7794.o | ||
13 | obj-$(CONFIG_PINCTRL_PFC_SH7203) += pfc-sh7203.o | 15 | obj-$(CONFIG_PINCTRL_PFC_SH7203) += pfc-sh7203.o |
14 | obj-$(CONFIG_PINCTRL_PFC_SH7264) += pfc-sh7264.o | 16 | obj-$(CONFIG_PINCTRL_PFC_SH7264) += pfc-sh7264.o |
15 | obj-$(CONFIG_PINCTRL_PFC_SH7269) += pfc-sh7269.o | 17 | obj-$(CONFIG_PINCTRL_PFC_SH7269) += pfc-sh7269.o |
diff --git a/drivers/pinctrl/sh-pfc/core.c b/drivers/pinctrl/sh-pfc/core.c index 7b2c9495c383..865d235612c5 100644 --- a/drivers/pinctrl/sh-pfc/core.c +++ b/drivers/pinctrl/sh-pfc/core.c | |||
@@ -481,6 +481,18 @@ static const struct of_device_id sh_pfc_of_table[] = { | |||
481 | .data = &r8a7791_pinmux_info, | 481 | .data = &r8a7791_pinmux_info, |
482 | }, | 482 | }, |
483 | #endif | 483 | #endif |
484 | #ifdef CONFIG_PINCTRL_PFC_R8A7793 | ||
485 | { | ||
486 | .compatible = "renesas,pfc-r8a7793", | ||
487 | .data = &r8a7793_pinmux_info, | ||
488 | }, | ||
489 | #endif | ||
490 | #ifdef CONFIG_PINCTRL_PFC_R8A7794 | ||
491 | { | ||
492 | .compatible = "renesas,pfc-r8a7794", | ||
493 | .data = &r8a7794_pinmux_info, | ||
494 | }, | ||
495 | #endif | ||
484 | #ifdef CONFIG_PINCTRL_PFC_SH73A0 | 496 | #ifdef CONFIG_PINCTRL_PFC_SH73A0 |
485 | { | 497 | { |
486 | .compatible = "renesas,pfc-sh73a0", | 498 | .compatible = "renesas,pfc-sh73a0", |
@@ -579,9 +591,6 @@ static int sh_pfc_remove(struct platform_device *pdev) | |||
579 | } | 591 | } |
580 | 592 | ||
581 | static const struct platform_device_id sh_pfc_id_table[] = { | 593 | static const struct platform_device_id sh_pfc_id_table[] = { |
582 | #ifdef CONFIG_PINCTRL_PFC_R8A73A4 | ||
583 | { "pfc-r8a73a4", (kernel_ulong_t)&r8a73a4_pinmux_info }, | ||
584 | #endif | ||
585 | #ifdef CONFIG_PINCTRL_PFC_R8A7740 | 594 | #ifdef CONFIG_PINCTRL_PFC_R8A7740 |
586 | { "pfc-r8a7740", (kernel_ulong_t)&r8a7740_pinmux_info }, | 595 | { "pfc-r8a7740", (kernel_ulong_t)&r8a7740_pinmux_info }, |
587 | #endif | 596 | #endif |
diff --git a/drivers/pinctrl/sh-pfc/core.h b/drivers/pinctrl/sh-pfc/core.h index 6dc8a6fc2746..4c3c37bf7161 100644 --- a/drivers/pinctrl/sh-pfc/core.h +++ b/drivers/pinctrl/sh-pfc/core.h | |||
@@ -71,6 +71,8 @@ extern const struct sh_pfc_soc_info r8a7778_pinmux_info; | |||
71 | extern const struct sh_pfc_soc_info r8a7779_pinmux_info; | 71 | extern const struct sh_pfc_soc_info r8a7779_pinmux_info; |
72 | extern const struct sh_pfc_soc_info r8a7790_pinmux_info; | 72 | extern const struct sh_pfc_soc_info r8a7790_pinmux_info; |
73 | extern const struct sh_pfc_soc_info r8a7791_pinmux_info; | 73 | extern const struct sh_pfc_soc_info r8a7791_pinmux_info; |
74 | extern const struct sh_pfc_soc_info r8a7793_pinmux_info; | ||
75 | extern const struct sh_pfc_soc_info r8a7794_pinmux_info; | ||
74 | extern const struct sh_pfc_soc_info sh7203_pinmux_info; | 76 | extern const struct sh_pfc_soc_info sh7203_pinmux_info; |
75 | extern const struct sh_pfc_soc_info sh7264_pinmux_info; | 77 | extern const struct sh_pfc_soc_info sh7264_pinmux_info; |
76 | extern const struct sh_pfc_soc_info sh7269_pinmux_info; | 78 | extern const struct sh_pfc_soc_info sh7269_pinmux_info; |
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c b/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c index 280a56f97786..ba18d2e65e67 100644 --- a/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c +++ b/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c | |||
@@ -21,10 +21,6 @@ | |||
21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
22 | #include <linux/pinctrl/pinconf-generic.h> | 22 | #include <linux/pinctrl/pinconf-generic.h> |
23 | 23 | ||
24 | #ifndef CONFIG_ARCH_MULTIPLATFORM | ||
25 | #include <mach/irqs.h> | ||
26 | #endif | ||
27 | |||
28 | #include "core.h" | 24 | #include "core.h" |
29 | #include "sh_pfc.h" | 25 | #include "sh_pfc.h" |
30 | 26 | ||
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7740.c b/drivers/pinctrl/sh-pfc/pfc-r8a7740.c index b486e9d20cc2..d0bb1459783a 100644 --- a/drivers/pinctrl/sh-pfc/pfc-r8a7740.c +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7740.c | |||
@@ -258,7 +258,7 @@ enum { | |||
258 | /* SCIFA7 */ | 258 | /* SCIFA7 */ |
259 | SCIFA7_TXD_MARK, SCIFA7_RXD_MARK, | 259 | SCIFA7_TXD_MARK, SCIFA7_RXD_MARK, |
260 | 260 | ||
261 | /* SCIFAB */ | 261 | /* SCIFB */ |
262 | SCIFB_SCK_PORT190_MARK, /* MSEL5CR_17_0 */ | 262 | SCIFB_SCK_PORT190_MARK, /* MSEL5CR_17_0 */ |
263 | SCIFB_RXD_PORT191_MARK, | 263 | SCIFB_RXD_PORT191_MARK, |
264 | SCIFB_TXD_PORT192_MARK, | 264 | SCIFB_TXD_PORT192_MARK, |
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c index 22a5470889f5..baab81ead9ff 100644 --- a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c | |||
@@ -2664,6 +2664,61 @@ static const unsigned int msiof3_tx_b_pins[] = { | |||
2664 | static const unsigned int msiof3_tx_b_mux[] = { | 2664 | static const unsigned int msiof3_tx_b_mux[] = { |
2665 | MSIOF3_TXD_B_MARK, | 2665 | MSIOF3_TXD_B_MARK, |
2666 | }; | 2666 | }; |
2667 | /* - PWM -------------------------------------------------------------------- */ | ||
2668 | static const unsigned int pwm0_pins[] = { | ||
2669 | RCAR_GP_PIN(5, 29), | ||
2670 | }; | ||
2671 | static const unsigned int pwm0_mux[] = { | ||
2672 | PWM0_MARK, | ||
2673 | }; | ||
2674 | static const unsigned int pwm0_b_pins[] = { | ||
2675 | RCAR_GP_PIN(4, 30), | ||
2676 | }; | ||
2677 | static const unsigned int pwm0_b_mux[] = { | ||
2678 | PWM0_B_MARK, | ||
2679 | }; | ||
2680 | static const unsigned int pwm1_pins[] = { | ||
2681 | RCAR_GP_PIN(5, 30), | ||
2682 | }; | ||
2683 | static const unsigned int pwm1_mux[] = { | ||
2684 | PWM1_MARK, | ||
2685 | }; | ||
2686 | static const unsigned int pwm1_b_pins[] = { | ||
2687 | RCAR_GP_PIN(4, 31), | ||
2688 | }; | ||
2689 | static const unsigned int pwm1_b_mux[] = { | ||
2690 | PWM1_B_MARK, | ||
2691 | }; | ||
2692 | static const unsigned int pwm2_pins[] = { | ||
2693 | RCAR_GP_PIN(5, 31), | ||
2694 | }; | ||
2695 | static const unsigned int pwm2_mux[] = { | ||
2696 | PWM2_MARK, | ||
2697 | }; | ||
2698 | static const unsigned int pwm3_pins[] = { | ||
2699 | RCAR_GP_PIN(0, 16), | ||
2700 | }; | ||
2701 | static const unsigned int pwm3_mux[] = { | ||
2702 | PWM3_MARK, | ||
2703 | }; | ||
2704 | static const unsigned int pwm4_pins[] = { | ||
2705 | RCAR_GP_PIN(0, 17), | ||
2706 | }; | ||
2707 | static const unsigned int pwm4_mux[] = { | ||
2708 | PWM4_MARK, | ||
2709 | }; | ||
2710 | static const unsigned int pwm5_pins[] = { | ||
2711 | RCAR_GP_PIN(0, 18), | ||
2712 | }; | ||
2713 | static const unsigned int pwm5_mux[] = { | ||
2714 | PWM5_MARK, | ||
2715 | }; | ||
2716 | static const unsigned int pwm6_pins[] = { | ||
2717 | RCAR_GP_PIN(0, 19), | ||
2718 | }; | ||
2719 | static const unsigned int pwm6_mux[] = { | ||
2720 | PWM6_MARK, | ||
2721 | }; | ||
2667 | /* - QSPI ------------------------------------------------------------------- */ | 2722 | /* - QSPI ------------------------------------------------------------------- */ |
2668 | static const unsigned int qspi_ctrl_pins[] = { | 2723 | static const unsigned int qspi_ctrl_pins[] = { |
2669 | /* SPCLK, SSL */ | 2724 | /* SPCLK, SSL */ |
@@ -4008,6 +4063,15 @@ static const struct sh_pfc_pin_group pinmux_groups[] = { | |||
4008 | SH_PFC_PIN_GROUP(msiof3_sync_b), | 4063 | SH_PFC_PIN_GROUP(msiof3_sync_b), |
4009 | SH_PFC_PIN_GROUP(msiof3_rx_b), | 4064 | SH_PFC_PIN_GROUP(msiof3_rx_b), |
4010 | SH_PFC_PIN_GROUP(msiof3_tx_b), | 4065 | SH_PFC_PIN_GROUP(msiof3_tx_b), |
4066 | SH_PFC_PIN_GROUP(pwm0), | ||
4067 | SH_PFC_PIN_GROUP(pwm0_b), | ||
4068 | SH_PFC_PIN_GROUP(pwm1), | ||
4069 | SH_PFC_PIN_GROUP(pwm1_b), | ||
4070 | SH_PFC_PIN_GROUP(pwm2), | ||
4071 | SH_PFC_PIN_GROUP(pwm3), | ||
4072 | SH_PFC_PIN_GROUP(pwm4), | ||
4073 | SH_PFC_PIN_GROUP(pwm5), | ||
4074 | SH_PFC_PIN_GROUP(pwm6), | ||
4011 | SH_PFC_PIN_GROUP(qspi_ctrl), | 4075 | SH_PFC_PIN_GROUP(qspi_ctrl), |
4012 | SH_PFC_PIN_GROUP(qspi_data2), | 4076 | SH_PFC_PIN_GROUP(qspi_data2), |
4013 | SH_PFC_PIN_GROUP(qspi_data4), | 4077 | SH_PFC_PIN_GROUP(qspi_data4), |
@@ -4364,6 +4428,36 @@ static const char * const msiof3_groups[] = { | |||
4364 | "msiof3_tx_b", | 4428 | "msiof3_tx_b", |
4365 | }; | 4429 | }; |
4366 | 4430 | ||
4431 | static const char * const pwm0_groups[] = { | ||
4432 | "pwm0", | ||
4433 | "pwm0_b", | ||
4434 | }; | ||
4435 | |||
4436 | static const char * const pwm1_groups[] = { | ||
4437 | "pwm1", | ||
4438 | "pwm1_b", | ||
4439 | }; | ||
4440 | |||
4441 | static const char * const pwm2_groups[] = { | ||
4442 | "pwm2", | ||
4443 | }; | ||
4444 | |||
4445 | static const char * const pwm3_groups[] = { | ||
4446 | "pwm3", | ||
4447 | }; | ||
4448 | |||
4449 | static const char * const pwm4_groups[] = { | ||
4450 | "pwm4", | ||
4451 | }; | ||
4452 | |||
4453 | static const char * const pwm5_groups[] = { | ||
4454 | "pwm5", | ||
4455 | }; | ||
4456 | |||
4457 | static const char * const pwm6_groups[] = { | ||
4458 | "pwm6", | ||
4459 | }; | ||
4460 | |||
4367 | static const char * const qspi_groups[] = { | 4461 | static const char * const qspi_groups[] = { |
4368 | "qspi_ctrl", | 4462 | "qspi_ctrl", |
4369 | "qspi_data2", | 4463 | "qspi_data2", |
@@ -4621,6 +4715,13 @@ static const struct sh_pfc_function pinmux_functions[] = { | |||
4621 | SH_PFC_FUNCTION(msiof1), | 4715 | SH_PFC_FUNCTION(msiof1), |
4622 | SH_PFC_FUNCTION(msiof2), | 4716 | SH_PFC_FUNCTION(msiof2), |
4623 | SH_PFC_FUNCTION(msiof3), | 4717 | SH_PFC_FUNCTION(msiof3), |
4718 | SH_PFC_FUNCTION(pwm0), | ||
4719 | SH_PFC_FUNCTION(pwm1), | ||
4720 | SH_PFC_FUNCTION(pwm2), | ||
4721 | SH_PFC_FUNCTION(pwm3), | ||
4722 | SH_PFC_FUNCTION(pwm4), | ||
4723 | SH_PFC_FUNCTION(pwm5), | ||
4724 | SH_PFC_FUNCTION(pwm6), | ||
4624 | SH_PFC_FUNCTION(qspi), | 4725 | SH_PFC_FUNCTION(qspi), |
4625 | SH_PFC_FUNCTION(scif0), | 4726 | SH_PFC_FUNCTION(scif0), |
4626 | SH_PFC_FUNCTION(scif1), | 4727 | SH_PFC_FUNCTION(scif1), |
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c index fdd2c8729791..3ddf23ec9f0b 100644 --- a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c | |||
@@ -2928,6 +2928,79 @@ static const unsigned int msiof2_tx_e_pins[] = { | |||
2928 | static const unsigned int msiof2_tx_e_mux[] = { | 2928 | static const unsigned int msiof2_tx_e_mux[] = { |
2929 | MSIOF2_TXD_E_MARK, | 2929 | MSIOF2_TXD_E_MARK, |
2930 | }; | 2930 | }; |
2931 | /* - PWM -------------------------------------------------------------------- */ | ||
2932 | static const unsigned int pwm0_pins[] = { | ||
2933 | RCAR_GP_PIN(6, 14), | ||
2934 | }; | ||
2935 | static const unsigned int pwm0_mux[] = { | ||
2936 | PWM0_MARK, | ||
2937 | }; | ||
2938 | static const unsigned int pwm0_b_pins[] = { | ||
2939 | RCAR_GP_PIN(5, 30), | ||
2940 | }; | ||
2941 | static const unsigned int pwm0_b_mux[] = { | ||
2942 | PWM0_B_MARK, | ||
2943 | }; | ||
2944 | static const unsigned int pwm1_pins[] = { | ||
2945 | RCAR_GP_PIN(1, 17), | ||
2946 | }; | ||
2947 | static const unsigned int pwm1_mux[] = { | ||
2948 | PWM1_MARK, | ||
2949 | }; | ||
2950 | static const unsigned int pwm1_b_pins[] = { | ||
2951 | RCAR_GP_PIN(6, 15), | ||
2952 | }; | ||
2953 | static const unsigned int pwm1_b_mux[] = { | ||
2954 | PWM1_B_MARK, | ||
2955 | }; | ||
2956 | static const unsigned int pwm2_pins[] = { | ||
2957 | RCAR_GP_PIN(1, 18), | ||
2958 | }; | ||
2959 | static const unsigned int pwm2_mux[] = { | ||
2960 | PWM2_MARK, | ||
2961 | }; | ||
2962 | static const unsigned int pwm2_b_pins[] = { | ||
2963 | RCAR_GP_PIN(0, 16), | ||
2964 | }; | ||
2965 | static const unsigned int pwm2_b_mux[] = { | ||
2966 | PWM2_B_MARK, | ||
2967 | }; | ||
2968 | static const unsigned int pwm3_pins[] = { | ||
2969 | RCAR_GP_PIN(1, 24), | ||
2970 | }; | ||
2971 | static const unsigned int pwm3_mux[] = { | ||
2972 | PWM3_MARK, | ||
2973 | }; | ||
2974 | static const unsigned int pwm4_pins[] = { | ||
2975 | RCAR_GP_PIN(3, 26), | ||
2976 | }; | ||
2977 | static const unsigned int pwm4_mux[] = { | ||
2978 | PWM4_MARK, | ||
2979 | }; | ||
2980 | static const unsigned int pwm4_b_pins[] = { | ||
2981 | RCAR_GP_PIN(3, 31), | ||
2982 | }; | ||
2983 | static const unsigned int pwm4_b_mux[] = { | ||
2984 | PWM4_B_MARK, | ||
2985 | }; | ||
2986 | static const unsigned int pwm5_pins[] = { | ||
2987 | RCAR_GP_PIN(7, 21), | ||
2988 | }; | ||
2989 | static const unsigned int pwm5_mux[] = { | ||
2990 | PWM5_MARK, | ||
2991 | }; | ||
2992 | static const unsigned int pwm5_b_pins[] = { | ||
2993 | RCAR_GP_PIN(7, 20), | ||
2994 | }; | ||
2995 | static const unsigned int pwm5_b_mux[] = { | ||
2996 | PWM5_B_MARK, | ||
2997 | }; | ||
2998 | static const unsigned int pwm6_pins[] = { | ||
2999 | RCAR_GP_PIN(7, 22), | ||
3000 | }; | ||
3001 | static const unsigned int pwm6_mux[] = { | ||
3002 | PWM6_MARK, | ||
3003 | }; | ||
2931 | /* - QSPI ------------------------------------------------------------------- */ | 3004 | /* - QSPI ------------------------------------------------------------------- */ |
2932 | static const unsigned int qspi_ctrl_pins[] = { | 3005 | static const unsigned int qspi_ctrl_pins[] = { |
2933 | /* SPCLK, SSL */ | 3006 | /* SPCLK, SSL */ |
@@ -4348,6 +4421,18 @@ static const struct sh_pfc_pin_group pinmux_groups[] = { | |||
4348 | SH_PFC_PIN_GROUP(msiof2_sync_e), | 4421 | SH_PFC_PIN_GROUP(msiof2_sync_e), |
4349 | SH_PFC_PIN_GROUP(msiof2_rx_e), | 4422 | SH_PFC_PIN_GROUP(msiof2_rx_e), |
4350 | SH_PFC_PIN_GROUP(msiof2_tx_e), | 4423 | SH_PFC_PIN_GROUP(msiof2_tx_e), |
4424 | SH_PFC_PIN_GROUP(pwm0), | ||
4425 | SH_PFC_PIN_GROUP(pwm0_b), | ||
4426 | SH_PFC_PIN_GROUP(pwm1), | ||
4427 | SH_PFC_PIN_GROUP(pwm1_b), | ||
4428 | SH_PFC_PIN_GROUP(pwm2), | ||
4429 | SH_PFC_PIN_GROUP(pwm2_b), | ||
4430 | SH_PFC_PIN_GROUP(pwm3), | ||
4431 | SH_PFC_PIN_GROUP(pwm4), | ||
4432 | SH_PFC_PIN_GROUP(pwm4_b), | ||
4433 | SH_PFC_PIN_GROUP(pwm5), | ||
4434 | SH_PFC_PIN_GROUP(pwm5_b), | ||
4435 | SH_PFC_PIN_GROUP(pwm6), | ||
4351 | SH_PFC_PIN_GROUP(qspi_ctrl), | 4436 | SH_PFC_PIN_GROUP(qspi_ctrl), |
4352 | SH_PFC_PIN_GROUP(qspi_data2), | 4437 | SH_PFC_PIN_GROUP(qspi_data2), |
4353 | SH_PFC_PIN_GROUP(qspi_data4), | 4438 | SH_PFC_PIN_GROUP(qspi_data4), |
@@ -4745,6 +4830,39 @@ static const char * const msiof2_groups[] = { | |||
4745 | "msiof2_tx_e", | 4830 | "msiof2_tx_e", |
4746 | }; | 4831 | }; |
4747 | 4832 | ||
4833 | static const char * const pwm0_groups[] = { | ||
4834 | "pwm0", | ||
4835 | "pwm0_b", | ||
4836 | }; | ||
4837 | |||
4838 | static const char * const pwm1_groups[] = { | ||
4839 | "pwm1", | ||
4840 | "pwm1_b", | ||
4841 | }; | ||
4842 | |||
4843 | static const char * const pwm2_groups[] = { | ||
4844 | "pwm2", | ||
4845 | "pwm2_b", | ||
4846 | }; | ||
4847 | |||
4848 | static const char * const pwm3_groups[] = { | ||
4849 | "pwm3", | ||
4850 | }; | ||
4851 | |||
4852 | static const char * const pwm4_groups[] = { | ||
4853 | "pwm4", | ||
4854 | "pwm4_b", | ||
4855 | }; | ||
4856 | |||
4857 | static const char * const pwm5_groups[] = { | ||
4858 | "pwm5", | ||
4859 | "pwm5_b", | ||
4860 | }; | ||
4861 | |||
4862 | static const char * const pwm6_groups[] = { | ||
4863 | "pwm6", | ||
4864 | }; | ||
4865 | |||
4748 | static const char * const qspi_groups[] = { | 4866 | static const char * const qspi_groups[] = { |
4749 | "qspi_ctrl", | 4867 | "qspi_ctrl", |
4750 | "qspi_data2", | 4868 | "qspi_data2", |
@@ -4989,6 +5107,13 @@ static const struct sh_pfc_function pinmux_functions[] = { | |||
4989 | SH_PFC_FUNCTION(msiof0), | 5107 | SH_PFC_FUNCTION(msiof0), |
4990 | SH_PFC_FUNCTION(msiof1), | 5108 | SH_PFC_FUNCTION(msiof1), |
4991 | SH_PFC_FUNCTION(msiof2), | 5109 | SH_PFC_FUNCTION(msiof2), |
5110 | SH_PFC_FUNCTION(pwm0), | ||
5111 | SH_PFC_FUNCTION(pwm1), | ||
5112 | SH_PFC_FUNCTION(pwm2), | ||
5113 | SH_PFC_FUNCTION(pwm3), | ||
5114 | SH_PFC_FUNCTION(pwm4), | ||
5115 | SH_PFC_FUNCTION(pwm5), | ||
5116 | SH_PFC_FUNCTION(pwm6), | ||
4992 | SH_PFC_FUNCTION(qspi), | 5117 | SH_PFC_FUNCTION(qspi), |
4993 | SH_PFC_FUNCTION(scif0), | 5118 | SH_PFC_FUNCTION(scif0), |
4994 | SH_PFC_FUNCTION(scif1), | 5119 | SH_PFC_FUNCTION(scif1), |
@@ -6000,7 +6125,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6000 | { PINMUX_CFG_REG_VAR("MOD_SEL", 0xE6060090, 32, | 6125 | { PINMUX_CFG_REG_VAR("MOD_SEL", 0xE6060090, 32, |
6001 | 1, 2, 2, 2, 3, 2, 1, 1, 1, 1, | 6126 | 1, 2, 2, 2, 3, 2, 1, 1, 1, 1, |
6002 | 3, 2, 2, 2, 1, 2, 2, 2) { | 6127 | 3, 2, 2, 2, 1, 2, 2, 2) { |
6003 | /* RESEVED [1] */ | 6128 | /* RESERVED [1] */ |
6004 | 0, 0, | 6129 | 0, 0, |
6005 | /* SEL_SCIF1 [2] */ | 6130 | /* SEL_SCIF1 [2] */ |
6006 | FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, FN_SEL_SCIF1_2, FN_SEL_SCIF1_3, | 6131 | FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, FN_SEL_SCIF1_2, FN_SEL_SCIF1_3, |
@@ -6027,11 +6152,11 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6027 | FN_SEL_HSCIF1_0, FN_SEL_HSCIF1_1, FN_SEL_HSCIF1_2, | 6152 | FN_SEL_HSCIF1_0, FN_SEL_HSCIF1_1, FN_SEL_HSCIF1_2, |
6028 | FN_SEL_HSCIF1_3, FN_SEL_HSCIF1_4, | 6153 | FN_SEL_HSCIF1_3, FN_SEL_HSCIF1_4, |
6029 | 0, 0, 0, | 6154 | 0, 0, 0, |
6030 | /* RESEVED [2] */ | 6155 | /* RESERVED [2] */ |
6031 | 0, 0, 0, 0, | 6156 | 0, 0, 0, 0, |
6032 | /* SEL_VI1 [2] */ | 6157 | /* SEL_VI1 [2] */ |
6033 | FN_SEL_VI1_0, FN_SEL_VI1_1, FN_SEL_VI1_2, 0, | 6158 | FN_SEL_VI1_0, FN_SEL_VI1_1, FN_SEL_VI1_2, 0, |
6034 | /* RESEVED [2] */ | 6159 | /* RESERVED [2] */ |
6035 | 0, 0, 0, 0, | 6160 | 0, 0, 0, 0, |
6036 | /* SEL_TMU [1] */ | 6161 | /* SEL_TMU [1] */ |
6037 | FN_SEL_TMU1_0, FN_SEL_TMU1_1, | 6162 | FN_SEL_TMU1_0, FN_SEL_TMU1_1, |
@@ -6049,7 +6174,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6049 | FN_SEL_SCIF0_0, FN_SEL_SCIF0_1, FN_SEL_SCIF0_2, | 6174 | FN_SEL_SCIF0_0, FN_SEL_SCIF0_1, FN_SEL_SCIF0_2, |
6050 | FN_SEL_SCIF0_3, FN_SEL_SCIF0_4, | 6175 | FN_SEL_SCIF0_3, FN_SEL_SCIF0_4, |
6051 | 0, 0, 0, | 6176 | 0, 0, 0, |
6052 | /* RESEVED [1] */ | 6177 | /* RESERVED [1] */ |
6053 | 0, 0, | 6178 | 0, 0, |
6054 | /* SEL_SCIF [1] */ | 6179 | /* SEL_SCIF [1] */ |
6055 | FN_SEL_SCIF_0, FN_SEL_SCIF_1, | 6180 | FN_SEL_SCIF_0, FN_SEL_SCIF_1, |
@@ -6059,13 +6184,13 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6059 | 0, 0, | 6184 | 0, 0, |
6060 | /* SEL_CAN1 [2] */ | 6185 | /* SEL_CAN1 [2] */ |
6061 | FN_SEL_CAN1_0, FN_SEL_CAN1_1, FN_SEL_CAN1_2, FN_SEL_CAN1_3, | 6186 | FN_SEL_CAN1_0, FN_SEL_CAN1_1, FN_SEL_CAN1_2, FN_SEL_CAN1_3, |
6062 | /* RESEVED [1] */ | 6187 | /* RESERVED [1] */ |
6063 | 0, 0, | 6188 | 0, 0, |
6064 | /* SEL_SCIFA2 [1] */ | 6189 | /* SEL_SCIFA2 [1] */ |
6065 | FN_SEL_SCIFA2_0, FN_SEL_SCIFA2_1, | 6190 | FN_SEL_SCIFA2_0, FN_SEL_SCIFA2_1, |
6066 | /* SEL_SCIF4 [2] */ | 6191 | /* SEL_SCIF4 [2] */ |
6067 | FN_SEL_SCIF4_0, FN_SEL_SCIF4_1, FN_SEL_SCIF4_2, 0, | 6192 | FN_SEL_SCIF4_0, FN_SEL_SCIF4_1, FN_SEL_SCIF4_2, 0, |
6068 | /* RESEVED [2] */ | 6193 | /* RESERVED [2] */ |
6069 | 0, 0, 0, 0, | 6194 | 0, 0, 0, 0, |
6070 | /* SEL_ADG [1] */ | 6195 | /* SEL_ADG [1] */ |
6071 | FN_SEL_ADG_0, FN_SEL_ADG_1, | 6196 | FN_SEL_ADG_0, FN_SEL_ADG_1, |
@@ -6075,7 +6200,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6075 | 0, 0, 0, | 6200 | 0, 0, 0, |
6076 | /* SEL_SCIFA5 [2] */ | 6201 | /* SEL_SCIFA5 [2] */ |
6077 | FN_SEL_SCIFA5_0, FN_SEL_SCIFA5_1, FN_SEL_SCIFA5_2, 0, | 6202 | FN_SEL_SCIFA5_0, FN_SEL_SCIFA5_1, FN_SEL_SCIFA5_2, 0, |
6078 | /* RESEVED [1] */ | 6203 | /* RESERVED [1] */ |
6079 | 0, 0, | 6204 | 0, 0, |
6080 | /* SEL_GPS [2] */ | 6205 | /* SEL_GPS [2] */ |
6081 | FN_SEL_GPS_0, FN_SEL_GPS_1, FN_SEL_GPS_2, FN_SEL_GPS_3, | 6206 | FN_SEL_GPS_0, FN_SEL_GPS_1, FN_SEL_GPS_2, FN_SEL_GPS_3, |
@@ -6085,7 +6210,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6085 | FN_SEL_SCIFA3_0, FN_SEL_SCIFA3_1, FN_SEL_SCIFA3_2, 0, | 6210 | FN_SEL_SCIFA3_0, FN_SEL_SCIFA3_1, FN_SEL_SCIFA3_2, 0, |
6086 | /* SEL_SIM [1] */ | 6211 | /* SEL_SIM [1] */ |
6087 | FN_SEL_SIM_0, FN_SEL_SIM_1, | 6212 | FN_SEL_SIM_0, FN_SEL_SIM_1, |
6088 | /* RESEVED [1] */ | 6213 | /* RESERVED [1] */ |
6089 | 0, 0, | 6214 | 0, 0, |
6090 | /* SEL_SSI8 [1] */ | 6215 | /* SEL_SSI8 [1] */ |
6091 | FN_SEL_SSI8_0, FN_SEL_SSI8_1, } | 6216 | FN_SEL_SSI8_0, FN_SEL_SSI8_1, } |
@@ -6115,7 +6240,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6115 | FN_SEL_MMC_0, FN_SEL_MMC_1, | 6240 | FN_SEL_MMC_0, FN_SEL_MMC_1, |
6116 | /* SEL_SCIF5 [1] */ | 6241 | /* SEL_SCIF5 [1] */ |
6117 | FN_SEL_SCIF5_0, FN_SEL_SCIF5_1, | 6242 | FN_SEL_SCIF5_0, FN_SEL_SCIF5_1, |
6118 | /* RESEVED [2] */ | 6243 | /* RESERVED [2] */ |
6119 | 0, 0, 0, 0, | 6244 | 0, 0, 0, 0, |
6120 | /* SEL_IIC2 [2] */ | 6245 | /* SEL_IIC2 [2] */ |
6121 | FN_SEL_IIC2_0, FN_SEL_IIC2_1, FN_SEL_IIC2_2, FN_SEL_IIC2_3, | 6246 | FN_SEL_IIC2_0, FN_SEL_IIC2_1, FN_SEL_IIC2_2, FN_SEL_IIC2_3, |
@@ -6125,11 +6250,11 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6125 | 0, 0, 0, | 6250 | 0, 0, 0, |
6126 | /* SEL_IIC0 [2] */ | 6251 | /* SEL_IIC0 [2] */ |
6127 | FN_SEL_IIC0_0, FN_SEL_IIC0_1, FN_SEL_IIC0_2, 0, | 6252 | FN_SEL_IIC0_0, FN_SEL_IIC0_1, FN_SEL_IIC0_2, 0, |
6128 | /* RESEVED [2] */ | 6253 | /* RESERVED [2] */ |
6129 | 0, 0, 0, 0, | 6254 | 0, 0, 0, 0, |
6130 | /* RESEVED [2] */ | 6255 | /* RESERVED [2] */ |
6131 | 0, 0, 0, 0, | 6256 | 0, 0, 0, 0, |
6132 | /* RESEVED [1] */ | 6257 | /* RESERVED [1] */ |
6133 | 0, 0, } | 6258 | 0, 0, } |
6134 | }, | 6259 | }, |
6135 | { PINMUX_CFG_REG_VAR("MOD_SEL4", 0xE606009C, 32, | 6260 | { PINMUX_CFG_REG_VAR("MOD_SEL4", 0xE606009C, 32, |
@@ -6143,7 +6268,7 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6143 | FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1, FN_SEL_HSCIF0_2, 0, | 6268 | FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1, FN_SEL_HSCIF0_2, 0, |
6144 | /* SEL_DIS [2] */ | 6269 | /* SEL_DIS [2] */ |
6145 | FN_SEL_DIS_0, FN_SEL_DIS_1, FN_SEL_DIS_2, 0, | 6270 | FN_SEL_DIS_0, FN_SEL_DIS_1, FN_SEL_DIS_2, 0, |
6146 | /* RESEVED [1] */ | 6271 | /* RESERVED [1] */ |
6147 | 0, 0, | 6272 | 0, 0, |
6148 | /* SEL_RAD [1] */ | 6273 | /* SEL_RAD [1] */ |
6149 | FN_SEL_RAD_0, FN_SEL_RAD_1, | 6274 | FN_SEL_RAD_0, FN_SEL_RAD_1, |
@@ -6155,15 +6280,15 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6155 | FN_SEL_SCIF2_0, FN_SEL_SCIF2_1, FN_SEL_SCIF2_2, | 6280 | FN_SEL_SCIF2_0, FN_SEL_SCIF2_1, FN_SEL_SCIF2_2, |
6156 | FN_SEL_SCIF2_3, FN_SEL_SCIF2_4, | 6281 | FN_SEL_SCIF2_3, FN_SEL_SCIF2_4, |
6157 | 0, 0, 0, | 6282 | 0, 0, 0, |
6158 | /* RESEVED [2] */ | 6283 | /* RESERVED [2] */ |
6159 | 0, 0, 0, 0, | 6284 | 0, 0, 0, 0, |
6160 | /* RESEVED [2] */ | 6285 | /* RESERVED [2] */ |
6161 | 0, 0, 0, 0, | 6286 | 0, 0, 0, 0, |
6162 | /* SEL_SOF2 [3] */ | 6287 | /* SEL_SOF2 [3] */ |
6163 | FN_SEL_SOF2_0, FN_SEL_SOF2_1, FN_SEL_SOF2_2, | 6288 | FN_SEL_SOF2_0, FN_SEL_SOF2_1, FN_SEL_SOF2_2, |
6164 | FN_SEL_SOF2_3, FN_SEL_SOF2_4, | 6289 | FN_SEL_SOF2_3, FN_SEL_SOF2_4, |
6165 | 0, 0, 0, | 6290 | 0, 0, 0, |
6166 | /* RESEVED [1] */ | 6291 | /* RESERVED [1] */ |
6167 | 0, 0, | 6292 | 0, 0, |
6168 | /* SEL_SSI1 [1] */ | 6293 | /* SEL_SSI1 [1] */ |
6169 | FN_SEL_SSI1_0, FN_SEL_SSI1_1, | 6294 | FN_SEL_SSI1_0, FN_SEL_SSI1_1, |
@@ -6171,16 +6296,17 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = { | |||
6171 | FN_SEL_SSI0_0, FN_SEL_SSI0_1, | 6296 | FN_SEL_SSI0_0, FN_SEL_SSI0_1, |
6172 | /* SEL_SSP [2] */ | 6297 | /* SEL_SSP [2] */ |
6173 | FN_SEL_SSP_0, FN_SEL_SSP_1, FN_SEL_SSP_2, 0, | 6298 | FN_SEL_SSP_0, FN_SEL_SSP_1, FN_SEL_SSP_2, 0, |
6174 | /* RESEVED [2] */ | 6299 | /* RESERVED [2] */ |
6175 | 0, 0, 0, 0, | 6300 | 0, 0, 0, 0, |
6176 | /* RESEVED [2] */ | 6301 | /* RESERVED [2] */ |
6177 | 0, 0, 0, 0, | 6302 | 0, 0, 0, 0, |
6178 | /* RESEVED [2] */ | 6303 | /* RESERVED [2] */ |
6179 | 0, 0, 0, 0, } | 6304 | 0, 0, 0, 0, } |
6180 | }, | 6305 | }, |
6181 | { }, | 6306 | { }, |
6182 | }; | 6307 | }; |
6183 | 6308 | ||
6309 | #ifdef CONFIG_PINCTRL_PFC_R8A7791 | ||
6184 | const struct sh_pfc_soc_info r8a7791_pinmux_info = { | 6310 | const struct sh_pfc_soc_info r8a7791_pinmux_info = { |
6185 | .name = "r8a77910_pfc", | 6311 | .name = "r8a77910_pfc", |
6186 | .unlock_reg = 0xe6060000, /* PMMR */ | 6312 | .unlock_reg = 0xe6060000, /* PMMR */ |
@@ -6199,3 +6325,25 @@ const struct sh_pfc_soc_info r8a7791_pinmux_info = { | |||
6199 | .gpio_data = pinmux_data, | 6325 | .gpio_data = pinmux_data, |
6200 | .gpio_data_size = ARRAY_SIZE(pinmux_data), | 6326 | .gpio_data_size = ARRAY_SIZE(pinmux_data), |
6201 | }; | 6327 | }; |
6328 | #endif | ||
6329 | |||
6330 | #ifdef CONFIG_PINCTRL_PFC_R8A7793 | ||
6331 | const struct sh_pfc_soc_info r8a7793_pinmux_info = { | ||
6332 | .name = "r8a77930_pfc", | ||
6333 | .unlock_reg = 0xe6060000, /* PMMR */ | ||
6334 | |||
6335 | .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END }, | ||
6336 | |||
6337 | .pins = pinmux_pins, | ||
6338 | .nr_pins = ARRAY_SIZE(pinmux_pins), | ||
6339 | .groups = pinmux_groups, | ||
6340 | .nr_groups = ARRAY_SIZE(pinmux_groups), | ||
6341 | .functions = pinmux_functions, | ||
6342 | .nr_functions = ARRAY_SIZE(pinmux_functions), | ||
6343 | |||
6344 | .cfg_regs = pinmux_config_regs, | ||
6345 | |||
6346 | .gpio_data = pinmux_data, | ||
6347 | .gpio_data_size = ARRAY_SIZE(pinmux_data), | ||
6348 | }; | ||
6349 | #endif | ||
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7794.c b/drivers/pinctrl/sh-pfc/pfc-r8a7794.c new file mode 100644 index 000000000000..bfdcac4b3bc4 --- /dev/null +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7794.c | |||
@@ -0,0 +1,4207 @@ | |||
1 | /* | ||
2 | * r8a7794 processor support - PFC hardware block. | ||
3 | * | ||
4 | * Copyright (C) 2014 Renesas Electronics Corporation | ||
5 | * Copyright (C) 2015 Renesas Solutions Corp. | ||
6 | * Copyright (C) 2015 Cogent Embedded, Inc., <source@cogentembedded.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 | ||
10 | * as published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/platform_data/gpio-rcar.h> | ||
15 | |||
16 | #include "core.h" | ||
17 | #include "sh_pfc.h" | ||
18 | |||
19 | #define PORT_GP_26(bank, fn, sfx) \ | ||
20 | PORT_GP_1(bank, 0, fn, sfx), PORT_GP_1(bank, 1, fn, sfx), \ | ||
21 | PORT_GP_1(bank, 2, fn, sfx), PORT_GP_1(bank, 3, fn, sfx), \ | ||
22 | PORT_GP_1(bank, 4, fn, sfx), PORT_GP_1(bank, 5, fn, sfx), \ | ||
23 | PORT_GP_1(bank, 6, fn, sfx), PORT_GP_1(bank, 7, fn, sfx), \ | ||
24 | PORT_GP_1(bank, 8, fn, sfx), PORT_GP_1(bank, 9, fn, sfx), \ | ||
25 | PORT_GP_1(bank, 10, fn, sfx), PORT_GP_1(bank, 11, fn, sfx), \ | ||
26 | PORT_GP_1(bank, 12, fn, sfx), PORT_GP_1(bank, 13, fn, sfx), \ | ||
27 | PORT_GP_1(bank, 14, fn, sfx), PORT_GP_1(bank, 15, fn, sfx), \ | ||
28 | PORT_GP_1(bank, 16, fn, sfx), PORT_GP_1(bank, 17, fn, sfx), \ | ||
29 | PORT_GP_1(bank, 18, fn, sfx), PORT_GP_1(bank, 19, fn, sfx), \ | ||
30 | PORT_GP_1(bank, 20, fn, sfx), PORT_GP_1(bank, 21, fn, sfx), \ | ||
31 | PORT_GP_1(bank, 22, fn, sfx), PORT_GP_1(bank, 23, fn, sfx), \ | ||
32 | PORT_GP_1(bank, 24, fn, sfx), PORT_GP_1(bank, 25, fn, sfx) | ||
33 | |||
34 | #define PORT_GP_28(bank, fn, sfx) \ | ||
35 | PORT_GP_26(bank, fn, sfx), \ | ||
36 | PORT_GP_1(bank, 26, fn, sfx), PORT_GP_1(bank, 27, fn, sfx) | ||
37 | |||
38 | #define CPU_ALL_PORT(fn, sfx) \ | ||
39 | PORT_GP_32(0, fn, sfx), \ | ||
40 | PORT_GP_26(1, fn, sfx), \ | ||
41 | PORT_GP_32(2, fn, sfx), \ | ||
42 | PORT_GP_32(3, fn, sfx), \ | ||
43 | PORT_GP_32(4, fn, sfx), \ | ||
44 | PORT_GP_28(5, fn, sfx), \ | ||
45 | PORT_GP_26(6, fn, sfx) | ||
46 | |||
47 | enum { | ||
48 | PINMUX_RESERVED = 0, | ||
49 | |||
50 | PINMUX_DATA_BEGIN, | ||
51 | GP_ALL(DATA), | ||
52 | PINMUX_DATA_END, | ||
53 | |||
54 | PINMUX_FUNCTION_BEGIN, | ||
55 | GP_ALL(FN), | ||
56 | |||
57 | /* GPSR0 */ | ||
58 | FN_IP0_23_22, FN_IP0_24, FN_IP0_25, FN_IP0_27_26, FN_IP0_29_28, | ||
59 | FN_IP0_31_30, FN_IP1_1_0, FN_IP1_3_2, FN_IP1_5_4, FN_IP1_7_6, | ||
60 | FN_IP1_10_8, FN_IP1_12_11, FN_IP1_14_13, FN_IP1_17_15, FN_IP1_19_18, | ||
61 | FN_IP1_21_20, FN_IP1_23_22, FN_IP1_24, FN_A2, FN_IP1_26, FN_IP1_27, | ||
62 | FN_IP1_29_28, FN_IP1_31_30, FN_IP2_1_0, FN_IP2_3_2, FN_IP2_5_4, | ||
63 | FN_IP2_7_6, FN_IP2_9_8, FN_IP2_11_10, FN_IP2_13_12, FN_IP2_15_14, | ||
64 | FN_IP2_17_16, | ||
65 | |||
66 | /* GPSR1 */ | ||
67 | FN_IP2_20_18, FN_IP2_23_21, FN_IP2_26_24, FN_IP2_29_27, FN_IP2_31_30, | ||
68 | FN_IP3_1_0, FN_IP3_3_2, FN_IP3_5_4, FN_IP3_7_6, FN_IP3_9_8, FN_IP3_10, | ||
69 | FN_IP3_11, FN_IP3_12, FN_IP3_14_13, FN_IP3_17_15, FN_IP3_20_18, | ||
70 | FN_IP3_23_21, FN_IP3_26_24, FN_IP3_29_27, FN_IP3_30, FN_IP3_31, | ||
71 | FN_WE0_N, FN_WE1_N, FN_IP4_1_0 , FN_IP7_31, FN_DACK0, | ||
72 | |||
73 | /* GPSR2 */ | ||
74 | FN_IP4_4_2, FN_IP4_7_5, FN_IP4_9_8, FN_IP4_11_10, FN_IP4_13_12, | ||
75 | FN_IP4_15_14, FN_IP4_17_16, FN_IP4_19_18, FN_IP4_22_20, FN_IP4_25_23, | ||
76 | FN_IP4_27_26, FN_IP4_29_28, FN_IP4_31_30, FN_IP5_1_0, FN_IP5_3_2, | ||
77 | FN_IP5_5_4, FN_IP5_8_6, FN_IP5_11_9, FN_IP5_13_12, FN_IP5_15_14, | ||
78 | FN_IP5_17_16, FN_IP5_19_18, FN_IP5_21_20, FN_IP5_23_22, FN_IP5_25_24, | ||
79 | FN_IP5_27_26, FN_IP5_29_28, FN_IP5_31_30, FN_IP6_1_0, FN_IP6_3_2, | ||
80 | FN_IP6_5_4, FN_IP6_7_6, | ||
81 | |||
82 | /* GPSR3 */ | ||
83 | FN_IP6_8, FN_IP6_9, FN_IP6_10, FN_IP6_11, FN_IP6_12, FN_IP6_13, | ||
84 | FN_IP6_14, FN_IP6_15, FN_IP6_16, FN_IP6_19_17, FN_IP6_22_20, | ||
85 | FN_IP6_25_23, FN_IP6_28_26, FN_IP6_31_29, FN_IP7_2_0, FN_IP7_5_3, | ||
86 | FN_IP7_8_6, FN_IP7_11_9, FN_IP7_14_12, FN_IP7_17_15, FN_IP7_20_18, | ||
87 | FN_IP7_23_21, FN_IP7_26_24, FN_IP7_29_27, FN_IP8_2_0, FN_IP8_5_3, | ||
88 | FN_IP8_8_6, FN_IP8_11_9, FN_IP8_14_12, FN_IP8_16_15, FN_IP8_19_17, | ||
89 | FN_IP8_22_20, | ||
90 | |||
91 | /* GPSR4 */ | ||
92 | FN_IP8_25_23, FN_IP8_28_26, FN_IP8_31_29, FN_IP9_2_0, FN_IP9_5_3, | ||
93 | FN_IP9_8_6, FN_IP9_11_9, FN_IP9_14_12, FN_IP9_16_15, FN_IP9_18_17, | ||
94 | FN_IP9_21_19, FN_IP9_24_22, FN_IP9_27_25, FN_IP9_30_28, FN_IP10_2_0, | ||
95 | FN_IP10_5_3, FN_IP10_8_6, FN_IP10_11_9, FN_IP10_14_12, FN_IP10_17_15, | ||
96 | FN_IP10_20_18, FN_IP10_23_21, FN_IP10_26_24, FN_IP10_29_27, | ||
97 | FN_IP10_31_30, FN_IP11_2_0, FN_IP11_5_3, FN_IP11_7_6, FN_IP11_10_8, | ||
98 | FN_IP11_13_11, FN_IP11_15_14, FN_IP11_17_16, | ||
99 | |||
100 | /* GPSR5 */ | ||
101 | FN_IP11_20_18, FN_IP11_23_21, FN_IP11_26_24, FN_IP11_29_27, FN_IP12_2_0, | ||
102 | FN_IP12_5_3, FN_IP12_8_6, FN_IP12_10_9, FN_IP12_12_11, FN_IP12_14_13, | ||
103 | FN_IP12_17_15, FN_IP12_20_18, FN_IP12_23_21, FN_IP12_26_24, | ||
104 | FN_IP12_29_27, FN_IP13_2_0, FN_IP13_5_3, FN_IP13_8_6, FN_IP13_11_9, | ||
105 | FN_IP13_14_12, FN_IP13_17_15, FN_IP13_20_18, FN_IP13_23_21, | ||
106 | FN_IP13_26_24, FN_USB0_PWEN, FN_USB0_OVC, FN_USB1_PWEN, FN_USB1_OVC, | ||
107 | |||
108 | /* GPSR6 */ | ||
109 | FN_SD0_CLK, FN_SD0_CMD, FN_SD0_DATA0, FN_SD0_DATA1, FN_SD0_DATA2, | ||
110 | FN_SD0_DATA3, FN_SD0_CD, FN_SD0_WP, FN_SD1_CLK, FN_SD1_CMD, | ||
111 | FN_SD1_DATA0, FN_SD1_DATA1, FN_SD1_DATA2, FN_SD1_DATA3, FN_IP0_0, | ||
112 | FN_IP0_9_8, FN_IP0_10, FN_IP0_11, FN_IP0_12, FN_IP0_13, FN_IP0_14, | ||
113 | FN_IP0_15, FN_IP0_16, FN_IP0_17, FN_IP0_19_18, FN_IP0_21_20, | ||
114 | |||
115 | /* IPSR0 */ | ||
116 | FN_SD1_CD, FN_CAN0_RX, FN_SD1_WP, FN_IRQ7, FN_CAN0_TX, FN_MMC_CLK, | ||
117 | FN_SD2_CLK, FN_MMC_CMD, FN_SD2_CMD, FN_MMC_D0, FN_SD2_DATA0, FN_MMC_D1, | ||
118 | FN_SD2_DATA1, FN_MMC_D2, FN_SD2_DATA2, FN_MMC_D3, FN_SD2_DATA3, | ||
119 | FN_MMC_D4, FN_SD2_CD, FN_MMC_D5, FN_SD2_WP, FN_MMC_D6, FN_SCIF0_RXD, | ||
120 | FN_I2C2_SCL_B, FN_CAN1_RX, FN_MMC_D7, FN_SCIF0_TXD, FN_I2C2_SDA_B, | ||
121 | FN_CAN1_TX, FN_D0, FN_SCIFA3_SCK_B, FN_IRQ4, FN_D1, FN_SCIFA3_RXD_B, | ||
122 | FN_D2, FN_SCIFA3_TXD_B, FN_D3, FN_I2C3_SCL_B, FN_SCIF5_RXD_B, FN_D4, | ||
123 | FN_I2C3_SDA_B, FN_SCIF5_TXD_B, FN_D5, FN_SCIF4_RXD_B, FN_I2C0_SCL_D, | ||
124 | |||
125 | /* IPSR1 */ | ||
126 | FN_D6, FN_SCIF4_TXD_B, FN_I2C0_SDA_D, FN_D7, FN_IRQ3, FN_TCLK1, | ||
127 | FN_PWM6_B, FN_D8, FN_HSCIF2_HRX, FN_I2C1_SCL_B, FN_D9, FN_HSCIF2_HTX, | ||
128 | FN_I2C1_SDA_B, FN_D10, FN_HSCIF2_HSCK, FN_SCIF1_SCK_C, FN_IRQ6, | ||
129 | FN_PWM5_C, FN_D11, FN_HSCIF2_HCTS_N, FN_SCIF1_RXD_C, FN_I2C1_SCL_D, | ||
130 | FN_D12, FN_HSCIF2_HRTS_N, FN_SCIF1_TXD_C, FN_I2C1_SDA_D, FN_D13, | ||
131 | FN_SCIFA1_SCK, FN_TANS1, FN_PWM2_C, FN_TCLK2_B, FN_D14, FN_SCIFA1_RXD, | ||
132 | FN_IIC0_SCL_B, FN_D15, FN_SCIFA1_TXD, FN_IIC0_SDA_B, FN_A0, | ||
133 | FN_SCIFB1_SCK, FN_PWM3_B, FN_A1, FN_SCIFB1_TXD, FN_A3, FN_SCIFB0_SCK, | ||
134 | FN_A4, FN_SCIFB0_TXD, FN_A5, FN_SCIFB0_RXD, FN_PWM4_B, FN_TPUTO3_C, | ||
135 | FN_A6, FN_SCIFB0_CTS_N, FN_SCIFA4_RXD_B, FN_TPUTO2_C, | ||
136 | |||
137 | /* IPSR2 */ | ||
138 | FN_A7, FN_SCIFB0_RTS_N, FN_SCIFA4_TXD_B, FN_A8, FN_MSIOF1_RXD, | ||
139 | FN_SCIFA0_RXD_B, FN_A9, FN_MSIOF1_TXD, FN_SCIFA0_TXD_B, FN_A10, | ||
140 | FN_MSIOF1_SCK, FN_IIC1_SCL_B, FN_A11, FN_MSIOF1_SYNC, FN_IIC1_SDA_B, | ||
141 | FN_A12, FN_MSIOF1_SS1, FN_SCIFA5_RXD_B, FN_A13, FN_MSIOF1_SS2, | ||
142 | FN_SCIFA5_TXD_B, FN_A14, FN_MSIOF2_RXD, FN_HSCIF0_HRX_B, FN_DREQ1_N, | ||
143 | FN_A15, FN_MSIOF2_TXD, FN_HSCIF0_HTX_B, FN_DACK1, FN_A16, | ||
144 | FN_MSIOF2_SCK, FN_HSCIF0_HSCK_B, FN_SPEEDIN, FN_VSP, FN_CAN_CLK_C, | ||
145 | FN_TPUTO2_B, FN_A17, FN_MSIOF2_SYNC, FN_SCIF4_RXD_E, FN_CAN1_RX_B, | ||
146 | FN_AVB_AVTP_CAPTURE_B, FN_A18, FN_MSIOF2_SS1, FN_SCIF4_TXD_E, | ||
147 | FN_CAN1_TX_B, FN_AVB_AVTP_MATCH_B, FN_A19, FN_MSIOF2_SS2, FN_PWM4, | ||
148 | FN_TPUTO2, FN_MOUT0, FN_A20, FN_SPCLK, FN_MOUT1, | ||
149 | |||
150 | /* IPSR3 */ | ||
151 | FN_A21, FN_MOSI_IO0, FN_MOUT2, FN_A22, FN_MISO_IO1, FN_MOUT5, | ||
152 | FN_ATADIR1_N, FN_A23, FN_IO2, FN_MOUT6, FN_ATAWR1_N, FN_A24, FN_IO3, | ||
153 | FN_EX_WAIT2, FN_A25, FN_SSL, FN_ATARD1_N, FN_CS0_N, FN_VI1_DATA8, | ||
154 | FN_CS1_N_A26, FN_VI1_DATA9, FN_EX_CS0_N, FN_VI1_DATA10, FN_EX_CS1_N, | ||
155 | FN_TPUTO3_B, FN_SCIFB2_RXD, FN_VI1_DATA11, FN_EX_CS2_N, FN_PWM0, | ||
156 | FN_SCIF4_RXD_C, FN_TS_SDATA_B, FN_RIF0_SYNC, FN_TPUTO3, FN_SCIFB2_TXD, | ||
157 | FN_SDATA_B, FN_EX_CS3_N, FN_SCIFA2_SCK, FN_SCIF4_TXD_C, FN_TS_SCK_B, | ||
158 | FN_RIF0_CLK, FN_BPFCLK, FN_SCIFB2_SCK, FN_MDATA_B, FN_EX_CS4_N, | ||
159 | FN_SCIFA2_RXD, FN_I2C2_SCL_E, FN_TS_SDEN_B, FN_RIF0_D0, FN_FMCLK, | ||
160 | FN_SCIFB2_CTS_N, FN_SCKZ_B, FN_EX_CS5_N, FN_SCIFA2_TXD, FN_I2C2_SDA_E, | ||
161 | FN_TS_SPSYNC_B, FN_RIF0_D1, FN_FMIN, FN_SCIFB2_RTS_N, FN_STM_N_B, | ||
162 | FN_BS_N, FN_DRACK0, FN_PWM1_C, FN_TPUTO0_C, FN_ATACS01_N, FN_MTS_N_B, | ||
163 | FN_RD_N, FN_ATACS11_N, FN_RD_WR_N, FN_ATAG1_N, | ||
164 | |||
165 | /* IPSR4 */ | ||
166 | FN_EX_WAIT0, FN_CAN_CLK_B, FN_SCIF_CLK, FN_PWMFSW0, FN_DU0_DR0, | ||
167 | FN_LCDOUT16, FN_SCIF5_RXD_C, FN_I2C2_SCL_D, FN_CC50_STATE0, | ||
168 | FN_DU0_DR1, FN_LCDOUT17, FN_SCIF5_TXD_C, FN_I2C2_SDA_D, FN_CC50_STATE1, | ||
169 | FN_DU0_DR2, FN_LCDOUT18, FN_CC50_STATE2, FN_DU0_DR3, FN_LCDOUT19, | ||
170 | FN_CC50_STATE3, FN_DU0_DR4, FN_LCDOUT20, FN_CC50_STATE4, FN_DU0_DR5, | ||
171 | FN_LCDOUT21, FN_CC50_STATE5, FN_DU0_DR6, FN_LCDOUT22, FN_CC50_STATE6, | ||
172 | FN_DU0_DR7, FN_LCDOUT23, FN_CC50_STATE7, FN_DU0_DG0, FN_LCDOUT8, | ||
173 | FN_SCIFA0_RXD_C, FN_I2C3_SCL_D, FN_CC50_STATE8, FN_DU0_DG1, FN_LCDOUT9, | ||
174 | FN_SCIFA0_TXD_C, FN_I2C3_SDA_D, FN_CC50_STATE9, FN_DU0_DG2, FN_LCDOUT10, | ||
175 | FN_CC50_STATE10, FN_DU0_DG3, FN_LCDOUT11, FN_CC50_STATE11, FN_DU0_DG4, | ||
176 | FN_LCDOUT12, FN_CC50_STATE12, | ||
177 | |||
178 | /* IPSR5 */ | ||
179 | FN_DU0_DG5, FN_LCDOUT13, FN_CC50_STATE13, FN_DU0_DG6, FN_LCDOUT14, | ||
180 | FN_CC50_STATE14, FN_DU0_DG7, FN_LCDOUT15, FN_CC50_STATE15, FN_DU0_DB0, | ||
181 | FN_LCDOUT0, FN_SCIFA4_RXD_C, FN_I2C4_SCL_D, FN_CAN0_RX_C, | ||
182 | FN_CC50_STATE16, FN_DU0_DB1, FN_LCDOUT1, FN_SCIFA4_TXD_C, FN_I2C4_SDA_D, | ||
183 | FN_CAN0_TX_C, FN_CC50_STATE17, FN_DU0_DB2, FN_LCDOUT2, FN_CC50_STATE18, | ||
184 | FN_DU0_DB3, FN_LCDOUT3, FN_CC50_STATE19, FN_DU0_DB4, FN_LCDOUT4, | ||
185 | FN_CC50_STATE20, FN_DU0_DB5, FN_LCDOUT5, FN_CC50_STATE21, FN_DU0_DB6, | ||
186 | FN_LCDOUT6, FN_CC50_STATE22, FN_DU0_DB7, FN_LCDOUT7, FN_CC50_STATE23, | ||
187 | FN_DU0_DOTCLKIN, FN_QSTVA_QVS, FN_CC50_STATE24, FN_DU0_DOTCLKOUT0, | ||
188 | FN_QCLK, FN_CC50_STATE25, FN_DU0_DOTCLKOUT1, FN_QSTVB_QVE, | ||
189 | FN_CC50_STATE26, FN_DU0_EXHSYNC_DU0_HSYNC, FN_QSTH_QHS, FN_CC50_STATE27, | ||
190 | |||
191 | /* IPSR6 */ | ||
192 | FN_DU0_EXVSYNC_DU0_VSYNC, FN_QSTB_QHE, FN_CC50_STATE28, | ||
193 | FN_DU0_EXODDF_DU0_ODDF_DISP_CDE, FN_QCPV_QDE, FN_CC50_STATE29, | ||
194 | FN_DU0_DISP, FN_QPOLA, FN_CC50_STATE30, FN_DU0_CDE, FN_QPOLB, | ||
195 | FN_CC50_STATE31, FN_VI0_CLK, FN_AVB_RX_CLK, FN_VI0_DATA0_VI0_B0, | ||
196 | FN_AVB_RX_DV, FN_VI0_DATA1_VI0_B1, FN_AVB_RXD0, FN_VI0_DATA2_VI0_B2, | ||
197 | FN_AVB_RXD1, FN_VI0_DATA3_VI0_B3, FN_AVB_RXD2, FN_VI0_DATA4_VI0_B4, | ||
198 | FN_AVB_RXD3, FN_VI0_DATA5_VI0_B5, FN_AVB_RXD4, FN_VI0_DATA6_VI0_B6, | ||
199 | FN_AVB_RXD5, FN_VI0_DATA7_VI0_B7, FN_AVB_RXD6, FN_VI0_CLKENB, | ||
200 | FN_I2C3_SCL, FN_SCIFA5_RXD_C, FN_IETX_C, FN_AVB_RXD7, FN_VI0_FIELD, | ||
201 | FN_I2C3_SDA, FN_SCIFA5_TXD_C, FN_IECLK_C, FN_AVB_RX_ER, FN_VI0_HSYNC_N, | ||
202 | FN_SCIF0_RXD_B, FN_I2C0_SCL_C, FN_IERX_C, FN_AVB_COL, FN_VI0_VSYNC_N, | ||
203 | FN_SCIF0_TXD_B, FN_I2C0_SDA_C, FN_AUDIO_CLKOUT_B, FN_AVB_TX_EN, | ||
204 | FN_ETH_MDIO, FN_VI0_G0, FN_MSIOF2_RXD_B, FN_IIC0_SCL_D, FN_AVB_TX_CLK, | ||
205 | FN_ADIDATA, FN_AD_DI, | ||
206 | |||
207 | /* IPSR7 */ | ||
208 | FN_ETH_CRS_DV, FN_VI0_G1, FN_MSIOF2_TXD_B, FN_IIC0_SDA_D, FN_AVB_TXD0, | ||
209 | FN_ADICS_SAMP, FN_AD_DO, FN_ETH_RX_ER, FN_VI0_G2, FN_MSIOF2_SCK_B, | ||
210 | FN_CAN0_RX_B, FN_AVB_TXD1, FN_ADICLK, FN_AD_CLK, FN_ETH_RXD0, FN_VI0_G3, | ||
211 | FN_MSIOF2_SYNC_B, FN_CAN0_TX_B, FN_AVB_TXD2, FN_ADICHS0, FN_AD_NCS_N, | ||
212 | FN_ETH_RXD1, FN_VI0_G4, FN_MSIOF2_SS1_B, FN_SCIF4_RXD_D, FN_AVB_TXD3, | ||
213 | FN_ADICHS1, FN_ETH_LINK, FN_VI0_G5, FN_MSIOF2_SS2_B, FN_SCIF4_TXD_D, | ||
214 | FN_AVB_TXD4, FN_ADICHS2, FN_ETH_REFCLK, FN_VI0_G6, FN_SCIF2_SCK_C, | ||
215 | FN_AVB_TXD5, FN_SSI_SCK5_B, FN_ETH_TXD1, FN_VI0_G7, FN_SCIF2_RXD_C, | ||
216 | FN_IIC1_SCL_D, FN_AVB_TXD6, FN_SSI_WS5_B, FN_ETH_TX_EN, FN_VI0_R0, | ||
217 | FN_SCIF2_TXD_C, FN_IIC1_SDA_D, FN_AVB_TXD7, FN_SSI_SDATA5_B, | ||
218 | FN_ETH_MAGIC, FN_VI0_R1, FN_SCIF3_SCK_B, FN_AVB_TX_ER, FN_SSI_SCK6_B, | ||
219 | FN_ETH_TXD0, FN_VI0_R2, FN_SCIF3_RXD_B, FN_I2C4_SCL_E, FN_AVB_GTX_CLK, | ||
220 | FN_SSI_WS6_B, FN_DREQ0_N, FN_SCIFB1_RXD, | ||
221 | |||
222 | /* IPSR8 */ | ||
223 | FN_ETH_MDC, FN_VI0_R3, FN_SCIF3_TXD_B, FN_I2C4_SDA_E, FN_AVB_MDC, | ||
224 | FN_SSI_SDATA6_B, FN_HSCIF0_HRX, FN_VI0_R4, FN_I2C1_SCL_C, | ||
225 | FN_AUDIO_CLKA_B, FN_AVB_MDIO, FN_SSI_SCK78_B, FN_HSCIF0_HTX, | ||
226 | FN_VI0_R5, FN_I2C1_SDA_C, FN_AUDIO_CLKB_B, FN_AVB_LINK, FN_SSI_WS78_B, | ||
227 | FN_HSCIF0_HCTS_N, FN_VI0_R6, FN_SCIF0_RXD_D, FN_I2C0_SCL_E, | ||
228 | FN_AVB_MAGIC, FN_SSI_SDATA7_B, FN_HSCIF0_HRTS_N, FN_VI0_R7, | ||
229 | FN_SCIF0_TXD_D, FN_I2C0_SDA_E, FN_AVB_PHY_INT, FN_SSI_SDATA8_B, | ||
230 | FN_HSCIF0_HSCK, FN_SCIF_CLK_B, FN_AVB_CRS, FN_AUDIO_CLKC_B, | ||
231 | FN_I2C0_SCL, FN_SCIF0_RXD_C, FN_PWM5, FN_TCLK1_B, FN_AVB_GTXREFCLK, | ||
232 | FN_CAN1_RX_D, FN_TPUTO0_B, FN_I2C0_SDA, FN_SCIF0_TXD_C, FN_TPUTO0, | ||
233 | FN_CAN_CLK, FN_DVC_MUTE, FN_CAN1_TX_D, FN_I2C1_SCL, FN_SCIF4_RXD, | ||
234 | FN_PWM5_B, FN_DU1_DR0, FN_RIF1_SYNC_B, FN_TS_SDATA_D, FN_TPUTO1_B, | ||
235 | FN_I2C1_SDA, FN_SCIF4_TXD, FN_IRQ5, FN_DU1_DR1, FN_RIF1_CLK_B, | ||
236 | FN_TS_SCK_D, FN_BPFCLK_C, FN_MSIOF0_RXD, FN_SCIF5_RXD, FN_I2C2_SCL_C, | ||
237 | FN_DU1_DR2, FN_RIF1_D0_B, FN_TS_SDEN_D, FN_FMCLK_C, FN_RDS_CLK, | ||
238 | |||
239 | /* IPSR9 */ | ||
240 | FN_MSIOF0_TXD, FN_SCIF5_TXD, FN_I2C2_SDA_C, FN_DU1_DR3, FN_RIF1_D1_B, | ||
241 | FN_TS_SPSYNC_D, FN_FMIN_C, FN_RDS_DATA, FN_MSIOF0_SCK, FN_IRQ0, | ||
242 | FN_TS_SDATA, FN_DU1_DR4, FN_RIF1_SYNC, FN_TPUTO1_C, FN_MSIOF0_SYNC, | ||
243 | FN_PWM1, FN_TS_SCK, FN_DU1_DR5, FN_RIF1_CLK, FN_BPFCLK_B, FN_MSIOF0_SS1, | ||
244 | FN_SCIFA0_RXD, FN_TS_SDEN, FN_DU1_DR6, FN_RIF1_D0, FN_FMCLK_B, | ||
245 | FN_RDS_CLK_B, FN_MSIOF0_SS2, FN_SCIFA0_TXD, FN_TS_SPSYNC, FN_DU1_DR7, | ||
246 | FN_RIF1_D1, FN_FMIN_B, FN_RDS_DATA_B, FN_HSCIF1_HRX, FN_I2C4_SCL, | ||
247 | FN_PWM6, FN_DU1_DG0, FN_HSCIF1_HTX, FN_I2C4_SDA, FN_TPUTO1, FN_DU1_DG1, | ||
248 | FN_HSCIF1_HSCK, FN_PWM2, FN_IETX, FN_DU1_DG2, FN_REMOCON_B, | ||
249 | FN_SPEEDIN_B, FN_VSP_B, FN_HSCIF1_HCTS_N, FN_SCIFA4_RXD, FN_IECLK, | ||
250 | FN_DU1_DG3, FN_SSI_SCK1_B, FN_CAN_DEBUG_HW_TRIGGER, FN_CC50_STATE32, | ||
251 | FN_HSCIF1_HRTS_N, FN_SCIFA4_TXD, FN_IERX, FN_DU1_DG4, FN_SSI_WS1_B, | ||
252 | FN_CAN_STEP0, FN_CC50_STATE33, FN_SCIF1_SCK, FN_PWM3, FN_TCLK2, | ||
253 | FN_DU1_DG5, FN_SSI_SDATA1_B, FN_CAN_TXCLK, FN_CC50_STATE34, | ||
254 | |||
255 | /* IPSR10 */ | ||
256 | FN_SCIF1_RXD, FN_IIC0_SCL, FN_DU1_DG6, FN_SSI_SCK2_B, FN_CAN_DEBUGOUT0, | ||
257 | FN_CC50_STATE35, FN_SCIF1_TXD, FN_IIC0_SDA, FN_DU1_DG7, FN_SSI_WS2_B, | ||
258 | FN_CAN_DEBUGOUT1, FN_CC50_STATE36, FN_SCIF2_RXD, FN_IIC1_SCL, | ||
259 | FN_DU1_DB0, FN_SSI_SDATA2_B, FN_USB0_EXTLP, FN_CAN_DEBUGOUT2, | ||
260 | FN_CC50_STATE37, FN_SCIF2_TXD, FN_IIC1_SDA, FN_DU1_DB1, FN_SSI_SCK9_B, | ||
261 | FN_USB0_OVC1, FN_CAN_DEBUGOUT3, FN_CC50_STATE38, FN_SCIF2_SCK, FN_IRQ1, | ||
262 | FN_DU1_DB2, FN_SSI_WS9_B, FN_USB0_IDIN, FN_CAN_DEBUGOUT4, | ||
263 | FN_CC50_STATE39, FN_SCIF3_SCK, FN_IRQ2, FN_BPFCLK_D, FN_DU1_DB3, | ||
264 | FN_SSI_SDATA9_B, FN_TANS2, FN_CAN_DEBUGOUT5, FN_CC50_OSCOUT, | ||
265 | FN_SCIF3_RXD, FN_I2C1_SCL_E, FN_FMCLK_D, FN_DU1_DB4, FN_AUDIO_CLKA_C, | ||
266 | FN_SSI_SCK4_B, FN_CAN_DEBUGOUT6, FN_RDS_CLK_C, FN_SCIF3_TXD, | ||
267 | FN_I2C1_SDA_E, FN_FMIN_D, FN_DU1_DB5, FN_AUDIO_CLKB_C, FN_SSI_WS4_B, | ||
268 | FN_CAN_DEBUGOUT7, FN_RDS_DATA_C, FN_I2C2_SCL, FN_SCIFA5_RXD, FN_DU1_DB6, | ||
269 | FN_AUDIO_CLKC_C, FN_SSI_SDATA4_B, FN_CAN_DEBUGOUT8, FN_I2C2_SDA, | ||
270 | FN_SCIFA5_TXD, FN_DU1_DB7, FN_AUDIO_CLKOUT_C, FN_CAN_DEBUGOUT9, | ||
271 | FN_SSI_SCK5, FN_SCIFA3_SCK, FN_DU1_DOTCLKIN, FN_CAN_DEBUGOUT10, | ||
272 | |||
273 | /* IPSR11 */ | ||
274 | FN_SSI_WS5, FN_SCIFA3_RXD, FN_I2C3_SCL_C, FN_DU1_DOTCLKOUT0, | ||
275 | FN_CAN_DEBUGOUT11, FN_SSI_SDATA5, FN_SCIFA3_TXD, FN_I2C3_SDA_C, | ||
276 | FN_DU1_DOTCLKOUT1, FN_CAN_DEBUGOUT12, FN_SSI_SCK6, FN_SCIFA1_SCK_B, | ||
277 | FN_DU1_EXHSYNC_DU1_HSYNC, FN_CAN_DEBUGOUT13, FN_SSI_WS6, | ||
278 | FN_SCIFA1_RXD_B, FN_I2C4_SCL_C, FN_DU1_EXVSYNC_DU1_VSYNC, | ||
279 | FN_CAN_DEBUGOUT14, FN_SSI_SDATA6, FN_SCIFA1_TXD_B, FN_I2C4_SDA_C, | ||
280 | FN_DU1_EXODDF_DU1_ODDF_DISP_CDE, FN_CAN_DEBUGOUT15, FN_SSI_SCK78, | ||
281 | FN_SCIFA2_SCK_B, FN_IIC0_SDA_C, FN_DU1_DISP, FN_SSI_WS78, | ||
282 | FN_SCIFA2_RXD_B, FN_IIC0_SCL_C, FN_DU1_CDE, FN_SSI_SDATA7, | ||
283 | FN_SCIFA2_TXD_B, FN_IRQ8, FN_AUDIO_CLKA_D, FN_CAN_CLK_D, FN_PCMOE_N, | ||
284 | FN_SSI_SCK0129, FN_MSIOF1_RXD_B, FN_SCIF5_RXD_D, FN_ADIDATA_B, | ||
285 | FN_AD_DI_B, FN_PCMWE_N, FN_SSI_WS0129, FN_MSIOF1_TXD_B, FN_SCIF5_TXD_D, | ||
286 | FN_ADICS_SAMP_B, FN_AD_DO_B, FN_SSI_SDATA0, FN_MSIOF1_SCK_B, FN_PWM0_B, | ||
287 | FN_ADICLK_B, FN_AD_CLK_B, | ||
288 | |||
289 | /* IPSR12 */ | ||
290 | FN_SSI_SCK34, FN_MSIOF1_SYNC_B, FN_SCIFA1_SCK_C, FN_ADICHS0_B, | ||
291 | FN_AD_NCS_N_B, FN_DREQ1_N_B, FN_SSI_WS34, FN_MSIOF1_SS1_B, | ||
292 | FN_SCIFA1_RXD_C, FN_ADICHS1_B, FN_CAN1_RX_C, FN_DACK1_B, FN_SSI_SDATA3, | ||
293 | FN_MSIOF1_SS2_B, FN_SCIFA1_TXD_C, FN_ADICHS2_B, FN_CAN1_TX_C, | ||
294 | FN_DREQ2_N, FN_SSI_SCK4, FN_MLB_CLK, FN_IETX_B, FN_IRD_TX, FN_SSI_WS4, | ||
295 | FN_MLB_SIG, FN_IECLK_B, FN_IRD_RX, FN_SSI_SDATA4, FN_MLB_DAT, | ||
296 | FN_IERX_B, FN_IRD_SCK, FN_SSI_SDATA8, FN_SCIF1_SCK_B, | ||
297 | FN_PWM1_B, FN_IRQ9, FN_REMOCON, FN_DACK2, FN_ETH_MDIO_B, FN_SSI_SCK1, | ||
298 | FN_SCIF1_RXD_B, FN_IIC1_SCL_C, FN_VI1_CLK, FN_CAN0_RX_D, | ||
299 | FN_AVB_AVTP_CAPTURE, FN_ETH_CRS_DV_B, FN_SSI_WS1, FN_SCIF1_TXD_B, | ||
300 | FN_IIC1_SDA_C, FN_VI1_DATA0, FN_CAN0_TX_D, FN_AVB_AVTP_MATCH, | ||
301 | FN_ETH_RX_ER_B, FN_SSI_SDATA1, FN_HSCIF1_HRX_B, FN_SDATA, FN_VI1_DATA1, | ||
302 | FN_ATAG0_N, FN_ETH_RXD0_B, FN_SSI_SCK2, FN_HSCIF1_HTX_B, FN_VI1_DATA2, | ||
303 | FN_MDATA, FN_ATAWR0_N, FN_ETH_RXD1_B, | ||
304 | |||
305 | /* IPSR13 */ | ||
306 | FN_SSI_WS2, FN_HSCIF1_HCTS_N_B, FN_SCIFA0_RXD_D, FN_VI1_DATA3, FN_SCKZ, | ||
307 | FN_ATACS00_N, FN_ETH_LINK_B, FN_SSI_SDATA2, FN_HSCIF1_HRTS_N_B, | ||
308 | FN_SCIFA0_TXD_D, FN_VI1_DATA4, FN_STM_N, FN_ATACS10_N, FN_ETH_REFCLK_B, | ||
309 | FN_SSI_SCK9, FN_SCIF2_SCK_B, FN_PWM2_B, FN_VI1_DATA5, FN_MTS_N, | ||
310 | FN_EX_WAIT1, FN_ETH_TXD1_B, FN_SSI_WS9, FN_SCIF2_RXD_B, FN_I2C3_SCL_E, | ||
311 | FN_VI1_DATA6, FN_ATARD0_N, FN_ETH_TX_EN_B, FN_SSI_SDATA9, | ||
312 | FN_SCIF2_TXD_B, FN_I2C3_SDA_E, FN_VI1_DATA7, FN_ATADIR0_N, | ||
313 | FN_ETH_MAGIC_B, FN_AUDIO_CLKA, FN_I2C0_SCL_B, FN_SCIFA4_RXD_D, | ||
314 | FN_VI1_CLKENB, FN_TS_SDATA_C, FN_RIF0_SYNC_B, FN_ETH_TXD0_B, | ||
315 | FN_AUDIO_CLKB, FN_I2C0_SDA_B, FN_SCIFA4_TXD_D, FN_VI1_FIELD, | ||
316 | FN_TS_SCK_C, FN_RIF0_CLK_B, FN_BPFCLK_E, FN_ETH_MDC_B, FN_AUDIO_CLKC, | ||
317 | FN_I2C4_SCL_B, FN_SCIFA5_RXD_D, FN_VI1_HSYNC_N, FN_TS_SDEN_C, | ||
318 | FN_RIF0_D0_B, FN_FMCLK_E, FN_RDS_CLK_D, FN_AUDIO_CLKOUT, FN_I2C4_SDA_B, | ||
319 | FN_SCIFA5_TXD_D, FN_VI1_VSYNC_N, FN_TS_SPSYNC_C, FN_RIF0_D1_B, | ||
320 | FN_FMIN_E, FN_RDS_DATA_D, | ||
321 | |||
322 | /* MOD_SEL */ | ||
323 | FN_SEL_ADG_0, FN_SEL_ADG_1, FN_SEL_ADG_2, FN_SEL_ADG_3, | ||
324 | FN_SEL_ADI_0, FN_SEL_ADI_1, FN_SEL_CAN_0, FN_SEL_CAN_1, | ||
325 | FN_SEL_CAN_2, FN_SEL_CAN_3, FN_SEL_DARC_0, FN_SEL_DARC_1, | ||
326 | FN_SEL_DARC_2, FN_SEL_DARC_3, FN_SEL_DARC_4, FN_SEL_DR0_0, | ||
327 | FN_SEL_DR0_1, FN_SEL_DR1_0, FN_SEL_DR1_1, FN_SEL_DR2_0, FN_SEL_DR2_1, | ||
328 | FN_SEL_DR3_0, FN_SEL_DR3_1, FN_SEL_ETH_0, FN_SEL_ETH_1, FN_SEL_FSN_0, | ||
329 | FN_SEL_FSN_1, FN_SEL_I2C00_0, FN_SEL_I2C00_1, FN_SEL_I2C00_2, | ||
330 | FN_SEL_I2C00_3, FN_SEL_I2C00_4, FN_SEL_I2C01_0, FN_SEL_I2C01_1, | ||
331 | FN_SEL_I2C01_2, FN_SEL_I2C01_3, FN_SEL_I2C01_4, FN_SEL_I2C02_0, | ||
332 | FN_SEL_I2C02_1, FN_SEL_I2C02_2, FN_SEL_I2C02_3, FN_SEL_I2C02_4, | ||
333 | FN_SEL_I2C03_0, FN_SEL_I2C03_1, FN_SEL_I2C03_2, FN_SEL_I2C03_3, | ||
334 | FN_SEL_I2C03_4, FN_SEL_I2C04_0, FN_SEL_I2C04_1, FN_SEL_I2C04_2, | ||
335 | FN_SEL_I2C04_3, FN_SEL_I2C04_4, FN_SEL_IIC00_0, FN_SEL_IIC00_1, | ||
336 | FN_SEL_IIC00_2, FN_SEL_IIC00_3, FN_SEL_AVB_0, FN_SEL_AVB_1, | ||
337 | |||
338 | /* MOD_SEL2 */ | ||
339 | FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2, FN_SEL_IIC01_0, | ||
340 | FN_SEL_IIC01_1, FN_SEL_IIC01_2, FN_SEL_IIC01_3, FN_SEL_LBS_0, | ||
341 | FN_SEL_LBS_1, FN_SEL_MSI1_0, FN_SEL_MSI1_1, FN_SEL_MSI2_0, | ||
342 | FN_SEL_MSI2_1, FN_SEL_RAD_0, FN_SEL_RAD_1, FN_SEL_RCN_0, | ||
343 | FN_SEL_RCN_1, FN_SEL_RSP_0, FN_SEL_RSP_1, FN_SEL_SCIFA0_0, | ||
344 | FN_SEL_SCIFA0_1, FN_SEL_SCIFA0_2, FN_SEL_SCIFA0_3, FN_SEL_SCIFA1_0, | ||
345 | FN_SEL_SCIFA1_1, FN_SEL_SCIFA1_2, FN_SEL_SCIFA2_0, FN_SEL_SCIFA2_1, | ||
346 | FN_SEL_SCIFA3_0, FN_SEL_SCIFA3_1, FN_SEL_SCIFA4_0, FN_SEL_SCIFA4_1, | ||
347 | FN_SEL_SCIFA4_2, FN_SEL_SCIFA4_3, FN_SEL_SCIFA5_0, FN_SEL_SCIFA5_1, | ||
348 | FN_SEL_SCIFA5_2, FN_SEL_SCIFA5_3, FN_SEL_SPDM_0, FN_SEL_SPDM_1, | ||
349 | FN_SEL_TMU_0, FN_SEL_TMU_1, FN_SEL_TSIF0_0, FN_SEL_TSIF0_1, | ||
350 | FN_SEL_TSIF0_2, FN_SEL_TSIF0_3, FN_SEL_CAN0_0, FN_SEL_CAN0_1, | ||
351 | FN_SEL_CAN0_2, FN_SEL_CAN0_3, FN_SEL_CAN1_0, FN_SEL_CAN1_1, | ||
352 | FN_SEL_CAN1_2, FN_SEL_CAN1_3, FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1, | ||
353 | FN_SEL_HSCIF1_0, FN_SEL_HSCIF1_1, FN_SEL_RDS_0, FN_SEL_RDS_1, | ||
354 | FN_SEL_RDS_2, FN_SEL_RDS_3, | ||
355 | |||
356 | /* MOD_SEL3 */ | ||
357 | FN_SEL_SCIF0_0, FN_SEL_SCIF0_1, FN_SEL_SCIF0_2, FN_SEL_SCIF0_3, | ||
358 | FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, FN_SEL_SCIF1_2, FN_SEL_SCIF2_0, | ||
359 | FN_SEL_SCIF2_1, FN_SEL_SCIF2_2, FN_SEL_SCIF3_0, FN_SEL_SCIF3_1, | ||
360 | FN_SEL_SCIF4_0, FN_SEL_SCIF4_1, FN_SEL_SCIF4_2, FN_SEL_SCIF4_3, | ||
361 | FN_SEL_SCIF4_4, FN_SEL_SCIF5_0, FN_SEL_SCIF5_1, FN_SEL_SCIF5_2, | ||
362 | FN_SEL_SCIF5_3, FN_SEL_SSI1_0, FN_SEL_SSI1_1, FN_SEL_SSI2_0, | ||
363 | FN_SEL_SSI2_1, FN_SEL_SSI4_0, FN_SEL_SSI4_1, FN_SEL_SSI5_0, | ||
364 | FN_SEL_SSI5_1, FN_SEL_SSI6_0, FN_SEL_SSI6_1, FN_SEL_SSI7_0, | ||
365 | FN_SEL_SSI7_1, FN_SEL_SSI8_0, FN_SEL_SSI8_1, FN_SEL_SSI9_0, | ||
366 | FN_SEL_SSI9_1, | ||
367 | PINMUX_FUNCTION_END, | ||
368 | |||
369 | PINMUX_MARK_BEGIN, | ||
370 | A2_MARK, WE0_N_MARK, WE1_N_MARK, DACK0_MARK, | ||
371 | |||
372 | USB0_PWEN_MARK, USB0_OVC_MARK, USB1_PWEN_MARK, USB1_OVC_MARK, | ||
373 | |||
374 | SD0_CLK_MARK, SD0_CMD_MARK, SD0_DATA0_MARK, SD0_DATA1_MARK, | ||
375 | SD0_DATA2_MARK, SD0_DATA3_MARK, SD0_CD_MARK, SD0_WP_MARK, | ||
376 | |||
377 | SD1_CLK_MARK, SD1_CMD_MARK, SD1_DATA0_MARK, SD1_DATA1_MARK, | ||
378 | SD1_DATA2_MARK, SD1_DATA3_MARK, | ||
379 | |||
380 | /* IPSR0 */ | ||
381 | SD1_CD_MARK, CAN0_RX_MARK, SD1_WP_MARK, IRQ7_MARK, CAN0_TX_MARK, | ||
382 | MMC_CLK_MARK, SD2_CLK_MARK, MMC_CMD_MARK, SD2_CMD_MARK, MMC_D0_MARK, | ||
383 | SD2_DATA0_MARK, MMC_D1_MARK, SD2_DATA1_MARK, MMC_D2_MARK, | ||
384 | SD2_DATA2_MARK, MMC_D3_MARK, SD2_DATA3_MARK, MMC_D4_MARK, SD2_CD_MARK, | ||
385 | MMC_D5_MARK, SD2_WP_MARK, MMC_D6_MARK, SCIF0_RXD_MARK, I2C2_SCL_B_MARK, | ||
386 | CAN1_RX_MARK, MMC_D7_MARK, SCIF0_TXD_MARK, I2C2_SDA_B_MARK, | ||
387 | CAN1_TX_MARK, D0_MARK, SCIFA3_SCK_B_MARK, IRQ4_MARK, D1_MARK, | ||
388 | SCIFA3_RXD_B_MARK, D2_MARK, SCIFA3_TXD_B_MARK, D3_MARK, I2C3_SCL_B_MARK, | ||
389 | SCIF5_RXD_B_MARK, D4_MARK, I2C3_SDA_B_MARK, SCIF5_TXD_B_MARK, D5_MARK, | ||
390 | SCIF4_RXD_B_MARK, I2C0_SCL_D_MARK, | ||
391 | |||
392 | /* IPSR1 */ | ||
393 | D6_MARK, SCIF4_TXD_B_MARK, I2C0_SDA_D_MARK, D7_MARK, IRQ3_MARK, | ||
394 | TCLK1_MARK, PWM6_B_MARK, D8_MARK, HSCIF2_HRX_MARK, I2C1_SCL_B_MARK, | ||
395 | D9_MARK, HSCIF2_HTX_MARK, I2C1_SDA_B_MARK, D10_MARK, | ||
396 | HSCIF2_HSCK_MARK, SCIF1_SCK_C_MARK, IRQ6_MARK, PWM5_C_MARK, | ||
397 | D11_MARK, HSCIF2_HCTS_N_MARK, SCIF1_RXD_C_MARK, I2C1_SCL_D_MARK, | ||
398 | D12_MARK, HSCIF2_HRTS_N_MARK, SCIF1_TXD_C_MARK, I2C1_SDA_D_MARK, | ||
399 | D13_MARK, SCIFA1_SCK_MARK, TANS1_MARK, PWM2_C_MARK, TCLK2_B_MARK, | ||
400 | D14_MARK, SCIFA1_RXD_MARK, IIC0_SCL_B_MARK, D15_MARK, SCIFA1_TXD_MARK, | ||
401 | IIC0_SDA_B_MARK, A0_MARK, SCIFB1_SCK_MARK, PWM3_B_MARK, A1_MARK, | ||
402 | SCIFB1_TXD_MARK, A3_MARK, SCIFB0_SCK_MARK, A4_MARK, SCIFB0_TXD_MARK, | ||
403 | A5_MARK, SCIFB0_RXD_MARK, PWM4_B_MARK, TPUTO3_C_MARK, A6_MARK, | ||
404 | SCIFB0_CTS_N_MARK, SCIFA4_RXD_B_MARK, TPUTO2_C_MARK, | ||
405 | |||
406 | /* IPSR2 */ | ||
407 | A7_MARK, SCIFB0_RTS_N_MARK, SCIFA4_TXD_B_MARK, A8_MARK, MSIOF1_RXD_MARK, | ||
408 | SCIFA0_RXD_B_MARK, A9_MARK, MSIOF1_TXD_MARK, SCIFA0_TXD_B_MARK, | ||
409 | A10_MARK, MSIOF1_SCK_MARK, IIC1_SCL_B_MARK, A11_MARK, MSIOF1_SYNC_MARK, | ||
410 | IIC1_SDA_B_MARK, A12_MARK, MSIOF1_SS1_MARK, SCIFA5_RXD_B_MARK, | ||
411 | A13_MARK, MSIOF1_SS2_MARK, SCIFA5_TXD_B_MARK, A14_MARK, MSIOF2_RXD_MARK, | ||
412 | HSCIF0_HRX_B_MARK, DREQ1_N_MARK, A15_MARK, MSIOF2_TXD_MARK, | ||
413 | HSCIF0_HTX_B_MARK, DACK1_MARK, A16_MARK, MSIOF2_SCK_MARK, | ||
414 | HSCIF0_HSCK_B_MARK, SPEEDIN_MARK, VSP_MARK, CAN_CLK_C_MARK, | ||
415 | TPUTO2_B_MARK, A17_MARK, MSIOF2_SYNC_MARK, SCIF4_RXD_E_MARK, | ||
416 | CAN1_RX_B_MARK, AVB_AVTP_CAPTURE_B_MARK, A18_MARK, MSIOF2_SS1_MARK, | ||
417 | SCIF4_TXD_E_MARK, CAN1_TX_B_MARK, AVB_AVTP_MATCH_B_MARK, A19_MARK, | ||
418 | MSIOF2_SS2_MARK, PWM4_MARK, TPUTO2_MARK, MOUT0_MARK, A20_MARK, | ||
419 | SPCLK_MARK, MOUT1_MARK, | ||
420 | |||
421 | /* IPSR3 */ | ||
422 | A21_MARK, MOSI_IO0_MARK, MOUT2_MARK, A22_MARK, MISO_IO1_MARK, | ||
423 | MOUT5_MARK, ATADIR1_N_MARK, A23_MARK, IO2_MARK, MOUT6_MARK, | ||
424 | ATAWR1_N_MARK, A24_MARK, IO3_MARK, EX_WAIT2_MARK, A25_MARK, SSL_MARK, | ||
425 | ATARD1_N_MARK, CS0_N_MARK, VI1_DATA8_MARK, CS1_N_A26_MARK, | ||
426 | VI1_DATA9_MARK, EX_CS0_N_MARK, VI1_DATA10_MARK, EX_CS1_N_MARK, | ||
427 | TPUTO3_B_MARK, SCIFB2_RXD_MARK, VI1_DATA11_MARK, EX_CS2_N_MARK, | ||
428 | PWM0_MARK, SCIF4_RXD_C_MARK, TS_SDATA_B_MARK, RIF0_SYNC_MARK, | ||
429 | TPUTO3_MARK, SCIFB2_TXD_MARK, SDATA_B_MARK, EX_CS3_N_MARK, | ||
430 | SCIFA2_SCK_MARK, SCIF4_TXD_C_MARK, TS_SCK_B_MARK, RIF0_CLK_MARK, | ||
431 | BPFCLK_MARK, SCIFB2_SCK_MARK, MDATA_B_MARK, EX_CS4_N_MARK, | ||
432 | SCIFA2_RXD_MARK, I2C2_SCL_E_MARK, TS_SDEN_B_MARK, RIF0_D0_MARK, | ||
433 | FMCLK_MARK, SCIFB2_CTS_N_MARK, SCKZ_B_MARK, EX_CS5_N_MARK, | ||
434 | SCIFA2_TXD_MARK, I2C2_SDA_E_MARK, TS_SPSYNC_B_MARK, RIF0_D1_MARK, | ||
435 | FMIN_MARK, SCIFB2_RTS_N_MARK, STM_N_B_MARK, BS_N_MARK, DRACK0_MARK, | ||
436 | PWM1_C_MARK, TPUTO0_C_MARK, ATACS01_N_MARK, MTS_N_B_MARK, RD_N_MARK, | ||
437 | ATACS11_N_MARK, RD_WR_N_MARK, ATAG1_N_MARK, | ||
438 | |||
439 | /* IPSR4 */ | ||
440 | EX_WAIT0_MARK, CAN_CLK_B_MARK, SCIF_CLK_MARK, PWMFSW0_MARK, | ||
441 | DU0_DR0_MARK, LCDOUT16_MARK, SCIF5_RXD_C_MARK, I2C2_SCL_D_MARK, | ||
442 | CC50_STATE0_MARK, DU0_DR1_MARK, LCDOUT17_MARK, SCIF5_TXD_C_MARK, | ||
443 | I2C2_SDA_D_MARK, CC50_STATE1_MARK, DU0_DR2_MARK, LCDOUT18_MARK, | ||
444 | CC50_STATE2_MARK, DU0_DR3_MARK, LCDOUT19_MARK, CC50_STATE3_MARK, | ||
445 | DU0_DR4_MARK, LCDOUT20_MARK, CC50_STATE4_MARK, DU0_DR5_MARK, | ||
446 | LCDOUT21_MARK, CC50_STATE5_MARK, DU0_DR6_MARK, LCDOUT22_MARK, | ||
447 | CC50_STATE6_MARK, DU0_DR7_MARK, LCDOUT23_MARK, CC50_STATE7_MARK, | ||
448 | DU0_DG0_MARK, LCDOUT8_MARK, SCIFA0_RXD_C_MARK, I2C3_SCL_D_MARK, | ||
449 | CC50_STATE8_MARK, DU0_DG1_MARK, LCDOUT9_MARK, SCIFA0_TXD_C_MARK, | ||
450 | I2C3_SDA_D_MARK, CC50_STATE9_MARK, DU0_DG2_MARK, LCDOUT10_MARK, | ||
451 | CC50_STATE10_MARK, DU0_DG3_MARK, LCDOUT11_MARK, CC50_STATE11_MARK, | ||
452 | DU0_DG4_MARK, LCDOUT12_MARK, CC50_STATE12_MARK, | ||
453 | |||
454 | /* IPSR5 */ | ||
455 | DU0_DG5_MARK, LCDOUT13_MARK, CC50_STATE13_MARK, DU0_DG6_MARK, | ||
456 | LCDOUT14_MARK, CC50_STATE14_MARK, DU0_DG7_MARK, LCDOUT15_MARK, | ||
457 | CC50_STATE15_MARK, DU0_DB0_MARK, LCDOUT0_MARK, SCIFA4_RXD_C_MARK, | ||
458 | I2C4_SCL_D_MARK, CAN0_RX_C_MARK, CC50_STATE16_MARK, DU0_DB1_MARK, | ||
459 | LCDOUT1_MARK, SCIFA4_TXD_C_MARK, I2C4_SDA_D_MARK, CAN0_TX_C_MARK, | ||
460 | CC50_STATE17_MARK, DU0_DB2_MARK, LCDOUT2_MARK, CC50_STATE18_MARK, | ||
461 | DU0_DB3_MARK, LCDOUT3_MARK, CC50_STATE19_MARK, DU0_DB4_MARK, | ||
462 | LCDOUT4_MARK, CC50_STATE20_MARK, DU0_DB5_MARK, LCDOUT5_MARK, | ||
463 | CC50_STATE21_MARK, DU0_DB6_MARK, LCDOUT6_MARK, CC50_STATE22_MARK, | ||
464 | DU0_DB7_MARK, LCDOUT7_MARK, CC50_STATE23_MARK, DU0_DOTCLKIN_MARK, | ||
465 | QSTVA_QVS_MARK, CC50_STATE24_MARK, DU0_DOTCLKOUT0_MARK, | ||
466 | QCLK_MARK, CC50_STATE25_MARK, DU0_DOTCLKOUT1_MARK, QSTVB_QVE_MARK, | ||
467 | CC50_STATE26_MARK, DU0_EXHSYNC_DU0_HSYNC_MARK, QSTH_QHS_MARK, | ||
468 | CC50_STATE27_MARK, | ||
469 | |||
470 | /* IPSR6 */ | ||
471 | DU0_EXVSYNC_DU0_VSYNC_MARK, QSTB_QHE_MARK, CC50_STATE28_MARK, | ||
472 | DU0_EXODDF_DU0_ODDF_DISP_CDE_MARK, QCPV_QDE_MARK, CC50_STATE29_MARK, | ||
473 | DU0_DISP_MARK, QPOLA_MARK, CC50_STATE30_MARK, DU0_CDE_MARK, QPOLB_MARK, | ||
474 | CC50_STATE31_MARK, VI0_CLK_MARK, AVB_RX_CLK_MARK, VI0_DATA0_VI0_B0_MARK, | ||
475 | AVB_RX_DV_MARK, VI0_DATA1_VI0_B1_MARK, AVB_RXD0_MARK, | ||
476 | VI0_DATA2_VI0_B2_MARK, AVB_RXD1_MARK, VI0_DATA3_VI0_B3_MARK, | ||
477 | AVB_RXD2_MARK, VI0_DATA4_VI0_B4_MARK, AVB_RXD3_MARK, | ||
478 | VI0_DATA5_VI0_B5_MARK, AVB_RXD4_MARK, VI0_DATA6_VI0_B6_MARK, | ||
479 | AVB_RXD5_MARK, VI0_DATA7_VI0_B7_MARK, AVB_RXD6_MARK, VI0_CLKENB_MARK, | ||
480 | I2C3_SCL_MARK, SCIFA5_RXD_C_MARK, IETX_C_MARK, AVB_RXD7_MARK, | ||
481 | VI0_FIELD_MARK, I2C3_SDA_MARK, SCIFA5_TXD_C_MARK, IECLK_C_MARK, | ||
482 | AVB_RX_ER_MARK, VI0_HSYNC_N_MARK, SCIF0_RXD_B_MARK, I2C0_SCL_C_MARK, | ||
483 | IERX_C_MARK, AVB_COL_MARK, VI0_VSYNC_N_MARK, SCIF0_TXD_B_MARK, | ||
484 | I2C0_SDA_C_MARK, AUDIO_CLKOUT_B_MARK, AVB_TX_EN_MARK, ETH_MDIO_MARK, | ||
485 | VI0_G0_MARK, MSIOF2_RXD_B_MARK, IIC0_SCL_D_MARK, AVB_TX_CLK_MARK, | ||
486 | ADIDATA_MARK, AD_DI_MARK, | ||
487 | |||
488 | /* IPSR7 */ | ||
489 | ETH_CRS_DV_MARK, VI0_G1_MARK, MSIOF2_TXD_B_MARK, IIC0_SDA_D_MARK, | ||
490 | AVB_TXD0_MARK, ADICS_SAMP_MARK, AD_DO_MARK, ETH_RX_ER_MARK, VI0_G2_MARK, | ||
491 | MSIOF2_SCK_B_MARK, CAN0_RX_B_MARK, AVB_TXD1_MARK, ADICLK_MARK, | ||
492 | AD_CLK_MARK, ETH_RXD0_MARK, VI0_G3_MARK, MSIOF2_SYNC_B_MARK, | ||
493 | CAN0_TX_B_MARK, AVB_TXD2_MARK, ADICHS0_MARK, AD_NCS_N_MARK, | ||
494 | ETH_RXD1_MARK, VI0_G4_MARK, MSIOF2_SS1_B_MARK, SCIF4_RXD_D_MARK, | ||
495 | AVB_TXD3_MARK, ADICHS1_MARK, ETH_LINK_MARK, VI0_G5_MARK, | ||
496 | MSIOF2_SS2_B_MARK, SCIF4_TXD_D_MARK, AVB_TXD4_MARK, ADICHS2_MARK, | ||
497 | ETH_REFCLK_MARK, VI0_G6_MARK, SCIF2_SCK_C_MARK, AVB_TXD5_MARK, | ||
498 | SSI_SCK5_B_MARK, ETH_TXD1_MARK, VI0_G7_MARK, SCIF2_RXD_C_MARK, | ||
499 | IIC1_SCL_D_MARK, AVB_TXD6_MARK, SSI_WS5_B_MARK, ETH_TX_EN_MARK, | ||
500 | VI0_R0_MARK, SCIF2_TXD_C_MARK, IIC1_SDA_D_MARK, AVB_TXD7_MARK, | ||
501 | SSI_SDATA5_B_MARK, ETH_MAGIC_MARK, VI0_R1_MARK, SCIF3_SCK_B_MARK, | ||
502 | AVB_TX_ER_MARK, SSI_SCK6_B_MARK, ETH_TXD0_MARK, VI0_R2_MARK, | ||
503 | SCIF3_RXD_B_MARK, I2C4_SCL_E_MARK, AVB_GTX_CLK_MARK, SSI_WS6_B_MARK, | ||
504 | DREQ0_N_MARK, SCIFB1_RXD_MARK, | ||
505 | |||
506 | /* IPSR8 */ | ||
507 | ETH_MDC_MARK, VI0_R3_MARK, SCIF3_TXD_B_MARK, I2C4_SDA_E_MARK, | ||
508 | AVB_MDC_MARK, SSI_SDATA6_B_MARK, HSCIF0_HRX_MARK, VI0_R4_MARK, | ||
509 | I2C1_SCL_C_MARK, AUDIO_CLKA_B_MARK, AVB_MDIO_MARK, SSI_SCK78_B_MARK, | ||
510 | HSCIF0_HTX_MARK, VI0_R5_MARK, I2C1_SDA_C_MARK, AUDIO_CLKB_B_MARK, | ||
511 | AVB_LINK_MARK, SSI_WS78_B_MARK, HSCIF0_HCTS_N_MARK, VI0_R6_MARK, | ||
512 | SCIF0_RXD_D_MARK, I2C0_SCL_E_MARK, AVB_MAGIC_MARK, SSI_SDATA7_B_MARK, | ||
513 | HSCIF0_HRTS_N_MARK, VI0_R7_MARK, SCIF0_TXD_D_MARK, I2C0_SDA_E_MARK, | ||
514 | AVB_PHY_INT_MARK, SSI_SDATA8_B_MARK, | ||
515 | HSCIF0_HSCK_MARK, SCIF_CLK_B_MARK, AVB_CRS_MARK, AUDIO_CLKC_B_MARK, | ||
516 | I2C0_SCL_MARK, SCIF0_RXD_C_MARK, PWM5_MARK, TCLK1_B_MARK, | ||
517 | AVB_GTXREFCLK_MARK, CAN1_RX_D_MARK, TPUTO0_B_MARK, I2C0_SDA_MARK, | ||
518 | SCIF0_TXD_C_MARK, TPUTO0_MARK, CAN_CLK_MARK, DVC_MUTE_MARK, | ||
519 | CAN1_TX_D_MARK, I2C1_SCL_MARK, SCIF4_RXD_MARK, PWM5_B_MARK, | ||
520 | DU1_DR0_MARK, RIF1_SYNC_B_MARK, TS_SDATA_D_MARK, TPUTO1_B_MARK, | ||
521 | I2C1_SDA_MARK, SCIF4_TXD_MARK, IRQ5_MARK, DU1_DR1_MARK, RIF1_CLK_B_MARK, | ||
522 | TS_SCK_D_MARK, BPFCLK_C_MARK, MSIOF0_RXD_MARK, SCIF5_RXD_MARK, | ||
523 | I2C2_SCL_C_MARK, DU1_DR2_MARK, RIF1_D0_B_MARK, TS_SDEN_D_MARK, | ||
524 | FMCLK_C_MARK, RDS_CLK_MARK, | ||
525 | |||
526 | /* IPSR9 */ | ||
527 | MSIOF0_TXD_MARK, SCIF5_TXD_MARK, I2C2_SDA_C_MARK, DU1_DR3_MARK, | ||
528 | RIF1_D1_B_MARK, TS_SPSYNC_D_MARK, FMIN_C_MARK, RDS_DATA_MARK, | ||
529 | MSIOF0_SCK_MARK, IRQ0_MARK, TS_SDATA_MARK, DU1_DR4_MARK, RIF1_SYNC_MARK, | ||
530 | TPUTO1_C_MARK, MSIOF0_SYNC_MARK, PWM1_MARK, TS_SCK_MARK, DU1_DR5_MARK, | ||
531 | RIF1_CLK_MARK, BPFCLK_B_MARK, MSIOF0_SS1_MARK, SCIFA0_RXD_MARK, | ||
532 | TS_SDEN_MARK, DU1_DR6_MARK, RIF1_D0_MARK, FMCLK_B_MARK, RDS_CLK_B_MARK, | ||
533 | MSIOF0_SS2_MARK, SCIFA0_TXD_MARK, TS_SPSYNC_MARK, DU1_DR7_MARK, | ||
534 | RIF1_D1_MARK, FMIN_B_MARK, RDS_DATA_B_MARK, HSCIF1_HRX_MARK, | ||
535 | I2C4_SCL_MARK, PWM6_MARK, DU1_DG0_MARK, HSCIF1_HTX_MARK, | ||
536 | I2C4_SDA_MARK, TPUTO1_MARK, DU1_DG1_MARK, HSCIF1_HSCK_MARK, | ||
537 | PWM2_MARK, IETX_MARK, DU1_DG2_MARK, REMOCON_B_MARK, SPEEDIN_B_MARK, | ||
538 | VSP_B_MARK, HSCIF1_HCTS_N_MARK, SCIFA4_RXD_MARK, IECLK_MARK, | ||
539 | DU1_DG3_MARK, SSI_SCK1_B_MARK, CAN_DEBUG_HW_TRIGGER_MARK, | ||
540 | CC50_STATE32_MARK, HSCIF1_HRTS_N_MARK, SCIFA4_TXD_MARK, IERX_MARK, | ||
541 | DU1_DG4_MARK, SSI_WS1_B_MARK, CAN_STEP0_MARK, CC50_STATE33_MARK, | ||
542 | SCIF1_SCK_MARK, PWM3_MARK, TCLK2_MARK, DU1_DG5_MARK, SSI_SDATA1_B_MARK, | ||
543 | CAN_TXCLK_MARK, CC50_STATE34_MARK, | ||
544 | |||
545 | /* IPSR10 */ | ||
546 | SCIF1_RXD_MARK, IIC0_SCL_MARK, DU1_DG6_MARK, SSI_SCK2_B_MARK, | ||
547 | CAN_DEBUGOUT0_MARK, CC50_STATE35_MARK, SCIF1_TXD_MARK, IIC0_SDA_MARK, | ||
548 | DU1_DG7_MARK, SSI_WS2_B_MARK, CAN_DEBUGOUT1_MARK, CC50_STATE36_MARK, | ||
549 | SCIF2_RXD_MARK, IIC1_SCL_MARK, DU1_DB0_MARK, SSI_SDATA2_B_MARK, | ||
550 | USB0_EXTLP_MARK, CAN_DEBUGOUT2_MARK, CC50_STATE37_MARK, SCIF2_TXD_MARK, | ||
551 | IIC1_SDA_MARK, DU1_DB1_MARK, SSI_SCK9_B_MARK, USB0_OVC1_MARK, | ||
552 | CAN_DEBUGOUT3_MARK, CC50_STATE38_MARK, SCIF2_SCK_MARK, IRQ1_MARK, | ||
553 | DU1_DB2_MARK, SSI_WS9_B_MARK, USB0_IDIN_MARK, CAN_DEBUGOUT4_MARK, | ||
554 | CC50_STATE39_MARK, SCIF3_SCK_MARK, IRQ2_MARK, BPFCLK_D_MARK, | ||
555 | DU1_DB3_MARK, SSI_SDATA9_B_MARK, TANS2_MARK, CAN_DEBUGOUT5_MARK, | ||
556 | CC50_OSCOUT_MARK, SCIF3_RXD_MARK, I2C1_SCL_E_MARK, FMCLK_D_MARK, | ||
557 | DU1_DB4_MARK, AUDIO_CLKA_C_MARK, SSI_SCK4_B_MARK, CAN_DEBUGOUT6_MARK, | ||
558 | RDS_CLK_C_MARK, SCIF3_TXD_MARK, I2C1_SDA_E_MARK, FMIN_D_MARK, | ||
559 | DU1_DB5_MARK, AUDIO_CLKB_C_MARK, SSI_WS4_B_MARK, CAN_DEBUGOUT7_MARK, | ||
560 | RDS_DATA_C_MARK, I2C2_SCL_MARK, SCIFA5_RXD_MARK, DU1_DB6_MARK, | ||
561 | AUDIO_CLKC_C_MARK, SSI_SDATA4_B_MARK, CAN_DEBUGOUT8_MARK, I2C2_SDA_MARK, | ||
562 | SCIFA5_TXD_MARK, DU1_DB7_MARK, AUDIO_CLKOUT_C_MARK, CAN_DEBUGOUT9_MARK, | ||
563 | SSI_SCK5_MARK, SCIFA3_SCK_MARK, DU1_DOTCLKIN_MARK, CAN_DEBUGOUT10_MARK, | ||
564 | |||
565 | /* IPSR11 */ | ||
566 | SSI_WS5_MARK, SCIFA3_RXD_MARK, I2C3_SCL_C_MARK, DU1_DOTCLKOUT0_MARK, | ||
567 | CAN_DEBUGOUT11_MARK, SSI_SDATA5_MARK, SCIFA3_TXD_MARK, I2C3_SDA_C_MARK, | ||
568 | DU1_DOTCLKOUT1_MARK, CAN_DEBUGOUT12_MARK, SSI_SCK6_MARK, | ||
569 | SCIFA1_SCK_B_MARK, DU1_EXHSYNC_DU1_HSYNC_MARK, CAN_DEBUGOUT13_MARK, | ||
570 | SSI_WS6_MARK, SCIFA1_RXD_B_MARK, I2C4_SCL_C_MARK, | ||
571 | DU1_EXVSYNC_DU1_VSYNC_MARK, CAN_DEBUGOUT14_MARK, SSI_SDATA6_MARK, | ||
572 | SCIFA1_TXD_B_MARK, I2C4_SDA_C_MARK, DU1_EXODDF_DU1_ODDF_DISP_CDE_MARK, | ||
573 | CAN_DEBUGOUT15_MARK, SSI_SCK78_MARK, SCIFA2_SCK_B_MARK, IIC0_SDA_C_MARK, | ||
574 | DU1_DISP_MARK, SSI_WS78_MARK, SCIFA2_RXD_B_MARK, IIC0_SCL_C_MARK, | ||
575 | DU1_CDE_MARK, SSI_SDATA7_MARK, SCIFA2_TXD_B_MARK, IRQ8_MARK, | ||
576 | AUDIO_CLKA_D_MARK, CAN_CLK_D_MARK, PCMOE_N_MARK, SSI_SCK0129_MARK, | ||
577 | MSIOF1_RXD_B_MARK, SCIF5_RXD_D_MARK, ADIDATA_B_MARK, AD_DI_B_MARK, | ||
578 | PCMWE_N_MARK, SSI_WS0129_MARK, MSIOF1_TXD_B_MARK, SCIF5_TXD_D_MARK, | ||
579 | ADICS_SAMP_B_MARK, AD_DO_B_MARK, SSI_SDATA0_MARK, MSIOF1_SCK_B_MARK, | ||
580 | PWM0_B_MARK, ADICLK_B_MARK, AD_CLK_B_MARK, | ||
581 | |||
582 | /* IPSR12 */ | ||
583 | SSI_SCK34_MARK, MSIOF1_SYNC_B_MARK, SCIFA1_SCK_C_MARK, ADICHS0_B_MARK, | ||
584 | AD_NCS_N_B_MARK, DREQ1_N_B_MARK, SSI_WS34_MARK, MSIOF1_SS1_B_MARK, | ||
585 | SCIFA1_RXD_C_MARK, ADICHS1_B_MARK, CAN1_RX_C_MARK, DACK1_B_MARK, | ||
586 | SSI_SDATA3_MARK, MSIOF1_SS2_B_MARK, SCIFA1_TXD_C_MARK, ADICHS2_B_MARK, | ||
587 | CAN1_TX_C_MARK, DREQ2_N_MARK, SSI_SCK4_MARK, MLB_CLK_MARK, IETX_B_MARK, | ||
588 | IRD_TX_MARK, SSI_WS4_MARK, MLB_SIG_MARK, IECLK_B_MARK, IRD_RX_MARK, | ||
589 | SSI_SDATA4_MARK, MLB_DAT_MARK, IERX_B_MARK, IRD_SCK_MARK, | ||
590 | SSI_SDATA8_MARK, SCIF1_SCK_B_MARK, PWM1_B_MARK, IRQ9_MARK, REMOCON_MARK, | ||
591 | DACK2_MARK, ETH_MDIO_B_MARK, SSI_SCK1_MARK, SCIF1_RXD_B_MARK, | ||
592 | IIC1_SCL_C_MARK, VI1_CLK_MARK, CAN0_RX_D_MARK, AVB_AVTP_CAPTURE_MARK, | ||
593 | ETH_CRS_DV_B_MARK, SSI_WS1_MARK, SCIF1_TXD_B_MARK, IIC1_SDA_C_MARK, | ||
594 | VI1_DATA0_MARK, CAN0_TX_D_MARK, AVB_AVTP_MATCH_MARK, ETH_RX_ER_B_MARK, | ||
595 | SSI_SDATA1_MARK, HSCIF1_HRX_B_MARK, VI1_DATA1_MARK, SDATA_MARK, | ||
596 | ATAG0_N_MARK, ETH_RXD0_B_MARK, SSI_SCK2_MARK, HSCIF1_HTX_B_MARK, | ||
597 | VI1_DATA2_MARK, MDATA_MARK, ATAWR0_N_MARK, ETH_RXD1_B_MARK, | ||
598 | |||
599 | /* IPSR13 */ | ||
600 | SSI_WS2_MARK, HSCIF1_HCTS_N_B_MARK, SCIFA0_RXD_D_MARK, VI1_DATA3_MARK, | ||
601 | SCKZ_MARK, ATACS00_N_MARK, ETH_LINK_B_MARK, SSI_SDATA2_MARK, | ||
602 | HSCIF1_HRTS_N_B_MARK, SCIFA0_TXD_D_MARK, VI1_DATA4_MARK, STM_N_MARK, | ||
603 | ATACS10_N_MARK, ETH_REFCLK_B_MARK, SSI_SCK9_MARK, SCIF2_SCK_B_MARK, | ||
604 | PWM2_B_MARK, VI1_DATA5_MARK, MTS_N_MARK, EX_WAIT1_MARK, | ||
605 | ETH_TXD1_B_MARK, SSI_WS9_MARK, SCIF2_RXD_B_MARK, I2C3_SCL_E_MARK, | ||
606 | VI1_DATA6_MARK, ATARD0_N_MARK, ETH_TX_EN_B_MARK, SSI_SDATA9_MARK, | ||
607 | SCIF2_TXD_B_MARK, I2C3_SDA_E_MARK, VI1_DATA7_MARK, ATADIR0_N_MARK, | ||
608 | ETH_MAGIC_B_MARK, AUDIO_CLKA_MARK, I2C0_SCL_B_MARK, SCIFA4_RXD_D_MARK, | ||
609 | VI1_CLKENB_MARK, TS_SDATA_C_MARK, RIF0_SYNC_B_MARK, ETH_TXD0_B_MARK, | ||
610 | AUDIO_CLKB_MARK, I2C0_SDA_B_MARK, SCIFA4_TXD_D_MARK, VI1_FIELD_MARK, | ||
611 | TS_SCK_C_MARK, RIF0_CLK_B_MARK, BPFCLK_E_MARK, ETH_MDC_B_MARK, | ||
612 | AUDIO_CLKC_MARK, I2C4_SCL_B_MARK, SCIFA5_RXD_D_MARK, VI1_HSYNC_N_MARK, | ||
613 | TS_SDEN_C_MARK, RIF0_D0_B_MARK, FMCLK_E_MARK, RDS_CLK_D_MARK, | ||
614 | AUDIO_CLKOUT_MARK, I2C4_SDA_B_MARK, SCIFA5_TXD_D_MARK, VI1_VSYNC_N_MARK, | ||
615 | TS_SPSYNC_C_MARK, RIF0_D1_B_MARK, FMIN_E_MARK, RDS_DATA_D_MARK, | ||
616 | PINMUX_MARK_END, | ||
617 | }; | ||
618 | |||
619 | static const u16 pinmux_data[] = { | ||
620 | PINMUX_DATA_GP_ALL(), /* PINMUX_DATA(GP_M_N_DATA, GP_M_N_FN...), */ | ||
621 | |||
622 | PINMUX_DATA(A2_MARK, FN_A2), | ||
623 | PINMUX_DATA(WE0_N_MARK, FN_WE0_N), | ||
624 | PINMUX_DATA(WE1_N_MARK, FN_WE1_N), | ||
625 | PINMUX_DATA(DACK0_MARK, FN_DACK0), | ||
626 | PINMUX_DATA(USB0_PWEN_MARK, FN_USB0_PWEN), | ||
627 | PINMUX_DATA(USB0_OVC_MARK, FN_USB0_OVC), | ||
628 | PINMUX_DATA(USB1_PWEN_MARK, FN_USB1_PWEN), | ||
629 | PINMUX_DATA(USB1_OVC_MARK, FN_USB1_OVC), | ||
630 | PINMUX_DATA(SD0_CLK_MARK, FN_SD0_CLK), | ||
631 | PINMUX_DATA(SD0_CMD_MARK, FN_SD0_CMD), | ||
632 | PINMUX_DATA(SD0_DATA0_MARK, FN_SD0_DATA0), | ||
633 | PINMUX_DATA(SD0_DATA1_MARK, FN_SD0_DATA1), | ||
634 | PINMUX_DATA(SD0_DATA2_MARK, FN_SD0_DATA2), | ||
635 | PINMUX_DATA(SD0_DATA3_MARK, FN_SD0_DATA3), | ||
636 | PINMUX_DATA(SD0_CD_MARK, FN_SD0_CD), | ||
637 | PINMUX_DATA(SD0_WP_MARK, FN_SD0_WP), | ||
638 | PINMUX_DATA(SD1_CLK_MARK, FN_SD1_CLK), | ||
639 | PINMUX_DATA(SD1_CMD_MARK, FN_SD1_CMD), | ||
640 | PINMUX_DATA(SD1_DATA0_MARK, FN_SD1_DATA0), | ||
641 | PINMUX_DATA(SD1_DATA1_MARK, FN_SD1_DATA1), | ||
642 | PINMUX_DATA(SD1_DATA2_MARK, FN_SD1_DATA2), | ||
643 | PINMUX_DATA(SD1_DATA3_MARK, FN_SD1_DATA3), | ||
644 | |||
645 | /* IPSR0 */ | ||
646 | PINMUX_IPSR_DATA(IP0_0, SD1_CD), | ||
647 | PINMUX_IPSR_MODSEL_DATA(IP0_0, CAN0_RX, SEL_CAN0_0), | ||
648 | PINMUX_IPSR_DATA(IP0_9_8, SD1_WP), | ||
649 | PINMUX_IPSR_DATA(IP0_9_8, IRQ7), | ||
650 | PINMUX_IPSR_MODSEL_DATA(IP0_9_8, CAN0_TX, SEL_CAN0_0), | ||
651 | PINMUX_IPSR_DATA(IP0_10, MMC_CLK), | ||
652 | PINMUX_IPSR_DATA(IP0_10, SD2_CLK), | ||
653 | PINMUX_IPSR_DATA(IP0_11, MMC_CMD), | ||
654 | PINMUX_IPSR_DATA(IP0_11, SD2_CMD), | ||
655 | PINMUX_IPSR_DATA(IP0_12, MMC_D0), | ||
656 | PINMUX_IPSR_DATA(IP0_12, SD2_DATA0), | ||
657 | PINMUX_IPSR_DATA(IP0_13, MMC_D1), | ||
658 | PINMUX_IPSR_DATA(IP0_13, SD2_DATA1), | ||
659 | PINMUX_IPSR_DATA(IP0_14, MMC_D2), | ||
660 | PINMUX_IPSR_DATA(IP0_14, SD2_DATA2), | ||
661 | PINMUX_IPSR_DATA(IP0_15, MMC_D3), | ||
662 | PINMUX_IPSR_DATA(IP0_15, SD2_DATA3), | ||
663 | PINMUX_IPSR_DATA(IP0_16, MMC_D4), | ||
664 | PINMUX_IPSR_DATA(IP0_16, SD2_CD), | ||
665 | PINMUX_IPSR_DATA(IP0_17, MMC_D5), | ||
666 | PINMUX_IPSR_DATA(IP0_17, SD2_WP), | ||
667 | PINMUX_IPSR_DATA(IP0_19_18, MMC_D6), | ||
668 | PINMUX_IPSR_MODSEL_DATA(IP0_19_18, SCIF0_RXD, SEL_SCIF0_0), | ||
669 | PINMUX_IPSR_MODSEL_DATA(IP0_19_18, I2C2_SCL_B, SEL_I2C02_1), | ||
670 | PINMUX_IPSR_MODSEL_DATA(IP0_19_18, CAN1_RX, SEL_CAN1_0), | ||
671 | PINMUX_IPSR_DATA(IP0_21_20, MMC_D7), | ||
672 | PINMUX_IPSR_MODSEL_DATA(IP0_21_20, SCIF0_TXD, SEL_SCIF0_0), | ||
673 | PINMUX_IPSR_MODSEL_DATA(IP0_21_20, I2C2_SDA_B, SEL_I2C02_1), | ||
674 | PINMUX_IPSR_MODSEL_DATA(IP0_21_20, CAN1_TX, SEL_CAN1_0), | ||
675 | PINMUX_IPSR_DATA(IP0_23_22, D0), | ||
676 | PINMUX_IPSR_MODSEL_DATA(IP0_23_22, SCIFA3_SCK_B, SEL_SCIFA3_1), | ||
677 | PINMUX_IPSR_DATA(IP0_23_22, IRQ4), | ||
678 | PINMUX_IPSR_DATA(IP0_24, D1), | ||
679 | PINMUX_IPSR_MODSEL_DATA(IP0_24, SCIFA3_RXD_B, SEL_SCIFA3_1), | ||
680 | PINMUX_IPSR_DATA(IP0_25, D2), | ||
681 | PINMUX_IPSR_MODSEL_DATA(IP0_25, SCIFA3_TXD_B, SEL_SCIFA3_1), | ||
682 | PINMUX_IPSR_DATA(IP0_27_26, D3), | ||
683 | PINMUX_IPSR_MODSEL_DATA(IP0_27_26, I2C3_SCL_B, SEL_I2C03_1), | ||
684 | PINMUX_IPSR_MODSEL_DATA(IP0_27_26, SCIF5_RXD_B, SEL_SCIF5_1), | ||
685 | PINMUX_IPSR_DATA(IP0_29_28, D4), | ||
686 | PINMUX_IPSR_MODSEL_DATA(IP0_29_28, I2C3_SDA_B, SEL_I2C03_1), | ||
687 | PINMUX_IPSR_MODSEL_DATA(IP0_29_28, SCIF5_TXD_B, SEL_SCIF5_1), | ||
688 | PINMUX_IPSR_DATA(IP0_31_30, D5), | ||
689 | PINMUX_IPSR_MODSEL_DATA(IP0_31_30, SCIF4_RXD_B, SEL_SCIF4_1), | ||
690 | PINMUX_IPSR_MODSEL_DATA(IP0_31_30, I2C0_SCL_D, SEL_I2C00_3), | ||
691 | |||
692 | /* IPSR1 */ | ||
693 | PINMUX_IPSR_DATA(IP1_1_0, D6), | ||
694 | PINMUX_IPSR_MODSEL_DATA(IP1_1_0, SCIF4_TXD_B, SEL_SCIF4_1), | ||
695 | PINMUX_IPSR_MODSEL_DATA(IP1_1_0, I2C0_SDA_D, SEL_I2C00_3), | ||
696 | PINMUX_IPSR_DATA(IP1_3_2, D7), | ||
697 | PINMUX_IPSR_DATA(IP1_3_2, IRQ3), | ||
698 | PINMUX_IPSR_MODSEL_DATA(IP1_3_2, TCLK1, SEL_TMU_0), | ||
699 | PINMUX_IPSR_DATA(IP1_3_2, PWM6_B), | ||
700 | PINMUX_IPSR_DATA(IP1_5_4, D8), | ||
701 | PINMUX_IPSR_DATA(IP1_5_4, HSCIF2_HRX), | ||
702 | PINMUX_IPSR_MODSEL_DATA(IP1_5_4, I2C1_SCL_B, SEL_I2C01_1), | ||
703 | PINMUX_IPSR_DATA(IP1_7_6, D9), | ||
704 | PINMUX_IPSR_DATA(IP1_7_6, HSCIF2_HTX), | ||
705 | PINMUX_IPSR_MODSEL_DATA(IP1_7_6, I2C1_SDA_B, SEL_I2C01_1), | ||
706 | PINMUX_IPSR_DATA(IP1_10_8, D10), | ||
707 | PINMUX_IPSR_DATA(IP1_10_8, HSCIF2_HSCK), | ||
708 | PINMUX_IPSR_MODSEL_DATA(IP1_10_8, SCIF1_SCK_C, SEL_SCIF1_2), | ||
709 | PINMUX_IPSR_DATA(IP1_10_8, IRQ6), | ||
710 | PINMUX_IPSR_DATA(IP1_10_8, PWM5_C), | ||
711 | PINMUX_IPSR_DATA(IP1_12_11, D11), | ||
712 | PINMUX_IPSR_DATA(IP1_12_11, HSCIF2_HCTS_N), | ||
713 | PINMUX_IPSR_MODSEL_DATA(IP1_12_11, SCIF1_RXD_C, SEL_SCIF1_2), | ||
714 | PINMUX_IPSR_MODSEL_DATA(IP1_12_11, I2C1_SCL_D, SEL_I2C01_3), | ||
715 | PINMUX_IPSR_DATA(IP1_14_13, D12), | ||
716 | PINMUX_IPSR_DATA(IP1_14_13, HSCIF2_HRTS_N), | ||
717 | PINMUX_IPSR_MODSEL_DATA(IP1_14_13, SCIF1_TXD_C, SEL_SCIF1_2), | ||
718 | PINMUX_IPSR_MODSEL_DATA(IP1_14_13, I2C1_SDA_D, SEL_I2C01_3), | ||
719 | PINMUX_IPSR_DATA(IP1_17_15, D13), | ||
720 | PINMUX_IPSR_MODSEL_DATA(IP1_17_15, SCIFA1_SCK, SEL_SCIFA1_0), | ||
721 | PINMUX_IPSR_DATA(IP1_17_15, TANS1), | ||
722 | PINMUX_IPSR_DATA(IP1_17_15, PWM2_C), | ||
723 | PINMUX_IPSR_MODSEL_DATA(IP1_17_15, TCLK2_B, SEL_TMU_1), | ||
724 | PINMUX_IPSR_DATA(IP1_19_18, D14), | ||
725 | PINMUX_IPSR_MODSEL_DATA(IP1_19_18, SCIFA1_RXD, SEL_SCIFA1_0), | ||
726 | PINMUX_IPSR_MODSEL_DATA(IP1_19_18, IIC0_SCL_B, SEL_IIC00_1), | ||
727 | PINMUX_IPSR_DATA(IP1_21_20, D15), | ||
728 | PINMUX_IPSR_MODSEL_DATA(IP1_21_20, SCIFA1_TXD, SEL_SCIFA1_0), | ||
729 | PINMUX_IPSR_MODSEL_DATA(IP1_21_20, IIC0_SDA_B, SEL_IIC00_1), | ||
730 | PINMUX_IPSR_DATA(IP1_23_22, A0), | ||
731 | PINMUX_IPSR_DATA(IP1_23_22, SCIFB1_SCK), | ||
732 | PINMUX_IPSR_DATA(IP1_23_22, PWM3_B), | ||
733 | PINMUX_IPSR_DATA(IP1_24, A1), | ||
734 | PINMUX_IPSR_DATA(IP1_24, SCIFB1_TXD), | ||
735 | PINMUX_IPSR_DATA(IP1_26, A3), | ||
736 | PINMUX_IPSR_DATA(IP1_26, SCIFB0_SCK), | ||
737 | PINMUX_IPSR_DATA(IP1_27, A4), | ||
738 | PINMUX_IPSR_DATA(IP1_27, SCIFB0_TXD), | ||
739 | PINMUX_IPSR_DATA(IP1_29_28, A5), | ||
740 | PINMUX_IPSR_DATA(IP1_29_28, SCIFB0_RXD), | ||
741 | PINMUX_IPSR_DATA(IP1_29_28, PWM4_B), | ||
742 | PINMUX_IPSR_DATA(IP1_29_28, TPUTO3_C), | ||
743 | PINMUX_IPSR_DATA(IP1_31_30, A6), | ||
744 | PINMUX_IPSR_DATA(IP1_31_30, SCIFB0_CTS_N), | ||
745 | PINMUX_IPSR_MODSEL_DATA(IP1_31_30, SCIFA4_RXD_B, SEL_SCIFA4_1), | ||
746 | PINMUX_IPSR_DATA(IP1_31_30, TPUTO2_C), | ||
747 | |||
748 | /* IPSR2 */ | ||
749 | PINMUX_IPSR_DATA(IP2_1_0, A7), | ||
750 | PINMUX_IPSR_DATA(IP2_1_0, SCIFB0_RTS_N), | ||
751 | PINMUX_IPSR_MODSEL_DATA(IP2_1_0, SCIFA4_TXD_B, SEL_SCIFA4_1), | ||
752 | PINMUX_IPSR_DATA(IP2_3_2, A8), | ||
753 | PINMUX_IPSR_MODSEL_DATA(IP2_3_2, MSIOF1_RXD, SEL_MSI1_0), | ||
754 | PINMUX_IPSR_MODSEL_DATA(IP2_3_2, SCIFA0_RXD_B, SEL_SCIFA0_1), | ||
755 | PINMUX_IPSR_DATA(IP2_5_4, A9), | ||
756 | PINMUX_IPSR_MODSEL_DATA(IP2_5_4, MSIOF1_TXD, SEL_MSI1_0), | ||
757 | PINMUX_IPSR_MODSEL_DATA(IP2_5_4, SCIFA0_TXD_B, SEL_SCIFA0_1), | ||
758 | PINMUX_IPSR_DATA(IP2_7_6, A10), | ||
759 | PINMUX_IPSR_MODSEL_DATA(IP2_7_6, MSIOF1_SCK, SEL_MSI1_0), | ||
760 | PINMUX_IPSR_MODSEL_DATA(IP2_7_6, IIC1_SCL_B, SEL_IIC01_1), | ||
761 | PINMUX_IPSR_DATA(IP2_9_8, A11), | ||
762 | PINMUX_IPSR_MODSEL_DATA(IP2_9_8, MSIOF1_SYNC, SEL_MSI1_0), | ||
763 | PINMUX_IPSR_MODSEL_DATA(IP2_9_8, IIC1_SDA_B, SEL_IIC01_1), | ||
764 | PINMUX_IPSR_DATA(IP2_11_10, A12), | ||
765 | PINMUX_IPSR_MODSEL_DATA(IP2_11_10, MSIOF1_SS1, SEL_MSI1_0), | ||
766 | PINMUX_IPSR_MODSEL_DATA(IP2_11_10, SCIFA5_RXD_B, SEL_SCIFA5_1), | ||
767 | PINMUX_IPSR_DATA(IP2_13_12, A13), | ||
768 | PINMUX_IPSR_MODSEL_DATA(IP2_13_12, MSIOF1_SS2, SEL_MSI1_0), | ||
769 | PINMUX_IPSR_MODSEL_DATA(IP2_13_12, SCIFA5_TXD_B, SEL_SCIFA5_1), | ||
770 | PINMUX_IPSR_DATA(IP2_15_14, A14), | ||
771 | PINMUX_IPSR_MODSEL_DATA(IP2_15_14, MSIOF2_RXD, SEL_MSI2_0), | ||
772 | PINMUX_IPSR_MODSEL_DATA(IP2_15_14, HSCIF0_HRX_B, SEL_HSCIF0_1), | ||
773 | PINMUX_IPSR_MODSEL_DATA(IP2_15_14, DREQ1_N, SEL_LBS_0), | ||
774 | PINMUX_IPSR_DATA(IP2_17_16, A15), | ||
775 | PINMUX_IPSR_MODSEL_DATA(IP2_17_16, MSIOF2_TXD, SEL_MSI2_0), | ||
776 | PINMUX_IPSR_MODSEL_DATA(IP2_17_16, HSCIF0_HTX_B, SEL_HSCIF0_1), | ||
777 | PINMUX_IPSR_MODSEL_DATA(IP2_17_16, DACK1, SEL_LBS_0), | ||
778 | PINMUX_IPSR_DATA(IP2_20_18, A16), | ||
779 | PINMUX_IPSR_MODSEL_DATA(IP2_20_18, MSIOF2_SCK, SEL_MSI2_0), | ||
780 | PINMUX_IPSR_MODSEL_DATA(IP2_20_18, HSCIF0_HSCK_B, SEL_HSCIF0_1), | ||
781 | PINMUX_IPSR_MODSEL_DATA(IP2_20_18, SPEEDIN, SEL_RSP_0), | ||
782 | PINMUX_IPSR_MODSEL_DATA(IP2_20_18, VSP, SEL_SPDM_0), | ||
783 | PINMUX_IPSR_MODSEL_DATA(IP2_20_18, CAN_CLK_C, SEL_CAN_2), | ||
784 | PINMUX_IPSR_DATA(IP2_20_18, TPUTO2_B), | ||
785 | PINMUX_IPSR_DATA(IP2_23_21, A17), | ||
786 | PINMUX_IPSR_MODSEL_DATA(IP2_23_21, MSIOF2_SYNC, SEL_MSI2_0), | ||
787 | PINMUX_IPSR_MODSEL_DATA(IP2_23_21, SCIF4_RXD_E, SEL_SCIF4_4), | ||
788 | PINMUX_IPSR_MODSEL_DATA(IP2_23_21, CAN1_RX_B, SEL_CAN1_1), | ||
789 | PINMUX_IPSR_MODSEL_DATA(IP2_23_21, AVB_AVTP_CAPTURE_B, SEL_AVB_1), | ||
790 | PINMUX_IPSR_DATA(IP2_26_24, A18), | ||
791 | PINMUX_IPSR_MODSEL_DATA(IP2_26_24, MSIOF2_SS1, SEL_MSI2_0), | ||
792 | PINMUX_IPSR_MODSEL_DATA(IP2_26_24, SCIF4_TXD_E, SEL_SCIF4_4), | ||
793 | PINMUX_IPSR_MODSEL_DATA(IP2_26_24, CAN1_TX_B, SEL_CAN1_1), | ||
794 | PINMUX_IPSR_MODSEL_DATA(IP2_26_24, AVB_AVTP_MATCH_B, SEL_AVB_1), | ||
795 | PINMUX_IPSR_DATA(IP2_29_27, A19), | ||
796 | PINMUX_IPSR_MODSEL_DATA(IP2_29_27, MSIOF2_SS2, SEL_MSI2_0), | ||
797 | PINMUX_IPSR_DATA(IP2_29_27, PWM4), | ||
798 | PINMUX_IPSR_DATA(IP2_29_27, TPUTO2), | ||
799 | PINMUX_IPSR_DATA(IP2_29_27, MOUT0), | ||
800 | PINMUX_IPSR_DATA(IP2_31_30, A20), | ||
801 | PINMUX_IPSR_DATA(IP2_31_30, SPCLK), | ||
802 | PINMUX_IPSR_DATA(IP2_29_27, MOUT1), | ||
803 | |||
804 | /* IPSR3 */ | ||
805 | PINMUX_IPSR_DATA(IP3_1_0, A21), | ||
806 | PINMUX_IPSR_DATA(IP3_1_0, MOSI_IO0), | ||
807 | PINMUX_IPSR_DATA(IP3_1_0, MOUT2), | ||
808 | PINMUX_IPSR_DATA(IP3_3_2, A22), | ||
809 | PINMUX_IPSR_DATA(IP3_3_2, MISO_IO1), | ||
810 | PINMUX_IPSR_DATA(IP3_3_2, MOUT5), | ||
811 | PINMUX_IPSR_DATA(IP3_3_2, ATADIR1_N), | ||
812 | PINMUX_IPSR_DATA(IP3_5_4, A23), | ||
813 | PINMUX_IPSR_DATA(IP3_5_4, IO2), | ||
814 | PINMUX_IPSR_DATA(IP3_5_4, MOUT6), | ||
815 | PINMUX_IPSR_DATA(IP3_5_4, ATAWR1_N), | ||
816 | PINMUX_IPSR_DATA(IP3_7_6, A24), | ||
817 | PINMUX_IPSR_DATA(IP3_7_6, IO3), | ||
818 | PINMUX_IPSR_DATA(IP3_7_6, EX_WAIT2), | ||
819 | PINMUX_IPSR_DATA(IP3_9_8, A25), | ||
820 | PINMUX_IPSR_DATA(IP3_9_8, SSL), | ||
821 | PINMUX_IPSR_DATA(IP3_9_8, ATARD1_N), | ||
822 | PINMUX_IPSR_DATA(IP3_10, CS0_N), | ||
823 | PINMUX_IPSR_DATA(IP3_10, VI1_DATA8), | ||
824 | PINMUX_IPSR_DATA(IP3_11, CS1_N_A26), | ||
825 | PINMUX_IPSR_DATA(IP3_11, VI1_DATA9), | ||
826 | PINMUX_IPSR_DATA(IP3_12, EX_CS0_N), | ||
827 | PINMUX_IPSR_DATA(IP3_12, VI1_DATA10), | ||
828 | PINMUX_IPSR_DATA(IP3_14_13, EX_CS1_N), | ||
829 | PINMUX_IPSR_DATA(IP3_14_13, TPUTO3_B), | ||
830 | PINMUX_IPSR_DATA(IP3_14_13, SCIFB2_RXD), | ||
831 | PINMUX_IPSR_DATA(IP3_14_13, VI1_DATA11), | ||
832 | PINMUX_IPSR_DATA(IP3_17_15, EX_CS2_N), | ||
833 | PINMUX_IPSR_DATA(IP3_17_15, PWM0), | ||
834 | PINMUX_IPSR_MODSEL_DATA(IP3_17_15, SCIF4_RXD_C, SEL_SCIF4_2), | ||
835 | PINMUX_IPSR_MODSEL_DATA(IP3_17_15, TS_SDATA_B, SEL_TSIF0_1), | ||
836 | PINMUX_IPSR_MODSEL_DATA(IP3_17_15, RIF0_SYNC, SEL_DR0_0), | ||
837 | PINMUX_IPSR_DATA(IP3_17_15, TPUTO3), | ||
838 | PINMUX_IPSR_DATA(IP3_17_15, SCIFB2_TXD), | ||
839 | PINMUX_IPSR_MODSEL_DATA(IP3_17_15, SDATA_B, SEL_FSN_1), | ||
840 | PINMUX_IPSR_DATA(IP3_20_18, EX_CS3_N), | ||
841 | PINMUX_IPSR_MODSEL_DATA(IP3_20_18, SCIFA2_SCK, SEL_SCIFA2_0), | ||
842 | PINMUX_IPSR_MODSEL_DATA(IP3_20_18, SCIF4_TXD_C, SEL_SCIF4_2), | ||
843 | PINMUX_IPSR_MODSEL_DATA(IP3_20_18, TS_SCK_B, SEL_TSIF0_1), | ||
844 | PINMUX_IPSR_MODSEL_DATA(IP3_20_18, RIF0_CLK, SEL_DR0_0), | ||
845 | PINMUX_IPSR_MODSEL_DATA(IP3_20_18, BPFCLK, SEL_DARC_0), | ||
846 | PINMUX_IPSR_DATA(IP3_20_18, SCIFB2_SCK), | ||
847 | PINMUX_IPSR_MODSEL_DATA(IP3_20_18, MDATA_B, SEL_FSN_1), | ||
848 | PINMUX_IPSR_DATA(IP3_23_21, EX_CS4_N), | ||
849 | PINMUX_IPSR_MODSEL_DATA(IP3_23_21, SCIFA2_RXD, SEL_SCIFA2_0), | ||
850 | PINMUX_IPSR_MODSEL_DATA(IP3_23_21, I2C2_SCL_E, SEL_I2C02_4), | ||
851 | PINMUX_IPSR_MODSEL_DATA(IP3_23_21, TS_SDEN_B, SEL_TSIF0_1), | ||
852 | PINMUX_IPSR_MODSEL_DATA(IP3_23_21, RIF0_D0, SEL_DR0_0), | ||
853 | PINMUX_IPSR_MODSEL_DATA(IP3_23_21, FMCLK, SEL_DARC_0), | ||
854 | PINMUX_IPSR_DATA(IP3_23_21, SCIFB2_CTS_N), | ||
855 | PINMUX_IPSR_MODSEL_DATA(IP3_23_21, SCKZ_B, SEL_FSN_1), | ||
856 | PINMUX_IPSR_DATA(IP3_26_24, EX_CS5_N), | ||
857 | PINMUX_IPSR_MODSEL_DATA(IP3_26_24, SCIFA2_TXD, SEL_SCIFA2_0), | ||
858 | PINMUX_IPSR_MODSEL_DATA(IP3_26_24, I2C2_SDA_E, SEL_I2C02_4), | ||
859 | PINMUX_IPSR_MODSEL_DATA(IP3_26_24, TS_SPSYNC_B, SEL_TSIF0_1), | ||
860 | PINMUX_IPSR_MODSEL_DATA(IP3_26_24, RIF0_D1, SEL_DR1_0), | ||
861 | PINMUX_IPSR_MODSEL_DATA(IP3_26_24, FMIN, SEL_DARC_0), | ||
862 | PINMUX_IPSR_DATA(IP3_26_24, SCIFB2_RTS_N), | ||
863 | PINMUX_IPSR_MODSEL_DATA(IP3_26_24, STM_N_B, SEL_FSN_1), | ||
864 | PINMUX_IPSR_DATA(IP3_29_27, BS_N), | ||
865 | PINMUX_IPSR_DATA(IP3_29_27, DRACK0), | ||
866 | PINMUX_IPSR_DATA(IP3_29_27, PWM1_C), | ||
867 | PINMUX_IPSR_DATA(IP3_29_27, TPUTO0_C), | ||
868 | PINMUX_IPSR_DATA(IP3_29_27, ATACS01_N), | ||
869 | PINMUX_IPSR_MODSEL_DATA(IP3_29_27, MTS_N_B, SEL_FSN_1), | ||
870 | PINMUX_IPSR_DATA(IP3_30, RD_N), | ||
871 | PINMUX_IPSR_DATA(IP3_30, ATACS11_N), | ||
872 | PINMUX_IPSR_DATA(IP3_31, RD_WR_N), | ||
873 | PINMUX_IPSR_DATA(IP3_31, ATAG1_N), | ||
874 | |||
875 | /* IPSR4 */ | ||
876 | PINMUX_IPSR_DATA(IP4_1_0, EX_WAIT0), | ||
877 | PINMUX_IPSR_MODSEL_DATA(IP4_1_0, CAN_CLK_B, SEL_CAN_1), | ||
878 | PINMUX_IPSR_MODSEL_DATA(IP4_1_0, SCIF_CLK, SEL_SCIF0_0), | ||
879 | PINMUX_IPSR_DATA(IP4_1_0, PWMFSW0), | ||
880 | PINMUX_IPSR_DATA(IP4_4_2, DU0_DR0), | ||
881 | PINMUX_IPSR_DATA(IP4_4_2, LCDOUT16), | ||
882 | PINMUX_IPSR_MODSEL_DATA(IP4_4_2, SCIF5_RXD_C, SEL_SCIF5_2), | ||
883 | PINMUX_IPSR_MODSEL_DATA(IP4_4_2, I2C2_SCL_D, SEL_I2C02_3), | ||
884 | PINMUX_IPSR_DATA(IP4_4_2, CC50_STATE0), | ||
885 | PINMUX_IPSR_DATA(IP4_7_5, DU0_DR1), | ||
886 | PINMUX_IPSR_DATA(IP4_7_5, LCDOUT17), | ||
887 | PINMUX_IPSR_MODSEL_DATA(IP4_7_5, SCIF5_TXD_C, SEL_SCIF5_2), | ||
888 | PINMUX_IPSR_MODSEL_DATA(IP4_7_5, I2C2_SDA_D, SEL_I2C02_3), | ||
889 | PINMUX_IPSR_DATA(IP4_9_8, CC50_STATE1), | ||
890 | PINMUX_IPSR_DATA(IP4_9_8, DU0_DR2), | ||
891 | PINMUX_IPSR_DATA(IP4_9_8, LCDOUT18), | ||
892 | PINMUX_IPSR_DATA(IP4_9_8, CC50_STATE2), | ||
893 | PINMUX_IPSR_DATA(IP4_11_10, DU0_DR3), | ||
894 | PINMUX_IPSR_DATA(IP4_11_10, LCDOUT19), | ||
895 | PINMUX_IPSR_DATA(IP4_11_10, CC50_STATE3), | ||
896 | PINMUX_IPSR_DATA(IP4_13_12, DU0_DR4), | ||
897 | PINMUX_IPSR_DATA(IP4_13_12, LCDOUT20), | ||
898 | PINMUX_IPSR_DATA(IP4_13_12, CC50_STATE4), | ||
899 | PINMUX_IPSR_DATA(IP4_15_14, DU0_DR5), | ||
900 | PINMUX_IPSR_DATA(IP4_15_14, LCDOUT21), | ||
901 | PINMUX_IPSR_DATA(IP4_15_14, CC50_STATE5), | ||
902 | PINMUX_IPSR_DATA(IP4_17_16, DU0_DR6), | ||
903 | PINMUX_IPSR_DATA(IP4_17_16, LCDOUT22), | ||
904 | PINMUX_IPSR_DATA(IP4_17_16, CC50_STATE6), | ||
905 | PINMUX_IPSR_DATA(IP4_19_18, DU0_DR7), | ||
906 | PINMUX_IPSR_DATA(IP4_19_18, LCDOUT23), | ||
907 | PINMUX_IPSR_DATA(IP4_19_18, CC50_STATE7), | ||
908 | PINMUX_IPSR_DATA(IP4_22_20, DU0_DG0), | ||
909 | PINMUX_IPSR_DATA(IP4_22_20, LCDOUT8), | ||
910 | PINMUX_IPSR_MODSEL_DATA(IP4_22_20, SCIFA0_RXD_C, SEL_SCIFA0_2), | ||
911 | PINMUX_IPSR_MODSEL_DATA(IP4_22_20, I2C3_SCL_D, SEL_I2C03_3), | ||
912 | PINMUX_IPSR_DATA(IP4_22_20, CC50_STATE8), | ||
913 | PINMUX_IPSR_DATA(IP4_25_23, DU0_DG1), | ||
914 | PINMUX_IPSR_DATA(IP4_25_23, LCDOUT9), | ||
915 | PINMUX_IPSR_MODSEL_DATA(IP4_25_23, SCIFA0_TXD_C, SEL_SCIFA0_2), | ||
916 | PINMUX_IPSR_MODSEL_DATA(IP4_25_23, I2C3_SDA_D, SEL_I2C03_3), | ||
917 | PINMUX_IPSR_DATA(IP4_25_23, CC50_STATE9), | ||
918 | PINMUX_IPSR_DATA(IP4_27_26, DU0_DG2), | ||
919 | PINMUX_IPSR_DATA(IP4_27_26, LCDOUT10), | ||
920 | PINMUX_IPSR_DATA(IP4_27_26, CC50_STATE10), | ||
921 | PINMUX_IPSR_DATA(IP4_29_28, DU0_DG3), | ||
922 | PINMUX_IPSR_DATA(IP4_29_28, LCDOUT11), | ||
923 | PINMUX_IPSR_DATA(IP4_29_28, CC50_STATE11), | ||
924 | PINMUX_IPSR_DATA(IP4_31_30, DU0_DG4), | ||
925 | PINMUX_IPSR_DATA(IP4_31_30, LCDOUT12), | ||
926 | PINMUX_IPSR_DATA(IP4_31_30, CC50_STATE12), | ||
927 | |||
928 | /* IPSR5 */ | ||
929 | PINMUX_IPSR_DATA(IP5_1_0, DU0_DG5), | ||
930 | PINMUX_IPSR_DATA(IP5_1_0, LCDOUT13), | ||
931 | PINMUX_IPSR_DATA(IP5_1_0, CC50_STATE13), | ||
932 | PINMUX_IPSR_DATA(IP5_3_2, DU0_DG6), | ||
933 | PINMUX_IPSR_DATA(IP5_3_2, LCDOUT14), | ||
934 | PINMUX_IPSR_DATA(IP5_3_2, CC50_STATE14), | ||
935 | PINMUX_IPSR_DATA(IP5_5_4, DU0_DG7), | ||
936 | PINMUX_IPSR_DATA(IP5_5_4, LCDOUT15), | ||
937 | PINMUX_IPSR_DATA(IP5_5_4, CC50_STATE15), | ||
938 | PINMUX_IPSR_DATA(IP5_8_6, DU0_DB0), | ||
939 | PINMUX_IPSR_DATA(IP5_8_6, LCDOUT0), | ||
940 | PINMUX_IPSR_MODSEL_DATA(IP5_8_6, SCIFA4_RXD_C, SEL_SCIFA4_2), | ||
941 | PINMUX_IPSR_MODSEL_DATA(IP5_8_6, I2C4_SCL_D, SEL_I2C04_3), | ||
942 | PINMUX_IPSR_MODSEL_DATA(IP7_8_6, CAN0_RX_C, SEL_CAN0_2), | ||
943 | PINMUX_IPSR_DATA(IP5_8_6, CC50_STATE16), | ||
944 | PINMUX_IPSR_DATA(IP5_11_9, DU0_DB1), | ||
945 | PINMUX_IPSR_DATA(IP5_11_9, LCDOUT1), | ||
946 | PINMUX_IPSR_MODSEL_DATA(IP5_11_9, SCIFA4_TXD_C, SEL_SCIFA4_2), | ||
947 | PINMUX_IPSR_MODSEL_DATA(IP5_11_9, I2C4_SDA_D, SEL_I2C04_3), | ||
948 | PINMUX_IPSR_MODSEL_DATA(IP5_11_9, CAN0_TX_C, SEL_CAN0_2), | ||
949 | PINMUX_IPSR_DATA(IP5_11_9, CC50_STATE17), | ||
950 | PINMUX_IPSR_DATA(IP5_13_12, DU0_DB2), | ||
951 | PINMUX_IPSR_DATA(IP5_13_12, LCDOUT2), | ||
952 | PINMUX_IPSR_DATA(IP5_13_12, CC50_STATE18), | ||
953 | PINMUX_IPSR_DATA(IP5_15_14, DU0_DB3), | ||
954 | PINMUX_IPSR_DATA(IP5_15_14, LCDOUT3), | ||
955 | PINMUX_IPSR_DATA(IP5_15_14, CC50_STATE19), | ||
956 | PINMUX_IPSR_DATA(IP5_17_16, DU0_DB4), | ||
957 | PINMUX_IPSR_DATA(IP5_17_16, LCDOUT4), | ||
958 | PINMUX_IPSR_DATA(IP5_17_16, CC50_STATE20), | ||
959 | PINMUX_IPSR_DATA(IP5_19_18, DU0_DB5), | ||
960 | PINMUX_IPSR_DATA(IP5_19_18, LCDOUT5), | ||
961 | PINMUX_IPSR_DATA(IP5_19_18, CC50_STATE21), | ||
962 | PINMUX_IPSR_DATA(IP5_21_20, DU0_DB6), | ||
963 | PINMUX_IPSR_DATA(IP5_21_20, LCDOUT6), | ||
964 | PINMUX_IPSR_DATA(IP5_21_20, CC50_STATE22), | ||
965 | PINMUX_IPSR_DATA(IP5_23_22, DU0_DB7), | ||
966 | PINMUX_IPSR_DATA(IP5_23_22, LCDOUT7), | ||
967 | PINMUX_IPSR_DATA(IP5_23_22, CC50_STATE23), | ||
968 | PINMUX_IPSR_DATA(IP5_25_24, DU0_DOTCLKIN), | ||
969 | PINMUX_IPSR_DATA(IP5_25_24, QSTVA_QVS), | ||
970 | PINMUX_IPSR_DATA(IP5_25_24, CC50_STATE24), | ||
971 | PINMUX_IPSR_DATA(IP5_27_26, DU0_DOTCLKOUT0), | ||
972 | PINMUX_IPSR_DATA(IP5_27_26, QCLK), | ||
973 | PINMUX_IPSR_DATA(IP5_27_26, CC50_STATE25), | ||
974 | PINMUX_IPSR_DATA(IP5_29_28, DU0_DOTCLKOUT1), | ||
975 | PINMUX_IPSR_DATA(IP5_29_28, QSTVB_QVE), | ||
976 | PINMUX_IPSR_DATA(IP5_29_28, CC50_STATE26), | ||
977 | PINMUX_IPSR_DATA(IP5_31_30, DU0_EXHSYNC_DU0_HSYNC), | ||
978 | PINMUX_IPSR_DATA(IP5_31_30, QSTH_QHS), | ||
979 | PINMUX_IPSR_DATA(IP5_31_30, CC50_STATE27), | ||
980 | |||
981 | /* IPSR6 */ | ||
982 | PINMUX_IPSR_DATA(IP6_1_0, DU0_EXVSYNC_DU0_VSYNC), | ||
983 | PINMUX_IPSR_DATA(IP6_1_0, QSTB_QHE), | ||
984 | PINMUX_IPSR_DATA(IP6_1_0, CC50_STATE28), | ||
985 | PINMUX_IPSR_DATA(IP6_3_2, DU0_EXODDF_DU0_ODDF_DISP_CDE), | ||
986 | PINMUX_IPSR_DATA(IP6_3_2, QCPV_QDE), | ||
987 | PINMUX_IPSR_DATA(IP6_3_2, CC50_STATE29), | ||
988 | PINMUX_IPSR_DATA(IP6_5_4, DU0_DISP), | ||
989 | PINMUX_IPSR_DATA(IP6_5_4, QPOLA), | ||
990 | PINMUX_IPSR_DATA(IP6_5_4, CC50_STATE30), | ||
991 | PINMUX_IPSR_DATA(IP6_7_6, DU0_CDE), | ||
992 | PINMUX_IPSR_DATA(IP6_7_6, QPOLB), | ||
993 | PINMUX_IPSR_DATA(IP6_7_6, CC50_STATE31), | ||
994 | PINMUX_IPSR_DATA(IP6_8, VI0_CLK), | ||
995 | PINMUX_IPSR_DATA(IP6_8, AVB_RX_CLK), | ||
996 | PINMUX_IPSR_DATA(IP6_9, VI0_DATA0_VI0_B0), | ||
997 | PINMUX_IPSR_DATA(IP6_9, AVB_RX_DV), | ||
998 | PINMUX_IPSR_DATA(IP6_10, VI0_DATA1_VI0_B1), | ||
999 | PINMUX_IPSR_DATA(IP6_10, AVB_RXD0), | ||
1000 | PINMUX_IPSR_DATA(IP6_11, VI0_DATA2_VI0_B2), | ||
1001 | PINMUX_IPSR_DATA(IP6_11, AVB_RXD1), | ||
1002 | PINMUX_IPSR_DATA(IP6_12, VI0_DATA3_VI0_B3), | ||
1003 | PINMUX_IPSR_DATA(IP6_12, AVB_RXD2), | ||
1004 | PINMUX_IPSR_DATA(IP6_13, VI0_DATA4_VI0_B4), | ||
1005 | PINMUX_IPSR_DATA(IP6_13, AVB_RXD3), | ||
1006 | PINMUX_IPSR_DATA(IP6_14, VI0_DATA5_VI0_B5), | ||
1007 | PINMUX_IPSR_DATA(IP6_14, AVB_RXD4), | ||
1008 | PINMUX_IPSR_DATA(IP6_15, VI0_DATA6_VI0_B6), | ||
1009 | PINMUX_IPSR_DATA(IP6_15, AVB_RXD5), | ||
1010 | PINMUX_IPSR_DATA(IP6_16, VI0_DATA7_VI0_B7), | ||
1011 | PINMUX_IPSR_DATA(IP6_16, AVB_RXD6), | ||
1012 | PINMUX_IPSR_DATA(IP6_19_17, VI0_CLKENB), | ||
1013 | PINMUX_IPSR_MODSEL_DATA(IP6_19_17, I2C3_SCL, SEL_I2C03_0), | ||
1014 | PINMUX_IPSR_MODSEL_DATA(IP6_19_17, SCIFA5_RXD_C, SEL_SCIFA5_2), | ||
1015 | PINMUX_IPSR_MODSEL_DATA(IP6_19_17, IETX_C, SEL_IEB_2), | ||
1016 | PINMUX_IPSR_DATA(IP6_19_17, AVB_RXD7), | ||
1017 | PINMUX_IPSR_DATA(IP6_22_20, VI0_FIELD), | ||
1018 | PINMUX_IPSR_MODSEL_DATA(IP6_22_20, I2C3_SDA, SEL_I2C03_0), | ||
1019 | PINMUX_IPSR_MODSEL_DATA(IP6_22_20, SCIFA5_TXD_C, SEL_SCIFA5_2), | ||
1020 | PINMUX_IPSR_MODSEL_DATA(IP6_22_20, IECLK_C, SEL_IEB_2), | ||
1021 | PINMUX_IPSR_DATA(IP6_22_20, AVB_RX_ER), | ||
1022 | PINMUX_IPSR_DATA(IP6_25_23, VI0_HSYNC_N), | ||
1023 | PINMUX_IPSR_MODSEL_DATA(IP6_25_23, SCIF0_RXD_B, SEL_SCIF0_1), | ||
1024 | PINMUX_IPSR_MODSEL_DATA(IP6_25_23, I2C0_SCL_C, SEL_I2C00_2), | ||
1025 | PINMUX_IPSR_MODSEL_DATA(IP6_25_23, IERX_C, SEL_IEB_2), | ||
1026 | PINMUX_IPSR_DATA(IP6_25_23, AVB_COL), | ||
1027 | PINMUX_IPSR_DATA(IP6_28_26, VI0_VSYNC_N), | ||
1028 | PINMUX_IPSR_MODSEL_DATA(IP6_28_26, SCIF0_TXD_B, SEL_SCIF0_1), | ||
1029 | PINMUX_IPSR_MODSEL_DATA(IP6_28_26, I2C0_SDA_C, SEL_I2C00_2), | ||
1030 | PINMUX_IPSR_MODSEL_DATA(IP6_28_26, AUDIO_CLKOUT_B, SEL_ADG_1), | ||
1031 | PINMUX_IPSR_DATA(IP6_28_26, AVB_TX_EN), | ||
1032 | PINMUX_IPSR_MODSEL_DATA(IP6_31_29, ETH_MDIO, SEL_ETH_0), | ||
1033 | PINMUX_IPSR_DATA(IP6_31_29, VI0_G0), | ||
1034 | PINMUX_IPSR_MODSEL_DATA(IP6_31_29, MSIOF2_RXD_B, SEL_MSI2_1), | ||
1035 | PINMUX_IPSR_MODSEL_DATA(IP6_31_29, IIC0_SCL_D, SEL_IIC00_3), | ||
1036 | PINMUX_IPSR_DATA(IP6_31_29, AVB_TX_CLK), | ||
1037 | PINMUX_IPSR_MODSEL_DATA(IP6_31_29, ADIDATA, SEL_RAD_0), | ||
1038 | PINMUX_IPSR_MODSEL_DATA(IP6_31_29, AD_DI, SEL_ADI_0), | ||
1039 | |||
1040 | /* IPSR7 */ | ||
1041 | PINMUX_IPSR_MODSEL_DATA(IP7_2_0, ETH_CRS_DV, SEL_ETH_0), | ||
1042 | PINMUX_IPSR_DATA(IP7_2_0, VI0_G1), | ||
1043 | PINMUX_IPSR_MODSEL_DATA(IP7_2_0, MSIOF2_TXD_B, SEL_MSI2_1), | ||
1044 | PINMUX_IPSR_MODSEL_DATA(IP7_2_0, IIC0_SDA_D, SEL_IIC00_3), | ||
1045 | PINMUX_IPSR_DATA(IP7_2_0, AVB_TXD0), | ||
1046 | PINMUX_IPSR_MODSEL_DATA(IP7_2_0, ADICS_SAMP, SEL_RAD_0), | ||
1047 | PINMUX_IPSR_MODSEL_DATA(IP7_2_0, AD_DO, SEL_ADI_0), | ||
1048 | PINMUX_IPSR_MODSEL_DATA(IP7_5_3, ETH_RX_ER, SEL_ETH_0), | ||
1049 | PINMUX_IPSR_DATA(IP7_5_3, VI0_G2), | ||
1050 | PINMUX_IPSR_MODSEL_DATA(IP7_5_3, MSIOF2_SCK_B, SEL_MSI2_1), | ||
1051 | PINMUX_IPSR_MODSEL_DATA(IP7_5_3, CAN0_RX_B, SEL_CAN0_1), | ||
1052 | PINMUX_IPSR_DATA(IP7_5_3, AVB_TXD1), | ||
1053 | PINMUX_IPSR_MODSEL_DATA(IP7_5_3, ADICLK, SEL_RAD_0), | ||
1054 | PINMUX_IPSR_MODSEL_DATA(IP7_5_3, AD_CLK, SEL_ADI_0), | ||
1055 | PINMUX_IPSR_MODSEL_DATA(IP7_8_6, ETH_RXD0, SEL_ETH_0), | ||
1056 | PINMUX_IPSR_DATA(IP7_8_6, VI0_G3), | ||
1057 | PINMUX_IPSR_MODSEL_DATA(IP7_8_6, MSIOF2_SYNC_B, SEL_MSI2_1), | ||
1058 | PINMUX_IPSR_MODSEL_DATA(IP7_8_6, CAN0_TX_B, SEL_CAN0_1), | ||
1059 | PINMUX_IPSR_DATA(IP7_8_6, AVB_TXD2), | ||
1060 | PINMUX_IPSR_MODSEL_DATA(IP7_8_6, ADICHS0, SEL_RAD_0), | ||
1061 | PINMUX_IPSR_MODSEL_DATA(IP7_8_6, AD_NCS_N, SEL_ADI_0), | ||
1062 | PINMUX_IPSR_MODSEL_DATA(IP7_11_9, ETH_RXD1, SEL_ETH_0), | ||
1063 | PINMUX_IPSR_DATA(IP7_11_9, VI0_G4), | ||
1064 | PINMUX_IPSR_MODSEL_DATA(IP7_11_9, MSIOF2_SS1_B, SEL_MSI2_1), | ||
1065 | PINMUX_IPSR_MODSEL_DATA(IP7_11_9, SCIF4_RXD_D, SEL_SCIF4_3), | ||
1066 | PINMUX_IPSR_DATA(IP7_11_9, AVB_TXD3), | ||
1067 | PINMUX_IPSR_MODSEL_DATA(IP7_11_9, ADICHS1, SEL_RAD_0), | ||
1068 | PINMUX_IPSR_MODSEL_DATA(IP7_14_12, ETH_LINK, SEL_ETH_0), | ||
1069 | PINMUX_IPSR_DATA(IP7_14_12, VI0_G5), | ||
1070 | PINMUX_IPSR_MODSEL_DATA(IP7_14_12, MSIOF2_SS2_B, SEL_MSI2_1), | ||
1071 | PINMUX_IPSR_MODSEL_DATA(IP7_14_12, SCIF4_TXD_D, SEL_SCIF4_3), | ||
1072 | PINMUX_IPSR_DATA(IP7_14_12, AVB_TXD4), | ||
1073 | PINMUX_IPSR_MODSEL_DATA(IP7_14_12, ADICHS2, SEL_RAD_0), | ||
1074 | PINMUX_IPSR_MODSEL_DATA(IP7_17_15, ETH_REFCLK, SEL_ETH_0), | ||
1075 | PINMUX_IPSR_DATA(IP7_17_15, VI0_G6), | ||
1076 | PINMUX_IPSR_MODSEL_DATA(IP7_17_15, SCIF2_SCK_C, SEL_SCIF2_2), | ||
1077 | PINMUX_IPSR_DATA(IP7_17_15, AVB_TXD5), | ||
1078 | PINMUX_IPSR_MODSEL_DATA(IP7_17_15, SSI_SCK5_B, SEL_SSI5_1), | ||
1079 | PINMUX_IPSR_MODSEL_DATA(IP7_20_18, ETH_TXD1, SEL_ETH_0), | ||
1080 | PINMUX_IPSR_DATA(IP7_20_18, VI0_G7), | ||
1081 | PINMUX_IPSR_MODSEL_DATA(IP7_20_18, SCIF2_RXD_C, SEL_SCIF2_2), | ||
1082 | PINMUX_IPSR_MODSEL_DATA(IP7_20_18, IIC1_SCL_D, SEL_IIC01_3), | ||
1083 | PINMUX_IPSR_DATA(IP7_20_18, AVB_TXD6), | ||
1084 | PINMUX_IPSR_MODSEL_DATA(IP7_20_18, SSI_WS5_B, SEL_SSI5_1), | ||
1085 | PINMUX_IPSR_MODSEL_DATA(IP7_23_21, ETH_TX_EN, SEL_ETH_0), | ||
1086 | PINMUX_IPSR_DATA(IP7_23_21, VI0_R0), | ||
1087 | PINMUX_IPSR_MODSEL_DATA(IP7_23_21, SCIF2_TXD_C, SEL_SCIF2_2), | ||
1088 | PINMUX_IPSR_MODSEL_DATA(IP7_23_21, IIC1_SDA_D, SEL_IIC01_3), | ||
1089 | PINMUX_IPSR_DATA(IP7_23_21, AVB_TXD7), | ||
1090 | PINMUX_IPSR_MODSEL_DATA(IP7_23_21, SSI_SDATA5_B, SEL_SSI5_1), | ||
1091 | PINMUX_IPSR_MODSEL_DATA(IP7_26_24, ETH_MAGIC, SEL_ETH_0), | ||
1092 | PINMUX_IPSR_DATA(IP7_26_24, VI0_R1), | ||
1093 | PINMUX_IPSR_MODSEL_DATA(IP7_26_24, SCIF3_SCK_B, SEL_SCIF3_1), | ||
1094 | PINMUX_IPSR_DATA(IP7_26_24, AVB_TX_ER), | ||
1095 | PINMUX_IPSR_MODSEL_DATA(IP7_26_24, SSI_SCK6_B, SEL_SSI6_1), | ||
1096 | PINMUX_IPSR_MODSEL_DATA(IP7_29_27, ETH_TXD0, SEL_ETH_0), | ||
1097 | PINMUX_IPSR_DATA(IP7_29_27, VI0_R2), | ||
1098 | PINMUX_IPSR_MODSEL_DATA(IP7_29_27, SCIF3_RXD_B, SEL_SCIF3_1), | ||
1099 | PINMUX_IPSR_MODSEL_DATA(IP7_29_27, I2C4_SCL_E, SEL_I2C04_4), | ||
1100 | PINMUX_IPSR_DATA(IP7_29_27, AVB_GTX_CLK), | ||
1101 | PINMUX_IPSR_MODSEL_DATA(IP7_29_27, SSI_WS6_B, SEL_SSI6_1), | ||
1102 | PINMUX_IPSR_DATA(IP7_31, DREQ0_N), | ||
1103 | PINMUX_IPSR_DATA(IP7_31, SCIFB1_RXD), | ||
1104 | |||
1105 | /* IPSR8 */ | ||
1106 | PINMUX_IPSR_MODSEL_DATA(IP8_2_0, ETH_MDC, SEL_ETH_0), | ||
1107 | PINMUX_IPSR_DATA(IP8_2_0, VI0_R3), | ||
1108 | PINMUX_IPSR_MODSEL_DATA(IP8_2_0, SCIF3_TXD_B, SEL_SCIF3_1), | ||
1109 | PINMUX_IPSR_MODSEL_DATA(IP8_2_0, I2C4_SDA_E, SEL_I2C04_4), | ||
1110 | PINMUX_IPSR_DATA(IP8_2_0, AVB_MDC), | ||
1111 | PINMUX_IPSR_MODSEL_DATA(IP8_2_0, SSI_SDATA6_B, SEL_SSI6_1), | ||
1112 | PINMUX_IPSR_MODSEL_DATA(IP8_5_3, HSCIF0_HRX, SEL_HSCIF0_0), | ||
1113 | PINMUX_IPSR_DATA(IP8_5_3, VI0_R4), | ||
1114 | PINMUX_IPSR_MODSEL_DATA(IP8_5_3, I2C1_SCL_C, SEL_I2C01_2), | ||
1115 | PINMUX_IPSR_MODSEL_DATA(IP8_5_3, AUDIO_CLKA_B, SEL_ADG_1), | ||
1116 | PINMUX_IPSR_DATA(IP8_5_3, AVB_MDIO), | ||
1117 | PINMUX_IPSR_MODSEL_DATA(IP8_5_3, SSI_SCK78_B, SEL_SSI7_1), | ||
1118 | PINMUX_IPSR_MODSEL_DATA(IP8_8_6, HSCIF0_HTX, SEL_HSCIF0_0), | ||
1119 | PINMUX_IPSR_DATA(IP8_8_6, VI0_R5), | ||
1120 | PINMUX_IPSR_MODSEL_DATA(IP8_8_6, I2C1_SDA_C, SEL_I2C01_2), | ||
1121 | PINMUX_IPSR_MODSEL_DATA(IP8_8_6, AUDIO_CLKB_B, SEL_ADG_1), | ||
1122 | PINMUX_IPSR_DATA(IP8_5_3, AVB_LINK), | ||
1123 | PINMUX_IPSR_MODSEL_DATA(IP8_8_6, SSI_WS78_B, SEL_SSI7_1), | ||
1124 | PINMUX_IPSR_DATA(IP8_11_9, HSCIF0_HCTS_N), | ||
1125 | PINMUX_IPSR_DATA(IP8_11_9, VI0_R6), | ||
1126 | PINMUX_IPSR_MODSEL_DATA(IP8_11_9, SCIF0_RXD_D, SEL_SCIF0_3), | ||
1127 | PINMUX_IPSR_MODSEL_DATA(IP8_11_9, I2C0_SCL_E, SEL_I2C00_4), | ||
1128 | PINMUX_IPSR_DATA(IP8_11_9, AVB_MAGIC), | ||
1129 | PINMUX_IPSR_MODSEL_DATA(IP8_11_9, SSI_SDATA7_B, SEL_SSI7_1), | ||
1130 | PINMUX_IPSR_DATA(IP8_14_12, HSCIF0_HRTS_N), | ||
1131 | PINMUX_IPSR_DATA(IP8_14_12, VI0_R7), | ||
1132 | PINMUX_IPSR_MODSEL_DATA(IP8_14_12, SCIF0_TXD_D, SEL_SCIF0_3), | ||
1133 | PINMUX_IPSR_MODSEL_DATA(IP8_14_12, I2C0_SDA_E, SEL_I2C00_4), | ||
1134 | PINMUX_IPSR_DATA(IP8_14_12, AVB_PHY_INT), | ||
1135 | PINMUX_IPSR_MODSEL_DATA(IP8_14_12, SSI_SDATA8_B, SEL_SSI8_1), | ||
1136 | PINMUX_IPSR_MODSEL_DATA(IP8_16_15, HSCIF0_HSCK, SEL_HSCIF0_0), | ||
1137 | PINMUX_IPSR_MODSEL_DATA(IP8_16_15, SCIF_CLK_B, SEL_SCIF0_1), | ||
1138 | PINMUX_IPSR_DATA(IP8_16_15, AVB_CRS), | ||
1139 | PINMUX_IPSR_MODSEL_DATA(IP8_16_15, AUDIO_CLKC_B, SEL_ADG_1), | ||
1140 | PINMUX_IPSR_MODSEL_DATA(IP8_19_17, I2C0_SCL, SEL_I2C00_0), | ||
1141 | PINMUX_IPSR_MODSEL_DATA(IP8_19_17, SCIF0_RXD_C, SEL_SCIF0_2), | ||
1142 | PINMUX_IPSR_DATA(IP8_19_17, PWM5), | ||
1143 | PINMUX_IPSR_MODSEL_DATA(IP8_19_17, TCLK1_B, SEL_TMU_1), | ||
1144 | PINMUX_IPSR_DATA(IP8_19_17, AVB_GTXREFCLK), | ||
1145 | PINMUX_IPSR_MODSEL_DATA(IP8_19_17, CAN1_RX_D, SEL_CAN1_3), | ||
1146 | PINMUX_IPSR_DATA(IP8_19_17, TPUTO0_B), | ||
1147 | PINMUX_IPSR_MODSEL_DATA(IP8_22_20, I2C0_SDA, SEL_I2C00_0), | ||
1148 | PINMUX_IPSR_MODSEL_DATA(IP8_22_20, SCIF0_TXD_C, SEL_SCIF0_2), | ||
1149 | PINMUX_IPSR_DATA(IP8_22_20, TPUTO0), | ||
1150 | PINMUX_IPSR_MODSEL_DATA(IP8_22_20, CAN_CLK, SEL_CAN_0), | ||
1151 | PINMUX_IPSR_DATA(IP8_22_20, DVC_MUTE), | ||
1152 | PINMUX_IPSR_MODSEL_DATA(IP8_22_20, CAN1_TX_D, SEL_CAN1_3), | ||
1153 | PINMUX_IPSR_MODSEL_DATA(IP8_25_23, I2C1_SCL, SEL_I2C01_0), | ||
1154 | PINMUX_IPSR_MODSEL_DATA(IP8_25_23, SCIF4_RXD, SEL_SCIF4_0), | ||
1155 | PINMUX_IPSR_DATA(IP8_25_23, PWM5_B), | ||
1156 | PINMUX_IPSR_DATA(IP8_25_23, DU1_DR0), | ||
1157 | PINMUX_IPSR_MODSEL_DATA(IP8_25_23, RIF1_SYNC_B, SEL_DR2_1), | ||
1158 | PINMUX_IPSR_MODSEL_DATA(IP8_25_23, TS_SDATA_D, SEL_TSIF0_3), | ||
1159 | PINMUX_IPSR_DATA(IP8_25_23, TPUTO1_B), | ||
1160 | PINMUX_IPSR_MODSEL_DATA(IP8_28_26, I2C1_SDA, SEL_I2C01_0), | ||
1161 | PINMUX_IPSR_MODSEL_DATA(IP8_28_26, SCIF4_TXD, SEL_SCIF4_0), | ||
1162 | PINMUX_IPSR_DATA(IP8_28_26, IRQ5), | ||
1163 | PINMUX_IPSR_DATA(IP8_28_26, DU1_DR1), | ||
1164 | PINMUX_IPSR_MODSEL_DATA(IP8_28_26, RIF1_CLK_B, SEL_DR2_1), | ||
1165 | PINMUX_IPSR_MODSEL_DATA(IP8_28_26, TS_SCK_D, SEL_TSIF0_3), | ||
1166 | PINMUX_IPSR_MODSEL_DATA(IP8_28_26, BPFCLK_C, SEL_DARC_2), | ||
1167 | PINMUX_IPSR_DATA(IP8_31_29, MSIOF0_RXD), | ||
1168 | PINMUX_IPSR_MODSEL_DATA(IP8_31_29, SCIF5_RXD, SEL_SCIF5_0), | ||
1169 | PINMUX_IPSR_MODSEL_DATA(IP8_31_29, I2C2_SCL_C, SEL_I2C02_2), | ||
1170 | PINMUX_IPSR_DATA(IP8_31_29, DU1_DR2), | ||
1171 | PINMUX_IPSR_MODSEL_DATA(IP8_31_29, RIF1_D0_B, SEL_DR2_1), | ||
1172 | PINMUX_IPSR_MODSEL_DATA(IP8_31_29, TS_SDEN_D, SEL_TSIF0_3), | ||
1173 | PINMUX_IPSR_MODSEL_DATA(IP8_31_29, FMCLK_C, SEL_DARC_2), | ||
1174 | PINMUX_IPSR_MODSEL_DATA(IP8_31_29, RDS_CLK, SEL_RDS_0), | ||
1175 | |||
1176 | /* IPSR9 */ | ||
1177 | PINMUX_IPSR_DATA(IP9_2_0, MSIOF0_TXD), | ||
1178 | PINMUX_IPSR_MODSEL_DATA(IP9_2_0, SCIF5_TXD, SEL_SCIF5_0), | ||
1179 | PINMUX_IPSR_MODSEL_DATA(IP9_2_0, I2C2_SDA_C, SEL_I2C02_2), | ||
1180 | PINMUX_IPSR_DATA(IP9_2_0, DU1_DR3), | ||
1181 | PINMUX_IPSR_MODSEL_DATA(IP9_2_0, RIF1_D1_B, SEL_DR3_1), | ||
1182 | PINMUX_IPSR_MODSEL_DATA(IP9_2_0, TS_SPSYNC_D, SEL_TSIF0_3), | ||
1183 | PINMUX_IPSR_MODSEL_DATA(IP9_2_0, FMIN_C, SEL_DARC_2), | ||
1184 | PINMUX_IPSR_MODSEL_DATA(IP9_2_0, RDS_DATA, SEL_RDS_0), | ||
1185 | PINMUX_IPSR_DATA(IP9_5_3, MSIOF0_SCK), | ||
1186 | PINMUX_IPSR_DATA(IP9_5_3, IRQ0), | ||
1187 | PINMUX_IPSR_MODSEL_DATA(IP9_5_3, TS_SDATA, SEL_TSIF0_0), | ||
1188 | PINMUX_IPSR_DATA(IP9_5_3, DU1_DR4), | ||
1189 | PINMUX_IPSR_MODSEL_DATA(IP9_5_3, RIF1_SYNC, SEL_DR2_0), | ||
1190 | PINMUX_IPSR_DATA(IP9_5_3, TPUTO1_C), | ||
1191 | PINMUX_IPSR_DATA(IP9_8_6, MSIOF0_SYNC), | ||
1192 | PINMUX_IPSR_DATA(IP9_8_6, PWM1), | ||
1193 | PINMUX_IPSR_MODSEL_DATA(IP9_8_6, TS_SCK, SEL_TSIF0_0), | ||
1194 | PINMUX_IPSR_DATA(IP9_8_6, DU1_DR5), | ||
1195 | PINMUX_IPSR_MODSEL_DATA(IP9_8_6, RIF1_CLK, SEL_DR2_0), | ||
1196 | PINMUX_IPSR_MODSEL_DATA(IP9_8_6, BPFCLK_B, SEL_DARC_1), | ||
1197 | PINMUX_IPSR_DATA(IP9_11_9, MSIOF0_SS1), | ||
1198 | PINMUX_IPSR_MODSEL_DATA(IP9_11_9, SCIFA0_RXD, SEL_SCIFA0_0), | ||
1199 | PINMUX_IPSR_MODSEL_DATA(IP9_11_9, TS_SDEN, SEL_TSIF0_0), | ||
1200 | PINMUX_IPSR_DATA(IP9_11_9, DU1_DR6), | ||
1201 | PINMUX_IPSR_MODSEL_DATA(IP9_11_9, RIF1_D0, SEL_DR2_0), | ||
1202 | PINMUX_IPSR_MODSEL_DATA(IP9_11_9, FMCLK_B, SEL_DARC_1), | ||
1203 | PINMUX_IPSR_MODSEL_DATA(IP9_11_9, RDS_CLK_B, SEL_RDS_1), | ||
1204 | PINMUX_IPSR_DATA(IP9_14_12, MSIOF0_SS2), | ||
1205 | PINMUX_IPSR_MODSEL_DATA(IP9_14_12, SCIFA0_TXD, SEL_SCIFA0_0), | ||
1206 | PINMUX_IPSR_MODSEL_DATA(IP9_14_12, TS_SPSYNC, SEL_TSIF0_0), | ||
1207 | PINMUX_IPSR_DATA(IP9_14_12, DU1_DR7), | ||
1208 | PINMUX_IPSR_MODSEL_DATA(IP9_14_12, RIF1_D1, SEL_DR3_0), | ||
1209 | PINMUX_IPSR_MODSEL_DATA(IP9_14_12, FMIN_B, SEL_DARC_1), | ||
1210 | PINMUX_IPSR_MODSEL_DATA(IP9_14_12, RDS_DATA_B, SEL_RDS_1), | ||
1211 | PINMUX_IPSR_MODSEL_DATA(IP9_16_15, HSCIF1_HRX, SEL_HSCIF1_0), | ||
1212 | PINMUX_IPSR_MODSEL_DATA(IP9_16_15, I2C4_SCL, SEL_I2C04_0), | ||
1213 | PINMUX_IPSR_DATA(IP9_16_15, PWM6), | ||
1214 | PINMUX_IPSR_DATA(IP9_16_15, DU1_DG0), | ||
1215 | PINMUX_IPSR_MODSEL_DATA(IP9_18_17, HSCIF1_HTX, SEL_HSCIF1_0), | ||
1216 | PINMUX_IPSR_MODSEL_DATA(IP9_18_17, I2C4_SDA, SEL_I2C04_0), | ||
1217 | PINMUX_IPSR_DATA(IP9_18_17, TPUTO1), | ||
1218 | PINMUX_IPSR_DATA(IP9_18_17, DU1_DG1), | ||
1219 | PINMUX_IPSR_DATA(IP9_21_19, HSCIF1_HSCK), | ||
1220 | PINMUX_IPSR_DATA(IP9_21_19, PWM2), | ||
1221 | PINMUX_IPSR_MODSEL_DATA(IP9_21_19, IETX, SEL_IEB_0), | ||
1222 | PINMUX_IPSR_DATA(IP9_21_19, DU1_DG2), | ||
1223 | PINMUX_IPSR_MODSEL_DATA(IP9_21_19, REMOCON_B, SEL_RCN_1), | ||
1224 | PINMUX_IPSR_MODSEL_DATA(IP9_21_19, SPEEDIN_B, SEL_RSP_1), | ||
1225 | PINMUX_IPSR_MODSEL_DATA(IP9_21_19, VSP_B, SEL_SPDM_1), | ||
1226 | PINMUX_IPSR_MODSEL_DATA(IP9_24_22, HSCIF1_HCTS_N, SEL_HSCIF1_0), | ||
1227 | PINMUX_IPSR_MODSEL_DATA(IP9_24_22, SCIFA4_RXD, SEL_SCIFA4_0), | ||
1228 | PINMUX_IPSR_MODSEL_DATA(IP9_24_22, IECLK, SEL_IEB_0), | ||
1229 | PINMUX_IPSR_DATA(IP9_24_22, DU1_DG3), | ||
1230 | PINMUX_IPSR_MODSEL_DATA(IP9_24_22, SSI_SCK1_B, SEL_SSI1_1), | ||
1231 | PINMUX_IPSR_DATA(IP9_24_22, CAN_DEBUG_HW_TRIGGER), | ||
1232 | PINMUX_IPSR_DATA(IP9_24_22, CC50_STATE32), | ||
1233 | PINMUX_IPSR_MODSEL_DATA(IP9_27_25, HSCIF1_HRTS_N, SEL_HSCIF1_0), | ||
1234 | PINMUX_IPSR_MODSEL_DATA(IP9_27_25, SCIFA4_TXD, SEL_SCIFA4_0), | ||
1235 | PINMUX_IPSR_MODSEL_DATA(IP9_27_25, IERX, SEL_IEB_0), | ||
1236 | PINMUX_IPSR_DATA(IP9_27_25, DU1_DG4), | ||
1237 | PINMUX_IPSR_MODSEL_DATA(IP9_27_25, SSI_WS1_B, SEL_SSI1_1), | ||
1238 | PINMUX_IPSR_DATA(IP9_27_25, CAN_STEP0), | ||
1239 | PINMUX_IPSR_DATA(IP9_27_25, CC50_STATE33), | ||
1240 | PINMUX_IPSR_MODSEL_DATA(IP9_30_28, SCIF1_SCK, SEL_SCIF1_0), | ||
1241 | PINMUX_IPSR_DATA(IP9_30_28, PWM3), | ||
1242 | PINMUX_IPSR_MODSEL_DATA(IP9_30_28, TCLK2, SEL_TMU_0), | ||
1243 | PINMUX_IPSR_DATA(IP9_30_28, DU1_DG5), | ||
1244 | PINMUX_IPSR_MODSEL_DATA(IP9_30_28, SSI_SDATA1_B, SEL_SSI1_1), | ||
1245 | PINMUX_IPSR_DATA(IP9_30_28, CAN_TXCLK), | ||
1246 | PINMUX_IPSR_DATA(IP9_30_28, CC50_STATE34), | ||
1247 | |||
1248 | /* IPSR10 */ | ||
1249 | PINMUX_IPSR_MODSEL_DATA(IP10_2_0, SCIF1_RXD, SEL_SCIF1_0), | ||
1250 | PINMUX_IPSR_MODSEL_DATA(IP10_2_0, IIC0_SCL, SEL_IIC00_0), | ||
1251 | PINMUX_IPSR_DATA(IP10_2_0, DU1_DG6), | ||
1252 | PINMUX_IPSR_MODSEL_DATA(IP10_2_0, SSI_SCK2_B, SEL_SSI2_1), | ||
1253 | PINMUX_IPSR_DATA(IP10_2_0, CAN_DEBUGOUT0), | ||
1254 | PINMUX_IPSR_DATA(IP10_2_0, CC50_STATE35), | ||
1255 | PINMUX_IPSR_MODSEL_DATA(IP10_5_3, SCIF1_TXD, SEL_SCIF1_0), | ||
1256 | PINMUX_IPSR_MODSEL_DATA(IP10_5_3, IIC0_SDA, SEL_IIC00_0), | ||
1257 | PINMUX_IPSR_DATA(IP10_5_3, DU1_DG7), | ||
1258 | PINMUX_IPSR_MODSEL_DATA(IP10_5_3, SSI_WS2_B, SEL_SSI2_1), | ||
1259 | PINMUX_IPSR_DATA(IP10_5_3, CAN_DEBUGOUT1), | ||
1260 | PINMUX_IPSR_DATA(IP10_5_3, CC50_STATE36), | ||
1261 | PINMUX_IPSR_MODSEL_DATA(IP10_8_6, SCIF2_RXD, SEL_SCIF2_0), | ||
1262 | PINMUX_IPSR_MODSEL_DATA(IP10_8_6, IIC1_SCL, SEL_IIC01_0), | ||
1263 | PINMUX_IPSR_DATA(IP10_8_6, DU1_DB0), | ||
1264 | PINMUX_IPSR_MODSEL_DATA(IP10_8_6, SSI_SDATA2_B, SEL_SSI2_1), | ||
1265 | PINMUX_IPSR_DATA(IP10_8_6, USB0_EXTLP), | ||
1266 | PINMUX_IPSR_DATA(IP10_8_6, CAN_DEBUGOUT2), | ||
1267 | PINMUX_IPSR_DATA(IP10_8_6, CC50_STATE37), | ||
1268 | PINMUX_IPSR_MODSEL_DATA(IP10_11_9, SCIF2_TXD, SEL_SCIF2_0), | ||
1269 | PINMUX_IPSR_MODSEL_DATA(IP10_11_9, IIC1_SDA, SEL_IIC01_0), | ||
1270 | PINMUX_IPSR_DATA(IP10_11_9, DU1_DB1), | ||
1271 | PINMUX_IPSR_MODSEL_DATA(IP10_11_9, SSI_SCK9_B, SEL_SSI9_1), | ||
1272 | PINMUX_IPSR_DATA(IP10_11_9, USB0_OVC1), | ||
1273 | PINMUX_IPSR_DATA(IP10_11_9, CAN_DEBUGOUT3), | ||
1274 | PINMUX_IPSR_DATA(IP10_11_9, CC50_STATE38), | ||
1275 | PINMUX_IPSR_MODSEL_DATA(IP10_14_12, SCIF2_SCK, SEL_SCIF2_0), | ||
1276 | PINMUX_IPSR_DATA(IP10_14_12, IRQ1), | ||
1277 | PINMUX_IPSR_DATA(IP10_14_12, DU1_DB2), | ||
1278 | PINMUX_IPSR_MODSEL_DATA(IP10_14_12, SSI_WS9_B, SEL_SSI9_1), | ||
1279 | PINMUX_IPSR_DATA(IP10_14_12, USB0_IDIN), | ||
1280 | PINMUX_IPSR_DATA(IP10_14_12, CAN_DEBUGOUT4), | ||
1281 | PINMUX_IPSR_DATA(IP10_14_12, CC50_STATE39), | ||
1282 | PINMUX_IPSR_MODSEL_DATA(IP10_17_15, SCIF3_SCK, SEL_SCIF3_0), | ||
1283 | PINMUX_IPSR_DATA(IP10_17_15, IRQ2), | ||
1284 | PINMUX_IPSR_MODSEL_DATA(IP10_17_15, BPFCLK_D, SEL_DARC_3), | ||
1285 | PINMUX_IPSR_DATA(IP10_17_15, DU1_DB3), | ||
1286 | PINMUX_IPSR_MODSEL_DATA(IP10_17_15, SSI_SDATA9_B, SEL_SSI9_1), | ||
1287 | PINMUX_IPSR_DATA(IP10_17_15, TANS2), | ||
1288 | PINMUX_IPSR_DATA(IP10_17_15, CAN_DEBUGOUT5), | ||
1289 | PINMUX_IPSR_DATA(IP10_17_15, CC50_OSCOUT), | ||
1290 | PINMUX_IPSR_MODSEL_DATA(IP10_20_18, SCIF3_RXD, SEL_SCIF3_0), | ||
1291 | PINMUX_IPSR_MODSEL_DATA(IP10_20_18, I2C1_SCL_E, SEL_I2C01_4), | ||
1292 | PINMUX_IPSR_MODSEL_DATA(IP10_20_18, FMCLK_D, SEL_DARC_3), | ||
1293 | PINMUX_IPSR_DATA(IP10_20_18, DU1_DB4), | ||
1294 | PINMUX_IPSR_MODSEL_DATA(IP10_20_18, AUDIO_CLKA_C, SEL_ADG_2), | ||
1295 | PINMUX_IPSR_MODSEL_DATA(IP10_20_18, SSI_SCK4_B, SEL_SSI4_1), | ||
1296 | PINMUX_IPSR_DATA(IP10_20_18, CAN_DEBUGOUT6), | ||
1297 | PINMUX_IPSR_MODSEL_DATA(IP10_20_18, RDS_CLK_C, SEL_RDS_2), | ||
1298 | PINMUX_IPSR_MODSEL_DATA(IP10_23_21, SCIF3_TXD, SEL_SCIF3_0), | ||
1299 | PINMUX_IPSR_MODSEL_DATA(IP10_23_21, I2C1_SDA_E, SEL_I2C01_4), | ||
1300 | PINMUX_IPSR_MODSEL_DATA(IP10_23_21, FMIN_D, SEL_DARC_3), | ||
1301 | PINMUX_IPSR_DATA(IP10_23_21, DU1_DB5), | ||
1302 | PINMUX_IPSR_MODSEL_DATA(IP10_23_21, AUDIO_CLKB_C, SEL_ADG_2), | ||
1303 | PINMUX_IPSR_MODSEL_DATA(IP10_23_21, SSI_WS4_B, SEL_SSI4_1), | ||
1304 | PINMUX_IPSR_DATA(IP10_23_21, CAN_DEBUGOUT7), | ||
1305 | PINMUX_IPSR_MODSEL_DATA(IP10_23_21, RDS_DATA_C, SEL_RDS_2), | ||
1306 | PINMUX_IPSR_MODSEL_DATA(IP10_26_24, I2C2_SCL, SEL_I2C02_0), | ||
1307 | PINMUX_IPSR_MODSEL_DATA(IP10_26_24, SCIFA5_RXD, SEL_SCIFA5_0), | ||
1308 | PINMUX_IPSR_DATA(IP10_26_24, DU1_DB6), | ||
1309 | PINMUX_IPSR_MODSEL_DATA(IP10_26_24, AUDIO_CLKC_C, SEL_ADG_2), | ||
1310 | PINMUX_IPSR_MODSEL_DATA(IP10_26_24, SSI_SDATA4_B, SEL_SSI4_1), | ||
1311 | PINMUX_IPSR_DATA(IP10_26_24, CAN_DEBUGOUT8), | ||
1312 | PINMUX_IPSR_MODSEL_DATA(IP10_29_27, I2C2_SDA, SEL_I2C02_0), | ||
1313 | PINMUX_IPSR_MODSEL_DATA(IP10_29_27, SCIFA5_TXD, SEL_SCIFA5_0), | ||
1314 | PINMUX_IPSR_DATA(IP10_29_27, DU1_DB7), | ||
1315 | PINMUX_IPSR_MODSEL_DATA(IP10_29_27, AUDIO_CLKOUT_C, SEL_ADG_2), | ||
1316 | PINMUX_IPSR_DATA(IP10_29_27, CAN_DEBUGOUT9), | ||
1317 | PINMUX_IPSR_MODSEL_DATA(IP10_31_30, SSI_SCK5, SEL_SSI5_0), | ||
1318 | PINMUX_IPSR_MODSEL_DATA(IP10_31_30, SCIFA3_SCK, SEL_SCIFA3_0), | ||
1319 | PINMUX_IPSR_DATA(IP10_31_30, DU1_DOTCLKIN), | ||
1320 | PINMUX_IPSR_DATA(IP10_31_30, CAN_DEBUGOUT10), | ||
1321 | |||
1322 | /* IPSR11 */ | ||
1323 | PINMUX_IPSR_MODSEL_DATA(IP11_2_0, SSI_WS5, SEL_SSI5_0), | ||
1324 | PINMUX_IPSR_MODSEL_DATA(IP11_2_0, SCIFA3_RXD, SEL_SCIFA3_0), | ||
1325 | PINMUX_IPSR_MODSEL_DATA(IP11_2_0, I2C3_SCL_C, SEL_I2C03_2), | ||
1326 | PINMUX_IPSR_DATA(IP11_2_0, DU1_DOTCLKOUT0), | ||
1327 | PINMUX_IPSR_DATA(IP11_2_0, CAN_DEBUGOUT11), | ||
1328 | PINMUX_IPSR_MODSEL_DATA(IP11_5_3, SSI_SDATA5, SEL_SSI5_0), | ||
1329 | PINMUX_IPSR_MODSEL_DATA(IP11_5_3, SCIFA3_TXD, SEL_SCIFA3_0), | ||
1330 | PINMUX_IPSR_MODSEL_DATA(IP11_5_3, I2C3_SDA_C, SEL_I2C03_2), | ||
1331 | PINMUX_IPSR_DATA(IP11_5_3, DU1_DOTCLKOUT1), | ||
1332 | PINMUX_IPSR_DATA(IP11_5_3, CAN_DEBUGOUT12), | ||
1333 | PINMUX_IPSR_MODSEL_DATA(IP11_7_6, SSI_SCK6, SEL_SSI6_0), | ||
1334 | PINMUX_IPSR_MODSEL_DATA(IP11_7_6, SCIFA1_SCK_B, SEL_SCIFA1_1), | ||
1335 | PINMUX_IPSR_DATA(IP11_7_6, DU1_EXHSYNC_DU1_HSYNC), | ||
1336 | PINMUX_IPSR_DATA(IP11_7_6, CAN_DEBUGOUT13), | ||
1337 | PINMUX_IPSR_MODSEL_DATA(IP11_10_8, SSI_WS6, SEL_SSI6_0), | ||
1338 | PINMUX_IPSR_MODSEL_DATA(IP11_10_8, SCIFA1_RXD_B, SEL_SCIFA1_1), | ||
1339 | PINMUX_IPSR_MODSEL_DATA(IP11_10_8, I2C4_SCL_C, SEL_I2C04_2), | ||
1340 | PINMUX_IPSR_DATA(IP11_10_8, DU1_EXVSYNC_DU1_VSYNC), | ||
1341 | PINMUX_IPSR_DATA(IP11_10_8, CAN_DEBUGOUT14), | ||
1342 | PINMUX_IPSR_MODSEL_DATA(IP11_13_11, SSI_SDATA6, SEL_SSI6_0), | ||
1343 | PINMUX_IPSR_MODSEL_DATA(IP11_13_11, SCIFA1_TXD_B, SEL_SCIFA1_1), | ||
1344 | PINMUX_IPSR_MODSEL_DATA(IP11_13_11, I2C4_SDA_C, SEL_I2C04_2), | ||
1345 | PINMUX_IPSR_DATA(IP11_13_11, DU1_EXODDF_DU1_ODDF_DISP_CDE), | ||
1346 | PINMUX_IPSR_DATA(IP11_13_11, CAN_DEBUGOUT15), | ||
1347 | PINMUX_IPSR_MODSEL_DATA(IP11_15_14, SSI_SCK78, SEL_SSI7_0), | ||
1348 | PINMUX_IPSR_MODSEL_DATA(IP11_15_14, SCIFA2_SCK_B, SEL_SCIFA2_1), | ||
1349 | PINMUX_IPSR_MODSEL_DATA(IP11_15_14, IIC0_SDA_C, SEL_IIC00_2), | ||
1350 | PINMUX_IPSR_DATA(IP11_15_14, DU1_DISP), | ||
1351 | PINMUX_IPSR_MODSEL_DATA(IP11_17_16, SSI_WS78, SEL_SSI7_0), | ||
1352 | PINMUX_IPSR_MODSEL_DATA(IP11_17_16, SCIFA2_RXD_B, SEL_SCIFA2_1), | ||
1353 | PINMUX_IPSR_MODSEL_DATA(IP11_17_16, IIC0_SCL_C, SEL_IIC00_2), | ||
1354 | PINMUX_IPSR_DATA(IP11_17_16, DU1_CDE), | ||
1355 | PINMUX_IPSR_MODSEL_DATA(IP11_20_18, SSI_SDATA7, SEL_SSI7_0), | ||
1356 | PINMUX_IPSR_MODSEL_DATA(IP11_20_18, SCIFA2_TXD_B, SEL_SCIFA2_1), | ||
1357 | PINMUX_IPSR_DATA(IP11_20_18, IRQ8), | ||
1358 | PINMUX_IPSR_MODSEL_DATA(IP11_20_18, AUDIO_CLKA_D, SEL_ADG_3), | ||
1359 | PINMUX_IPSR_MODSEL_DATA(IP11_20_18, CAN_CLK_D, SEL_CAN_3), | ||
1360 | PINMUX_IPSR_DATA(IP11_20_18, PCMOE_N), | ||
1361 | PINMUX_IPSR_DATA(IP11_23_21, SSI_SCK0129), | ||
1362 | PINMUX_IPSR_MODSEL_DATA(IP11_23_21, MSIOF1_RXD_B, SEL_MSI1_1), | ||
1363 | PINMUX_IPSR_MODSEL_DATA(IP11_23_21, SCIF5_RXD_D, SEL_SCIF5_3), | ||
1364 | PINMUX_IPSR_MODSEL_DATA(IP11_23_21, ADIDATA_B, SEL_RAD_1), | ||
1365 | PINMUX_IPSR_MODSEL_DATA(IP11_23_21, AD_DI_B, SEL_ADI_1), | ||
1366 | PINMUX_IPSR_DATA(IP11_23_21, PCMWE_N), | ||
1367 | PINMUX_IPSR_DATA(IP11_26_24, SSI_WS0129), | ||
1368 | PINMUX_IPSR_MODSEL_DATA(IP11_26_24, MSIOF1_TXD_B, SEL_MSI1_1), | ||
1369 | PINMUX_IPSR_MODSEL_DATA(IP11_26_24, SCIF5_TXD_D, SEL_SCIF5_3), | ||
1370 | PINMUX_IPSR_MODSEL_DATA(IP11_26_24, ADICS_SAMP_B, SEL_RAD_1), | ||
1371 | PINMUX_IPSR_MODSEL_DATA(IP11_26_24, AD_DO_B, SEL_ADI_1), | ||
1372 | PINMUX_IPSR_DATA(IP11_29_27, SSI_SDATA0), | ||
1373 | PINMUX_IPSR_MODSEL_DATA(IP11_29_27, MSIOF1_SCK_B, SEL_MSI1_1), | ||
1374 | PINMUX_IPSR_DATA(IP11_29_27, PWM0_B), | ||
1375 | PINMUX_IPSR_MODSEL_DATA(IP11_29_27, ADICLK_B, SEL_RAD_1), | ||
1376 | PINMUX_IPSR_MODSEL_DATA(IP11_29_27, AD_CLK_B, SEL_ADI_1), | ||
1377 | |||
1378 | /* IPSR12 */ | ||
1379 | PINMUX_IPSR_DATA(IP12_2_0, SSI_SCK34), | ||
1380 | PINMUX_IPSR_MODSEL_DATA(IP12_2_0, MSIOF1_SYNC_B, SEL_MSI1_1), | ||
1381 | PINMUX_IPSR_MODSEL_DATA(IP12_2_0, SCIFA1_SCK_C, SEL_SCIFA1_2), | ||
1382 | PINMUX_IPSR_MODSEL_DATA(IP12_2_0, ADICHS0_B, SEL_RAD_1), | ||
1383 | PINMUX_IPSR_MODSEL_DATA(IP12_2_0, AD_NCS_N_B, SEL_ADI_1), | ||
1384 | PINMUX_IPSR_MODSEL_DATA(IP12_2_0, DREQ1_N_B, SEL_LBS_1), | ||
1385 | PINMUX_IPSR_DATA(IP12_5_3, SSI_WS34), | ||
1386 | PINMUX_IPSR_MODSEL_DATA(IP12_5_3, MSIOF1_SS1_B, SEL_MSI1_1), | ||
1387 | PINMUX_IPSR_MODSEL_DATA(IP12_5_3, SCIFA1_RXD_C, SEL_SCIFA1_2), | ||
1388 | PINMUX_IPSR_MODSEL_DATA(IP12_5_3, ADICHS1_B, SEL_RAD_1), | ||
1389 | PINMUX_IPSR_MODSEL_DATA(IP12_5_3, CAN1_RX_C, SEL_CAN1_2), | ||
1390 | PINMUX_IPSR_MODSEL_DATA(IP12_5_3, DACK1_B, SEL_LBS_1), | ||
1391 | PINMUX_IPSR_DATA(IP12_8_6, SSI_SDATA3), | ||
1392 | PINMUX_IPSR_MODSEL_DATA(IP12_8_6, MSIOF1_SS2_B, SEL_MSI1_1), | ||
1393 | PINMUX_IPSR_MODSEL_DATA(IP12_8_6, SCIFA1_TXD_C, SEL_SCIFA1_2), | ||
1394 | PINMUX_IPSR_MODSEL_DATA(IP12_8_6, ADICHS2_B, SEL_RAD_1), | ||
1395 | PINMUX_IPSR_MODSEL_DATA(IP12_8_6, CAN1_TX_C, SEL_CAN1_2), | ||
1396 | PINMUX_IPSR_DATA(IP12_8_6, DREQ2_N), | ||
1397 | PINMUX_IPSR_MODSEL_DATA(IP12_10_9, SSI_SCK4, SEL_SSI4_0), | ||
1398 | PINMUX_IPSR_DATA(IP12_10_9, MLB_CLK), | ||
1399 | PINMUX_IPSR_MODSEL_DATA(IP12_10_9, IETX_B, SEL_IEB_1), | ||
1400 | PINMUX_IPSR_DATA(IP12_10_9, IRD_TX), | ||
1401 | PINMUX_IPSR_MODSEL_DATA(IP12_12_11, SSI_WS4, SEL_SSI4_0), | ||
1402 | PINMUX_IPSR_DATA(IP12_12_11, MLB_SIG), | ||
1403 | PINMUX_IPSR_MODSEL_DATA(IP12_12_11, IECLK_B, SEL_IEB_1), | ||
1404 | PINMUX_IPSR_DATA(IP12_12_11, IRD_RX), | ||
1405 | PINMUX_IPSR_MODSEL_DATA(IP12_14_13, SSI_SDATA4, SEL_SSI4_0), | ||
1406 | PINMUX_IPSR_DATA(IP12_14_13, MLB_DAT), | ||
1407 | PINMUX_IPSR_MODSEL_DATA(IP12_14_13, IERX_B, SEL_IEB_1), | ||
1408 | PINMUX_IPSR_DATA(IP12_14_13, IRD_SCK), | ||
1409 | PINMUX_IPSR_MODSEL_DATA(IP12_17_15, SSI_SDATA8, SEL_SSI8_0), | ||
1410 | PINMUX_IPSR_MODSEL_DATA(IP12_17_15, SCIF1_SCK_B, SEL_SCIF1_1), | ||
1411 | PINMUX_IPSR_DATA(IP12_17_15, PWM1_B), | ||
1412 | PINMUX_IPSR_DATA(IP12_17_15, IRQ9), | ||
1413 | PINMUX_IPSR_MODSEL_DATA(IP12_17_15, REMOCON, SEL_RCN_0), | ||
1414 | PINMUX_IPSR_DATA(IP12_17_15, DACK2), | ||
1415 | PINMUX_IPSR_MODSEL_DATA(IP12_17_15, ETH_MDIO_B, SEL_ETH_1), | ||
1416 | PINMUX_IPSR_MODSEL_DATA(IP12_20_18, SSI_SCK1, SEL_SSI1_0), | ||
1417 | PINMUX_IPSR_MODSEL_DATA(IP12_20_18, SCIF1_RXD_B, SEL_SCIF1_1), | ||
1418 | PINMUX_IPSR_MODSEL_DATA(IP12_20_18, IIC1_SCL_C, SEL_IIC01_2), | ||
1419 | PINMUX_IPSR_DATA(IP12_20_18, VI1_CLK), | ||
1420 | PINMUX_IPSR_MODSEL_DATA(IP12_20_18, CAN0_RX_D, SEL_CAN0_3), | ||
1421 | PINMUX_IPSR_MODSEL_DATA(IP12_20_18, AVB_AVTP_CAPTURE, SEL_AVB_0), | ||
1422 | PINMUX_IPSR_MODSEL_DATA(IP12_20_18, ETH_CRS_DV_B, SEL_ETH_1), | ||
1423 | PINMUX_IPSR_MODSEL_DATA(IP12_23_21, SSI_WS1, SEL_SSI1_0), | ||
1424 | PINMUX_IPSR_MODSEL_DATA(IP12_23_21, SCIF1_TXD_B, SEL_SCIF1_1), | ||
1425 | PINMUX_IPSR_MODSEL_DATA(IP12_23_21, IIC1_SDA_C, SEL_IIC01_2), | ||
1426 | PINMUX_IPSR_DATA(IP12_23_21, VI1_DATA0), | ||
1427 | PINMUX_IPSR_MODSEL_DATA(IP12_23_21, CAN0_TX_D, SEL_CAN0_3), | ||
1428 | PINMUX_IPSR_MODSEL_DATA(IP12_23_21, AVB_AVTP_MATCH, SEL_AVB_0), | ||
1429 | PINMUX_IPSR_MODSEL_DATA(IP12_23_21, ETH_RX_ER_B, SEL_ETH_1), | ||
1430 | PINMUX_IPSR_MODSEL_DATA(IP12_26_24, SSI_SDATA1, SEL_SSI1_0), | ||
1431 | PINMUX_IPSR_MODSEL_DATA(IP12_26_24, HSCIF1_HRX_B, SEL_HSCIF1_1), | ||
1432 | PINMUX_IPSR_DATA(IP12_26_24, VI1_DATA1), | ||
1433 | PINMUX_IPSR_MODSEL_DATA(IP12_26_24, SDATA, SEL_FSN_0), | ||
1434 | PINMUX_IPSR_DATA(IP12_26_24, ATAG0_N), | ||
1435 | PINMUX_IPSR_MODSEL_DATA(IP12_26_24, ETH_RXD0_B, SEL_ETH_1), | ||
1436 | PINMUX_IPSR_MODSEL_DATA(IP12_29_27, SSI_SCK2, SEL_SSI2_0), | ||
1437 | PINMUX_IPSR_MODSEL_DATA(IP12_29_27, HSCIF1_HTX_B, SEL_HSCIF1_1), | ||
1438 | PINMUX_IPSR_DATA(IP12_29_27, VI1_DATA2), | ||
1439 | PINMUX_IPSR_MODSEL_DATA(IP12_29_27, MDATA, SEL_FSN_0), | ||
1440 | PINMUX_IPSR_DATA(IP12_29_27, ATAWR0_N), | ||
1441 | PINMUX_IPSR_MODSEL_DATA(IP12_29_27, ETH_RXD1_B, SEL_ETH_1), | ||
1442 | |||
1443 | /* IPSR13 */ | ||
1444 | PINMUX_IPSR_MODSEL_DATA(IP13_2_0, SSI_WS2, SEL_SSI2_0), | ||
1445 | PINMUX_IPSR_MODSEL_DATA(IP13_2_0, HSCIF1_HCTS_N_B, SEL_HSCIF1_1), | ||
1446 | PINMUX_IPSR_MODSEL_DATA(IP13_2_0, SCIFA0_RXD_D, SEL_SCIFA0_3), | ||
1447 | PINMUX_IPSR_DATA(IP13_2_0, VI1_DATA3), | ||
1448 | PINMUX_IPSR_MODSEL_DATA(IP13_2_0, SCKZ, SEL_FSN_0), | ||
1449 | PINMUX_IPSR_DATA(IP13_2_0, ATACS00_N), | ||
1450 | PINMUX_IPSR_MODSEL_DATA(IP13_2_0, ETH_LINK_B, SEL_ETH_1), | ||
1451 | PINMUX_IPSR_MODSEL_DATA(IP13_5_3, SSI_SDATA2, SEL_SSI2_0), | ||
1452 | PINMUX_IPSR_MODSEL_DATA(IP13_5_3, HSCIF1_HRTS_N_B, SEL_HSCIF1_1), | ||
1453 | PINMUX_IPSR_MODSEL_DATA(IP13_5_3, SCIFA0_TXD_D, SEL_SCIFA0_3), | ||
1454 | PINMUX_IPSR_DATA(IP13_5_3, VI1_DATA4), | ||
1455 | PINMUX_IPSR_MODSEL_DATA(IP13_5_3, STM_N, SEL_FSN_0), | ||
1456 | PINMUX_IPSR_DATA(IP13_5_3, ATACS10_N), | ||
1457 | PINMUX_IPSR_MODSEL_DATA(IP13_5_3, ETH_REFCLK_B, SEL_ETH_1), | ||
1458 | PINMUX_IPSR_MODSEL_DATA(IP13_8_6, SSI_SCK9, SEL_SSI9_0), | ||
1459 | PINMUX_IPSR_MODSEL_DATA(IP13_8_6, SCIF2_SCK_B, SEL_SCIF2_1), | ||
1460 | PINMUX_IPSR_DATA(IP13_8_6, PWM2_B), | ||
1461 | PINMUX_IPSR_DATA(IP13_8_6, VI1_DATA5), | ||
1462 | PINMUX_IPSR_MODSEL_DATA(IP13_8_6, MTS_N, SEL_FSN_0), | ||
1463 | PINMUX_IPSR_DATA(IP13_8_6, EX_WAIT1), | ||
1464 | PINMUX_IPSR_MODSEL_DATA(IP13_8_6, ETH_TXD1_B, SEL_ETH_1), | ||
1465 | PINMUX_IPSR_MODSEL_DATA(IP13_11_9, SSI_WS9, SEL_SSI9_0), | ||
1466 | PINMUX_IPSR_MODSEL_DATA(IP13_11_9, SCIF2_RXD_B, SEL_SCIF2_1), | ||
1467 | PINMUX_IPSR_MODSEL_DATA(IP13_11_9, I2C3_SCL_E, SEL_I2C03_4), | ||
1468 | PINMUX_IPSR_DATA(IP13_11_9, VI1_DATA6), | ||
1469 | PINMUX_IPSR_DATA(IP13_11_9, ATARD0_N), | ||
1470 | PINMUX_IPSR_MODSEL_DATA(IP13_11_9, ETH_TX_EN_B, SEL_ETH_1), | ||
1471 | PINMUX_IPSR_MODSEL_DATA(IP13_14_12, SSI_SDATA9, SEL_SSI9_0), | ||
1472 | PINMUX_IPSR_MODSEL_DATA(IP13_14_12, SCIF2_TXD_B, SEL_SCIF2_1), | ||
1473 | PINMUX_IPSR_MODSEL_DATA(IP13_14_12, I2C3_SDA_E, SEL_I2C03_4), | ||
1474 | PINMUX_IPSR_DATA(IP13_14_12, VI1_DATA7), | ||
1475 | PINMUX_IPSR_DATA(IP13_14_12, ATADIR0_N), | ||
1476 | PINMUX_IPSR_MODSEL_DATA(IP13_14_12, ETH_MAGIC_B, SEL_ETH_1), | ||
1477 | PINMUX_IPSR_MODSEL_DATA(IP13_17_15, AUDIO_CLKA, SEL_ADG_0), | ||
1478 | PINMUX_IPSR_MODSEL_DATA(IP13_17_15, I2C0_SCL_B, SEL_I2C00_1), | ||
1479 | PINMUX_IPSR_MODSEL_DATA(IP13_17_15, SCIFA4_RXD_D, SEL_SCIFA4_3), | ||
1480 | PINMUX_IPSR_DATA(IP13_17_15, VI1_CLKENB), | ||
1481 | PINMUX_IPSR_MODSEL_DATA(IP13_17_15, TS_SDATA_C, SEL_TSIF0_2), | ||
1482 | PINMUX_IPSR_MODSEL_DATA(IP13_17_15, RIF0_SYNC_B, SEL_DR0_1), | ||
1483 | PINMUX_IPSR_MODSEL_DATA(IP13_17_15, ETH_TXD0_B, SEL_ETH_1), | ||
1484 | PINMUX_IPSR_MODSEL_DATA(IP13_20_18, AUDIO_CLKB, SEL_ADG_0), | ||
1485 | PINMUX_IPSR_MODSEL_DATA(IP13_20_18, I2C0_SDA_B, SEL_I2C00_1), | ||
1486 | PINMUX_IPSR_MODSEL_DATA(IP13_20_18, SCIFA4_TXD_D, SEL_SCIFA4_3), | ||
1487 | PINMUX_IPSR_DATA(IP13_20_18, VI1_FIELD), | ||
1488 | PINMUX_IPSR_MODSEL_DATA(IP13_20_18, TS_SCK_C, SEL_TSIF0_2), | ||
1489 | PINMUX_IPSR_MODSEL_DATA(IP13_20_18, RIF0_CLK_B, SEL_DR0_1), | ||
1490 | PINMUX_IPSR_MODSEL_DATA(IP13_20_18, BPFCLK_E, SEL_DARC_4), | ||
1491 | PINMUX_IPSR_MODSEL_DATA(IP13_20_18, ETH_MDC_B, SEL_ETH_1), | ||
1492 | PINMUX_IPSR_MODSEL_DATA(IP13_23_21, AUDIO_CLKC, SEL_ADG_0), | ||
1493 | PINMUX_IPSR_MODSEL_DATA(IP13_23_21, I2C4_SCL_B, SEL_I2C04_1), | ||
1494 | PINMUX_IPSR_MODSEL_DATA(IP13_23_21, SCIFA5_RXD_D, SEL_SCIFA5_3), | ||
1495 | PINMUX_IPSR_DATA(IP13_23_21, VI1_HSYNC_N), | ||
1496 | PINMUX_IPSR_MODSEL_DATA(IP13_23_21, TS_SDEN_C, SEL_TSIF0_2), | ||
1497 | PINMUX_IPSR_MODSEL_DATA(IP13_23_21, RIF0_D0_B, SEL_DR0_1), | ||
1498 | PINMUX_IPSR_MODSEL_DATA(IP13_23_21, FMCLK_E, SEL_DARC_4), | ||
1499 | PINMUX_IPSR_MODSEL_DATA(IP13_23_21, RDS_CLK_D, SEL_RDS_3), | ||
1500 | PINMUX_IPSR_MODSEL_DATA(IP13_26_24, AUDIO_CLKOUT, SEL_ADG_0), | ||
1501 | PINMUX_IPSR_MODSEL_DATA(IP13_26_24, I2C4_SDA_B, SEL_I2C04_1), | ||
1502 | PINMUX_IPSR_MODSEL_DATA(IP13_26_24, SCIFA5_TXD_D, SEL_SCIFA5_3), | ||
1503 | PINMUX_IPSR_DATA(IP13_26_24, VI1_VSYNC_N), | ||
1504 | PINMUX_IPSR_MODSEL_DATA(IP13_26_24, TS_SPSYNC_C, SEL_TSIF0_2), | ||
1505 | PINMUX_IPSR_MODSEL_DATA(IP13_26_24, RIF0_D1_B, SEL_DR1_1), | ||
1506 | PINMUX_IPSR_MODSEL_DATA(IP13_26_24, FMIN_E, SEL_DARC_4), | ||
1507 | PINMUX_IPSR_MODSEL_DATA(IP13_26_24, RDS_DATA_D, SEL_RDS_3), | ||
1508 | }; | ||
1509 | |||
1510 | static const struct sh_pfc_pin pinmux_pins[] = { | ||
1511 | PINMUX_GPIO_GP_ALL(), | ||
1512 | }; | ||
1513 | |||
1514 | /* - ETH -------------------------------------------------------------------- */ | ||
1515 | static const unsigned int eth_link_pins[] = { | ||
1516 | /* LINK */ | ||
1517 | RCAR_GP_PIN(3, 18), | ||
1518 | }; | ||
1519 | static const unsigned int eth_link_mux[] = { | ||
1520 | ETH_LINK_MARK, | ||
1521 | }; | ||
1522 | static const unsigned int eth_magic_pins[] = { | ||
1523 | /* MAGIC */ | ||
1524 | RCAR_GP_PIN(3, 22), | ||
1525 | }; | ||
1526 | static const unsigned int eth_magic_mux[] = { | ||
1527 | ETH_MAGIC_MARK, | ||
1528 | }; | ||
1529 | static const unsigned int eth_mdio_pins[] = { | ||
1530 | /* MDC, MDIO */ | ||
1531 | RCAR_GP_PIN(3, 24), RCAR_GP_PIN(3, 13), | ||
1532 | }; | ||
1533 | static const unsigned int eth_mdio_mux[] = { | ||
1534 | ETH_MDC_MARK, ETH_MDIO_MARK, | ||
1535 | }; | ||
1536 | static const unsigned int eth_rmii_pins[] = { | ||
1537 | /* RXD[0:1], RX_ER, CRS_DV, TXD[0:1], TX_EN, REF_CLK */ | ||
1538 | RCAR_GP_PIN(3, 16), RCAR_GP_PIN(3, 17), RCAR_GP_PIN(3, 15), | ||
1539 | RCAR_GP_PIN(3, 14), RCAR_GP_PIN(3, 23), RCAR_GP_PIN(3, 20), | ||
1540 | RCAR_GP_PIN(3, 21), RCAR_GP_PIN(3, 19), | ||
1541 | }; | ||
1542 | static const unsigned int eth_rmii_mux[] = { | ||
1543 | ETH_RXD0_MARK, ETH_RXD1_MARK, ETH_RX_ER_MARK, ETH_CRS_DV_MARK, | ||
1544 | ETH_TXD0_MARK, ETH_TXD1_MARK, ETH_TX_EN_MARK, ETH_REFCLK_MARK, | ||
1545 | }; | ||
1546 | static const unsigned int eth_link_b_pins[] = { | ||
1547 | /* LINK */ | ||
1548 | RCAR_GP_PIN(5, 15), | ||
1549 | }; | ||
1550 | static const unsigned int eth_link_b_mux[] = { | ||
1551 | ETH_LINK_B_MARK, | ||
1552 | }; | ||
1553 | static const unsigned int eth_magic_b_pins[] = { | ||
1554 | /* MAGIC */ | ||
1555 | RCAR_GP_PIN(5, 19), | ||
1556 | }; | ||
1557 | static const unsigned int eth_magic_b_mux[] = { | ||
1558 | ETH_MAGIC_B_MARK, | ||
1559 | }; | ||
1560 | static const unsigned int eth_mdio_b_pins[] = { | ||
1561 | /* MDC, MDIO */ | ||
1562 | RCAR_GP_PIN(5, 21), RCAR_GP_PIN(5, 10), | ||
1563 | }; | ||
1564 | static const unsigned int eth_mdio_b_mux[] = { | ||
1565 | ETH_MDC_B_MARK, ETH_MDIO_B_MARK, | ||
1566 | }; | ||
1567 | static const unsigned int eth_rmii_b_pins[] = { | ||
1568 | /* RXD[0:1], RX_ER, CRS_DV, TXD[0:1], TX_EN, REF_CLK */ | ||
1569 | RCAR_GP_PIN(5, 13), RCAR_GP_PIN(5, 14), RCAR_GP_PIN(5, 12), | ||
1570 | RCAR_GP_PIN(5, 11), RCAR_GP_PIN(5, 20), RCAR_GP_PIN(5, 17), | ||
1571 | RCAR_GP_PIN(5, 18), RCAR_GP_PIN(5, 16), | ||
1572 | }; | ||
1573 | static const unsigned int eth_rmii_b_mux[] = { | ||
1574 | ETH_RXD0_B_MARK, ETH_RXD1_B_MARK, ETH_RX_ER_B_MARK, ETH_CRS_DV_B_MARK, | ||
1575 | ETH_TXD0_B_MARK, ETH_TXD1_B_MARK, ETH_TX_EN_B_MARK, ETH_REFCLK_B_MARK, | ||
1576 | }; | ||
1577 | /* - HSCIF0 ----------------------------------------------------------------- */ | ||
1578 | static const unsigned int hscif0_data_pins[] = { | ||
1579 | /* RX, TX */ | ||
1580 | RCAR_GP_PIN(3, 25), RCAR_GP_PIN(3, 26), | ||
1581 | }; | ||
1582 | static const unsigned int hscif0_data_mux[] = { | ||
1583 | HSCIF0_HRX_MARK, HSCIF0_HTX_MARK, | ||
1584 | }; | ||
1585 | static const unsigned int hscif0_clk_pins[] = { | ||
1586 | /* SCK */ | ||
1587 | RCAR_GP_PIN(3, 29), | ||
1588 | }; | ||
1589 | static const unsigned int hscif0_clk_mux[] = { | ||
1590 | HSCIF0_HSCK_MARK, | ||
1591 | }; | ||
1592 | static const unsigned int hscif0_ctrl_pins[] = { | ||
1593 | /* RTS, CTS */ | ||
1594 | RCAR_GP_PIN(3, 28), RCAR_GP_PIN(3, 27), | ||
1595 | }; | ||
1596 | static const unsigned int hscif0_ctrl_mux[] = { | ||
1597 | HSCIF0_HRTS_N_MARK, HSCIF0_HCTS_N_MARK, | ||
1598 | }; | ||
1599 | static const unsigned int hscif0_data_b_pins[] = { | ||
1600 | /* RX, TX */ | ||
1601 | RCAR_GP_PIN(0, 30), RCAR_GP_PIN(0, 31), | ||
1602 | }; | ||
1603 | static const unsigned int hscif0_data_b_mux[] = { | ||
1604 | HSCIF0_HRX_B_MARK, HSCIF0_HTX_B_MARK, | ||
1605 | }; | ||
1606 | static const unsigned int hscif0_clk_b_pins[] = { | ||
1607 | /* SCK */ | ||
1608 | RCAR_GP_PIN(1, 0), | ||
1609 | }; | ||
1610 | static const unsigned int hscif0_clk_b_mux[] = { | ||
1611 | HSCIF0_HSCK_B_MARK, | ||
1612 | }; | ||
1613 | /* - HSCIF1 ----------------------------------------------------------------- */ | ||
1614 | static const unsigned int hscif1_data_pins[] = { | ||
1615 | /* RX, TX */ | ||
1616 | RCAR_GP_PIN(4, 8), RCAR_GP_PIN(4, 9), | ||
1617 | }; | ||
1618 | static const unsigned int hscif1_data_mux[] = { | ||
1619 | HSCIF1_HRX_MARK, HSCIF1_HTX_MARK, | ||
1620 | }; | ||
1621 | static const unsigned int hscif1_clk_pins[] = { | ||
1622 | /* SCK */ | ||
1623 | RCAR_GP_PIN(4, 10), | ||
1624 | }; | ||
1625 | static const unsigned int hscif1_clk_mux[] = { | ||
1626 | HSCIF1_HSCK_MARK, | ||
1627 | }; | ||
1628 | static const unsigned int hscif1_ctrl_pins[] = { | ||
1629 | /* RTS, CTS */ | ||
1630 | RCAR_GP_PIN(4, 12), RCAR_GP_PIN(4, 11), | ||
1631 | }; | ||
1632 | static const unsigned int hscif1_ctrl_mux[] = { | ||
1633 | HSCIF1_HRTS_N_MARK, HSCIF1_HCTS_N_MARK, | ||
1634 | }; | ||
1635 | static const unsigned int hscif1_data_b_pins[] = { | ||
1636 | /* RX, TX */ | ||
1637 | RCAR_GP_PIN(5, 13), RCAR_GP_PIN(5, 14), | ||
1638 | }; | ||
1639 | static const unsigned int hscif1_data_b_mux[] = { | ||
1640 | HSCIF1_HRX_B_MARK, HSCIF1_HTX_B_MARK, | ||
1641 | }; | ||
1642 | static const unsigned int hscif1_ctrl_b_pins[] = { | ||
1643 | /* RTS, CTS */ | ||
1644 | RCAR_GP_PIN(5, 16), RCAR_GP_PIN(5, 15), | ||
1645 | }; | ||
1646 | static const unsigned int hscif1_ctrl_b_mux[] = { | ||
1647 | HSCIF1_HRTS_N_B_MARK, HSCIF1_HCTS_N_B_MARK, | ||
1648 | }; | ||
1649 | /* - HSCIF2 ----------------------------------------------------------------- */ | ||
1650 | static const unsigned int hscif2_data_pins[] = { | ||
1651 | /* RX, TX */ | ||
1652 | RCAR_GP_PIN(0, 8), RCAR_GP_PIN(0, 9), | ||
1653 | }; | ||
1654 | static const unsigned int hscif2_data_mux[] = { | ||
1655 | HSCIF2_HRX_MARK, HSCIF2_HTX_MARK, | ||
1656 | }; | ||
1657 | static const unsigned int hscif2_clk_pins[] = { | ||
1658 | /* SCK */ | ||
1659 | RCAR_GP_PIN(0, 10), | ||
1660 | }; | ||
1661 | static const unsigned int hscif2_clk_mux[] = { | ||
1662 | HSCIF2_HSCK_MARK, | ||
1663 | }; | ||
1664 | static const unsigned int hscif2_ctrl_pins[] = { | ||
1665 | /* RTS, CTS */ | ||
1666 | RCAR_GP_PIN(0, 12), RCAR_GP_PIN(0, 11), | ||
1667 | }; | ||
1668 | static const unsigned int hscif2_ctrl_mux[] = { | ||
1669 | HSCIF2_HRTS_N_MARK, HSCIF2_HCTS_N_MARK, | ||
1670 | }; | ||
1671 | /* - I2C0 ------------------------------------------------------------------- */ | ||
1672 | static const unsigned int i2c0_pins[] = { | ||
1673 | /* SCL, SDA */ | ||
1674 | RCAR_GP_PIN(3, 30), RCAR_GP_PIN(3, 31), | ||
1675 | }; | ||
1676 | static const unsigned int i2c0_mux[] = { | ||
1677 | I2C0_SCL_MARK, I2C0_SDA_MARK, | ||
1678 | }; | ||
1679 | static const unsigned int i2c0_b_pins[] = { | ||
1680 | /* SCL, SDA */ | ||
1681 | RCAR_GP_PIN(5, 20), RCAR_GP_PIN(5, 21), | ||
1682 | }; | ||
1683 | static const unsigned int i2c0_b_mux[] = { | ||
1684 | I2C0_SCL_B_MARK, I2C0_SDA_B_MARK, | ||
1685 | }; | ||
1686 | static const unsigned int i2c0_c_pins[] = { | ||
1687 | /* SCL, SDA */ | ||
1688 | RCAR_GP_PIN(3, 11), RCAR_GP_PIN(3, 12), | ||
1689 | }; | ||
1690 | static const unsigned int i2c0_c_mux[] = { | ||
1691 | I2C0_SCL_C_MARK, I2C0_SDA_C_MARK, | ||
1692 | }; | ||
1693 | static const unsigned int i2c0_d_pins[] = { | ||
1694 | /* SCL, SDA */ | ||
1695 | RCAR_GP_PIN(0, 5), RCAR_GP_PIN(0, 6), | ||
1696 | }; | ||
1697 | static const unsigned int i2c0_d_mux[] = { | ||
1698 | I2C0_SCL_D_MARK, I2C0_SDA_D_MARK, | ||
1699 | }; | ||
1700 | static const unsigned int i2c0_e_pins[] = { | ||
1701 | /* SCL, SDA */ | ||
1702 | RCAR_GP_PIN(3, 27), RCAR_GP_PIN(3, 28), | ||
1703 | }; | ||
1704 | static const unsigned int i2c0_e_mux[] = { | ||
1705 | I2C0_SCL_E_MARK, I2C0_SDA_E_MARK, | ||
1706 | }; | ||
1707 | /* - I2C1 ------------------------------------------------------------------- */ | ||
1708 | static const unsigned int i2c1_pins[] = { | ||
1709 | /* SCL, SDA */ | ||
1710 | RCAR_GP_PIN(4, 0), RCAR_GP_PIN(4, 1), | ||
1711 | }; | ||
1712 | static const unsigned int i2c1_mux[] = { | ||
1713 | I2C1_SCL_MARK, I2C1_SDA_MARK, | ||
1714 | }; | ||
1715 | static const unsigned int i2c1_b_pins[] = { | ||
1716 | /* SCL, SDA */ | ||
1717 | RCAR_GP_PIN(0, 8), RCAR_GP_PIN(0, 9), | ||
1718 | }; | ||
1719 | static const unsigned int i2c1_b_mux[] = { | ||
1720 | I2C1_SCL_B_MARK, I2C1_SDA_B_MARK, | ||
1721 | }; | ||
1722 | static const unsigned int i2c1_c_pins[] = { | ||
1723 | /* SCL, SDA */ | ||
1724 | RCAR_GP_PIN(3, 25), RCAR_GP_PIN(3, 26), | ||
1725 | }; | ||
1726 | static const unsigned int i2c1_c_mux[] = { | ||
1727 | I2C1_SCL_C_MARK, I2C1_SDA_C_MARK, | ||
1728 | }; | ||
1729 | static const unsigned int i2c1_d_pins[] = { | ||
1730 | /* SCL, SDA */ | ||
1731 | RCAR_GP_PIN(0, 11), RCAR_GP_PIN(0, 12), | ||
1732 | }; | ||
1733 | static const unsigned int i2c1_d_mux[] = { | ||
1734 | I2C1_SCL_D_MARK, I2C1_SDA_D_MARK, | ||
1735 | }; | ||
1736 | static const unsigned int i2c1_e_pins[] = { | ||
1737 | /* SCL, SDA */ | ||
1738 | RCAR_GP_PIN(4, 20), RCAR_GP_PIN(4, 21), | ||
1739 | }; | ||
1740 | static const unsigned int i2c1_e_mux[] = { | ||
1741 | I2C1_SCL_E_MARK, I2C1_SDA_E_MARK, | ||
1742 | }; | ||
1743 | /* - I2C2 ------------------------------------------------------------------- */ | ||
1744 | static const unsigned int i2c2_pins[] = { | ||
1745 | /* SCL, SDA */ | ||
1746 | RCAR_GP_PIN(4, 22), RCAR_GP_PIN(4, 23), | ||
1747 | }; | ||
1748 | static const unsigned int i2c2_mux[] = { | ||
1749 | I2C2_SCL_MARK, I2C2_SDA_MARK, | ||
1750 | }; | ||
1751 | static const unsigned int i2c2_b_pins[] = { | ||
1752 | /* SCL, SDA */ | ||
1753 | RCAR_GP_PIN(6, 24), RCAR_GP_PIN(6, 25), | ||
1754 | }; | ||
1755 | static const unsigned int i2c2_b_mux[] = { | ||
1756 | I2C2_SCL_B_MARK, I2C2_SDA_B_MARK, | ||
1757 | }; | ||
1758 | static const unsigned int i2c2_c_pins[] = { | ||
1759 | /* SCL, SDA */ | ||
1760 | RCAR_GP_PIN(4, 2), RCAR_GP_PIN(4, 3), | ||
1761 | }; | ||
1762 | static const unsigned int i2c2_c_mux[] = { | ||
1763 | I2C2_SCL_C_MARK, I2C2_SDA_C_MARK, | ||
1764 | }; | ||
1765 | static const unsigned int i2c2_d_pins[] = { | ||
1766 | /* SCL, SDA */ | ||
1767 | RCAR_GP_PIN(2, 0), RCAR_GP_PIN(2, 1), | ||
1768 | }; | ||
1769 | static const unsigned int i2c2_d_mux[] = { | ||
1770 | I2C2_SCL_D_MARK, I2C2_SDA_D_MARK, | ||
1771 | }; | ||
1772 | static const unsigned int i2c2_e_pins[] = { | ||
1773 | /* SCL, SDA */ | ||
1774 | RCAR_GP_PIN(1, 16), RCAR_GP_PIN(1, 17), | ||
1775 | }; | ||
1776 | static const unsigned int i2c2_e_mux[] = { | ||
1777 | I2C2_SCL_E_MARK, I2C2_SDA_E_MARK, | ||
1778 | }; | ||
1779 | /* - I2C3 ------------------------------------------------------------------- */ | ||
1780 | static const unsigned int i2c3_pins[] = { | ||
1781 | /* SCL, SDA */ | ||
1782 | RCAR_GP_PIN(3, 9), RCAR_GP_PIN(3, 10), | ||
1783 | }; | ||
1784 | static const unsigned int i2c3_mux[] = { | ||
1785 | I2C3_SCL_MARK, I2C3_SDA_MARK, | ||
1786 | }; | ||
1787 | static const unsigned int i2c3_b_pins[] = { | ||
1788 | /* SCL, SDA */ | ||
1789 | RCAR_GP_PIN(0, 3), RCAR_GP_PIN(0, 4), | ||
1790 | }; | ||
1791 | static const unsigned int i2c3_b_mux[] = { | ||
1792 | I2C3_SCL_B_MARK, I2C3_SDA_B_MARK, | ||
1793 | }; | ||
1794 | static const unsigned int i2c3_c_pins[] = { | ||
1795 | /* SCL, SDA */ | ||
1796 | RCAR_GP_PIN(4, 25), RCAR_GP_PIN(4, 26), | ||
1797 | }; | ||
1798 | static const unsigned int i2c3_c_mux[] = { | ||
1799 | I2C3_SCL_C_MARK, I2C3_SDA_C_MARK, | ||
1800 | }; | ||
1801 | static const unsigned int i2c3_d_pins[] = { | ||
1802 | /* SCL, SDA */ | ||
1803 | RCAR_GP_PIN(2, 8), RCAR_GP_PIN(2, 9), | ||
1804 | }; | ||
1805 | static const unsigned int i2c3_d_mux[] = { | ||
1806 | I2C3_SCL_D_MARK, I2C3_SDA_D_MARK, | ||
1807 | }; | ||
1808 | static const unsigned int i2c3_e_pins[] = { | ||
1809 | /* SCL, SDA */ | ||
1810 | RCAR_GP_PIN(5, 18), RCAR_GP_PIN(5, 19), | ||
1811 | }; | ||
1812 | static const unsigned int i2c3_e_mux[] = { | ||
1813 | I2C3_SCL_E_MARK, I2C3_SDA_E_MARK, | ||
1814 | }; | ||
1815 | /* - I2C4 ------------------------------------------------------------------- */ | ||
1816 | static const unsigned int i2c4_pins[] = { | ||
1817 | /* SCL, SDA */ | ||
1818 | RCAR_GP_PIN(4, 8), RCAR_GP_PIN(4, 9), | ||
1819 | }; | ||
1820 | static const unsigned int i2c4_mux[] = { | ||
1821 | I2C4_SCL_MARK, I2C4_SDA_MARK, | ||
1822 | }; | ||
1823 | static const unsigned int i2c4_b_pins[] = { | ||
1824 | /* SCL, SDA */ | ||
1825 | RCAR_GP_PIN(5, 22), RCAR_GP_PIN(5, 23), | ||
1826 | }; | ||
1827 | static const unsigned int i2c4_b_mux[] = { | ||
1828 | I2C4_SCL_B_MARK, I2C4_SDA_B_MARK, | ||
1829 | }; | ||
1830 | static const unsigned int i2c4_c_pins[] = { | ||
1831 | /* SCL, SDA */ | ||
1832 | RCAR_GP_PIN(4, 28), RCAR_GP_PIN(4, 29), | ||
1833 | }; | ||
1834 | static const unsigned int i2c4_c_mux[] = { | ||
1835 | I2C4_SCL_C_MARK, I2C4_SDA_C_MARK, | ||
1836 | }; | ||
1837 | static const unsigned int i2c4_d_pins[] = { | ||
1838 | /* SCL, SDA */ | ||
1839 | RCAR_GP_PIN(2, 16), RCAR_GP_PIN(2, 17), | ||
1840 | }; | ||
1841 | static const unsigned int i2c4_d_mux[] = { | ||
1842 | I2C4_SCL_D_MARK, I2C4_SDA_D_MARK, | ||
1843 | }; | ||
1844 | static const unsigned int i2c4_e_pins[] = { | ||
1845 | /* SCL, SDA */ | ||
1846 | RCAR_GP_PIN(3, 23), RCAR_GP_PIN(3, 24), | ||
1847 | }; | ||
1848 | static const unsigned int i2c4_e_mux[] = { | ||
1849 | I2C4_SCL_E_MARK, I2C4_SDA_E_MARK, | ||
1850 | }; | ||
1851 | /* - INTC ------------------------------------------------------------------- */ | ||
1852 | static const unsigned int intc_irq0_pins[] = { | ||
1853 | /* IRQ0 */ | ||
1854 | RCAR_GP_PIN(4, 4), | ||
1855 | }; | ||
1856 | static const unsigned int intc_irq0_mux[] = { | ||
1857 | IRQ0_MARK, | ||
1858 | }; | ||
1859 | static const unsigned int intc_irq1_pins[] = { | ||
1860 | /* IRQ1 */ | ||
1861 | RCAR_GP_PIN(4, 18), | ||
1862 | }; | ||
1863 | static const unsigned int intc_irq1_mux[] = { | ||
1864 | IRQ1_MARK, | ||
1865 | }; | ||
1866 | static const unsigned int intc_irq2_pins[] = { | ||
1867 | /* IRQ2 */ | ||
1868 | RCAR_GP_PIN(4, 19), | ||
1869 | }; | ||
1870 | static const unsigned int intc_irq2_mux[] = { | ||
1871 | IRQ2_MARK, | ||
1872 | }; | ||
1873 | static const unsigned int intc_irq3_pins[] = { | ||
1874 | /* IRQ3 */ | ||
1875 | RCAR_GP_PIN(0, 7), | ||
1876 | }; | ||
1877 | static const unsigned int intc_irq3_mux[] = { | ||
1878 | IRQ3_MARK, | ||
1879 | }; | ||
1880 | static const unsigned int intc_irq4_pins[] = { | ||
1881 | /* IRQ4 */ | ||
1882 | RCAR_GP_PIN(0, 0), | ||
1883 | }; | ||
1884 | static const unsigned int intc_irq4_mux[] = { | ||
1885 | IRQ4_MARK, | ||
1886 | }; | ||
1887 | static const unsigned int intc_irq5_pins[] = { | ||
1888 | /* IRQ5 */ | ||
1889 | RCAR_GP_PIN(4, 1), | ||
1890 | }; | ||
1891 | static const unsigned int intc_irq5_mux[] = { | ||
1892 | IRQ5_MARK, | ||
1893 | }; | ||
1894 | static const unsigned int intc_irq6_pins[] = { | ||
1895 | /* IRQ6 */ | ||
1896 | RCAR_GP_PIN(0, 10), | ||
1897 | }; | ||
1898 | static const unsigned int intc_irq6_mux[] = { | ||
1899 | IRQ6_MARK, | ||
1900 | }; | ||
1901 | static const unsigned int intc_irq7_pins[] = { | ||
1902 | /* IRQ7 */ | ||
1903 | RCAR_GP_PIN(6, 15), | ||
1904 | }; | ||
1905 | static const unsigned int intc_irq7_mux[] = { | ||
1906 | IRQ7_MARK, | ||
1907 | }; | ||
1908 | static const unsigned int intc_irq8_pins[] = { | ||
1909 | /* IRQ8 */ | ||
1910 | RCAR_GP_PIN(5, 0), | ||
1911 | }; | ||
1912 | static const unsigned int intc_irq8_mux[] = { | ||
1913 | IRQ8_MARK, | ||
1914 | }; | ||
1915 | static const unsigned int intc_irq9_pins[] = { | ||
1916 | /* IRQ9 */ | ||
1917 | RCAR_GP_PIN(5, 10), | ||
1918 | }; | ||
1919 | static const unsigned int intc_irq9_mux[] = { | ||
1920 | IRQ9_MARK, | ||
1921 | }; | ||
1922 | /* - MMCIF ------------------------------------------------------------------ */ | ||
1923 | static const unsigned int mmc_data1_pins[] = { | ||
1924 | /* D[0] */ | ||
1925 | RCAR_GP_PIN(6, 18), | ||
1926 | }; | ||
1927 | static const unsigned int mmc_data1_mux[] = { | ||
1928 | MMC_D0_MARK, | ||
1929 | }; | ||
1930 | static const unsigned int mmc_data4_pins[] = { | ||
1931 | /* D[0:3] */ | ||
1932 | RCAR_GP_PIN(6, 18), RCAR_GP_PIN(6, 19), | ||
1933 | RCAR_GP_PIN(6, 20), RCAR_GP_PIN(6, 21), | ||
1934 | }; | ||
1935 | static const unsigned int mmc_data4_mux[] = { | ||
1936 | MMC_D0_MARK, MMC_D1_MARK, MMC_D2_MARK, MMC_D3_MARK, | ||
1937 | }; | ||
1938 | static const unsigned int mmc_data8_pins[] = { | ||
1939 | /* D[0:7] */ | ||
1940 | RCAR_GP_PIN(6, 18), RCAR_GP_PIN(6, 19), | ||
1941 | RCAR_GP_PIN(6, 20), RCAR_GP_PIN(6, 21), | ||
1942 | RCAR_GP_PIN(6, 22), RCAR_GP_PIN(6, 23), | ||
1943 | RCAR_GP_PIN(6, 24), RCAR_GP_PIN(6, 25), | ||
1944 | }; | ||
1945 | static const unsigned int mmc_data8_mux[] = { | ||
1946 | MMC_D0_MARK, MMC_D1_MARK, MMC_D2_MARK, MMC_D3_MARK, | ||
1947 | MMC_D4_MARK, MMC_D5_MARK, MMC_D6_MARK, MMC_D7_MARK, | ||
1948 | }; | ||
1949 | static const unsigned int mmc_ctrl_pins[] = { | ||
1950 | /* CLK, CMD */ | ||
1951 | RCAR_GP_PIN(6, 16), RCAR_GP_PIN(6, 17), | ||
1952 | }; | ||
1953 | static const unsigned int mmc_ctrl_mux[] = { | ||
1954 | MMC_CLK_MARK, MMC_CMD_MARK, | ||
1955 | }; | ||
1956 | /* - MSIOF0 ----------------------------------------------------------------- */ | ||
1957 | static const unsigned int msiof0_clk_pins[] = { | ||
1958 | /* SCK */ | ||
1959 | RCAR_GP_PIN(4, 4), | ||
1960 | }; | ||
1961 | static const unsigned int msiof0_clk_mux[] = { | ||
1962 | MSIOF0_SCK_MARK, | ||
1963 | }; | ||
1964 | static const unsigned int msiof0_sync_pins[] = { | ||
1965 | /* SYNC */ | ||
1966 | RCAR_GP_PIN(4, 5), | ||
1967 | }; | ||
1968 | static const unsigned int msiof0_sync_mux[] = { | ||
1969 | MSIOF0_SYNC_MARK, | ||
1970 | }; | ||
1971 | static const unsigned int msiof0_ss1_pins[] = { | ||
1972 | /* SS1 */ | ||
1973 | RCAR_GP_PIN(4, 6), | ||
1974 | }; | ||
1975 | static const unsigned int msiof0_ss1_mux[] = { | ||
1976 | MSIOF0_SS1_MARK, | ||
1977 | }; | ||
1978 | static const unsigned int msiof0_ss2_pins[] = { | ||
1979 | /* SS2 */ | ||
1980 | RCAR_GP_PIN(4, 7), | ||
1981 | }; | ||
1982 | static const unsigned int msiof0_ss2_mux[] = { | ||
1983 | MSIOF0_SS2_MARK, | ||
1984 | }; | ||
1985 | static const unsigned int msiof0_rx_pins[] = { | ||
1986 | /* RXD */ | ||
1987 | RCAR_GP_PIN(4, 2), | ||
1988 | }; | ||
1989 | static const unsigned int msiof0_rx_mux[] = { | ||
1990 | MSIOF0_RXD_MARK, | ||
1991 | }; | ||
1992 | static const unsigned int msiof0_tx_pins[] = { | ||
1993 | /* TXD */ | ||
1994 | RCAR_GP_PIN(4, 3), | ||
1995 | }; | ||
1996 | static const unsigned int msiof0_tx_mux[] = { | ||
1997 | MSIOF0_TXD_MARK, | ||
1998 | }; | ||
1999 | /* - MSIOF1 ----------------------------------------------------------------- */ | ||
2000 | static const unsigned int msiof1_clk_pins[] = { | ||
2001 | /* SCK */ | ||
2002 | RCAR_GP_PIN(0, 26), | ||
2003 | }; | ||
2004 | static const unsigned int msiof1_clk_mux[] = { | ||
2005 | MSIOF1_SCK_MARK, | ||
2006 | }; | ||
2007 | static const unsigned int msiof1_sync_pins[] = { | ||
2008 | /* SYNC */ | ||
2009 | RCAR_GP_PIN(0, 27), | ||
2010 | }; | ||
2011 | static const unsigned int msiof1_sync_mux[] = { | ||
2012 | MSIOF1_SYNC_MARK, | ||
2013 | }; | ||
2014 | static const unsigned int msiof1_ss1_pins[] = { | ||
2015 | /* SS1 */ | ||
2016 | RCAR_GP_PIN(0, 28), | ||
2017 | }; | ||
2018 | static const unsigned int msiof1_ss1_mux[] = { | ||
2019 | MSIOF1_SS1_MARK, | ||
2020 | }; | ||
2021 | static const unsigned int msiof1_ss2_pins[] = { | ||
2022 | /* SS2 */ | ||
2023 | RCAR_GP_PIN(0, 29), | ||
2024 | }; | ||
2025 | static const unsigned int msiof1_ss2_mux[] = { | ||
2026 | MSIOF1_SS2_MARK, | ||
2027 | }; | ||
2028 | static const unsigned int msiof1_rx_pins[] = { | ||
2029 | /* RXD */ | ||
2030 | RCAR_GP_PIN(0, 24), | ||
2031 | }; | ||
2032 | static const unsigned int msiof1_rx_mux[] = { | ||
2033 | MSIOF1_RXD_MARK, | ||
2034 | }; | ||
2035 | static const unsigned int msiof1_tx_pins[] = { | ||
2036 | /* TXD */ | ||
2037 | RCAR_GP_PIN(0, 25), | ||
2038 | }; | ||
2039 | static const unsigned int msiof1_tx_mux[] = { | ||
2040 | MSIOF1_TXD_MARK, | ||
2041 | }; | ||
2042 | static const unsigned int msiof1_clk_b_pins[] = { | ||
2043 | /* SCK */ | ||
2044 | RCAR_GP_PIN(5, 3), | ||
2045 | }; | ||
2046 | static const unsigned int msiof1_clk_b_mux[] = { | ||
2047 | MSIOF1_SCK_B_MARK, | ||
2048 | }; | ||
2049 | static const unsigned int msiof1_sync_b_pins[] = { | ||
2050 | /* SYNC */ | ||
2051 | RCAR_GP_PIN(5, 4), | ||
2052 | }; | ||
2053 | static const unsigned int msiof1_sync_b_mux[] = { | ||
2054 | MSIOF1_SYNC_B_MARK, | ||
2055 | }; | ||
2056 | static const unsigned int msiof1_ss1_b_pins[] = { | ||
2057 | /* SS1 */ | ||
2058 | RCAR_GP_PIN(5, 5), | ||
2059 | }; | ||
2060 | static const unsigned int msiof1_ss1_b_mux[] = { | ||
2061 | MSIOF1_SS1_B_MARK, | ||
2062 | }; | ||
2063 | static const unsigned int msiof1_ss2_b_pins[] = { | ||
2064 | /* SS2 */ | ||
2065 | RCAR_GP_PIN(5, 6), | ||
2066 | }; | ||
2067 | static const unsigned int msiof1_ss2_b_mux[] = { | ||
2068 | MSIOF1_SS2_B_MARK, | ||
2069 | }; | ||
2070 | static const unsigned int msiof1_rx_b_pins[] = { | ||
2071 | /* RXD */ | ||
2072 | RCAR_GP_PIN(5, 1), | ||
2073 | }; | ||
2074 | static const unsigned int msiof1_rx_b_mux[] = { | ||
2075 | MSIOF1_RXD_B_MARK, | ||
2076 | }; | ||
2077 | static const unsigned int msiof1_tx_b_pins[] = { | ||
2078 | /* TXD */ | ||
2079 | RCAR_GP_PIN(5, 2), | ||
2080 | }; | ||
2081 | static const unsigned int msiof1_tx_b_mux[] = { | ||
2082 | MSIOF1_TXD_B_MARK, | ||
2083 | }; | ||
2084 | /* - MSIOF2 ----------------------------------------------------------------- */ | ||
2085 | static const unsigned int msiof2_clk_pins[] = { | ||
2086 | /* SCK */ | ||
2087 | RCAR_GP_PIN(1, 0), | ||
2088 | }; | ||
2089 | static const unsigned int msiof2_clk_mux[] = { | ||
2090 | MSIOF2_SCK_MARK, | ||
2091 | }; | ||
2092 | static const unsigned int msiof2_sync_pins[] = { | ||
2093 | /* SYNC */ | ||
2094 | RCAR_GP_PIN(1, 1), | ||
2095 | }; | ||
2096 | static const unsigned int msiof2_sync_mux[] = { | ||
2097 | MSIOF2_SYNC_MARK, | ||
2098 | }; | ||
2099 | static const unsigned int msiof2_ss1_pins[] = { | ||
2100 | /* SS1 */ | ||
2101 | RCAR_GP_PIN(1, 2), | ||
2102 | }; | ||
2103 | static const unsigned int msiof2_ss1_mux[] = { | ||
2104 | MSIOF2_SS1_MARK, | ||
2105 | }; | ||
2106 | static const unsigned int msiof2_ss2_pins[] = { | ||
2107 | /* SS2 */ | ||
2108 | RCAR_GP_PIN(1, 3), | ||
2109 | }; | ||
2110 | static const unsigned int msiof2_ss2_mux[] = { | ||
2111 | MSIOF2_SS2_MARK, | ||
2112 | }; | ||
2113 | static const unsigned int msiof2_rx_pins[] = { | ||
2114 | /* RXD */ | ||
2115 | RCAR_GP_PIN(0, 30), | ||
2116 | }; | ||
2117 | static const unsigned int msiof2_rx_mux[] = { | ||
2118 | MSIOF2_RXD_MARK, | ||
2119 | }; | ||
2120 | static const unsigned int msiof2_tx_pins[] = { | ||
2121 | /* TXD */ | ||
2122 | RCAR_GP_PIN(0, 31), | ||
2123 | }; | ||
2124 | static const unsigned int msiof2_tx_mux[] = { | ||
2125 | MSIOF2_TXD_MARK, | ||
2126 | }; | ||
2127 | static const unsigned int msiof2_clk_b_pins[] = { | ||
2128 | /* SCK */ | ||
2129 | RCAR_GP_PIN(3, 15), | ||
2130 | }; | ||
2131 | static const unsigned int msiof2_clk_b_mux[] = { | ||
2132 | MSIOF2_SCK_B_MARK, | ||
2133 | }; | ||
2134 | static const unsigned int msiof2_sync_b_pins[] = { | ||
2135 | /* SYNC */ | ||
2136 | RCAR_GP_PIN(3, 16), | ||
2137 | }; | ||
2138 | static const unsigned int msiof2_sync_b_mux[] = { | ||
2139 | MSIOF2_SYNC_B_MARK, | ||
2140 | }; | ||
2141 | static const unsigned int msiof2_ss1_b_pins[] = { | ||
2142 | /* SS1 */ | ||
2143 | RCAR_GP_PIN(3, 17), | ||
2144 | }; | ||
2145 | static const unsigned int msiof2_ss1_b_mux[] = { | ||
2146 | MSIOF2_SS1_B_MARK, | ||
2147 | }; | ||
2148 | static const unsigned int msiof2_ss2_b_pins[] = { | ||
2149 | /* SS2 */ | ||
2150 | RCAR_GP_PIN(3, 18), | ||
2151 | }; | ||
2152 | static const unsigned int msiof2_ss2_b_mux[] = { | ||
2153 | MSIOF2_SS2_B_MARK, | ||
2154 | }; | ||
2155 | static const unsigned int msiof2_rx_b_pins[] = { | ||
2156 | /* RXD */ | ||
2157 | RCAR_GP_PIN(3, 13), | ||
2158 | }; | ||
2159 | static const unsigned int msiof2_rx_b_mux[] = { | ||
2160 | MSIOF2_RXD_B_MARK, | ||
2161 | }; | ||
2162 | static const unsigned int msiof2_tx_b_pins[] = { | ||
2163 | /* TXD */ | ||
2164 | RCAR_GP_PIN(3, 14), | ||
2165 | }; | ||
2166 | static const unsigned int msiof2_tx_b_mux[] = { | ||
2167 | MSIOF2_TXD_B_MARK, | ||
2168 | }; | ||
2169 | /* - QSPI ------------------------------------------------------------------- */ | ||
2170 | static const unsigned int qspi_ctrl_pins[] = { | ||
2171 | /* SPCLK, SSL */ | ||
2172 | RCAR_GP_PIN(1, 4), RCAR_GP_PIN(1, 9), | ||
2173 | }; | ||
2174 | static const unsigned int qspi_ctrl_mux[] = { | ||
2175 | SPCLK_MARK, SSL_MARK, | ||
2176 | }; | ||
2177 | static const unsigned int qspi_data2_pins[] = { | ||
2178 | /* MOSI_IO0, MISO_IO1 */ | ||
2179 | RCAR_GP_PIN(1, 5), RCAR_GP_PIN(1, 6), | ||
2180 | }; | ||
2181 | static const unsigned int qspi_data2_mux[] = { | ||
2182 | MOSI_IO0_MARK, MISO_IO1_MARK, | ||
2183 | }; | ||
2184 | static const unsigned int qspi_data4_pins[] = { | ||
2185 | /* MOSI_IO0, MISO_IO1, IO2, IO3 */ | ||
2186 | RCAR_GP_PIN(1, 5), RCAR_GP_PIN(1, 6), RCAR_GP_PIN(1, 7), | ||
2187 | RCAR_GP_PIN(1, 8), | ||
2188 | }; | ||
2189 | static const unsigned int qspi_data4_mux[] = { | ||
2190 | MOSI_IO0_MARK, MISO_IO1_MARK, IO2_MARK, IO3_MARK, | ||
2191 | }; | ||
2192 | /* - SCIF0 ------------------------------------------------------------------ */ | ||
2193 | static const unsigned int scif0_data_pins[] = { | ||
2194 | /* RX, TX */ | ||
2195 | RCAR_GP_PIN(6, 24), RCAR_GP_PIN(6, 25), | ||
2196 | }; | ||
2197 | static const unsigned int scif0_data_mux[] = { | ||
2198 | SCIF0_RXD_MARK, SCIF0_TXD_MARK, | ||
2199 | }; | ||
2200 | static const unsigned int scif0_clk_pins[] = { | ||
2201 | /* SCK */ | ||
2202 | RCAR_GP_PIN(1, 23), | ||
2203 | }; | ||
2204 | static const unsigned int scif0_clk_mux[] = { | ||
2205 | SCIF_CLK_MARK, | ||
2206 | }; | ||
2207 | static const unsigned int scif0_data_b_pins[] = { | ||
2208 | /* RX, TX */ | ||
2209 | RCAR_GP_PIN(3, 11), RCAR_GP_PIN(3, 12), | ||
2210 | }; | ||
2211 | static const unsigned int scif0_data_b_mux[] = { | ||
2212 | SCIF0_RXD_B_MARK, SCIF0_TXD_B_MARK, | ||
2213 | }; | ||
2214 | static const unsigned int scif0_clk_b_pins[] = { | ||
2215 | /* SCK */ | ||
2216 | RCAR_GP_PIN(3, 29), | ||
2217 | }; | ||
2218 | static const unsigned int scif0_clk_b_mux[] = { | ||
2219 | SCIF_CLK_B_MARK, | ||
2220 | }; | ||
2221 | static const unsigned int scif0_data_c_pins[] = { | ||
2222 | /* RX, TX */ | ||
2223 | RCAR_GP_PIN(3, 30), RCAR_GP_PIN(3, 31), | ||
2224 | }; | ||
2225 | static const unsigned int scif0_data_c_mux[] = { | ||
2226 | SCIF0_RXD_C_MARK, SCIF0_TXD_C_MARK, | ||
2227 | }; | ||
2228 | static const unsigned int scif0_data_d_pins[] = { | ||
2229 | /* RX, TX */ | ||
2230 | RCAR_GP_PIN(3, 27), RCAR_GP_PIN(3, 28), | ||
2231 | }; | ||
2232 | static const unsigned int scif0_data_d_mux[] = { | ||
2233 | SCIF0_RXD_D_MARK, SCIF0_TXD_D_MARK, | ||
2234 | }; | ||
2235 | /* - SCIF1 ------------------------------------------------------------------ */ | ||
2236 | static const unsigned int scif1_data_pins[] = { | ||
2237 | /* RX, TX */ | ||
2238 | RCAR_GP_PIN(4, 14), RCAR_GP_PIN(4, 15), | ||
2239 | }; | ||
2240 | static const unsigned int scif1_data_mux[] = { | ||
2241 | SCIF1_RXD_MARK, SCIF1_TXD_MARK, | ||
2242 | }; | ||
2243 | static const unsigned int scif1_clk_pins[] = { | ||
2244 | /* SCK */ | ||
2245 | RCAR_GP_PIN(4, 13), | ||
2246 | }; | ||
2247 | static const unsigned int scif1_clk_mux[] = { | ||
2248 | SCIF1_SCK_MARK, | ||
2249 | }; | ||
2250 | static const unsigned int scif1_data_b_pins[] = { | ||
2251 | /* RX, TX */ | ||
2252 | RCAR_GP_PIN(5, 11), RCAR_GP_PIN(5, 12), | ||
2253 | }; | ||
2254 | static const unsigned int scif1_data_b_mux[] = { | ||
2255 | SCIF1_RXD_B_MARK, SCIF1_TXD_B_MARK, | ||
2256 | }; | ||
2257 | static const unsigned int scif1_clk_b_pins[] = { | ||
2258 | /* SCK */ | ||
2259 | RCAR_GP_PIN(5, 10), | ||
2260 | }; | ||
2261 | static const unsigned int scif1_clk_b_mux[] = { | ||
2262 | SCIF1_SCK_B_MARK, | ||
2263 | }; | ||
2264 | static const unsigned int scif1_data_c_pins[] = { | ||
2265 | /* RX, TX */ | ||
2266 | RCAR_GP_PIN(0, 11), RCAR_GP_PIN(0, 12), | ||
2267 | }; | ||
2268 | static const unsigned int scif1_data_c_mux[] = { | ||
2269 | SCIF1_RXD_C_MARK, SCIF1_TXD_C_MARK, | ||
2270 | }; | ||
2271 | static const unsigned int scif1_clk_c_pins[] = { | ||
2272 | /* SCK */ | ||
2273 | RCAR_GP_PIN(0, 10), | ||
2274 | }; | ||
2275 | static const unsigned int scif1_clk_c_mux[] = { | ||
2276 | SCIF1_SCK_C_MARK, | ||
2277 | }; | ||
2278 | /* - SCIF2 ------------------------------------------------------------------ */ | ||
2279 | static const unsigned int scif2_data_pins[] = { | ||
2280 | /* RX, TX */ | ||
2281 | RCAR_GP_PIN(4, 16), RCAR_GP_PIN(4, 17), | ||
2282 | }; | ||
2283 | static const unsigned int scif2_data_mux[] = { | ||
2284 | SCIF2_RXD_MARK, SCIF2_TXD_MARK, | ||
2285 | }; | ||
2286 | static const unsigned int scif2_clk_pins[] = { | ||
2287 | /* SCK */ | ||
2288 | RCAR_GP_PIN(4, 18), | ||
2289 | }; | ||
2290 | static const unsigned int scif2_clk_mux[] = { | ||
2291 | SCIF2_SCK_MARK, | ||
2292 | }; | ||
2293 | static const unsigned int scif2_data_b_pins[] = { | ||
2294 | /* RX, TX */ | ||
2295 | RCAR_GP_PIN(5, 18), RCAR_GP_PIN(5, 19), | ||
2296 | }; | ||
2297 | static const unsigned int scif2_data_b_mux[] = { | ||
2298 | SCIF2_RXD_B_MARK, SCIF2_TXD_B_MARK, | ||
2299 | }; | ||
2300 | static const unsigned int scif2_clk_b_pins[] = { | ||
2301 | /* SCK */ | ||
2302 | RCAR_GP_PIN(5, 17), | ||
2303 | }; | ||
2304 | static const unsigned int scif2_clk_b_mux[] = { | ||
2305 | SCIF2_SCK_B_MARK, | ||
2306 | }; | ||
2307 | static const unsigned int scif2_data_c_pins[] = { | ||
2308 | /* RX, TX */ | ||
2309 | RCAR_GP_PIN(3, 20), RCAR_GP_PIN(3, 21), | ||
2310 | }; | ||
2311 | static const unsigned int scif2_data_c_mux[] = { | ||
2312 | SCIF2_RXD_C_MARK, SCIF2_TXD_C_MARK, | ||
2313 | }; | ||
2314 | static const unsigned int scif2_clk_c_pins[] = { | ||
2315 | /* SCK */ | ||
2316 | RCAR_GP_PIN(3, 19), | ||
2317 | }; | ||
2318 | static const unsigned int scif2_clk_c_mux[] = { | ||
2319 | SCIF2_SCK_C_MARK, | ||
2320 | }; | ||
2321 | /* - SCIF3 ------------------------------------------------------------------ */ | ||
2322 | static const unsigned int scif3_data_pins[] = { | ||
2323 | /* RX, TX */ | ||
2324 | RCAR_GP_PIN(4, 20), RCAR_GP_PIN(4, 21), | ||
2325 | }; | ||
2326 | static const unsigned int scif3_data_mux[] = { | ||
2327 | SCIF3_RXD_MARK, SCIF3_TXD_MARK, | ||
2328 | }; | ||
2329 | static const unsigned int scif3_clk_pins[] = { | ||
2330 | /* SCK */ | ||
2331 | RCAR_GP_PIN(4, 19), | ||
2332 | }; | ||
2333 | static const unsigned int scif3_clk_mux[] = { | ||
2334 | SCIF3_SCK_MARK, | ||
2335 | }; | ||
2336 | static const unsigned int scif3_data_b_pins[] = { | ||
2337 | /* RX, TX */ | ||
2338 | RCAR_GP_PIN(3, 23), RCAR_GP_PIN(3, 24), | ||
2339 | }; | ||
2340 | static const unsigned int scif3_data_b_mux[] = { | ||
2341 | SCIF3_RXD_B_MARK, SCIF3_TXD_B_MARK, | ||
2342 | }; | ||
2343 | static const unsigned int scif3_clk_b_pins[] = { | ||
2344 | /* SCK */ | ||
2345 | RCAR_GP_PIN(3, 22), | ||
2346 | }; | ||
2347 | static const unsigned int scif3_clk_b_mux[] = { | ||
2348 | SCIF3_SCK_B_MARK, | ||
2349 | }; | ||
2350 | /* - SCIF4 ------------------------------------------------------------------ */ | ||
2351 | static const unsigned int scif4_data_pins[] = { | ||
2352 | /* RX, TX */ | ||
2353 | RCAR_GP_PIN(4, 0), RCAR_GP_PIN(4, 1), | ||
2354 | }; | ||
2355 | static const unsigned int scif4_data_mux[] = { | ||
2356 | SCIF4_RXD_MARK, SCIF4_TXD_MARK, | ||
2357 | }; | ||
2358 | static const unsigned int scif4_data_b_pins[] = { | ||
2359 | /* RX, TX */ | ||
2360 | RCAR_GP_PIN(0, 5), RCAR_GP_PIN(0, 6), | ||
2361 | }; | ||
2362 | static const unsigned int scif4_data_b_mux[] = { | ||
2363 | SCIF4_RXD_B_MARK, SCIF4_TXD_B_MARK, | ||
2364 | }; | ||
2365 | static const unsigned int scif4_data_c_pins[] = { | ||
2366 | /* RX, TX */ | ||
2367 | RCAR_GP_PIN(1, 14), RCAR_GP_PIN(1, 15), | ||
2368 | }; | ||
2369 | static const unsigned int scif4_data_c_mux[] = { | ||
2370 | SCIF4_RXD_C_MARK, SCIF4_TXD_C_MARK, | ||
2371 | }; | ||
2372 | static const unsigned int scif4_data_d_pins[] = { | ||
2373 | /* RX, TX */ | ||
2374 | RCAR_GP_PIN(3, 17), RCAR_GP_PIN(3, 18), | ||
2375 | }; | ||
2376 | static const unsigned int scif4_data_d_mux[] = { | ||
2377 | SCIF4_RXD_D_MARK, SCIF4_TXD_D_MARK, | ||
2378 | }; | ||
2379 | static const unsigned int scif4_data_e_pins[] = { | ||
2380 | /* RX, TX */ | ||
2381 | RCAR_GP_PIN(1, 1), RCAR_GP_PIN(1, 2), | ||
2382 | }; | ||
2383 | static const unsigned int scif4_data_e_mux[] = { | ||
2384 | SCIF4_RXD_E_MARK, SCIF4_TXD_E_MARK, | ||
2385 | }; | ||
2386 | /* - SCIF5 ------------------------------------------------------------------ */ | ||
2387 | static const unsigned int scif5_data_pins[] = { | ||
2388 | /* RX, TX */ | ||
2389 | RCAR_GP_PIN(4, 2), RCAR_GP_PIN(4, 3), | ||
2390 | }; | ||
2391 | static const unsigned int scif5_data_mux[] = { | ||
2392 | SCIF5_RXD_MARK, SCIF5_TXD_MARK, | ||
2393 | }; | ||
2394 | static const unsigned int scif5_data_b_pins[] = { | ||
2395 | /* RX, TX */ | ||
2396 | RCAR_GP_PIN(0, 3), RCAR_GP_PIN(0, 4), | ||
2397 | }; | ||
2398 | static const unsigned int scif5_data_b_mux[] = { | ||
2399 | SCIF5_RXD_B_MARK, SCIF5_TXD_B_MARK, | ||
2400 | }; | ||
2401 | static const unsigned int scif5_data_c_pins[] = { | ||
2402 | /* RX, TX */ | ||
2403 | RCAR_GP_PIN(2, 0), RCAR_GP_PIN(2, 11), | ||
2404 | }; | ||
2405 | static const unsigned int scif5_data_c_mux[] = { | ||
2406 | SCIF5_RXD_C_MARK, SCIF5_TXD_C_MARK, | ||
2407 | }; | ||
2408 | static const unsigned int scif5_data_d_pins[] = { | ||
2409 | /* RX, TX */ | ||
2410 | RCAR_GP_PIN(5, 1), RCAR_GP_PIN(5, 2), | ||
2411 | }; | ||
2412 | static const unsigned int scif5_data_d_mux[] = { | ||
2413 | SCIF5_RXD_D_MARK, SCIF5_TXD_D_MARK, | ||
2414 | }; | ||
2415 | /* - SCIFA0 ----------------------------------------------------------------- */ | ||
2416 | static const unsigned int scifa0_data_pins[] = { | ||
2417 | /* RXD, TXD */ | ||
2418 | RCAR_GP_PIN(4, 6), RCAR_GP_PIN(4, 7), | ||
2419 | }; | ||
2420 | static const unsigned int scifa0_data_mux[] = { | ||
2421 | SCIFA0_RXD_MARK, SCIFA0_TXD_MARK, | ||
2422 | }; | ||
2423 | static const unsigned int scifa0_data_b_pins[] = { | ||
2424 | /* RXD, TXD */ | ||
2425 | RCAR_GP_PIN(0, 24), RCAR_GP_PIN(0, 25), | ||
2426 | }; | ||
2427 | static const unsigned int scifa0_data_b_mux[] = { | ||
2428 | SCIFA0_RXD_B_MARK, SCIFA0_TXD_B_MARK | ||
2429 | }; | ||
2430 | static const unsigned int scifa0_data_c_pins[] = { | ||
2431 | /* RXD, TXD */ | ||
2432 | RCAR_GP_PIN(2, 8), RCAR_GP_PIN(2, 9), | ||
2433 | }; | ||
2434 | static const unsigned int scifa0_data_c_mux[] = { | ||
2435 | SCIFA0_RXD_C_MARK, SCIFA0_TXD_C_MARK | ||
2436 | }; | ||
2437 | static const unsigned int scifa0_data_d_pins[] = { | ||
2438 | /* RXD, TXD */ | ||
2439 | RCAR_GP_PIN(5, 15), RCAR_GP_PIN(5, 16), | ||
2440 | }; | ||
2441 | static const unsigned int scifa0_data_d_mux[] = { | ||
2442 | SCIFA0_RXD_D_MARK, SCIFA0_TXD_D_MARK | ||
2443 | }; | ||
2444 | /* - SCIFA1 ----------------------------------------------------------------- */ | ||
2445 | static const unsigned int scifa1_data_pins[] = { | ||
2446 | /* RXD, TXD */ | ||
2447 | RCAR_GP_PIN(0, 14), RCAR_GP_PIN(0, 15), | ||
2448 | }; | ||
2449 | static const unsigned int scifa1_data_mux[] = { | ||
2450 | SCIFA1_RXD_MARK, SCIFA1_TXD_MARK, | ||
2451 | }; | ||
2452 | static const unsigned int scifa1_clk_pins[] = { | ||
2453 | /* SCK */ | ||
2454 | RCAR_GP_PIN(0, 13), | ||
2455 | }; | ||
2456 | static const unsigned int scifa1_clk_mux[] = { | ||
2457 | SCIFA1_SCK_MARK, | ||
2458 | }; | ||
2459 | static const unsigned int scifa1_data_b_pins[] = { | ||
2460 | /* RXD, TXD */ | ||
2461 | RCAR_GP_PIN(4, 28), RCAR_GP_PIN(4, 29), | ||
2462 | }; | ||
2463 | static const unsigned int scifa1_data_b_mux[] = { | ||
2464 | SCIFA1_RXD_B_MARK, SCIFA1_TXD_B_MARK, | ||
2465 | }; | ||
2466 | static const unsigned int scifa1_clk_b_pins[] = { | ||
2467 | /* SCK */ | ||
2468 | RCAR_GP_PIN(4, 27), | ||
2469 | }; | ||
2470 | static const unsigned int scifa1_clk_b_mux[] = { | ||
2471 | SCIFA1_SCK_B_MARK, | ||
2472 | }; | ||
2473 | static const unsigned int scifa1_data_c_pins[] = { | ||
2474 | /* RXD, TXD */ | ||
2475 | RCAR_GP_PIN(5, 5), RCAR_GP_PIN(5, 6), | ||
2476 | }; | ||
2477 | static const unsigned int scifa1_data_c_mux[] = { | ||
2478 | SCIFA1_RXD_C_MARK, SCIFA1_TXD_C_MARK, | ||
2479 | }; | ||
2480 | static const unsigned int scifa1_clk_c_pins[] = { | ||
2481 | /* SCK */ | ||
2482 | RCAR_GP_PIN(5, 4), | ||
2483 | }; | ||
2484 | static const unsigned int scifa1_clk_c_mux[] = { | ||
2485 | SCIFA1_SCK_C_MARK, | ||
2486 | }; | ||
2487 | /* - SCIFA2 ----------------------------------------------------------------- */ | ||
2488 | static const unsigned int scifa2_data_pins[] = { | ||
2489 | /* RXD, TXD */ | ||
2490 | RCAR_GP_PIN(1, 16), RCAR_GP_PIN(1, 17), | ||
2491 | }; | ||
2492 | static const unsigned int scifa2_data_mux[] = { | ||
2493 | SCIFA2_RXD_MARK, SCIFA2_TXD_MARK, | ||
2494 | }; | ||
2495 | static const unsigned int scifa2_clk_pins[] = { | ||
2496 | /* SCK */ | ||
2497 | RCAR_GP_PIN(1, 15), | ||
2498 | }; | ||
2499 | static const unsigned int scifa2_clk_mux[] = { | ||
2500 | SCIFA2_SCK_MARK, | ||
2501 | }; | ||
2502 | static const unsigned int scifa2_data_b_pins[] = { | ||
2503 | /* RXD, TXD */ | ||
2504 | RCAR_GP_PIN(4, 31), RCAR_GP_PIN(5, 0), | ||
2505 | }; | ||
2506 | static const unsigned int scifa2_data_b_mux[] = { | ||
2507 | SCIFA2_RXD_B_MARK, SCIFA2_TXD_B_MARK, | ||
2508 | }; | ||
2509 | static const unsigned int scifa2_clk_b_pins[] = { | ||
2510 | /* SCK */ | ||
2511 | RCAR_GP_PIN(4, 30), | ||
2512 | }; | ||
2513 | static const unsigned int scifa2_clk_b_mux[] = { | ||
2514 | SCIFA2_SCK_B_MARK, | ||
2515 | }; | ||
2516 | /* - SCIFA3 ----------------------------------------------------------------- */ | ||
2517 | static const unsigned int scifa3_data_pins[] = { | ||
2518 | /* RXD, TXD */ | ||
2519 | RCAR_GP_PIN(4, 25), RCAR_GP_PIN(4, 26), | ||
2520 | }; | ||
2521 | static const unsigned int scifa3_data_mux[] = { | ||
2522 | SCIFA3_RXD_MARK, SCIFA3_TXD_MARK, | ||
2523 | }; | ||
2524 | static const unsigned int scifa3_clk_pins[] = { | ||
2525 | /* SCK */ | ||
2526 | RCAR_GP_PIN(4, 24), | ||
2527 | }; | ||
2528 | static const unsigned int scifa3_clk_mux[] = { | ||
2529 | SCIFA3_SCK_MARK, | ||
2530 | }; | ||
2531 | static const unsigned int scifa3_data_b_pins[] = { | ||
2532 | /* RXD, TXD */ | ||
2533 | RCAR_GP_PIN(0, 1), RCAR_GP_PIN(0, 2), | ||
2534 | }; | ||
2535 | static const unsigned int scifa3_data_b_mux[] = { | ||
2536 | SCIFA3_RXD_B_MARK, SCIFA3_TXD_B_MARK, | ||
2537 | }; | ||
2538 | static const unsigned int scifa3_clk_b_pins[] = { | ||
2539 | /* SCK */ | ||
2540 | RCAR_GP_PIN(0, 0), | ||
2541 | }; | ||
2542 | static const unsigned int scifa3_clk_b_mux[] = { | ||
2543 | SCIFA3_SCK_B_MARK, | ||
2544 | }; | ||
2545 | /* - SCIFA4 ----------------------------------------------------------------- */ | ||
2546 | static const unsigned int scifa4_data_pins[] = { | ||
2547 | /* RXD, TXD */ | ||
2548 | RCAR_GP_PIN(4, 12), RCAR_GP_PIN(4, 12), | ||
2549 | }; | ||
2550 | static const unsigned int scifa4_data_mux[] = { | ||
2551 | SCIFA4_RXD_MARK, SCIFA4_TXD_MARK, | ||
2552 | }; | ||
2553 | static const unsigned int scifa4_data_b_pins[] = { | ||
2554 | /* RXD, TXD */ | ||
2555 | RCAR_GP_PIN(0, 22), RCAR_GP_PIN(0, 23), | ||
2556 | }; | ||
2557 | static const unsigned int scifa4_data_b_mux[] = { | ||
2558 | SCIFA4_RXD_B_MARK, SCIFA4_TXD_B_MARK, | ||
2559 | }; | ||
2560 | static const unsigned int scifa4_data_c_pins[] = { | ||
2561 | /* RXD, TXD */ | ||
2562 | RCAR_GP_PIN(2, 16), RCAR_GP_PIN(2, 17), | ||
2563 | }; | ||
2564 | static const unsigned int scifa4_data_c_mux[] = { | ||
2565 | SCIFA4_RXD_C_MARK, SCIFA4_TXD_C_MARK, | ||
2566 | }; | ||
2567 | static const unsigned int scifa4_data_d_pins[] = { | ||
2568 | /* RXD, TXD */ | ||
2569 | RCAR_GP_PIN(5, 20), RCAR_GP_PIN(5, 21), | ||
2570 | }; | ||
2571 | static const unsigned int scifa4_data_d_mux[] = { | ||
2572 | SCIFA4_RXD_D_MARK, SCIFA4_TXD_D_MARK, | ||
2573 | }; | ||
2574 | /* - SCIFA5 ----------------------------------------------------------------- */ | ||
2575 | static const unsigned int scifa5_data_pins[] = { | ||
2576 | /* RXD, TXD */ | ||
2577 | RCAR_GP_PIN(4, 22), RCAR_GP_PIN(4, 23), | ||
2578 | }; | ||
2579 | static const unsigned int scifa5_data_mux[] = { | ||
2580 | SCIFA5_RXD_MARK, SCIFA5_TXD_MARK, | ||
2581 | }; | ||
2582 | static const unsigned int scifa5_data_b_pins[] = { | ||
2583 | /* RXD, TXD */ | ||
2584 | RCAR_GP_PIN(0, 28), RCAR_GP_PIN(0, 29), | ||
2585 | }; | ||
2586 | static const unsigned int scifa5_data_b_mux[] = { | ||
2587 | SCIFA5_RXD_B_MARK, SCIFA5_TXD_B_MARK, | ||
2588 | }; | ||
2589 | static const unsigned int scifa5_data_c_pins[] = { | ||
2590 | /* RXD, TXD */ | ||
2591 | RCAR_GP_PIN(3, 9), RCAR_GP_PIN(3, 10), | ||
2592 | }; | ||
2593 | static const unsigned int scifa5_data_c_mux[] = { | ||
2594 | SCIFA5_RXD_C_MARK, SCIFA5_TXD_C_MARK, | ||
2595 | }; | ||
2596 | static const unsigned int scifa5_data_d_pins[] = { | ||
2597 | /* RXD, TXD */ | ||
2598 | RCAR_GP_PIN(5, 22), RCAR_GP_PIN(5, 23), | ||
2599 | }; | ||
2600 | static const unsigned int scifa5_data_d_mux[] = { | ||
2601 | SCIFA5_RXD_D_MARK, SCIFA5_TXD_D_MARK, | ||
2602 | }; | ||
2603 | /* - SCIFB0 ----------------------------------------------------------------- */ | ||
2604 | static const unsigned int scifb0_data_pins[] = { | ||
2605 | /* RXD, TXD */ | ||
2606 | RCAR_GP_PIN(0, 21), RCAR_GP_PIN(0, 20), | ||
2607 | }; | ||
2608 | static const unsigned int scifb0_data_mux[] = { | ||
2609 | SCIFB0_RXD_MARK, SCIFB0_TXD_MARK, | ||
2610 | }; | ||
2611 | static const unsigned int scifb0_clk_pins[] = { | ||
2612 | /* SCK */ | ||
2613 | RCAR_GP_PIN(0, 19), | ||
2614 | }; | ||
2615 | static const unsigned int scifb0_clk_mux[] = { | ||
2616 | SCIFB0_SCK_MARK, | ||
2617 | }; | ||
2618 | static const unsigned int scifb0_ctrl_pins[] = { | ||
2619 | /* RTS, CTS */ | ||
2620 | RCAR_GP_PIN(0, 23), RCAR_GP_PIN(0, 22), | ||
2621 | }; | ||
2622 | static const unsigned int scifb0_ctrl_mux[] = { | ||
2623 | SCIFB0_RTS_N_MARK, SCIFB0_CTS_N_MARK, | ||
2624 | }; | ||
2625 | /* - SCIFB1 ----------------------------------------------------------------- */ | ||
2626 | static const unsigned int scifb1_data_pins[] = { | ||
2627 | /* RXD, TXD */ | ||
2628 | RCAR_GP_PIN(1, 24), RCAR_GP_PIN(0, 17), | ||
2629 | }; | ||
2630 | static const unsigned int scifb1_data_mux[] = { | ||
2631 | SCIFB1_RXD_MARK, SCIFB1_TXD_MARK, | ||
2632 | }; | ||
2633 | static const unsigned int scifb1_clk_pins[] = { | ||
2634 | /* SCK */ | ||
2635 | RCAR_GP_PIN(0, 16), | ||
2636 | }; | ||
2637 | static const unsigned int scifb1_clk_mux[] = { | ||
2638 | SCIFB1_SCK_MARK, | ||
2639 | }; | ||
2640 | /* - SCIFB2 ----------------------------------------------------------------- */ | ||
2641 | static const unsigned int scifb2_data_pins[] = { | ||
2642 | /* RXD, TXD */ | ||
2643 | RCAR_GP_PIN(1, 13), RCAR_GP_PIN(1, 14), | ||
2644 | }; | ||
2645 | static const unsigned int scifb2_data_mux[] = { | ||
2646 | SCIFB2_RXD_MARK, SCIFB2_TXD_MARK, | ||
2647 | }; | ||
2648 | static const unsigned int scifb2_clk_pins[] = { | ||
2649 | /* SCK */ | ||
2650 | RCAR_GP_PIN(1, 15), | ||
2651 | }; | ||
2652 | static const unsigned int scifb2_clk_mux[] = { | ||
2653 | SCIFB2_SCK_MARK, | ||
2654 | }; | ||
2655 | static const unsigned int scifb2_ctrl_pins[] = { | ||
2656 | /* RTS, CTS */ | ||
2657 | RCAR_GP_PIN(1, 17), RCAR_GP_PIN(1, 16), | ||
2658 | }; | ||
2659 | static const unsigned int scifb2_ctrl_mux[] = { | ||
2660 | SCIFB2_RTS_N_MARK, SCIFB2_CTS_N_MARK, | ||
2661 | }; | ||
2662 | /* - SDHI0 ------------------------------------------------------------------ */ | ||
2663 | static const unsigned int sdhi0_data1_pins[] = { | ||
2664 | /* D0 */ | ||
2665 | RCAR_GP_PIN(6, 2), | ||
2666 | }; | ||
2667 | static const unsigned int sdhi0_data1_mux[] = { | ||
2668 | SD0_DATA0_MARK, | ||
2669 | }; | ||
2670 | static const unsigned int sdhi0_data4_pins[] = { | ||
2671 | /* D[0:3] */ | ||
2672 | RCAR_GP_PIN(6, 2), RCAR_GP_PIN(6, 3), | ||
2673 | RCAR_GP_PIN(6, 4), RCAR_GP_PIN(6, 5), | ||
2674 | }; | ||
2675 | static const unsigned int sdhi0_data4_mux[] = { | ||
2676 | SD0_DATA0_MARK, SD0_DATA1_MARK, SD0_DATA2_MARK, SD0_DATA3_MARK, | ||
2677 | }; | ||
2678 | static const unsigned int sdhi0_ctrl_pins[] = { | ||
2679 | /* CLK, CMD */ | ||
2680 | RCAR_GP_PIN(6, 0), RCAR_GP_PIN(6, 1), | ||
2681 | }; | ||
2682 | static const unsigned int sdhi0_ctrl_mux[] = { | ||
2683 | SD0_CLK_MARK, SD0_CMD_MARK, | ||
2684 | }; | ||
2685 | static const unsigned int sdhi0_cd_pins[] = { | ||
2686 | /* CD */ | ||
2687 | RCAR_GP_PIN(6, 6), | ||
2688 | }; | ||
2689 | static const unsigned int sdhi0_cd_mux[] = { | ||
2690 | SD0_CD_MARK, | ||
2691 | }; | ||
2692 | static const unsigned int sdhi0_wp_pins[] = { | ||
2693 | /* WP */ | ||
2694 | RCAR_GP_PIN(6, 7), | ||
2695 | }; | ||
2696 | static const unsigned int sdhi0_wp_mux[] = { | ||
2697 | SD0_WP_MARK, | ||
2698 | }; | ||
2699 | /* - SDHI1 ------------------------------------------------------------------ */ | ||
2700 | static const unsigned int sdhi1_data1_pins[] = { | ||
2701 | /* D0 */ | ||
2702 | RCAR_GP_PIN(6, 10), | ||
2703 | }; | ||
2704 | static const unsigned int sdhi1_data1_mux[] = { | ||
2705 | SD1_DATA0_MARK, | ||
2706 | }; | ||
2707 | static const unsigned int sdhi1_data4_pins[] = { | ||
2708 | /* D[0:3] */ | ||
2709 | RCAR_GP_PIN(6, 10), RCAR_GP_PIN(6, 11), | ||
2710 | RCAR_GP_PIN(6, 12), RCAR_GP_PIN(6, 13), | ||
2711 | }; | ||
2712 | static const unsigned int sdhi1_data4_mux[] = { | ||
2713 | SD1_DATA0_MARK, SD1_DATA1_MARK, SD1_DATA2_MARK, SD1_DATA3_MARK, | ||
2714 | }; | ||
2715 | static const unsigned int sdhi1_ctrl_pins[] = { | ||
2716 | /* CLK, CMD */ | ||
2717 | RCAR_GP_PIN(6, 8), RCAR_GP_PIN(6, 9), | ||
2718 | }; | ||
2719 | static const unsigned int sdhi1_ctrl_mux[] = { | ||
2720 | SD1_CLK_MARK, SD1_CMD_MARK, | ||
2721 | }; | ||
2722 | static const unsigned int sdhi1_cd_pins[] = { | ||
2723 | /* CD */ | ||
2724 | RCAR_GP_PIN(6, 14), | ||
2725 | }; | ||
2726 | static const unsigned int sdhi1_cd_mux[] = { | ||
2727 | SD1_CD_MARK, | ||
2728 | }; | ||
2729 | static const unsigned int sdhi1_wp_pins[] = { | ||
2730 | /* WP */ | ||
2731 | RCAR_GP_PIN(6, 15), | ||
2732 | }; | ||
2733 | static const unsigned int sdhi1_wp_mux[] = { | ||
2734 | SD1_WP_MARK, | ||
2735 | }; | ||
2736 | /* - SDHI2 ------------------------------------------------------------------ */ | ||
2737 | static const unsigned int sdhi2_data1_pins[] = { | ||
2738 | /* D0 */ | ||
2739 | RCAR_GP_PIN(6, 18), | ||
2740 | }; | ||
2741 | static const unsigned int sdhi2_data1_mux[] = { | ||
2742 | SD2_DATA0_MARK, | ||
2743 | }; | ||
2744 | static const unsigned int sdhi2_data4_pins[] = { | ||
2745 | /* D[0:3] */ | ||
2746 | RCAR_GP_PIN(6, 18), RCAR_GP_PIN(6, 19), | ||
2747 | RCAR_GP_PIN(6, 20), RCAR_GP_PIN(6, 21), | ||
2748 | }; | ||
2749 | static const unsigned int sdhi2_data4_mux[] = { | ||
2750 | SD2_DATA0_MARK, SD2_DATA1_MARK, SD2_DATA2_MARK, SD2_DATA3_MARK, | ||
2751 | }; | ||
2752 | static const unsigned int sdhi2_ctrl_pins[] = { | ||
2753 | /* CLK, CMD */ | ||
2754 | RCAR_GP_PIN(6, 16), RCAR_GP_PIN(6, 17), | ||
2755 | }; | ||
2756 | static const unsigned int sdhi2_ctrl_mux[] = { | ||
2757 | SD2_CLK_MARK, SD2_CMD_MARK, | ||
2758 | }; | ||
2759 | static const unsigned int sdhi2_cd_pins[] = { | ||
2760 | /* CD */ | ||
2761 | RCAR_GP_PIN(6, 22), | ||
2762 | }; | ||
2763 | static const unsigned int sdhi2_cd_mux[] = { | ||
2764 | SD2_CD_MARK, | ||
2765 | }; | ||
2766 | static const unsigned int sdhi2_wp_pins[] = { | ||
2767 | /* WP */ | ||
2768 | RCAR_GP_PIN(6, 23), | ||
2769 | }; | ||
2770 | static const unsigned int sdhi2_wp_mux[] = { | ||
2771 | SD2_WP_MARK, | ||
2772 | }; | ||
2773 | |||
2774 | static const struct sh_pfc_pin_group pinmux_groups[] = { | ||
2775 | SH_PFC_PIN_GROUP(eth_link), | ||
2776 | SH_PFC_PIN_GROUP(eth_magic), | ||
2777 | SH_PFC_PIN_GROUP(eth_mdio), | ||
2778 | SH_PFC_PIN_GROUP(eth_rmii), | ||
2779 | SH_PFC_PIN_GROUP(eth_link_b), | ||
2780 | SH_PFC_PIN_GROUP(eth_magic_b), | ||
2781 | SH_PFC_PIN_GROUP(eth_mdio_b), | ||
2782 | SH_PFC_PIN_GROUP(eth_rmii_b), | ||
2783 | SH_PFC_PIN_GROUP(hscif0_data), | ||
2784 | SH_PFC_PIN_GROUP(hscif0_clk), | ||
2785 | SH_PFC_PIN_GROUP(hscif0_ctrl), | ||
2786 | SH_PFC_PIN_GROUP(hscif0_data_b), | ||
2787 | SH_PFC_PIN_GROUP(hscif0_clk_b), | ||
2788 | SH_PFC_PIN_GROUP(hscif1_data), | ||
2789 | SH_PFC_PIN_GROUP(hscif1_clk), | ||
2790 | SH_PFC_PIN_GROUP(hscif1_ctrl), | ||
2791 | SH_PFC_PIN_GROUP(hscif1_data_b), | ||
2792 | SH_PFC_PIN_GROUP(hscif1_ctrl_b), | ||
2793 | SH_PFC_PIN_GROUP(hscif2_data), | ||
2794 | SH_PFC_PIN_GROUP(hscif2_clk), | ||
2795 | SH_PFC_PIN_GROUP(hscif2_ctrl), | ||
2796 | SH_PFC_PIN_GROUP(i2c0), | ||
2797 | SH_PFC_PIN_GROUP(i2c0_b), | ||
2798 | SH_PFC_PIN_GROUP(i2c0_c), | ||
2799 | SH_PFC_PIN_GROUP(i2c0_d), | ||
2800 | SH_PFC_PIN_GROUP(i2c0_e), | ||
2801 | SH_PFC_PIN_GROUP(i2c1), | ||
2802 | SH_PFC_PIN_GROUP(i2c1_b), | ||
2803 | SH_PFC_PIN_GROUP(i2c1_c), | ||
2804 | SH_PFC_PIN_GROUP(i2c1_d), | ||
2805 | SH_PFC_PIN_GROUP(i2c1_e), | ||
2806 | SH_PFC_PIN_GROUP(i2c2), | ||
2807 | SH_PFC_PIN_GROUP(i2c2_b), | ||
2808 | SH_PFC_PIN_GROUP(i2c2_c), | ||
2809 | SH_PFC_PIN_GROUP(i2c2_d), | ||
2810 | SH_PFC_PIN_GROUP(i2c2_e), | ||
2811 | SH_PFC_PIN_GROUP(i2c3), | ||
2812 | SH_PFC_PIN_GROUP(i2c3_b), | ||
2813 | SH_PFC_PIN_GROUP(i2c3_c), | ||
2814 | SH_PFC_PIN_GROUP(i2c3_d), | ||
2815 | SH_PFC_PIN_GROUP(i2c3_e), | ||
2816 | SH_PFC_PIN_GROUP(i2c4), | ||
2817 | SH_PFC_PIN_GROUP(i2c4_b), | ||
2818 | SH_PFC_PIN_GROUP(i2c4_c), | ||
2819 | SH_PFC_PIN_GROUP(i2c4_d), | ||
2820 | SH_PFC_PIN_GROUP(i2c4_e), | ||
2821 | SH_PFC_PIN_GROUP(intc_irq0), | ||
2822 | SH_PFC_PIN_GROUP(intc_irq1), | ||
2823 | SH_PFC_PIN_GROUP(intc_irq2), | ||
2824 | SH_PFC_PIN_GROUP(intc_irq3), | ||
2825 | SH_PFC_PIN_GROUP(intc_irq4), | ||
2826 | SH_PFC_PIN_GROUP(intc_irq5), | ||
2827 | SH_PFC_PIN_GROUP(intc_irq6), | ||
2828 | SH_PFC_PIN_GROUP(intc_irq7), | ||
2829 | SH_PFC_PIN_GROUP(intc_irq8), | ||
2830 | SH_PFC_PIN_GROUP(intc_irq9), | ||
2831 | SH_PFC_PIN_GROUP(mmc_data1), | ||
2832 | SH_PFC_PIN_GROUP(mmc_data4), | ||
2833 | SH_PFC_PIN_GROUP(mmc_data8), | ||
2834 | SH_PFC_PIN_GROUP(mmc_ctrl), | ||
2835 | SH_PFC_PIN_GROUP(msiof0_clk), | ||
2836 | SH_PFC_PIN_GROUP(msiof0_sync), | ||
2837 | SH_PFC_PIN_GROUP(msiof0_ss1), | ||
2838 | SH_PFC_PIN_GROUP(msiof0_ss2), | ||
2839 | SH_PFC_PIN_GROUP(msiof0_rx), | ||
2840 | SH_PFC_PIN_GROUP(msiof0_tx), | ||
2841 | SH_PFC_PIN_GROUP(msiof1_clk), | ||
2842 | SH_PFC_PIN_GROUP(msiof1_sync), | ||
2843 | SH_PFC_PIN_GROUP(msiof1_ss1), | ||
2844 | SH_PFC_PIN_GROUP(msiof1_ss2), | ||
2845 | SH_PFC_PIN_GROUP(msiof1_rx), | ||
2846 | SH_PFC_PIN_GROUP(msiof1_tx), | ||
2847 | SH_PFC_PIN_GROUP(msiof1_clk_b), | ||
2848 | SH_PFC_PIN_GROUP(msiof1_sync_b), | ||
2849 | SH_PFC_PIN_GROUP(msiof1_ss1_b), | ||
2850 | SH_PFC_PIN_GROUP(msiof1_ss2_b), | ||
2851 | SH_PFC_PIN_GROUP(msiof1_rx_b), | ||
2852 | SH_PFC_PIN_GROUP(msiof1_tx_b), | ||
2853 | SH_PFC_PIN_GROUP(msiof2_clk), | ||
2854 | SH_PFC_PIN_GROUP(msiof2_sync), | ||
2855 | SH_PFC_PIN_GROUP(msiof2_ss1), | ||
2856 | SH_PFC_PIN_GROUP(msiof2_ss2), | ||
2857 | SH_PFC_PIN_GROUP(msiof2_rx), | ||
2858 | SH_PFC_PIN_GROUP(msiof2_tx), | ||
2859 | SH_PFC_PIN_GROUP(msiof2_clk_b), | ||
2860 | SH_PFC_PIN_GROUP(msiof2_sync_b), | ||
2861 | SH_PFC_PIN_GROUP(msiof2_ss1_b), | ||
2862 | SH_PFC_PIN_GROUP(msiof2_ss2_b), | ||
2863 | SH_PFC_PIN_GROUP(msiof2_rx_b), | ||
2864 | SH_PFC_PIN_GROUP(msiof2_tx_b), | ||
2865 | SH_PFC_PIN_GROUP(qspi_ctrl), | ||
2866 | SH_PFC_PIN_GROUP(qspi_data2), | ||
2867 | SH_PFC_PIN_GROUP(qspi_data4), | ||
2868 | SH_PFC_PIN_GROUP(scif0_data), | ||
2869 | SH_PFC_PIN_GROUP(scif0_clk), | ||
2870 | SH_PFC_PIN_GROUP(scif0_data_b), | ||
2871 | SH_PFC_PIN_GROUP(scif0_clk_b), | ||
2872 | SH_PFC_PIN_GROUP(scif0_data_c), | ||
2873 | SH_PFC_PIN_GROUP(scif0_data_d), | ||
2874 | SH_PFC_PIN_GROUP(scif1_data), | ||
2875 | SH_PFC_PIN_GROUP(scif1_clk), | ||
2876 | SH_PFC_PIN_GROUP(scif1_data_b), | ||
2877 | SH_PFC_PIN_GROUP(scif1_clk_b), | ||
2878 | SH_PFC_PIN_GROUP(scif1_data_c), | ||
2879 | SH_PFC_PIN_GROUP(scif1_clk_c), | ||
2880 | SH_PFC_PIN_GROUP(scif2_data), | ||
2881 | SH_PFC_PIN_GROUP(scif2_clk), | ||
2882 | SH_PFC_PIN_GROUP(scif2_data_b), | ||
2883 | SH_PFC_PIN_GROUP(scif2_clk_b), | ||
2884 | SH_PFC_PIN_GROUP(scif2_data_c), | ||
2885 | SH_PFC_PIN_GROUP(scif2_clk_c), | ||
2886 | SH_PFC_PIN_GROUP(scif3_data), | ||
2887 | SH_PFC_PIN_GROUP(scif3_clk), | ||
2888 | SH_PFC_PIN_GROUP(scif3_data_b), | ||
2889 | SH_PFC_PIN_GROUP(scif3_clk_b), | ||
2890 | SH_PFC_PIN_GROUP(scif4_data), | ||
2891 | SH_PFC_PIN_GROUP(scif4_data_b), | ||
2892 | SH_PFC_PIN_GROUP(scif4_data_c), | ||
2893 | SH_PFC_PIN_GROUP(scif4_data_d), | ||
2894 | SH_PFC_PIN_GROUP(scif4_data_e), | ||
2895 | SH_PFC_PIN_GROUP(scif5_data), | ||
2896 | SH_PFC_PIN_GROUP(scif5_data_b), | ||
2897 | SH_PFC_PIN_GROUP(scif5_data_c), | ||
2898 | SH_PFC_PIN_GROUP(scif5_data_d), | ||
2899 | SH_PFC_PIN_GROUP(scifa0_data), | ||
2900 | SH_PFC_PIN_GROUP(scifa0_data_b), | ||
2901 | SH_PFC_PIN_GROUP(scifa0_data_c), | ||
2902 | SH_PFC_PIN_GROUP(scifa0_data_d), | ||
2903 | SH_PFC_PIN_GROUP(scifa1_data), | ||
2904 | SH_PFC_PIN_GROUP(scifa1_clk), | ||
2905 | SH_PFC_PIN_GROUP(scifa1_data_b), | ||
2906 | SH_PFC_PIN_GROUP(scifa1_clk_b), | ||
2907 | SH_PFC_PIN_GROUP(scifa1_data_c), | ||
2908 | SH_PFC_PIN_GROUP(scifa1_clk_c), | ||
2909 | SH_PFC_PIN_GROUP(scifa2_data), | ||
2910 | SH_PFC_PIN_GROUP(scifa2_clk), | ||
2911 | SH_PFC_PIN_GROUP(scifa2_data_b), | ||
2912 | SH_PFC_PIN_GROUP(scifa2_clk_b), | ||
2913 | SH_PFC_PIN_GROUP(scifa3_data), | ||
2914 | SH_PFC_PIN_GROUP(scifa3_clk), | ||
2915 | SH_PFC_PIN_GROUP(scifa3_data_b), | ||
2916 | SH_PFC_PIN_GROUP(scifa3_clk_b), | ||
2917 | SH_PFC_PIN_GROUP(scifa4_data), | ||
2918 | SH_PFC_PIN_GROUP(scifa4_data_b), | ||
2919 | SH_PFC_PIN_GROUP(scifa4_data_c), | ||
2920 | SH_PFC_PIN_GROUP(scifa4_data_d), | ||
2921 | SH_PFC_PIN_GROUP(scifa5_data), | ||
2922 | SH_PFC_PIN_GROUP(scifa5_data_b), | ||
2923 | SH_PFC_PIN_GROUP(scifa5_data_c), | ||
2924 | SH_PFC_PIN_GROUP(scifa5_data_d), | ||
2925 | SH_PFC_PIN_GROUP(scifb0_data), | ||
2926 | SH_PFC_PIN_GROUP(scifb0_clk), | ||
2927 | SH_PFC_PIN_GROUP(scifb0_ctrl), | ||
2928 | SH_PFC_PIN_GROUP(scifb1_data), | ||
2929 | SH_PFC_PIN_GROUP(scifb1_clk), | ||
2930 | SH_PFC_PIN_GROUP(scifb2_data), | ||
2931 | SH_PFC_PIN_GROUP(scifb2_clk), | ||
2932 | SH_PFC_PIN_GROUP(scifb2_ctrl), | ||
2933 | SH_PFC_PIN_GROUP(sdhi0_data1), | ||
2934 | SH_PFC_PIN_GROUP(sdhi0_data4), | ||
2935 | SH_PFC_PIN_GROUP(sdhi0_ctrl), | ||
2936 | SH_PFC_PIN_GROUP(sdhi0_cd), | ||
2937 | SH_PFC_PIN_GROUP(sdhi0_wp), | ||
2938 | SH_PFC_PIN_GROUP(sdhi1_data1), | ||
2939 | SH_PFC_PIN_GROUP(sdhi1_data4), | ||
2940 | SH_PFC_PIN_GROUP(sdhi1_ctrl), | ||
2941 | SH_PFC_PIN_GROUP(sdhi1_cd), | ||
2942 | SH_PFC_PIN_GROUP(sdhi1_wp), | ||
2943 | SH_PFC_PIN_GROUP(sdhi2_data1), | ||
2944 | SH_PFC_PIN_GROUP(sdhi2_data4), | ||
2945 | SH_PFC_PIN_GROUP(sdhi2_ctrl), | ||
2946 | SH_PFC_PIN_GROUP(sdhi2_cd), | ||
2947 | SH_PFC_PIN_GROUP(sdhi2_wp), | ||
2948 | }; | ||
2949 | |||
2950 | static const char * const eth_groups[] = { | ||
2951 | "eth_link", | ||
2952 | "eth_magic", | ||
2953 | "eth_mdio", | ||
2954 | "eth_rmii", | ||
2955 | "eth_link_b", | ||
2956 | "eth_magic_b", | ||
2957 | "eth_mdio_b", | ||
2958 | "eth_rmii_b", | ||
2959 | }; | ||
2960 | |||
2961 | static const char * const hscif0_groups[] = { | ||
2962 | "hscif0_data", | ||
2963 | "hscif0_clk", | ||
2964 | "hscif0_ctrl", | ||
2965 | "hscif0_data_b", | ||
2966 | "hscif0_clk_b", | ||
2967 | }; | ||
2968 | |||
2969 | static const char * const hscif1_groups[] = { | ||
2970 | "hscif1_data", | ||
2971 | "hscif1_clk", | ||
2972 | "hscif1_ctrl", | ||
2973 | "hscif1_data_b", | ||
2974 | "hscif1_ctrl_b", | ||
2975 | }; | ||
2976 | |||
2977 | static const char * const hscif2_groups[] = { | ||
2978 | "hscif2_data", | ||
2979 | "hscif2_clk", | ||
2980 | "hscif2_ctrl", | ||
2981 | }; | ||
2982 | |||
2983 | static const char * const i2c0_groups[] = { | ||
2984 | "i2c0", | ||
2985 | "i2c0_b", | ||
2986 | "i2c0_c", | ||
2987 | "i2c0_d", | ||
2988 | "i2c0_e", | ||
2989 | }; | ||
2990 | |||
2991 | static const char * const i2c1_groups[] = { | ||
2992 | "i2c1", | ||
2993 | "i2c1_b", | ||
2994 | "i2c1_c", | ||
2995 | "i2c1_d", | ||
2996 | "i2c1_e", | ||
2997 | }; | ||
2998 | |||
2999 | static const char * const i2c2_groups[] = { | ||
3000 | "i2c2", | ||
3001 | "i2c2_b", | ||
3002 | "i2c2_c", | ||
3003 | "i2c2_d", | ||
3004 | "i2c2_e", | ||
3005 | }; | ||
3006 | |||
3007 | static const char * const i2c3_groups[] = { | ||
3008 | "i2c3", | ||
3009 | "i2c3_b", | ||
3010 | "i2c3_c", | ||
3011 | "i2c3_d", | ||
3012 | "i2c3_e", | ||
3013 | }; | ||
3014 | |||
3015 | static const char * const i2c4_groups[] = { | ||
3016 | "i2c4", | ||
3017 | "i2c4_b", | ||
3018 | "i2c4_c", | ||
3019 | "i2c4_d", | ||
3020 | "i2c4_e", | ||
3021 | }; | ||
3022 | |||
3023 | static const char * const intc_groups[] = { | ||
3024 | "intc_irq0", | ||
3025 | "intc_irq1", | ||
3026 | "intc_irq2", | ||
3027 | "intc_irq3", | ||
3028 | "intc_irq4", | ||
3029 | "intc_irq5", | ||
3030 | "intc_irq6", | ||
3031 | "intc_irq7", | ||
3032 | "intc_irq8", | ||
3033 | "intc_irq9", | ||
3034 | }; | ||
3035 | |||
3036 | static const char * const mmc_groups[] = { | ||
3037 | "mmc_data1", | ||
3038 | "mmc_data4", | ||
3039 | "mmc_data8", | ||
3040 | "mmc_ctrl", | ||
3041 | }; | ||
3042 | |||
3043 | static const char * const msiof0_groups[] = { | ||
3044 | "msiof0_clk", | ||
3045 | "msiof0_sync", | ||
3046 | "msiof0_ss1", | ||
3047 | "msiof0_ss2", | ||
3048 | "msiof0_rx", | ||
3049 | "msiof0_tx", | ||
3050 | }; | ||
3051 | |||
3052 | static const char * const msiof1_groups[] = { | ||
3053 | "msiof1_clk", | ||
3054 | "msiof1_sync", | ||
3055 | "msiof1_ss1", | ||
3056 | "msiof1_ss2", | ||
3057 | "msiof1_rx", | ||
3058 | "msiof1_tx", | ||
3059 | "msiof1_clk_b", | ||
3060 | "msiof1_sync_b", | ||
3061 | "msiof1_ss1_b", | ||
3062 | "msiof1_ss2_b", | ||
3063 | "msiof1_rx_b", | ||
3064 | "msiof1_tx_b", | ||
3065 | }; | ||
3066 | |||
3067 | static const char * const msiof2_groups[] = { | ||
3068 | "msiof2_clk", | ||
3069 | "msiof2_sync", | ||
3070 | "msiof2_ss1", | ||
3071 | "msiof2_ss2", | ||
3072 | "msiof2_rx", | ||
3073 | "msiof2_tx", | ||
3074 | "msiof2_clk_b", | ||
3075 | "msiof2_sync_b", | ||
3076 | "msiof2_ss1_b", | ||
3077 | "msiof2_ss2_b", | ||
3078 | "msiof2_rx_b", | ||
3079 | "msiof2_tx_b", | ||
3080 | }; | ||
3081 | |||
3082 | static const char * const qspi_groups[] = { | ||
3083 | "qspi_ctrl", | ||
3084 | "qspi_data2", | ||
3085 | "qspi_data4", | ||
3086 | }; | ||
3087 | |||
3088 | static const char * const scif0_groups[] = { | ||
3089 | "scif0_data", | ||
3090 | "scif0_clk", | ||
3091 | "scif0_data_b", | ||
3092 | "scif0_clk_b", | ||
3093 | "scif0_data_c", | ||
3094 | "scif0_data_d", | ||
3095 | }; | ||
3096 | |||
3097 | static const char * const scif1_groups[] = { | ||
3098 | "scif1_data", | ||
3099 | "scif1_clk", | ||
3100 | "scif1_data_b", | ||
3101 | "scif1_clk_b", | ||
3102 | "scif1_data_c", | ||
3103 | "scif1_clk_c", | ||
3104 | }; | ||
3105 | |||
3106 | static const char * const scif2_groups[] = { | ||
3107 | "scif2_data", | ||
3108 | "scif2_clk", | ||
3109 | "scif2_data_b", | ||
3110 | "scif2_clk_b", | ||
3111 | "scif2_data_c", | ||
3112 | "scif2_clk_c", | ||
3113 | }; | ||
3114 | |||
3115 | static const char * const scif3_groups[] = { | ||
3116 | "scif3_data", | ||
3117 | "scif3_clk", | ||
3118 | "scif3_data_b", | ||
3119 | "scif3_clk_b", | ||
3120 | }; | ||
3121 | |||
3122 | static const char * const scif4_groups[] = { | ||
3123 | "scif4_data", | ||
3124 | "scif4_data_b", | ||
3125 | "scif4_data_c", | ||
3126 | "scif4_data_d", | ||
3127 | "scif4_data_e", | ||
3128 | }; | ||
3129 | |||
3130 | static const char * const scif5_groups[] = { | ||
3131 | "scif5_data", | ||
3132 | "scif5_data_b", | ||
3133 | "scif5_data_c", | ||
3134 | "scif5_data_d", | ||
3135 | }; | ||
3136 | |||
3137 | static const char * const scifa0_groups[] = { | ||
3138 | "scifa0_data", | ||
3139 | "scifa0_data_b", | ||
3140 | "scifa0_data_c", | ||
3141 | "scifa0_data_d", | ||
3142 | }; | ||
3143 | |||
3144 | static const char * const scifa1_groups[] = { | ||
3145 | "scifa1_data", | ||
3146 | "scifa1_clk", | ||
3147 | "scifa1_data_b", | ||
3148 | "scifa1_clk_b", | ||
3149 | "scifa1_data_c", | ||
3150 | "scifa1_clk_c", | ||
3151 | }; | ||
3152 | |||
3153 | static const char * const scifa2_groups[] = { | ||
3154 | "scifa2_data", | ||
3155 | "scifa2_clk", | ||
3156 | "scifa2_data_b", | ||
3157 | "scifa2_clk_b", | ||
3158 | }; | ||
3159 | |||
3160 | static const char * const scifa3_groups[] = { | ||
3161 | "scifa3_data", | ||
3162 | "scifa3_clk", | ||
3163 | "scifa3_data_b", | ||
3164 | "scifa3_clk_b", | ||
3165 | }; | ||
3166 | |||
3167 | static const char * const scifa4_groups[] = { | ||
3168 | "scifa4_data", | ||
3169 | "scifa4_data_b", | ||
3170 | "scifa4_data_c", | ||
3171 | "scifa4_data_d", | ||
3172 | }; | ||
3173 | |||
3174 | static const char * const scifa5_groups[] = { | ||
3175 | "scifa5_data", | ||
3176 | "scifa5_data_b", | ||
3177 | "scifa5_data_c", | ||
3178 | "scifa5_data_d", | ||
3179 | }; | ||
3180 | |||
3181 | static const char * const scifb0_groups[] = { | ||
3182 | "scifb0_data", | ||
3183 | "scifb0_clk", | ||
3184 | "scifb0_ctrl", | ||
3185 | }; | ||
3186 | |||
3187 | static const char * const scifb1_groups[] = { | ||
3188 | "scifb1_data", | ||
3189 | "scifb1_clk", | ||
3190 | }; | ||
3191 | |||
3192 | static const char * const scifb2_groups[] = { | ||
3193 | "scifb2_data", | ||
3194 | "scifb2_clk", | ||
3195 | "scifb2_ctrl", | ||
3196 | }; | ||
3197 | |||
3198 | static const char * const sdhi0_groups[] = { | ||
3199 | "sdhi0_data1", | ||
3200 | "sdhi0_data4", | ||
3201 | "sdhi0_ctrl", | ||
3202 | "sdhi0_cd", | ||
3203 | "sdhi0_wp", | ||
3204 | }; | ||
3205 | |||
3206 | static const char * const sdhi1_groups[] = { | ||
3207 | "sdhi1_data1", | ||
3208 | "sdhi1_data4", | ||
3209 | "sdhi1_ctrl", | ||
3210 | "sdhi1_cd", | ||
3211 | "sdhi1_wp", | ||
3212 | }; | ||
3213 | |||
3214 | static const char * const sdhi2_groups[] = { | ||
3215 | "sdhi2_data1", | ||
3216 | "sdhi2_data4", | ||
3217 | "sdhi2_ctrl", | ||
3218 | "sdhi2_cd", | ||
3219 | "sdhi2_wp", | ||
3220 | }; | ||
3221 | |||
3222 | static const struct sh_pfc_function pinmux_functions[] = { | ||
3223 | SH_PFC_FUNCTION(eth), | ||
3224 | SH_PFC_FUNCTION(hscif0), | ||
3225 | SH_PFC_FUNCTION(hscif1), | ||
3226 | SH_PFC_FUNCTION(hscif2), | ||
3227 | SH_PFC_FUNCTION(i2c0), | ||
3228 | SH_PFC_FUNCTION(i2c1), | ||
3229 | SH_PFC_FUNCTION(i2c2), | ||
3230 | SH_PFC_FUNCTION(i2c3), | ||
3231 | SH_PFC_FUNCTION(i2c4), | ||
3232 | SH_PFC_FUNCTION(intc), | ||
3233 | SH_PFC_FUNCTION(mmc), | ||
3234 | SH_PFC_FUNCTION(msiof0), | ||
3235 | SH_PFC_FUNCTION(msiof1), | ||
3236 | SH_PFC_FUNCTION(msiof2), | ||
3237 | SH_PFC_FUNCTION(qspi), | ||
3238 | SH_PFC_FUNCTION(scif0), | ||
3239 | SH_PFC_FUNCTION(scif1), | ||
3240 | SH_PFC_FUNCTION(scif2), | ||
3241 | SH_PFC_FUNCTION(scif3), | ||
3242 | SH_PFC_FUNCTION(scif4), | ||
3243 | SH_PFC_FUNCTION(scif5), | ||
3244 | SH_PFC_FUNCTION(scifa0), | ||
3245 | SH_PFC_FUNCTION(scifa1), | ||
3246 | SH_PFC_FUNCTION(scifa2), | ||
3247 | SH_PFC_FUNCTION(scifa3), | ||
3248 | SH_PFC_FUNCTION(scifa4), | ||
3249 | SH_PFC_FUNCTION(scifa5), | ||
3250 | SH_PFC_FUNCTION(scifb0), | ||
3251 | SH_PFC_FUNCTION(scifb1), | ||
3252 | SH_PFC_FUNCTION(scifb2), | ||
3253 | SH_PFC_FUNCTION(sdhi0), | ||
3254 | SH_PFC_FUNCTION(sdhi1), | ||
3255 | SH_PFC_FUNCTION(sdhi2), | ||
3256 | }; | ||
3257 | |||
3258 | static const struct pinmux_cfg_reg pinmux_config_regs[] = { | ||
3259 | { PINMUX_CFG_REG("GPSR0", 0xE6060004, 32, 1) { | ||
3260 | GP_0_31_FN, FN_IP2_17_16, | ||
3261 | GP_0_30_FN, FN_IP2_15_14, | ||
3262 | GP_0_29_FN, FN_IP2_13_12, | ||
3263 | GP_0_28_FN, FN_IP2_11_10, | ||
3264 | GP_0_27_FN, FN_IP2_9_8, | ||
3265 | GP_0_26_FN, FN_IP2_7_6, | ||
3266 | GP_0_25_FN, FN_IP2_5_4, | ||
3267 | GP_0_24_FN, FN_IP2_3_2, | ||
3268 | GP_0_23_FN, FN_IP2_1_0, | ||
3269 | GP_0_22_FN, FN_IP1_31_30, | ||
3270 | GP_0_21_FN, FN_IP1_29_28, | ||
3271 | GP_0_20_FN, FN_IP1_27, | ||
3272 | GP_0_19_FN, FN_IP1_26, | ||
3273 | GP_0_18_FN, FN_A2, | ||
3274 | GP_0_17_FN, FN_IP1_24, | ||
3275 | GP_0_16_FN, FN_IP1_23_22, | ||
3276 | GP_0_15_FN, FN_IP1_21_20, | ||
3277 | GP_0_14_FN, FN_IP1_19_18, | ||
3278 | GP_0_13_FN, FN_IP1_17_15, | ||
3279 | GP_0_12_FN, FN_IP1_14_13, | ||
3280 | GP_0_11_FN, FN_IP1_12_11, | ||
3281 | GP_0_10_FN, FN_IP1_10_8, | ||
3282 | GP_0_9_FN, FN_IP1_7_6, | ||
3283 | GP_0_8_FN, FN_IP1_5_4, | ||
3284 | GP_0_7_FN, FN_IP1_3_2, | ||
3285 | GP_0_6_FN, FN_IP1_1_0, | ||
3286 | GP_0_5_FN, FN_IP0_31_30, | ||
3287 | GP_0_4_FN, FN_IP0_29_28, | ||
3288 | GP_0_3_FN, FN_IP0_27_26, | ||
3289 | GP_0_2_FN, FN_IP0_25, | ||
3290 | GP_0_1_FN, FN_IP0_24, | ||
3291 | GP_0_0_FN, FN_IP0_23_22, } | ||
3292 | }, | ||
3293 | { PINMUX_CFG_REG("GPSR1", 0xE6060008, 32, 1) { | ||
3294 | 0, 0, | ||
3295 | 0, 0, | ||
3296 | 0, 0, | ||
3297 | 0, 0, | ||
3298 | 0, 0, | ||
3299 | 0, 0, | ||
3300 | GP_1_25_FN, FN_DACK0, | ||
3301 | GP_1_24_FN, FN_IP7_31, | ||
3302 | GP_1_23_FN, FN_IP4_1_0, | ||
3303 | GP_1_22_FN, FN_WE1_N, | ||
3304 | GP_1_21_FN, FN_WE0_N, | ||
3305 | GP_1_20_FN, FN_IP3_31, | ||
3306 | GP_1_19_FN, FN_IP3_30, | ||
3307 | GP_1_18_FN, FN_IP3_29_27, | ||
3308 | GP_1_17_FN, FN_IP3_26_24, | ||
3309 | GP_1_16_FN, FN_IP3_23_21, | ||
3310 | GP_1_15_FN, FN_IP3_20_18, | ||
3311 | GP_1_14_FN, FN_IP3_17_15, | ||
3312 | GP_1_13_FN, FN_IP3_14_13, | ||
3313 | GP_1_12_FN, FN_IP3_12, | ||
3314 | GP_1_11_FN, FN_IP3_11, | ||
3315 | GP_1_10_FN, FN_IP3_10, | ||
3316 | GP_1_9_FN, FN_IP3_9_8, | ||
3317 | GP_1_8_FN, FN_IP3_7_6, | ||
3318 | GP_1_7_FN, FN_IP3_5_4, | ||
3319 | GP_1_6_FN, FN_IP3_3_2, | ||
3320 | GP_1_5_FN, FN_IP3_1_0, | ||
3321 | GP_1_4_FN, FN_IP2_31_30, | ||
3322 | GP_1_3_FN, FN_IP2_29_27, | ||
3323 | GP_1_2_FN, FN_IP2_26_24, | ||
3324 | GP_1_1_FN, FN_IP2_23_21, | ||
3325 | GP_1_0_FN, FN_IP2_20_18, } | ||
3326 | }, | ||
3327 | { PINMUX_CFG_REG("GPSR2", 0xE606000C, 32, 1) { | ||
3328 | GP_2_31_FN, FN_IP6_7_6, | ||
3329 | GP_2_30_FN, FN_IP6_5_4, | ||
3330 | GP_2_29_FN, FN_IP6_3_2, | ||
3331 | GP_2_28_FN, FN_IP6_1_0, | ||
3332 | GP_2_27_FN, FN_IP5_31_30, | ||
3333 | GP_2_26_FN, FN_IP5_29_28, | ||
3334 | GP_2_25_FN, FN_IP5_27_26, | ||
3335 | GP_2_24_FN, FN_IP5_25_24, | ||
3336 | GP_2_23_FN, FN_IP5_23_22, | ||
3337 | GP_2_22_FN, FN_IP5_21_20, | ||
3338 | GP_2_21_FN, FN_IP5_19_18, | ||
3339 | GP_2_20_FN, FN_IP5_17_16, | ||
3340 | GP_2_19_FN, FN_IP5_15_14, | ||
3341 | GP_2_18_FN, FN_IP5_13_12, | ||
3342 | GP_2_17_FN, FN_IP5_11_9, | ||
3343 | GP_2_16_FN, FN_IP5_8_6, | ||
3344 | GP_2_15_FN, FN_IP5_5_4, | ||
3345 | GP_2_14_FN, FN_IP5_3_2, | ||
3346 | GP_2_13_FN, FN_IP5_1_0, | ||
3347 | GP_2_12_FN, FN_IP4_31_30, | ||
3348 | GP_2_11_FN, FN_IP4_29_28, | ||
3349 | GP_2_10_FN, FN_IP4_27_26, | ||
3350 | GP_2_9_FN, FN_IP4_25_23, | ||
3351 | GP_2_8_FN, FN_IP4_22_20, | ||
3352 | GP_2_7_FN, FN_IP4_19_18, | ||
3353 | GP_2_6_FN, FN_IP4_17_16, | ||
3354 | GP_2_5_FN, FN_IP4_15_14, | ||
3355 | GP_2_4_FN, FN_IP4_13_12, | ||
3356 | GP_2_3_FN, FN_IP4_11_10, | ||
3357 | GP_2_2_FN, FN_IP4_9_8, | ||
3358 | GP_2_1_FN, FN_IP4_7_5, | ||
3359 | GP_2_0_FN, FN_IP4_4_2 } | ||
3360 | }, | ||
3361 | { PINMUX_CFG_REG("GPSR3", 0xE6060010, 32, 1) { | ||
3362 | GP_3_31_FN, FN_IP8_22_20, | ||
3363 | GP_3_30_FN, FN_IP8_19_17, | ||
3364 | GP_3_29_FN, FN_IP8_16_15, | ||
3365 | GP_3_28_FN, FN_IP8_14_12, | ||
3366 | GP_3_27_FN, FN_IP8_11_9, | ||
3367 | GP_3_26_FN, FN_IP8_8_6, | ||
3368 | GP_3_25_FN, FN_IP8_5_3, | ||
3369 | GP_3_24_FN, FN_IP8_2_0, | ||
3370 | GP_3_23_FN, FN_IP7_29_27, | ||
3371 | GP_3_22_FN, FN_IP7_26_24, | ||
3372 | GP_3_21_FN, FN_IP7_23_21, | ||
3373 | GP_3_20_FN, FN_IP7_20_18, | ||
3374 | GP_3_19_FN, FN_IP7_17_15, | ||
3375 | GP_3_18_FN, FN_IP7_14_12, | ||
3376 | GP_3_17_FN, FN_IP7_11_9, | ||
3377 | GP_3_16_FN, FN_IP7_8_6, | ||
3378 | GP_3_15_FN, FN_IP7_5_3, | ||
3379 | GP_3_14_FN, FN_IP7_2_0, | ||
3380 | GP_3_13_FN, FN_IP6_31_29, | ||
3381 | GP_3_12_FN, FN_IP6_28_26, | ||
3382 | GP_3_11_FN, FN_IP6_25_23, | ||
3383 | GP_3_10_FN, FN_IP6_22_20, | ||
3384 | GP_3_9_FN, FN_IP6_19_17, | ||
3385 | GP_3_8_FN, FN_IP6_16, | ||
3386 | GP_3_7_FN, FN_IP6_15, | ||
3387 | GP_3_6_FN, FN_IP6_14, | ||
3388 | GP_3_5_FN, FN_IP6_13, | ||
3389 | GP_3_4_FN, FN_IP6_12, | ||
3390 | GP_3_3_FN, FN_IP6_11, | ||
3391 | GP_3_2_FN, FN_IP6_10, | ||
3392 | GP_3_1_FN, FN_IP6_9, | ||
3393 | GP_3_0_FN, FN_IP6_8 } | ||
3394 | }, | ||
3395 | { PINMUX_CFG_REG("GPSR4", 0xE6060014, 32, 1) { | ||
3396 | GP_4_31_FN, FN_IP11_17_16, | ||
3397 | GP_4_30_FN, FN_IP11_15_14, | ||
3398 | GP_4_29_FN, FN_IP11_13_11, | ||
3399 | GP_4_28_FN, FN_IP11_10_8, | ||
3400 | GP_4_27_FN, FN_IP11_7_6, | ||
3401 | GP_4_26_FN, FN_IP11_5_3, | ||
3402 | GP_4_25_FN, FN_IP11_2_0, | ||
3403 | GP_4_24_FN, FN_IP10_31_30, | ||
3404 | GP_4_23_FN, FN_IP10_29_27, | ||
3405 | GP_4_22_FN, FN_IP10_26_24, | ||
3406 | GP_4_21_FN, FN_IP10_23_21, | ||
3407 | GP_4_20_FN, FN_IP10_20_18, | ||
3408 | GP_4_19_FN, FN_IP10_17_15, | ||
3409 | GP_4_18_FN, FN_IP10_14_12, | ||
3410 | GP_4_17_FN, FN_IP10_11_9, | ||
3411 | GP_4_16_FN, FN_IP10_8_6, | ||
3412 | GP_4_15_FN, FN_IP10_5_3, | ||
3413 | GP_4_14_FN, FN_IP10_2_0, | ||
3414 | GP_4_13_FN, FN_IP9_30_28, | ||
3415 | GP_4_12_FN, FN_IP9_27_25, | ||
3416 | GP_4_11_FN, FN_IP9_24_22, | ||
3417 | GP_4_10_FN, FN_IP9_21_19, | ||
3418 | GP_4_9_FN, FN_IP9_18_17, | ||
3419 | GP_4_8_FN, FN_IP9_16_15, | ||
3420 | GP_4_7_FN, FN_IP9_14_12, | ||
3421 | GP_4_6_FN, FN_IP9_11_9, | ||
3422 | GP_4_5_FN, FN_IP9_8_6, | ||
3423 | GP_4_4_FN, FN_IP9_5_3, | ||
3424 | GP_4_3_FN, FN_IP9_2_0, | ||
3425 | GP_4_2_FN, FN_IP8_31_29, | ||
3426 | GP_4_1_FN, FN_IP8_28_26, | ||
3427 | GP_4_0_FN, FN_IP8_25_23 } | ||
3428 | }, | ||
3429 | { PINMUX_CFG_REG("GPSR5", 0xE6060018, 32, 1) { | ||
3430 | 0, 0, | ||
3431 | 0, 0, | ||
3432 | 0, 0, | ||
3433 | 0, 0, | ||
3434 | GP_5_27_FN, FN_USB1_OVC, | ||
3435 | GP_5_26_FN, FN_USB1_PWEN, | ||
3436 | GP_5_25_FN, FN_USB0_OVC, | ||
3437 | GP_5_24_FN, FN_USB0_PWEN, | ||
3438 | GP_5_23_FN, FN_IP13_26_24, | ||
3439 | GP_5_22_FN, FN_IP13_23_21, | ||
3440 | GP_5_21_FN, FN_IP13_20_18, | ||
3441 | GP_5_20_FN, FN_IP13_17_15, | ||
3442 | GP_5_19_FN, FN_IP13_14_12, | ||
3443 | GP_5_18_FN, FN_IP13_11_9, | ||
3444 | GP_5_17_FN, FN_IP13_8_6, | ||
3445 | GP_5_16_FN, FN_IP13_5_3, | ||
3446 | GP_5_15_FN, FN_IP13_2_0, | ||
3447 | GP_5_14_FN, FN_IP12_29_27, | ||
3448 | GP_5_13_FN, FN_IP12_26_24, | ||
3449 | GP_5_12_FN, FN_IP12_23_21, | ||
3450 | GP_5_11_FN, FN_IP12_20_18, | ||
3451 | GP_5_10_FN, FN_IP12_17_15, | ||
3452 | GP_5_9_FN, FN_IP12_14_13, | ||
3453 | GP_5_8_FN, FN_IP12_12_11, | ||
3454 | GP_5_7_FN, FN_IP12_10_9, | ||
3455 | GP_5_6_FN, FN_IP12_8_6, | ||
3456 | GP_5_5_FN, FN_IP12_5_3, | ||
3457 | GP_5_4_FN, FN_IP12_2_0, | ||
3458 | GP_5_3_FN, FN_IP11_29_27, | ||
3459 | GP_5_2_FN, FN_IP11_26_24, | ||
3460 | GP_5_1_FN, FN_IP11_23_21, | ||
3461 | GP_5_0_FN, FN_IP11_20_18 } | ||
3462 | }, | ||
3463 | { PINMUX_CFG_REG("GPSR6", 0xE606001C, 32, 1) { | ||
3464 | 0, 0, | ||
3465 | 0, 0, | ||
3466 | 0, 0, | ||
3467 | 0, 0, | ||
3468 | 0, 0, | ||
3469 | 0, 0, | ||
3470 | GP_6_25_FN, FN_IP0_21_20, | ||
3471 | GP_6_24_FN, FN_IP0_19_18, | ||
3472 | GP_6_23_FN, FN_IP0_17, | ||
3473 | GP_6_22_FN, FN_IP0_16, | ||
3474 | GP_6_21_FN, FN_IP0_15, | ||
3475 | GP_6_20_FN, FN_IP0_14, | ||
3476 | GP_6_19_FN, FN_IP0_13, | ||
3477 | GP_6_18_FN, FN_IP0_12, | ||
3478 | GP_6_17_FN, FN_IP0_11, | ||
3479 | GP_6_16_FN, FN_IP0_10, | ||
3480 | GP_6_15_FN, FN_IP0_9_8, | ||
3481 | GP_6_14_FN, FN_IP0_0, | ||
3482 | GP_6_13_FN, FN_SD1_DATA3, | ||
3483 | GP_6_12_FN, FN_SD1_DATA2, | ||
3484 | GP_6_11_FN, FN_SD1_DATA1, | ||
3485 | GP_6_10_FN, FN_SD1_DATA0, | ||
3486 | GP_6_9_FN, FN_SD1_CMD, | ||
3487 | GP_6_8_FN, FN_SD1_CLK, | ||
3488 | GP_6_7_FN, FN_SD0_WP, | ||
3489 | GP_6_6_FN, FN_SD0_CD, | ||
3490 | GP_6_5_FN, FN_SD0_DATA3, | ||
3491 | GP_6_4_FN, FN_SD0_DATA2, | ||
3492 | GP_6_3_FN, FN_SD0_DATA1, | ||
3493 | GP_6_2_FN, FN_SD0_DATA0, | ||
3494 | GP_6_1_FN, FN_SD0_CMD, | ||
3495 | GP_6_0_FN, FN_SD0_CLK } | ||
3496 | }, | ||
3497 | { PINMUX_CFG_REG_VAR("IPSR0", 0xE6060020, 32, | ||
3498 | 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, | ||
3499 | 2, 1, 1, 1, 1, 1, 1, 1, 1) { | ||
3500 | /* IP0_31_30 [2] */ | ||
3501 | FN_D5, FN_SCIF4_RXD_B, FN_I2C0_SCL_D, 0, | ||
3502 | /* IP0_29_28 [2] */ | ||
3503 | FN_D4, FN_I2C3_SDA_B, FN_SCIF5_TXD_B, 0, | ||
3504 | /* IP0_27_26 [2] */ | ||
3505 | FN_D3, FN_I2C3_SCL_B, FN_SCIF5_RXD_B, 0, | ||
3506 | /* IP0_25 [1] */ | ||
3507 | FN_D2, FN_SCIFA3_TXD_B, | ||
3508 | /* IP0_24 [1] */ | ||
3509 | FN_D1, FN_SCIFA3_RXD_B, | ||
3510 | /* IP0_23_22 [2] */ | ||
3511 | FN_D0, FN_SCIFA3_SCK_B, FN_IRQ4, 0, | ||
3512 | /* IP0_21_20 [2] */ | ||
3513 | FN_MMC_D7, FN_SCIF0_TXD, FN_I2C2_SDA_B, FN_CAN1_TX, | ||
3514 | /* IP0_19_18 [2] */ | ||
3515 | FN_MMC_D6, FN_SCIF0_RXD, FN_I2C2_SCL_B, FN_CAN1_RX, | ||
3516 | /* IP0_17 [1] */ | ||
3517 | FN_MMC_D5, FN_SD2_WP, | ||
3518 | /* IP0_16 [1] */ | ||
3519 | FN_MMC_D4, FN_SD2_CD, | ||
3520 | /* IP0_15 [1] */ | ||
3521 | FN_MMC_D3, FN_SD2_DATA3, | ||
3522 | /* IP0_14 [1] */ | ||
3523 | FN_MMC_D2, FN_SD2_DATA2, | ||
3524 | /* IP0_13 [1] */ | ||
3525 | FN_MMC_D1, FN_SD2_DATA1, | ||
3526 | /* IP0_12 [1] */ | ||
3527 | FN_MMC_D0, FN_SD2_DATA0, | ||
3528 | /* IP0_11 [1] */ | ||
3529 | FN_MMC_CMD, FN_SD2_CMD, | ||
3530 | /* IP0_10 [1] */ | ||
3531 | FN_MMC_CLK, FN_SD2_CLK, | ||
3532 | /* IP0_9_8 [2] */ | ||
3533 | FN_SD1_WP, FN_IRQ7, FN_CAN0_TX, 0, | ||
3534 | /* IP0_7 [1] */ | ||
3535 | 0, 0, | ||
3536 | /* IP0_6 [1] */ | ||
3537 | 0, 0, | ||
3538 | /* IP0_5 [1] */ | ||
3539 | 0, 0, | ||
3540 | /* IP0_4 [1] */ | ||
3541 | 0, 0, | ||
3542 | /* IP0_3 [1] */ | ||
3543 | 0, 0, | ||
3544 | /* IP0_2 [1] */ | ||
3545 | 0, 0, | ||
3546 | /* IP0_1 [1] */ | ||
3547 | 0, 0, | ||
3548 | /* IP0_0 [1] */ | ||
3549 | FN_SD1_CD, FN_CAN0_RX, } | ||
3550 | }, | ||
3551 | { PINMUX_CFG_REG_VAR("IPSR1", 0xE6060024, 32, | ||
3552 | 2, 2, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 3, 2, 2, | ||
3553 | 2, 2) { | ||
3554 | /* IP1_31_30 [2] */ | ||
3555 | FN_A6, FN_SCIFB0_CTS_N, FN_SCIFA4_RXD_B, FN_TPUTO2_C, | ||
3556 | /* IP1_29_28 [2] */ | ||
3557 | FN_A5, FN_SCIFB0_RXD, FN_PWM4_B, FN_TPUTO3_C, | ||
3558 | /* IP1_27 [1] */ | ||
3559 | FN_A4, FN_SCIFB0_TXD, | ||
3560 | /* IP1_26 [1] */ | ||
3561 | FN_A3, FN_SCIFB0_SCK, | ||
3562 | /* IP1_25 [1] */ | ||
3563 | 0, 0, | ||
3564 | /* IP1_24 [1] */ | ||
3565 | FN_A1, FN_SCIFB1_TXD, | ||
3566 | /* IP1_23_22 [2] */ | ||
3567 | FN_A0, FN_SCIFB1_SCK, FN_PWM3_B, 0, | ||
3568 | /* IP1_21_20 [2] */ | ||
3569 | FN_D15, FN_SCIFA1_TXD, FN_IIC0_SDA_B, 0, | ||
3570 | /* IP1_19_18 [2] */ | ||
3571 | FN_D14, FN_SCIFA1_RXD, FN_IIC0_SCL_B, 0, | ||
3572 | /* IP1_17_15 [3] */ | ||
3573 | FN_D13, FN_SCIFA1_SCK, FN_TANS1, FN_PWM2_C, FN_TCLK2_B, | ||
3574 | 0, 0, 0, | ||
3575 | /* IP1_14_13 [2] */ | ||
3576 | FN_D12, FN_HSCIF2_HRTS_N, FN_SCIF1_TXD_C, FN_I2C1_SDA_D, | ||
3577 | /* IP1_12_11 [2] */ | ||
3578 | FN_D11, FN_HSCIF2_HCTS_N, FN_SCIF1_RXD_C, FN_I2C1_SCL_D, | ||
3579 | /* IP1_10_8 [3] */ | ||
3580 | FN_D10, FN_HSCIF2_HSCK, FN_SCIF1_SCK_C, FN_IRQ6, FN_PWM5_C, | ||
3581 | 0, 0, 0, | ||
3582 | /* IP1_7_6 [2] */ | ||
3583 | FN_D9, FN_HSCIF2_HTX, FN_I2C1_SDA_B, 0, | ||
3584 | /* IP1_5_4 [2] */ | ||
3585 | FN_D8, FN_HSCIF2_HRX, FN_I2C1_SCL_B, 0, | ||
3586 | /* IP1_3_2 [2] */ | ||
3587 | FN_D7, FN_IRQ3, FN_TCLK1, FN_PWM6_B, | ||
3588 | /* IP1_1_0 [2] */ | ||
3589 | FN_D6, FN_SCIF4_TXD_B, FN_I2C0_SDA_D, 0, } | ||
3590 | }, | ||
3591 | { PINMUX_CFG_REG_VAR("IPSR2", 0xE6060028, 32, | ||
3592 | 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2) { | ||
3593 | /* IP2_31_30 [2] */ | ||
3594 | FN_A20, FN_SPCLK, FN_MOUT1, 0, | ||
3595 | /* IP2_29_27 [3] */ | ||
3596 | FN_A19, FN_MSIOF2_SS2, FN_PWM4, FN_TPUTO2, | ||
3597 | FN_MOUT0, 0, 0, 0, | ||
3598 | /* IP2_26_24 [3] */ | ||
3599 | FN_A18, FN_MSIOF2_SS1, FN_SCIF4_TXD_E, FN_CAN1_TX_B, | ||
3600 | FN_AVB_AVTP_MATCH_B, 0, 0, 0, | ||
3601 | /* IP2_23_21 [3] */ | ||
3602 | FN_A17, FN_MSIOF2_SYNC, FN_SCIF4_RXD_E, FN_CAN1_RX_B, | ||
3603 | FN_AVB_AVTP_CAPTURE_B, 0, 0, 0, | ||
3604 | /* IP2_20_18 [3] */ | ||
3605 | FN_A16, FN_MSIOF2_SCK, FN_HSCIF0_HSCK_B, FN_SPEEDIN, | ||
3606 | FN_VSP, FN_CAN_CLK_C, FN_TPUTO2_B, 0, | ||
3607 | /* IP2_17_16 [2] */ | ||
3608 | FN_A15, FN_MSIOF2_TXD, FN_HSCIF0_HTX_B, FN_DACK1, | ||
3609 | /* IP2_15_14 [2] */ | ||
3610 | FN_A14, FN_MSIOF2_RXD, FN_HSCIF0_HRX_B, FN_DREQ1_N, | ||
3611 | /* IP2_13_12 [2] */ | ||
3612 | FN_A13, FN_MSIOF1_SS2, FN_SCIFA5_TXD_B, 0, | ||
3613 | /* IP2_11_10 [2] */ | ||
3614 | FN_A12, FN_MSIOF1_SS1, FN_SCIFA5_RXD_B, 0, | ||
3615 | /* IP2_9_8 [2] */ | ||
3616 | FN_A11, FN_MSIOF1_SYNC, FN_IIC1_SDA_B, 0, | ||
3617 | /* IP2_7_6 [2] */ | ||
3618 | FN_A10, FN_MSIOF1_SCK, FN_IIC1_SCL_B, 0, | ||
3619 | /* IP2_5_4 [2] */ | ||
3620 | FN_A9, FN_MSIOF1_TXD, FN_SCIFA0_TXD_B, 0, | ||
3621 | /* IP2_3_2 [2] */ | ||
3622 | FN_A8, FN_MSIOF1_RXD, FN_SCIFA0_RXD_B, 0, | ||
3623 | /* IP2_1_0 [2] */ | ||
3624 | FN_A7, FN_SCIFB0_RTS_N, FN_SCIFA4_TXD_B, 0, } | ||
3625 | }, | ||
3626 | { PINMUX_CFG_REG_VAR("IPSR3", 0xE606002C, 32, | ||
3627 | 1, 1, 3, 3, 3, 3, 3, 2, 1, 1, 1, 2, 2, 2, 2, 2) { | ||
3628 | /* IP3_31 [1] */ | ||
3629 | FN_RD_WR_N, FN_ATAG1_N, | ||
3630 | /* IP3_30 [1] */ | ||
3631 | FN_RD_N, FN_ATACS11_N, | ||
3632 | /* IP3_29_27 [3] */ | ||
3633 | FN_BS_N, FN_DRACK0, FN_PWM1_C, FN_TPUTO0_C, FN_ATACS01_N, | ||
3634 | FN_MTS_N_B, 0, 0, | ||
3635 | /* IP3_26_24 [3] */ | ||
3636 | FN_EX_CS5_N, FN_SCIFA2_TXD, FN_I2C2_SDA_E, FN_TS_SPSYNC_B, | ||
3637 | FN_RIF0_D1, FN_FMIN, FN_SCIFB2_RTS_N, FN_STM_N_B, | ||
3638 | /* IP3_23_21 [3] */ | ||
3639 | FN_EX_CS4_N, FN_SCIFA2_RXD, FN_I2C2_SCL_E, FN_TS_SDEN_B, | ||
3640 | FN_RIF0_D0, FN_FMCLK, FN_SCIFB2_CTS_N, FN_SCKZ_B, | ||
3641 | /* IP3_20_18 [3] */ | ||
3642 | FN_EX_CS3_N, FN_SCIFA2_SCK, FN_SCIF4_TXD_C, FN_TS_SCK_B, | ||
3643 | FN_RIF0_CLK, FN_BPFCLK, FN_SCIFB2_SCK, FN_MDATA_B, | ||
3644 | /* IP3_17_15 [3] */ | ||
3645 | FN_EX_CS2_N, FN_PWM0, FN_SCIF4_RXD_C, FN_TS_SDATA_B, | ||
3646 | FN_RIF0_SYNC, FN_TPUTO3, FN_SCIFB2_TXD, FN_SDATA_B, | ||
3647 | /* IP3_14_13 [2] */ | ||
3648 | FN_EX_CS1_N, FN_TPUTO3_B, FN_SCIFB2_RXD, FN_VI1_DATA11, | ||
3649 | /* IP3_12 [1] */ | ||
3650 | FN_EX_CS0_N, FN_VI1_DATA10, | ||
3651 | /* IP3_11 [1] */ | ||
3652 | FN_CS1_N_A26, FN_VI1_DATA9, | ||
3653 | /* IP3_10 [1] */ | ||
3654 | FN_CS0_N, FN_VI1_DATA8, | ||
3655 | /* IP3_9_8 [2] */ | ||
3656 | FN_A25, FN_SSL, FN_ATARD1_N, 0, | ||
3657 | /* IP3_7_6 [2] */ | ||
3658 | FN_A24, FN_IO3, FN_EX_WAIT2, 0, | ||
3659 | /* IP3_5_4 [2] */ | ||
3660 | FN_A23, FN_IO2, FN_MOUT6, FN_ATAWR1_N, | ||
3661 | /* IP3_3_2 [2] */ | ||
3662 | FN_A22, FN_MISO_IO1, FN_MOUT5, FN_ATADIR1_N, | ||
3663 | /* IP3_1_0 [2] */ | ||
3664 | FN_A21, FN_MOSI_IO0, FN_MOUT2, 0, } | ||
3665 | }, | ||
3666 | { PINMUX_CFG_REG_VAR("IPSR4", 0xE6060030, 32, | ||
3667 | 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 2) { | ||
3668 | /* IP4_31_30 [2] */ | ||
3669 | FN_DU0_DG4, FN_LCDOUT12, FN_CC50_STATE12, 0, | ||
3670 | /* IP4_29_28 [2] */ | ||
3671 | FN_DU0_DG3, FN_LCDOUT11, FN_CC50_STATE11, 0, | ||
3672 | /* IP4_27_26 [2] */ | ||
3673 | FN_DU0_DG2, FN_LCDOUT10, FN_CC50_STATE10, 0, | ||
3674 | /* IP4_25_23 [3] */ | ||
3675 | FN_DU0_DG1, FN_LCDOUT9, FN_SCIFA0_TXD_C, FN_I2C3_SDA_D, | ||
3676 | FN_CC50_STATE9, 0, 0, 0, | ||
3677 | /* IP4_22_20 [3] */ | ||
3678 | FN_DU0_DG0, FN_LCDOUT8, FN_SCIFA0_RXD_C, FN_I2C3_SCL_D, | ||
3679 | FN_CC50_STATE8, 0, 0, 0, | ||
3680 | /* IP4_19_18 [2] */ | ||
3681 | FN_DU0_DR7, FN_LCDOUT23, FN_CC50_STATE7, 0, | ||
3682 | /* IP4_17_16 [2] */ | ||
3683 | FN_DU0_DR6, FN_LCDOUT22, FN_CC50_STATE6, 0, | ||
3684 | /* IP4_15_14 [2] */ | ||
3685 | FN_DU0_DR5, FN_LCDOUT21, FN_CC50_STATE5, 0, | ||
3686 | /* IP4_13_12 [2] */ | ||
3687 | FN_DU0_DR4, FN_LCDOUT20, FN_CC50_STATE4, 0, | ||
3688 | /* IP4_11_10 [2] */ | ||
3689 | FN_DU0_DR3, FN_LCDOUT19, FN_CC50_STATE3, 0, | ||
3690 | /* IP4_9_8 [2] */ | ||
3691 | FN_DU0_DR2, FN_LCDOUT18, FN_CC50_STATE2, 0, | ||
3692 | /* IP4_7_5 [3] */ | ||
3693 | FN_DU0_DR1, FN_LCDOUT17, FN_SCIF5_TXD_C, FN_I2C2_SDA_D, | ||
3694 | FN_CC50_STATE1, 0, 0, 0, | ||
3695 | /* IP4_4_2 [3] */ | ||
3696 | FN_DU0_DR0, FN_LCDOUT16, FN_SCIF5_RXD_C, FN_I2C2_SCL_D, | ||
3697 | FN_CC50_STATE0, 0, 0, 0, | ||
3698 | /* IP4_1_0 [2] */ | ||
3699 | FN_EX_WAIT0, FN_CAN_CLK_B, FN_SCIF_CLK, FN_PWMFSW0, } | ||
3700 | }, | ||
3701 | { PINMUX_CFG_REG_VAR("IPSR5", 0xE6060034, 32, | ||
3702 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2) { | ||
3703 | /* IP5_31_30 [2] */ | ||
3704 | FN_DU0_EXHSYNC_DU0_HSYNC, FN_QSTH_QHS, FN_CC50_STATE27, 0, | ||
3705 | /* IP5_29_28 [2] */ | ||
3706 | FN_DU0_DOTCLKOUT1, FN_QSTVB_QVE, FN_CC50_STATE26, 0, | ||
3707 | /* IP5_27_26 [2] */ | ||
3708 | FN_DU0_DOTCLKOUT0, FN_QCLK, FN_CC50_STATE25, 0, | ||
3709 | /* IP5_25_24 [2] */ | ||
3710 | FN_DU0_DOTCLKIN, FN_QSTVA_QVS, FN_CC50_STATE24, 0, | ||
3711 | /* IP5_23_22 [2] */ | ||
3712 | FN_DU0_DB7, FN_LCDOUT7, FN_CC50_STATE23, 0, | ||
3713 | /* IP5_21_20 [2] */ | ||
3714 | FN_DU0_DB6, FN_LCDOUT6, FN_CC50_STATE22, 0, | ||
3715 | /* IP5_19_18 [2] */ | ||
3716 | FN_DU0_DB5, FN_LCDOUT5, FN_CC50_STATE21, 0, | ||
3717 | /* IP5_17_16 [2] */ | ||
3718 | FN_DU0_DB4, FN_LCDOUT4, FN_CC50_STATE20, 0, | ||
3719 | /* IP5_15_14 [2] */ | ||
3720 | FN_DU0_DB3, FN_LCDOUT3, FN_CC50_STATE19, 0, | ||
3721 | /* IP5_13_12 [2] */ | ||
3722 | FN_DU0_DB2, FN_LCDOUT2, FN_CC50_STATE18, 0, | ||
3723 | /* IP5_11_9 [3] */ | ||
3724 | FN_DU0_DB1, FN_LCDOUT1, FN_SCIFA4_TXD_C, FN_I2C4_SDA_D, | ||
3725 | FN_CAN0_TX_C, FN_CC50_STATE17, 0, 0, | ||
3726 | /* IP5_8_6 [3] */ | ||
3727 | FN_DU0_DB0, FN_LCDOUT0, FN_SCIFA4_RXD_C, FN_I2C4_SCL_D, | ||
3728 | FN_CAN0_RX_C, FN_CC50_STATE16, 0, 0, | ||
3729 | /* IP5_5_4 [2] */ | ||
3730 | FN_DU0_DG7, FN_LCDOUT15, FN_CC50_STATE15, 0, | ||
3731 | /* IP5_3_2 [2] */ | ||
3732 | FN_DU0_DG6, FN_LCDOUT14, FN_CC50_STATE14, 0, | ||
3733 | /* IP5_1_0 [2] */ | ||
3734 | FN_DU0_DG5, FN_LCDOUT13, FN_CC50_STATE13, 0, } | ||
3735 | }, | ||
3736 | { PINMUX_CFG_REG_VAR("IPSR6", 0xE6060038, 32, | ||
3737 | 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, | ||
3738 | 2, 2) { | ||
3739 | /* IP6_31_29 [3] */ | ||
3740 | FN_ETH_MDIO, FN_VI0_G0, FN_MSIOF2_RXD_B, FN_IIC0_SCL_D, | ||
3741 | FN_AVB_TX_CLK, FN_ADIDATA, FN_AD_DI, 0, | ||
3742 | /* IP6_28_26 [3] */ | ||
3743 | FN_VI0_VSYNC_N, FN_SCIF0_TXD_B, FN_I2C0_SDA_C, | ||
3744 | FN_AUDIO_CLKOUT_B, FN_AVB_TX_EN, 0, 0, 0, | ||
3745 | /* IP6_25_23 [3] */ | ||
3746 | FN_VI0_HSYNC_N, FN_SCIF0_RXD_B, FN_I2C0_SCL_C, FN_IERX_C, | ||
3747 | FN_AVB_COL, 0, 0, 0, | ||
3748 | /* IP6_22_20 [3] */ | ||
3749 | FN_VI0_FIELD, FN_I2C3_SDA, FN_SCIFA5_TXD_C, FN_IECLK_C, | ||
3750 | FN_AVB_RX_ER, 0, 0, 0, | ||
3751 | /* IP6_19_17 [3] */ | ||
3752 | FN_VI0_CLKENB, FN_I2C3_SCL, FN_SCIFA5_RXD_C, FN_IETX_C, | ||
3753 | FN_AVB_RXD7, 0, 0, 0, | ||
3754 | /* IP6_16 [1] */ | ||
3755 | FN_VI0_DATA7_VI0_B7, FN_AVB_RXD6, | ||
3756 | /* IP6_15 [1] */ | ||
3757 | FN_VI0_DATA6_VI0_B6, FN_AVB_RXD5, | ||
3758 | /* IP6_14 [1] */ | ||
3759 | FN_VI0_DATA5_VI0_B5, FN_AVB_RXD4, | ||
3760 | /* IP6_13 [1] */ | ||
3761 | FN_VI0_DATA4_VI0_B4, FN_AVB_RXD3, | ||
3762 | /* IP6_12 [1] */ | ||
3763 | FN_VI0_DATA3_VI0_B3, FN_AVB_RXD2, | ||
3764 | /* IP6_11 [1] */ | ||
3765 | FN_VI0_DATA2_VI0_B2, FN_AVB_RXD1, | ||
3766 | /* IP6_10 [1] */ | ||
3767 | FN_VI0_DATA1_VI0_B1, FN_AVB_RXD0, | ||
3768 | /* IP6_9 [1] */ | ||
3769 | FN_VI0_DATA0_VI0_B0, FN_AVB_RX_DV, | ||
3770 | /* IP6_8 [1] */ | ||
3771 | FN_VI0_CLK, FN_AVB_RX_CLK, | ||
3772 | /* IP6_7_6 [2] */ | ||
3773 | FN_DU0_CDE, FN_QPOLB, FN_CC50_STATE31, 0, | ||
3774 | /* IP6_5_4 [2] */ | ||
3775 | FN_DU0_DISP, FN_QPOLA, FN_CC50_STATE30, 0, | ||
3776 | /* IP6_3_2 [2] */ | ||
3777 | FN_DU0_EXODDF_DU0_ODDF_DISP_CDE, FN_QCPV_QDE, FN_CC50_STATE29, | ||
3778 | /* IP6_1_0 [2] */ | ||
3779 | FN_DU0_EXVSYNC_DU0_VSYNC, FN_QSTB_QHE, FN_CC50_STATE28, 0, } | ||
3780 | }, | ||
3781 | { PINMUX_CFG_REG_VAR("IPSR7", 0xE606003C, 32, | ||
3782 | 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3) { | ||
3783 | /* IP7_31 [1] */ | ||
3784 | FN_DREQ0_N, FN_SCIFB1_RXD, | ||
3785 | /* IP7_30 [1] */ | ||
3786 | 0, 0, | ||
3787 | /* IP7_29_27 [3] */ | ||
3788 | FN_ETH_TXD0, FN_VI0_R2, FN_SCIF3_RXD_B, FN_I2C4_SCL_E, | ||
3789 | FN_AVB_GTX_CLK, FN_SSI_WS6_B, 0, 0, | ||
3790 | /* IP7_26_24 [3] */ | ||
3791 | FN_ETH_MAGIC, FN_VI0_R1, FN_SCIF3_SCK_B, FN_AVB_TX_ER, | ||
3792 | FN_SSI_SCK6_B, 0, 0, 0, | ||
3793 | /* IP7_23_21 [3] */ | ||
3794 | FN_ETH_TX_EN, FN_VI0_R0, FN_SCIF2_TXD_C, FN_IIC1_SDA_D, | ||
3795 | FN_AVB_TXD7, FN_SSI_SDATA5_B, 0, 0, | ||
3796 | /* IP7_20_18 [3] */ | ||
3797 | FN_ETH_TXD1, FN_VI0_G7, FN_SCIF2_RXD_C, FN_IIC1_SCL_D, | ||
3798 | FN_AVB_TXD6, FN_SSI_WS5_B, 0, 0, | ||
3799 | /* IP7_17_15 [3] */ | ||
3800 | FN_ETH_REFCLK, FN_VI0_G6, FN_SCIF2_SCK_C, FN_AVB_TXD5, | ||
3801 | FN_SSI_SCK5_B, 0, 0, 0, | ||
3802 | /* IP7_14_12 [3] */ | ||
3803 | FN_ETH_LINK, FN_VI0_G5, FN_MSIOF2_SS2_B, FN_SCIF4_TXD_D, | ||
3804 | FN_AVB_TXD4, FN_ADICHS2, 0, 0, | ||
3805 | /* IP7_11_9 [3] */ | ||
3806 | FN_ETH_RXD1, FN_VI0_G4, FN_MSIOF2_SS1_B, FN_SCIF4_RXD_D, | ||
3807 | FN_AVB_TXD3, FN_ADICHS1, 0, 0, | ||
3808 | /* IP7_8_6 [3] */ | ||
3809 | FN_ETH_RXD0, FN_VI0_G3, FN_MSIOF2_SYNC_B, FN_CAN0_TX_B, | ||
3810 | FN_AVB_TXD2, FN_ADICHS0, FN_AD_NCS_N, 0, | ||
3811 | /* IP7_5_3 [3] */ | ||
3812 | FN_ETH_RX_ER, FN_VI0_G2, FN_MSIOF2_SCK_B, FN_CAN0_RX_B, | ||
3813 | FN_AVB_TXD1, FN_ADICLK, FN_AD_CLK, 0, | ||
3814 | /* IP7_2_0 [3] */ | ||
3815 | FN_ETH_CRS_DV, FN_VI0_G1, FN_MSIOF2_TXD_B, FN_IIC0_SDA_D, | ||
3816 | FN_AVB_TXD0, FN_ADICS_SAMP, FN_AD_DO, 0, } | ||
3817 | }, | ||
3818 | { PINMUX_CFG_REG_VAR("IPSR8", 0xE6060040, 32, | ||
3819 | 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3) { | ||
3820 | /* IP8_31_29 [3] */ | ||
3821 | FN_MSIOF0_RXD, FN_SCIF5_RXD, FN_I2C2_SCL_C, FN_DU1_DR2, | ||
3822 | FN_RIF1_D0_B, FN_TS_SDEN_D, FN_FMCLK_C, FN_RDS_CLK, | ||
3823 | /* IP8_28_26 [3] */ | ||
3824 | FN_I2C1_SDA, FN_SCIF4_TXD, FN_IRQ5, FN_DU1_DR1, | ||
3825 | FN_RIF1_CLK_B, FN_TS_SCK_D, FN_BPFCLK_C, 0, | ||
3826 | /* IP8_25_23 [3] */ | ||
3827 | FN_I2C1_SCL, FN_SCIF4_RXD, FN_PWM5_B, FN_DU1_DR0, | ||
3828 | FN_RIF1_SYNC_B, FN_TS_SDATA_D, FN_TPUTO1_B, 0, | ||
3829 | /* IP8_22_20 [3] */ | ||
3830 | FN_I2C0_SDA, FN_SCIF0_TXD_C, FN_TPUTO0, FN_CAN_CLK, | ||
3831 | FN_DVC_MUTE, FN_CAN1_TX_D, 0, 0, | ||
3832 | /* IP8_19_17 [3] */ | ||
3833 | FN_I2C0_SCL, FN_SCIF0_RXD_C, FN_PWM5, FN_TCLK1_B, | ||
3834 | FN_AVB_GTXREFCLK, FN_CAN1_RX_D, FN_TPUTO0_B, 0, | ||
3835 | /* IP8_16_15 [2] */ | ||
3836 | FN_HSCIF0_HSCK, FN_SCIF_CLK_B, FN_AVB_CRS, FN_AUDIO_CLKC_B, | ||
3837 | /* IP8_14_12 [3] */ | ||
3838 | FN_HSCIF0_HRTS_N, FN_VI0_R7, FN_SCIF0_TXD_D, FN_I2C0_SDA_E, | ||
3839 | FN_AVB_PHY_INT, FN_SSI_SDATA8_B, 0, 0, | ||
3840 | /* IP8_11_9 [3] */ | ||
3841 | FN_HSCIF0_HCTS_N, FN_VI0_R6, FN_SCIF0_RXD_D, FN_I2C0_SCL_E, | ||
3842 | FN_AVB_MAGIC, FN_SSI_SDATA7_B, 0, 0, | ||
3843 | /* IP8_8_6 [3] */ | ||
3844 | FN_HSCIF0_HTX, FN_VI0_R5, FN_I2C1_SDA_C, FN_AUDIO_CLKB_B, | ||
3845 | FN_AVB_LINK, FN_SSI_WS78_B, 0, 0, | ||
3846 | /* IP8_5_3 [3] */ | ||
3847 | FN_HSCIF0_HRX, FN_VI0_R4, FN_I2C1_SCL_C, FN_AUDIO_CLKA_B, | ||
3848 | FN_AVB_MDIO, FN_SSI_SCK78_B, 0, 0, | ||
3849 | /* IP8_2_0 [3] */ | ||
3850 | FN_ETH_MDC, FN_VI0_R3, FN_SCIF3_TXD_B, FN_I2C4_SDA_E, | ||
3851 | FN_AVB_MDC, FN_SSI_SDATA6_B, 0, 0, } | ||
3852 | }, | ||
3853 | { PINMUX_CFG_REG_VAR("IPSR9", 0xE6060044, 32, | ||
3854 | 1, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3) { | ||
3855 | /* IP9_31 [1] */ | ||
3856 | 0, 0, | ||
3857 | /* IP9_30_28 [3] */ | ||
3858 | FN_SCIF1_SCK, FN_PWM3, FN_TCLK2, FN_DU1_DG5, | ||
3859 | FN_SSI_SDATA1_B, FN_CAN_TXCLK, FN_CC50_STATE34, 0, | ||
3860 | /* IP9_27_25 [3] */ | ||
3861 | FN_HSCIF1_HRTS_N, FN_SCIFA4_TXD, FN_IERX, FN_DU1_DG4, | ||
3862 | FN_SSI_WS1_B, FN_CAN_STEP0, FN_CC50_STATE33, 0, | ||
3863 | /* IP9_24_22 [3] */ | ||
3864 | FN_HSCIF1_HCTS_N, FN_SCIFA4_RXD, FN_IECLK, FN_DU1_DG3, | ||
3865 | FN_SSI_SCK1_B, FN_CAN_DEBUG_HW_TRIGGER, FN_CC50_STATE32, 0, | ||
3866 | /* IP9_21_19 [3] */ | ||
3867 | FN_HSCIF1_HSCK, FN_PWM2, FN_IETX, FN_DU1_DG2, | ||
3868 | FN_REMOCON_B, FN_SPEEDIN_B, FN_VSP_B, 0, | ||
3869 | /* IP9_18_17 [2] */ | ||
3870 | FN_HSCIF1_HTX, FN_I2C4_SDA, FN_TPUTO1, FN_DU1_DG1, | ||
3871 | /* IP9_16_15 [2] */ | ||
3872 | FN_HSCIF1_HRX, FN_I2C4_SCL, FN_PWM6, FN_DU1_DG0, | ||
3873 | /* IP9_14_12 [3] */ | ||
3874 | FN_MSIOF0_SS2, FN_SCIFA0_TXD, FN_TS_SPSYNC, FN_DU1_DR7, | ||
3875 | FN_RIF1_D1, FN_FMIN_B, FN_RDS_DATA_B, 0, | ||
3876 | /* IP9_11_9 [3] */ | ||
3877 | FN_MSIOF0_SS1, FN_SCIFA0_RXD, FN_TS_SDEN, FN_DU1_DR6, | ||
3878 | FN_RIF1_D0, FN_FMCLK_B, FN_RDS_CLK_B, 0, | ||
3879 | /* IP9_8_6 [3] */ | ||
3880 | FN_MSIOF0_SYNC, FN_PWM1, FN_TS_SCK, FN_DU1_DR5, | ||
3881 | FN_RIF1_CLK, FN_BPFCLK_B, 0, 0, | ||
3882 | /* IP9_5_3 [3] */ | ||
3883 | FN_MSIOF0_SCK, FN_IRQ0, FN_TS_SDATA, FN_DU1_DR4, | ||
3884 | FN_RIF1_SYNC, FN_TPUTO1_C, 0, 0, | ||
3885 | /* IP9_2_0 [3] */ | ||
3886 | FN_MSIOF0_TXD, FN_SCIF5_TXD, FN_I2C2_SDA_C, FN_DU1_DR3, | ||
3887 | FN_RIF1_D1_B, FN_TS_SPSYNC_D, FN_FMIN_C, FN_RDS_DATA, } | ||
3888 | }, | ||
3889 | { PINMUX_CFG_REG_VAR("IPSR10", 0xE6060048, 32, | ||
3890 | 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3) { | ||
3891 | /* IP10_31_30 [2] */ | ||
3892 | FN_SSI_SCK5, FN_SCIFA3_SCK, FN_DU1_DOTCLKIN, FN_CAN_DEBUGOUT10, | ||
3893 | /* IP10_29_27 [3] */ | ||
3894 | FN_I2C2_SDA, FN_SCIFA5_TXD, FN_DU1_DB7, FN_AUDIO_CLKOUT_C, | ||
3895 | FN_CAN_DEBUGOUT9, 0, 0, 0, | ||
3896 | /* IP10_26_24 [3] */ | ||
3897 | FN_I2C2_SCL, FN_SCIFA5_RXD, FN_DU1_DB6, FN_AUDIO_CLKC_C, | ||
3898 | FN_SSI_SDATA4_B, FN_CAN_DEBUGOUT8, 0, 0, | ||
3899 | /* IP10_23_21 [3] */ | ||
3900 | FN_SCIF3_TXD, FN_I2C1_SDA_E, FN_FMIN_D, FN_DU1_DB5, | ||
3901 | FN_AUDIO_CLKB_C, FN_SSI_WS4_B, FN_CAN_DEBUGOUT7, FN_RDS_DATA_C, | ||
3902 | /* IP10_20_18 [3] */ | ||
3903 | FN_SCIF3_RXD, FN_I2C1_SCL_E, FN_FMCLK_D, FN_DU1_DB4, | ||
3904 | FN_AUDIO_CLKA_C, FN_SSI_SCK4_B, FN_CAN_DEBUGOUT6, FN_RDS_CLK_C, | ||
3905 | /* IP10_17_15 [3] */ | ||
3906 | FN_SCIF3_SCK, FN_IRQ2, FN_BPFCLK_D, FN_DU1_DB3, | ||
3907 | FN_SSI_SDATA9_B, FN_TANS2, FN_CAN_DEBUGOUT5, FN_CC50_OSCOUT, | ||
3908 | /* IP10_14_12 [3] */ | ||
3909 | FN_SCIF2_SCK, FN_IRQ1, FN_DU1_DB2, FN_SSI_WS9_B, | ||
3910 | FN_USB0_IDIN, FN_CAN_DEBUGOUT4, FN_CC50_STATE39, 0, | ||
3911 | /* IP10_11_9 [3] */ | ||
3912 | FN_SCIF2_TXD, FN_IIC1_SDA, FN_DU1_DB1, FN_SSI_SCK9_B, | ||
3913 | FN_USB0_OVC1, FN_CAN_DEBUGOUT3, FN_CC50_STATE38, 0, | ||
3914 | /* IP10_8_6 [3] */ | ||
3915 | FN_SCIF2_RXD, FN_IIC1_SCL, FN_DU1_DB0, FN_SSI_SDATA2_B, | ||
3916 | FN_USB0_EXTLP, FN_CAN_DEBUGOUT2, FN_CC50_STATE37, 0, | ||
3917 | /* IP10_5_3 [3] */ | ||
3918 | FN_SCIF1_TXD, FN_IIC0_SDA, FN_DU1_DG7, FN_SSI_WS2_B, | ||
3919 | FN_CAN_DEBUGOUT1, FN_CC50_STATE36, 0, 0, | ||
3920 | /* IP10_2_0 [3] */ | ||
3921 | FN_SCIF1_RXD, FN_IIC0_SCL, FN_DU1_DG6, FN_SSI_SCK2_B, | ||
3922 | FN_CAN_DEBUGOUT0, FN_CC50_STATE35, 0, 0, } | ||
3923 | }, | ||
3924 | { PINMUX_CFG_REG_VAR("IPSR11", 0xE606004C, 32, | ||
3925 | 2, 3, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3) { | ||
3926 | /* IP11_31_30 [2] */ | ||
3927 | 0, 0, 0, 0, | ||
3928 | /* IP11_29_27 [3] */ | ||
3929 | FN_SSI_SDATA0, FN_MSIOF1_SCK_B, FN_PWM0_B, FN_ADICLK_B, | ||
3930 | FN_AD_CLK_B, 0, 0, 0, | ||
3931 | /* IP11_26_24 [3] */ | ||
3932 | FN_SSI_WS0129, FN_MSIOF1_TXD_B, FN_SCIF5_TXD_D, FN_ADICS_SAMP_B, | ||
3933 | FN_AD_DO_B, 0, 0, 0, | ||
3934 | /* IP11_23_21 [3] */ | ||
3935 | FN_SSI_SCK0129, FN_MSIOF1_RXD_B, FN_SCIF5_RXD_D, FN_ADIDATA_B, | ||
3936 | FN_AD_DI_B, FN_PCMWE_N, 0, 0, | ||
3937 | /* IP11_20_18 [3] */ | ||
3938 | FN_SSI_SDATA7, FN_SCIFA2_TXD_B, FN_IRQ8, FN_AUDIO_CLKA_D, | ||
3939 | FN_CAN_CLK_D, FN_PCMOE_N, 0, 0, | ||
3940 | /* IP11_17_16 [2] */ | ||
3941 | FN_SSI_WS78, FN_SCIFA2_RXD_B, FN_IIC0_SCL_C, FN_DU1_CDE, | ||
3942 | /* IP11_15_14 [2] */ | ||
3943 | FN_SSI_SCK78, FN_SCIFA2_SCK_B, FN_IIC0_SDA_C, FN_DU1_DISP, | ||
3944 | /* IP11_13_11 [3] */ | ||
3945 | FN_SSI_SDATA6, FN_SCIFA1_TXD_B, FN_I2C4_SDA_C, | ||
3946 | FN_DU1_EXODDF_DU1_ODDF_DISP_CDE, FN_CAN_DEBUGOUT15, 0, 0, 0, | ||
3947 | /* IP11_10_8 [3] */ | ||
3948 | FN_SSI_WS6, FN_SCIFA1_RXD_B, FN_I2C4_SCL_C, | ||
3949 | FN_DU1_EXVSYNC_DU1_VSYNC, FN_CAN_DEBUGOUT14, 0, 0, 0, | ||
3950 | /* IP11_7_6 [2] */ | ||
3951 | FN_SSI_SCK6, FN_SCIFA1_SCK_B, FN_DU1_EXHSYNC_DU1_HSYNC, | ||
3952 | FN_CAN_DEBUGOUT13, | ||
3953 | /* IP11_5_3 [3] */ | ||
3954 | FN_SSI_SDATA5, FN_SCIFA3_TXD, FN_I2C3_SDA_C, FN_DU1_DOTCLKOUT1, | ||
3955 | FN_CAN_DEBUGOUT12, 0, 0, 0, | ||
3956 | /* IP11_2_0 [3] */ | ||
3957 | FN_SSI_WS5, FN_SCIFA3_RXD, FN_I2C3_SCL_C, FN_DU1_DOTCLKOUT0, | ||
3958 | FN_CAN_DEBUGOUT11, 0, 0, 0, } | ||
3959 | }, | ||
3960 | { PINMUX_CFG_REG_VAR("IPSR12", 0xE6060050, 32, | ||
3961 | 2, 3, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3) { | ||
3962 | /* IP12_31_30 [2] */ | ||
3963 | 0, 0, 0, 0, | ||
3964 | /* IP12_29_27 [3] */ | ||
3965 | FN_SSI_SCK2, FN_HSCIF1_HTX_B, FN_VI1_DATA2, FN_MDATA, | ||
3966 | FN_ATAWR0_N, FN_ETH_RXD1_B, 0, 0, | ||
3967 | /* IP12_26_24 [3] */ | ||
3968 | FN_SSI_SDATA1, FN_HSCIF1_HRX_B, FN_VI1_DATA1, FN_SDATA, | ||
3969 | FN_ATAG0_N, FN_ETH_RXD0_B, 0, 0, | ||
3970 | /* IP12_23_21 [3] */ | ||
3971 | FN_SSI_WS1, FN_SCIF1_TXD_B, FN_IIC1_SDA_C, FN_VI1_DATA0, | ||
3972 | FN_CAN0_TX_D, FN_AVB_AVTP_MATCH, FN_ETH_RX_ER_B, 0, | ||
3973 | /* IP12_20_18 [3] */ | ||
3974 | FN_SSI_SCK1, FN_SCIF1_RXD_B, FN_IIC1_SCL_C, FN_VI1_CLK, | ||
3975 | FN_CAN0_RX_D, FN_AVB_AVTP_CAPTURE, FN_ETH_CRS_DV_B, 0, | ||
3976 | /* IP12_17_15 [3] */ | ||
3977 | FN_SSI_SDATA8, FN_SCIF1_SCK_B, FN_PWM1_B, FN_IRQ9, | ||
3978 | FN_REMOCON, FN_DACK2, FN_ETH_MDIO_B, 0, | ||
3979 | /* IP12_14_13 [2] */ | ||
3980 | FN_SSI_SDATA4, FN_MLB_DAT, FN_IERX_B, FN_IRD_SCK, | ||
3981 | /* IP12_12_11 [2] */ | ||
3982 | FN_SSI_WS4, FN_MLB_SIG, FN_IECLK_B, FN_IRD_RX, | ||
3983 | /* IP12_10_9 [2] */ | ||
3984 | FN_SSI_SCK4, FN_MLB_CLK, FN_IETX_B, FN_IRD_TX, | ||
3985 | /* IP12_8_6 [3] */ | ||
3986 | FN_SSI_SDATA3, FN_MSIOF1_SS2_B, FN_SCIFA1_TXD_C, FN_ADICHS2_B, | ||
3987 | FN_CAN1_TX_C, FN_DREQ2_N, 0, 0, | ||
3988 | /* IP12_5_3 [3] */ | ||
3989 | FN_SSI_WS34, FN_MSIOF1_SS1_B, FN_SCIFA1_RXD_C, FN_ADICHS1_B, | ||
3990 | FN_CAN1_RX_C, FN_DACK1_B, 0, 0, | ||
3991 | /* IP12_2_0 [3] */ | ||
3992 | FN_SSI_SCK34, FN_MSIOF1_SYNC_B, FN_SCIFA1_SCK_C, FN_ADICHS0_B, | ||
3993 | FN_AD_NCS_N_B, FN_DREQ1_N_B, 0, 0, } | ||
3994 | }, | ||
3995 | { PINMUX_CFG_REG_VAR("IPSR13", 0xE6060054, 32, | ||
3996 | 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3) { | ||
3997 | /* IP13_31 [1] */ | ||
3998 | 0, 0, | ||
3999 | /* IP13_30 [1] */ | ||
4000 | 0, 0, | ||
4001 | /* IP13_29 [1] */ | ||
4002 | 0, 0, | ||
4003 | /* IP13_28 [1] */ | ||
4004 | 0, 0, | ||
4005 | /* IP13_27 [1] */ | ||
4006 | 0, 0, | ||
4007 | /* IP13_26_24 [3] */ | ||
4008 | FN_AUDIO_CLKOUT, FN_I2C4_SDA_B, FN_SCIFA5_TXD_D, FN_VI1_VSYNC_N, | ||
4009 | FN_TS_SPSYNC_C, FN_RIF0_D1_B, FN_FMIN_E, FN_RDS_DATA_D, | ||
4010 | /* IP13_23_21 [3] */ | ||
4011 | FN_AUDIO_CLKC, FN_I2C4_SCL_B, FN_SCIFA5_RXD_D, FN_VI1_HSYNC_N, | ||
4012 | FN_TS_SDEN_C, FN_RIF0_D0_B, FN_FMCLK_E, FN_RDS_CLK_D, | ||
4013 | /* IP13_20_18 [3] */ | ||
4014 | FN_AUDIO_CLKB, FN_I2C0_SDA_B, FN_SCIFA4_TXD_D, FN_VI1_FIELD, | ||
4015 | FN_TS_SCK_C, FN_RIF0_CLK_B, FN_BPFCLK_E, FN_ETH_MDC_B, | ||
4016 | /* IP13_17_15 [3] */ | ||
4017 | FN_AUDIO_CLKA, FN_I2C0_SCL_B, FN_SCIFA4_RXD_D, FN_VI1_CLKENB, | ||
4018 | FN_TS_SDATA_C, FN_RIF0_SYNC_B, FN_ETH_TXD0_B, 0, | ||
4019 | /* IP13_14_12 [3] */ | ||
4020 | FN_SSI_SDATA9, FN_SCIF2_TXD_B, FN_I2C3_SDA_E, FN_VI1_DATA7, | ||
4021 | FN_ATADIR0_N, FN_ETH_MAGIC_B, 0, 0, | ||
4022 | /* IP13_11_9 [3] */ | ||
4023 | FN_SSI_WS9, FN_SCIF2_RXD_B, FN_I2C3_SCL_E, FN_VI1_DATA6, | ||
4024 | FN_ATARD0_N, FN_ETH_TX_EN_B, 0, 0, | ||
4025 | /* IP13_8_6 [3] */ | ||
4026 | FN_SSI_SCK9, FN_SCIF2_SCK_B, FN_PWM2_B, FN_VI1_DATA5, | ||
4027 | FN_MTS_N, FN_EX_WAIT1, FN_ETH_TXD1_B, 0, | ||
4028 | /* IP13_5_3 [2] */ | ||
4029 | FN_SSI_SDATA2, FN_HSCIF1_HRTS_N_B, FN_SCIFA0_TXD_D, | ||
4030 | FN_VI1_DATA4, FN_STM_N, FN_ATACS10_N, FN_ETH_REFCLK_B, 0, | ||
4031 | /* IP13_2_0 [3] */ | ||
4032 | FN_SSI_WS2, FN_HSCIF1_HCTS_N_B, FN_SCIFA0_RXD_D, FN_VI1_DATA3, | ||
4033 | FN_SCKZ, FN_ATACS00_N, FN_ETH_LINK_B, 0, } | ||
4034 | }, | ||
4035 | { PINMUX_CFG_REG_VAR("MOD_SEL", 0xE6060090, 32, | ||
4036 | 2, 1, 2, 3, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, | ||
4037 | 2, 1) { | ||
4038 | /* SEL_ADG [2] */ | ||
4039 | FN_SEL_ADG_0, FN_SEL_ADG_1, FN_SEL_ADG_2, FN_SEL_ADG_3, | ||
4040 | /* SEL_ADI [1] */ | ||
4041 | FN_SEL_ADI_0, FN_SEL_ADI_1, | ||
4042 | /* SEL_CAN [2] */ | ||
4043 | FN_SEL_CAN_0, FN_SEL_CAN_1, FN_SEL_CAN_2, FN_SEL_CAN_3, | ||
4044 | /* SEL_DARC [3] */ | ||
4045 | FN_SEL_DARC_0, FN_SEL_DARC_1, FN_SEL_DARC_2, FN_SEL_DARC_3, | ||
4046 | FN_SEL_DARC_4, 0, 0, 0, | ||
4047 | /* SEL_DR0 [1] */ | ||
4048 | FN_SEL_DR0_0, FN_SEL_DR0_1, | ||
4049 | /* SEL_DR1 [1] */ | ||
4050 | FN_SEL_DR1_0, FN_SEL_DR1_1, | ||
4051 | /* SEL_DR2 [1] */ | ||
4052 | FN_SEL_DR2_0, FN_SEL_DR2_1, | ||
4053 | /* SEL_DR3 [1] */ | ||
4054 | FN_SEL_DR3_0, FN_SEL_DR3_1, | ||
4055 | /* SEL_ETH [1] */ | ||
4056 | FN_SEL_ETH_0, FN_SEL_ETH_1, | ||
4057 | /* SLE_FSN [1] */ | ||
4058 | FN_SEL_FSN_0, FN_SEL_FSN_1, | ||
4059 | /* SEL_IC200 [3] */ | ||
4060 | FN_SEL_I2C00_0, FN_SEL_I2C00_1, FN_SEL_I2C00_2, FN_SEL_I2C00_3, | ||
4061 | FN_SEL_I2C00_4, 0, 0, 0, | ||
4062 | /* SEL_I2C01 [3] */ | ||
4063 | FN_SEL_I2C01_0, FN_SEL_I2C01_1, FN_SEL_I2C01_2, FN_SEL_I2C01_3, | ||
4064 | FN_SEL_I2C01_4, 0, 0, 0, | ||
4065 | /* SEL_I2C02 [3] */ | ||
4066 | FN_SEL_I2C02_0, FN_SEL_I2C02_1, FN_SEL_I2C02_2, FN_SEL_I2C02_3, | ||
4067 | FN_SEL_I2C02_4, 0, 0, 0, | ||
4068 | /* SEL_I2C03 [3] */ | ||
4069 | FN_SEL_I2C03_0, FN_SEL_I2C03_1, FN_SEL_I2C03_2, FN_SEL_I2C03_3, | ||
4070 | FN_SEL_I2C03_4, 0, 0, 0, | ||
4071 | /* SEL_I2C04 [3] */ | ||
4072 | FN_SEL_I2C04_0, FN_SEL_I2C04_1, FN_SEL_I2C04_2, FN_SEL_I2C04_3, | ||
4073 | FN_SEL_I2C04_4, 0, 0, 0, | ||
4074 | /* SEL_IIC00 [2] */ | ||
4075 | FN_SEL_IIC00_0, FN_SEL_IIC00_1, FN_SEL_IIC00_2, FN_SEL_IIC00_3, | ||
4076 | /* SEL_AVB [1] */ | ||
4077 | FN_SEL_AVB_0, FN_SEL_AVB_1, } | ||
4078 | }, | ||
4079 | { PINMUX_CFG_REG_VAR("MOD_SEL2", 0xE6060094, 32, | ||
4080 | 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, | ||
4081 | 2, 2, 2, 1, 1, 2) { | ||
4082 | /* SEL_IEB [2] */ | ||
4083 | FN_SEL_IEB_0, FN_SEL_IEB_1, FN_SEL_IEB_2, 0, | ||
4084 | /* SEL_IIC0 [2] */ | ||
4085 | FN_SEL_IIC01_0, FN_SEL_IIC01_1, FN_SEL_IIC01_2, FN_SEL_IIC01_3, | ||
4086 | /* SEL_LBS [1] */ | ||
4087 | FN_SEL_LBS_0, FN_SEL_LBS_1, | ||
4088 | /* SEL_MSI1 [1] */ | ||
4089 | FN_SEL_MSI1_0, FN_SEL_MSI1_1, | ||
4090 | /* SEL_MSI2 [1] */ | ||
4091 | FN_SEL_MSI2_0, FN_SEL_MSI2_1, | ||
4092 | /* SEL_RAD [1] */ | ||
4093 | FN_SEL_RAD_0, FN_SEL_RAD_1, | ||
4094 | /* SEL_RCN [1] */ | ||
4095 | FN_SEL_RCN_0, FN_SEL_RCN_1, | ||
4096 | /* SEL_RSP [1] */ | ||
4097 | FN_SEL_RSP_0, FN_SEL_RSP_1, | ||
4098 | /* SEL_SCIFA0 [2] */ | ||
4099 | FN_SEL_SCIFA0_0, FN_SEL_SCIFA0_1, FN_SEL_SCIFA0_2, | ||
4100 | FN_SEL_SCIFA0_3, | ||
4101 | /* SEL_SCIFA1 [2] */ | ||
4102 | FN_SEL_SCIFA1_0, FN_SEL_SCIFA1_1, FN_SEL_SCIFA1_2, 0, | ||
4103 | /* SEL_SCIFA2 [1] */ | ||
4104 | FN_SEL_SCIFA2_0, FN_SEL_SCIFA2_1, | ||
4105 | /* SEL_SCIFA3 [1] */ | ||
4106 | FN_SEL_SCIFA3_0, FN_SEL_SCIFA3_1, | ||
4107 | /* SEL_SCIFA4 [2] */ | ||
4108 | FN_SEL_SCIFA4_0, FN_SEL_SCIFA4_1, FN_SEL_SCIFA4_2, | ||
4109 | FN_SEL_SCIFA4_3, | ||
4110 | /* SEL_SCIFA5 [2] */ | ||
4111 | FN_SEL_SCIFA5_0, FN_SEL_SCIFA5_1, FN_SEL_SCIFA5_2, | ||
4112 | FN_SEL_SCIFA5_3, | ||
4113 | /* SEL_SPDM [1] */ | ||
4114 | FN_SEL_SPDM_0, FN_SEL_SPDM_1, | ||
4115 | /* SEL_TMU [1] */ | ||
4116 | FN_SEL_TMU_0, FN_SEL_TMU_1, | ||
4117 | /* SEL_TSIF0 [2] */ | ||
4118 | FN_SEL_TSIF0_0, FN_SEL_TSIF0_1, FN_SEL_TSIF0_2, FN_SEL_TSIF0_3, | ||
4119 | /* SEL_CAN0 [2] */ | ||
4120 | FN_SEL_CAN0_0, FN_SEL_CAN0_1, FN_SEL_CAN0_2, FN_SEL_CAN0_3, | ||
4121 | /* SEL_CAN1 [2] */ | ||
4122 | FN_SEL_CAN1_0, FN_SEL_CAN1_1, FN_SEL_CAN1_2, FN_SEL_CAN1_3, | ||
4123 | /* SEL_HSCIF0 [1] */ | ||
4124 | FN_SEL_HSCIF0_0, FN_SEL_HSCIF0_1, | ||
4125 | /* SEL_HSCIF1 [1] */ | ||
4126 | FN_SEL_HSCIF1_0, FN_SEL_HSCIF1_1, | ||
4127 | /* SEL_RDS [2] */ | ||
4128 | FN_SEL_RDS_0, FN_SEL_RDS_1, FN_SEL_RDS_2, FN_SEL_RDS_3, } | ||
4129 | }, | ||
4130 | { PINMUX_CFG_REG_VAR("MOD_SEL3", 0xE6060098, 32, | ||
4131 | 2, 2, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, | ||
4132 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) { | ||
4133 | /* SEL_SCIF0 [2] */ | ||
4134 | FN_SEL_SCIF0_0, FN_SEL_SCIF0_1, FN_SEL_SCIF0_2, FN_SEL_SCIF0_3, | ||
4135 | /* SEL_SCIF1 [2] */ | ||
4136 | FN_SEL_SCIF1_0, FN_SEL_SCIF1_1, FN_SEL_SCIF1_2, 0, | ||
4137 | /* SEL_SCIF2 [2] */ | ||
4138 | FN_SEL_SCIF2_0, FN_SEL_SCIF2_1, FN_SEL_SCIF2_2, 0, | ||
4139 | /* SEL_SCIF3 [1] */ | ||
4140 | FN_SEL_SCIF3_0, FN_SEL_SCIF3_1, | ||
4141 | /* SEL_SCIF4 [3] */ | ||
4142 | FN_SEL_SCIF4_0, FN_SEL_SCIF4_1, FN_SEL_SCIF4_2, FN_SEL_SCIF4_3, | ||
4143 | FN_SEL_SCIF4_4, 0, 0, 0, | ||
4144 | /* SEL_SCIF5 [2] */ | ||
4145 | FN_SEL_SCIF5_0, FN_SEL_SCIF5_1, FN_SEL_SCIF5_2, FN_SEL_SCIF5_3, | ||
4146 | /* SEL_SSI1 [1] */ | ||
4147 | FN_SEL_SSI1_0, FN_SEL_SSI1_1, | ||
4148 | /* SEL_SSI2 [1] */ | ||
4149 | FN_SEL_SSI2_0, FN_SEL_SSI2_1, | ||
4150 | /* SEL_SSI4 [1] */ | ||
4151 | FN_SEL_SSI4_0, FN_SEL_SSI4_1, | ||
4152 | /* SEL_SSI5 [1] */ | ||
4153 | FN_SEL_SSI5_0, FN_SEL_SSI5_1, | ||
4154 | /* SEL_SSI6 [1] */ | ||
4155 | FN_SEL_SSI6_0, FN_SEL_SSI6_1, | ||
4156 | /* SEL_SSI7 [1] */ | ||
4157 | FN_SEL_SSI7_0, FN_SEL_SSI7_1, | ||
4158 | /* SEL_SSI8 [1] */ | ||
4159 | FN_SEL_SSI8_0, FN_SEL_SSI8_1, | ||
4160 | /* SEL_SSI9 [1] */ | ||
4161 | FN_SEL_SSI9_0, FN_SEL_SSI9_1, | ||
4162 | /* RESERVED [1] */ | ||
4163 | 0, 0, | ||
4164 | /* RESERVED [1] */ | ||
4165 | 0, 0, | ||
4166 | /* RESERVED [1] */ | ||
4167 | 0, 0, | ||
4168 | /* RESERVED [1] */ | ||
4169 | 0, 0, | ||
4170 | /* RESERVED [1] */ | ||
4171 | 0, 0, | ||
4172 | /* RESERVED [1] */ | ||
4173 | 0, 0, | ||
4174 | /* RESERVED [1] */ | ||
4175 | 0, 0, | ||
4176 | /* RESERVED [1] */ | ||
4177 | 0, 0, | ||
4178 | /* RESERVED [1] */ | ||
4179 | 0, 0, | ||
4180 | /* RESERVED [1] */ | ||
4181 | 0, 0, | ||
4182 | /* RESERVED [1] */ | ||
4183 | 0, 0, | ||
4184 | /* RESERVED [1] */ | ||
4185 | 0, 0, } | ||
4186 | }, | ||
4187 | { }, | ||
4188 | }; | ||
4189 | |||
4190 | const struct sh_pfc_soc_info r8a7794_pinmux_info = { | ||
4191 | .name = "r8a77940_pfc", | ||
4192 | .unlock_reg = 0xe6060000, /* PMMR */ | ||
4193 | |||
4194 | .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END }, | ||
4195 | |||
4196 | .pins = pinmux_pins, | ||
4197 | .nr_pins = ARRAY_SIZE(pinmux_pins), | ||
4198 | .groups = pinmux_groups, | ||
4199 | .nr_groups = ARRAY_SIZE(pinmux_groups), | ||
4200 | .functions = pinmux_functions, | ||
4201 | .nr_functions = ARRAY_SIZE(pinmux_functions), | ||
4202 | |||
4203 | .cfg_regs = pinmux_config_regs, | ||
4204 | |||
4205 | .gpio_data = pinmux_data, | ||
4206 | .gpio_data_size = ARRAY_SIZE(pinmux_data), | ||
4207 | }; | ||
diff --git a/drivers/pinctrl/sh-pfc/pinctrl.c b/drivers/pinctrl/sh-pfc/pinctrl.c index 072e7c62cab7..ff678966008b 100644 --- a/drivers/pinctrl/sh-pfc/pinctrl.c +++ b/drivers/pinctrl/sh-pfc/pinctrl.c | |||
@@ -625,8 +625,8 @@ int sh_pfc_register_pinctrl(struct sh_pfc *pfc) | |||
625 | pmx->pctl_desc.npins = pfc->info->nr_pins; | 625 | pmx->pctl_desc.npins = pfc->info->nr_pins; |
626 | 626 | ||
627 | pmx->pctl = pinctrl_register(&pmx->pctl_desc, pfc->dev, pmx); | 627 | pmx->pctl = pinctrl_register(&pmx->pctl_desc, pfc->dev, pmx); |
628 | if (pmx->pctl == NULL) | 628 | if (IS_ERR(pmx->pctl)) |
629 | return -EINVAL; | 629 | return PTR_ERR(pmx->pctl); |
630 | 630 | ||
631 | return 0; | 631 | return 0; |
632 | } | 632 | } |
diff --git a/drivers/pinctrl/sirf/Makefile b/drivers/pinctrl/sirf/Makefile index 3ffc475ce40c..fd58e0bacb2a 100644 --- a/drivers/pinctrl/sirf/Makefile +++ b/drivers/pinctrl/sirf/Makefile | |||
@@ -3,3 +3,4 @@ | |||
3 | obj-y += pinctrl-sirf.o | 3 | obj-y += pinctrl-sirf.o |
4 | obj-y += pinctrl-prima2.o | 4 | obj-y += pinctrl-prima2.o |
5 | obj-y += pinctrl-atlas6.o | 5 | obj-y += pinctrl-atlas6.o |
6 | obj-y += pinctrl-atlas7.o | ||
diff --git a/drivers/pinctrl/sirf/pinctrl-atlas7.c b/drivers/pinctrl/sirf/pinctrl-atlas7.c new file mode 100644 index 000000000000..9384e0aa3996 --- /dev/null +++ b/drivers/pinctrl/sirf/pinctrl-atlas7.c | |||
@@ -0,0 +1,4637 @@ | |||
1 | /* | ||
2 | * pinctrl pads, groups, functions for CSR SiRFatlasVII | ||
3 | * | ||
4 | * Copyright (c) 2011 - 2014 Cambridge Silicon Radio Limited, a CSR plc group | ||
5 | * company. | ||
6 | * | ||
7 | * Licensed under GPLv2 or later. | ||
8 | */ | ||
9 | |||
10 | #include <linux/module.h> | ||
11 | #include <linux/platform_device.h> | ||
12 | #include <linux/io.h> | ||
13 | #include <linux/bitops.h> | ||
14 | #include <linux/irq.h> | ||
15 | #include <linux/slab.h> | ||
16 | #include <linux/clk.h> | ||
17 | #include <linux/of.h> | ||
18 | #include <linux/of_address.h> | ||
19 | #include <linux/of_device.h> | ||
20 | #include <linux/of_platform.h> | ||
21 | #include <linux/of_irq.h> | ||
22 | #include <linux/of_gpio.h> | ||
23 | #include <linux/pinctrl/machine.h> | ||
24 | #include <linux/pinctrl/pinconf.h> | ||
25 | #include <linux/pinctrl/pinctrl.h> | ||
26 | #include <linux/pinctrl/pinmux.h> | ||
27 | #include <linux/pinctrl/consumer.h> | ||
28 | #include <linux/pinctrl/pinconf-generic.h> | ||
29 | #include <linux/gpio.h> | ||
30 | |||
31 | /* Definition of Pad&Mux Properties */ | ||
32 | #define N 0 | ||
33 | |||
34 | /* The Bank contains input-disable regisgers */ | ||
35 | #define BANK_DS 0 | ||
36 | |||
37 | /* Clear Register offset */ | ||
38 | #define CLR_REG(r) ((r) + 0x04) | ||
39 | |||
40 | /* Definition of multiple function select register */ | ||
41 | #define FUNC_CLEAR_MASK 0x7 | ||
42 | #define FUNC_GPIO 0 | ||
43 | #define FUNC_ANALOGUE 0x8 | ||
44 | #define ANA_CLEAR_MASK 0x1 | ||
45 | |||
46 | /* The Atlas7's Pad Type List */ | ||
47 | enum altas7_pad_type { | ||
48 | PAD_T_4WE_PD = 0, /* ZIO_PAD3V_4WE_PD */ | ||
49 | PAD_T_4WE_PU, /* ZIO_PAD3V_4WE_PD */ | ||
50 | PAD_T_16ST, /* ZIO_PAD3V_SDCLK_PD */ | ||
51 | PAD_T_M31_0204_PD, /* PRDW0204SDGZ_M311311_PD */ | ||
52 | PAD_T_M31_0204_PU, /* PRDW0204SDGZ_M311311_PU */ | ||
53 | PAD_T_M31_0610_PD, /* PRUW0610SDGZ_M311311_PD */ | ||
54 | PAD_T_M31_0610_PU, /* PRUW0610SDGZ_M311311_PU */ | ||
55 | PAD_T_AD, /* PRDWUWHW08SCDG_HZ */ | ||
56 | }; | ||
57 | |||
58 | /* Raw value of Driver-Strength Bits */ | ||
59 | #define DS3 BIT(3) | ||
60 | #define DS2 BIT(2) | ||
61 | #define DS1 BIT(1) | ||
62 | #define DS0 BIT(0) | ||
63 | #define DSZ 0 | ||
64 | |||
65 | /* Drive-Strength Intermediate Values */ | ||
66 | #define DS_NULL -1 | ||
67 | #define DS_1BIT_IM_VAL DS0 | ||
68 | #define DS_1BIT_MASK 0x1 | ||
69 | #define DS_2BIT_IM_VAL (DS1 | DS0) | ||
70 | #define DS_2BIT_MASK 0x3 | ||
71 | #define DS_4BIT_IM_VAL (DS3 | DS2 | DS1 | DS0) | ||
72 | #define DS_4BIT_MASK 0xf | ||
73 | |||
74 | /* The Drive-Strength of 4WE Pad DS1 0 CO */ | ||
75 | #define DS_4WE_3 (DS1 | DS0) /* 1 1 3 */ | ||
76 | #define DS_4WE_2 (DS1) /* 1 0 2 */ | ||
77 | #define DS_4WE_1 (DS0) /* 0 1 1 */ | ||
78 | #define DS_4WE_0 (DSZ) /* 0 0 0 */ | ||
79 | |||
80 | /* The Drive-Strength of 16st Pad DS3 2 1 0 CO */ | ||
81 | #define DS_16ST_15 (DS3 | DS2 | DS1 | DS0) /* 1 1 1 1 15 */ | ||
82 | #define DS_16ST_14 (DS3 | DS2 | DS0) /* 1 1 0 1 13 */ | ||
83 | #define DS_16ST_13 (DS3 | DS2 | DS1) /* 1 1 1 0 14 */ | ||
84 | #define DS_16ST_12 (DS2 | DS1 | DS0) /* 0 1 1 1 7 */ | ||
85 | #define DS_16ST_11 (DS2 | DS0) /* 0 1 0 1 5 */ | ||
86 | #define DS_16ST_10 (DS3 | DS1 | DS0) /* 1 0 1 1 11 */ | ||
87 | #define DS_16ST_9 (DS3 | DS0) /* 1 0 0 1 9 */ | ||
88 | #define DS_16ST_8 (DS1 | DS0) /* 0 0 1 1 3 */ | ||
89 | #define DS_16ST_7 (DS2 | DS1) /* 0 1 1 0 6 */ | ||
90 | #define DS_16ST_6 (DS3 | DS2) /* 1 1 0 0 12 */ | ||
91 | #define DS_16ST_5 (DS2) /* 0 1 0 0 4 */ | ||
92 | #define DS_16ST_4 (DS3 | DS1) /* 1 0 1 0 10 */ | ||
93 | #define DS_16ST_3 (DS1) /* 0 0 1 0 2 */ | ||
94 | #define DS_16ST_2 (DS0) /* 0 0 0 1 1 */ | ||
95 | #define DS_16ST_1 (DSZ) /* 0 0 0 0 0 */ | ||
96 | #define DS_16ST_0 (DS3) /* 1 0 0 0 8 */ | ||
97 | |||
98 | /* The Drive-Strength of M31 Pad DS0 CO */ | ||
99 | #define DS_M31_0 (DSZ) /* 0 0 */ | ||
100 | #define DS_M31_1 (DS0) /* 1 1 */ | ||
101 | |||
102 | /* Raw values of Pull Option Bits */ | ||
103 | #define PUN BIT(1) | ||
104 | #define PD BIT(0) | ||
105 | #define PE BIT(0) | ||
106 | #define PZ 0 | ||
107 | |||
108 | /* Definition of Pull Types */ | ||
109 | #define PULL_UP 0 | ||
110 | #define HIGH_HYSTERESIS 1 | ||
111 | #define HIGH_Z 2 | ||
112 | #define PULL_DOWN 3 | ||
113 | #define PULL_DISABLE 4 | ||
114 | #define PULL_ENABLE 5 | ||
115 | #define PULL_UNKNOWN -1 | ||
116 | |||
117 | /* Pull Options for 4WE Pad PUN PD CO */ | ||
118 | #define P4WE_PULL_MASK 0x3 | ||
119 | #define P4WE_PULL_DOWN (PUN | PD) /* 1 1 3 */ | ||
120 | #define P4WE_HIGH_Z (PUN) /* 1 0 2 */ | ||
121 | #define P4WE_HIGH_HYSTERESIS (PD) /* 0 1 1 */ | ||
122 | #define P4WE_PULL_UP (PZ) /* 0 0 0 */ | ||
123 | |||
124 | /* Pull Options for 16ST Pad PUN PD CO */ | ||
125 | #define P16ST_PULL_MASK 0x3 | ||
126 | #define P16ST_PULL_DOWN (PUN | PD) /* 1 1 3 */ | ||
127 | #define P16ST_HIGH_Z (PUN) /* 1 0 2 */ | ||
128 | #define P16ST_PULL_UP (PZ) /* 0 0 0 */ | ||
129 | |||
130 | /* Pull Options for M31 Pad PE */ | ||
131 | #define PM31_PULL_MASK 0x1 | ||
132 | #define PM31_PULL_ENABLED (PE) /* 1 */ | ||
133 | #define PM31_PULL_DISABLED (PZ) /* 0 */ | ||
134 | |||
135 | /* Pull Options for A/D Pad PUN PD CO */ | ||
136 | #define PANGD_PULL_MASK 0x3 | ||
137 | #define PANGD_PULL_DOWN (PUN | PD) /* 1 1 3 */ | ||
138 | #define PANGD_HIGH_Z (PUN) /* 1 0 2 */ | ||
139 | #define PANGD_PULL_UP (PZ) /* 0 0 0 */ | ||
140 | |||
141 | /* Definition of Input Disable */ | ||
142 | #define DI_MASK 0x1 | ||
143 | #define DI_DISABLE 0x1 | ||
144 | #define DI_ENABLE 0x0 | ||
145 | |||
146 | /* Definition of Input Disable Value */ | ||
147 | #define DIV_MASK 0x1 | ||
148 | #define DIV_DISABLE 0x1 | ||
149 | #define DIV_ENABLE 0x0 | ||
150 | |||
151 | struct dt_params { | ||
152 | const char *property; | ||
153 | int value; | ||
154 | }; | ||
155 | |||
156 | /** | ||
157 | * struct atlas7_pad_conf - Atlas7 Pad Configuration | ||
158 | * @id The ID of this Pad. | ||
159 | * @type: The type of this Pad. | ||
160 | * @mux_reg: The mux register offset. | ||
161 | * This register contains the mux. | ||
162 | * @pupd_reg: The pull-up/down register offset. | ||
163 | * @drvstr_reg: The drive-strength register offset. | ||
164 | * @ad_ctrl_reg: The Analogue/Digital Control register. | ||
165 | * | ||
166 | * @mux_bit: The start bit of mux register. | ||
167 | * @pupd_bit: The start bit of pull-up/down register. | ||
168 | * @drvstr_bit: The start bit of drive-strength register. | ||
169 | * @ad_ctrl_bit: The start bit of analogue/digital register. | ||
170 | */ | ||
171 | struct atlas7_pad_config { | ||
172 | const u32 id; | ||
173 | u32 type; | ||
174 | u32 mux_reg; | ||
175 | u32 pupd_reg; | ||
176 | u32 drvstr_reg; | ||
177 | u32 ad_ctrl_reg; | ||
178 | /* bits in register */ | ||
179 | u8 mux_bit; | ||
180 | u8 pupd_bit; | ||
181 | u8 drvstr_bit; | ||
182 | u8 ad_ctrl_bit; | ||
183 | }; | ||
184 | |||
185 | #define PADCONF(pad, t, mr, pr, dsr, adr, mb, pb, dsb, adb) \ | ||
186 | { \ | ||
187 | .id = pad, \ | ||
188 | .type = t, \ | ||
189 | .mux_reg = mr, \ | ||
190 | .pupd_reg = pr, \ | ||
191 | .drvstr_reg = dsr, \ | ||
192 | .ad_ctrl_reg = adr, \ | ||
193 | .mux_bit = mb, \ | ||
194 | .pupd_bit = pb, \ | ||
195 | .drvstr_bit = dsb, \ | ||
196 | .ad_ctrl_bit = adb, \ | ||
197 | } | ||
198 | |||
199 | /** | ||
200 | * struct atlas7_pad_mux - Atlas7 mux | ||
201 | * @bank: The bank of this pad's registers on. | ||
202 | * @pin : The ID of this Pad. | ||
203 | * @func: The mux func on this Pad. | ||
204 | * @dinput_reg: The Input-Disable register offset. | ||
205 | * @dinput_bit: The start bit of Input-Disable register. | ||
206 | * @dinput_val_reg: The Input-Disable-value register offset. | ||
207 | * This register is used to set the value of this pad | ||
208 | * if this pad was disabled. | ||
209 | * @dinput_val_bit: The start bit of Input-Disable Value register. | ||
210 | */ | ||
211 | struct atlas7_pad_mux { | ||
212 | u32 bank; | ||
213 | u32 pin; | ||
214 | u32 func; | ||
215 | u32 dinput_reg; | ||
216 | u32 dinput_bit; | ||
217 | u32 dinput_val_reg; | ||
218 | u32 dinput_val_bit; | ||
219 | }; | ||
220 | |||
221 | #define MUX(b, pad, f, dr, db, dvr, dvb) \ | ||
222 | { \ | ||
223 | .bank = b, \ | ||
224 | .pin = pad, \ | ||
225 | .func = f, \ | ||
226 | .dinput_reg = dr, \ | ||
227 | .dinput_bit = db, \ | ||
228 | .dinput_val_reg = dvr, \ | ||
229 | .dinput_val_bit = dvb, \ | ||
230 | } | ||
231 | |||
232 | struct atlas7_grp_mux { | ||
233 | unsigned int group; | ||
234 | unsigned int pad_mux_count; | ||
235 | const struct atlas7_pad_mux *pad_mux_list; | ||
236 | }; | ||
237 | |||
238 | /** | ||
239 | * struct sirfsoc_pin_group - describes a SiRFprimaII pin group | ||
240 | * @name: the name of this specific pin group | ||
241 | * @pins: an array of discrete physical pins used in this group, taken | ||
242 | * from the driver-local pin enumeration space | ||
243 | * @num_pins: the number of pins in this group array, i.e. the number of | ||
244 | * elements in .pins so we can iterate over that array | ||
245 | */ | ||
246 | struct atlas7_pin_group { | ||
247 | const char *name; | ||
248 | const unsigned int *pins; | ||
249 | const unsigned num_pins; | ||
250 | }; | ||
251 | |||
252 | #define GROUP(n, p) \ | ||
253 | { \ | ||
254 | .name = n, \ | ||
255 | .pins = p, \ | ||
256 | .num_pins = ARRAY_SIZE(p), \ | ||
257 | } | ||
258 | |||
259 | struct atlas7_pmx_func { | ||
260 | const char *name; | ||
261 | const char * const *groups; | ||
262 | const unsigned num_groups; | ||
263 | const struct atlas7_grp_mux *grpmux; | ||
264 | }; | ||
265 | |||
266 | #define FUNCTION(n, g, m) \ | ||
267 | { \ | ||
268 | .name = n, \ | ||
269 | .groups = g, \ | ||
270 | .num_groups = ARRAY_SIZE(g), \ | ||
271 | .grpmux = m, \ | ||
272 | } | ||
273 | |||
274 | struct atlas7_pinctrl_data { | ||
275 | struct pinctrl_pin_desc *pads; | ||
276 | int pads_cnt; | ||
277 | struct atlas7_pin_group *grps; | ||
278 | int grps_cnt; | ||
279 | struct atlas7_pmx_func *funcs; | ||
280 | int funcs_cnt; | ||
281 | struct atlas7_pad_config *confs; | ||
282 | int confs_cnt; | ||
283 | }; | ||
284 | |||
285 | /* Platform info of atlas7 pinctrl */ | ||
286 | #define ATLAS7_PINCTRL_REG_BANKS 2 | ||
287 | #define ATLAS7_PINCTRL_BANK_0_PINS 18 | ||
288 | |||
289 | /** | ||
290 | * Atlas7 GPIO Chip | ||
291 | */ | ||
292 | |||
293 | #define NGPIO_OF_BANK 32 | ||
294 | #define GPIO_TO_BANK(gpio) ((gpio) / NGPIO_OF_BANK) | ||
295 | |||
296 | /* Registers of GPIO Controllers */ | ||
297 | #define ATLAS7_GPIO_BASE(g, b) ((g)->reg + 0x100 * (b)) | ||
298 | #define ATLAS7_GPIO_CTRL(b, i) ((b)->base + 4 * (i)) | ||
299 | #define ATLAS7_GPIO_INT_STATUS(b) ((b)->base + 0x8C) | ||
300 | |||
301 | /* Definition bits of GPIO Control Registers */ | ||
302 | #define ATLAS7_GPIO_CTL_INTR_LOW_MASK BIT(0) | ||
303 | #define ATLAS7_GPIO_CTL_INTR_HIGH_MASK BIT(1) | ||
304 | #define ATLAS7_GPIO_CTL_INTR_TYPE_MASK BIT(2) | ||
305 | #define ATLAS7_GPIO_CTL_INTR_EN_MASK BIT(3) | ||
306 | #define ATLAS7_GPIO_CTL_INTR_STATUS_MASK BIT(4) | ||
307 | #define ATLAS7_GPIO_CTL_OUT_EN_MASK BIT(5) | ||
308 | #define ATLAS7_GPIO_CTL_DATAOUT_MASK BIT(6) | ||
309 | #define ATLAS7_GPIO_CTL_DATAIN_MASK BIT(7) | ||
310 | |||
311 | struct atlas7_gpio_bank { | ||
312 | struct pinctrl_dev *pctldev; | ||
313 | int id; | ||
314 | int irq; | ||
315 | void __iomem *base; | ||
316 | unsigned int gpio_offset; | ||
317 | unsigned int ngpio; | ||
318 | const unsigned int *gpio_pins; | ||
319 | }; | ||
320 | |||
321 | struct atlas7_gpio_chip { | ||
322 | const char *name; | ||
323 | void __iomem *reg; | ||
324 | struct clk *clk; | ||
325 | int nbank; | ||
326 | spinlock_t lock; | ||
327 | struct gpio_chip chip; | ||
328 | struct atlas7_gpio_bank banks[0]; | ||
329 | }; | ||
330 | |||
331 | static inline struct atlas7_gpio_chip *to_atlas7_gpio(struct gpio_chip *gc) | ||
332 | { | ||
333 | return container_of(gc, struct atlas7_gpio_chip, chip); | ||
334 | } | ||
335 | |||
336 | /** | ||
337 | * @dev: a pointer back to containing device | ||
338 | * @virtbase: the offset to the controller in virtual memory | ||
339 | */ | ||
340 | struct atlas7_pmx { | ||
341 | struct device *dev; | ||
342 | struct pinctrl_dev *pctl; | ||
343 | struct pinctrl_desc pctl_desc; | ||
344 | struct atlas7_pinctrl_data *pctl_data; | ||
345 | void __iomem *regs[ATLAS7_PINCTRL_REG_BANKS]; | ||
346 | }; | ||
347 | |||
348 | /* | ||
349 | * Pad list for the pinmux subsystem | ||
350 | * refer to A7DA IO Summary - CS-314158-DD-4E.xls | ||
351 | */ | ||
352 | |||
353 | /*Pads in IOC RTC & TOP */ | ||
354 | static const struct pinctrl_pin_desc atlas7_ioc_pads[] = { | ||
355 | /* RTC PADs */ | ||
356 | PINCTRL_PIN(0, "rtc_gpio_0"), | ||
357 | PINCTRL_PIN(1, "rtc_gpio_1"), | ||
358 | PINCTRL_PIN(2, "rtc_gpio_2"), | ||
359 | PINCTRL_PIN(3, "rtc_gpio_3"), | ||
360 | PINCTRL_PIN(4, "low_bat_ind_b"), | ||
361 | PINCTRL_PIN(5, "on_key_b"), | ||
362 | PINCTRL_PIN(6, "ext_on"), | ||
363 | PINCTRL_PIN(7, "mem_on"), | ||
364 | PINCTRL_PIN(8, "core_on"), | ||
365 | PINCTRL_PIN(9, "io_on"), | ||
366 | PINCTRL_PIN(10, "can0_tx"), | ||
367 | PINCTRL_PIN(11, "can0_rx"), | ||
368 | PINCTRL_PIN(12, "spi0_clk"), | ||
369 | PINCTRL_PIN(13, "spi0_cs_b"), | ||
370 | PINCTRL_PIN(14, "spi0_io_0"), | ||
371 | PINCTRL_PIN(15, "spi0_io_1"), | ||
372 | PINCTRL_PIN(16, "spi0_io_2"), | ||
373 | PINCTRL_PIN(17, "spi0_io_3"), | ||
374 | |||
375 | /* TOP PADs */ | ||
376 | PINCTRL_PIN(18, "spi1_en"), | ||
377 | PINCTRL_PIN(19, "spi1_clk"), | ||
378 | PINCTRL_PIN(20, "spi1_din"), | ||
379 | PINCTRL_PIN(21, "spi1_dout"), | ||
380 | PINCTRL_PIN(22, "trg_spi_clk"), | ||
381 | PINCTRL_PIN(23, "trg_spi_di"), | ||
382 | PINCTRL_PIN(24, "trg_spi_do"), | ||
383 | PINCTRL_PIN(25, "trg_spi_cs_b"), | ||
384 | PINCTRL_PIN(26, "trg_acq_d1"), | ||
385 | PINCTRL_PIN(27, "trg_irq_b"), | ||
386 | PINCTRL_PIN(28, "trg_acq_d0"), | ||
387 | PINCTRL_PIN(29, "trg_acq_clk"), | ||
388 | PINCTRL_PIN(30, "trg_shutdown_b_out"), | ||
389 | PINCTRL_PIN(31, "sdio2_clk"), | ||
390 | PINCTRL_PIN(32, "sdio2_cmd"), | ||
391 | PINCTRL_PIN(33, "sdio2_dat_0"), | ||
392 | PINCTRL_PIN(34, "sdio2_dat_1"), | ||
393 | PINCTRL_PIN(35, "sdio2_dat_2"), | ||
394 | PINCTRL_PIN(36, "sdio2_dat_3"), | ||
395 | PINCTRL_PIN(37, "df_ad_7"), | ||
396 | PINCTRL_PIN(38, "df_ad_6"), | ||
397 | PINCTRL_PIN(39, "df_ad_5"), | ||
398 | PINCTRL_PIN(40, "df_ad_4"), | ||
399 | PINCTRL_PIN(41, "df_ad_3"), | ||
400 | PINCTRL_PIN(42, "df_ad_2"), | ||
401 | PINCTRL_PIN(43, "df_ad_1"), | ||
402 | PINCTRL_PIN(44, "df_ad_0"), | ||
403 | PINCTRL_PIN(45, "df_dqs"), | ||
404 | PINCTRL_PIN(46, "df_cle"), | ||
405 | PINCTRL_PIN(47, "df_ale"), | ||
406 | PINCTRL_PIN(48, "df_we_b"), | ||
407 | PINCTRL_PIN(49, "df_re_b"), | ||
408 | PINCTRL_PIN(50, "df_ry_by"), | ||
409 | PINCTRL_PIN(51, "df_cs_b_1"), | ||
410 | PINCTRL_PIN(52, "df_cs_b_0"), | ||
411 | PINCTRL_PIN(53, "l_pclk"), | ||
412 | PINCTRL_PIN(54, "l_lck"), | ||
413 | PINCTRL_PIN(55, "l_fck"), | ||
414 | PINCTRL_PIN(56, "l_de"), | ||
415 | PINCTRL_PIN(57, "ldd_0"), | ||
416 | PINCTRL_PIN(58, "ldd_1"), | ||
417 | PINCTRL_PIN(59, "ldd_2"), | ||
418 | PINCTRL_PIN(60, "ldd_3"), | ||
419 | PINCTRL_PIN(61, "ldd_4"), | ||
420 | PINCTRL_PIN(62, "ldd_5"), | ||
421 | PINCTRL_PIN(63, "ldd_6"), | ||
422 | PINCTRL_PIN(64, "ldd_7"), | ||
423 | PINCTRL_PIN(65, "ldd_8"), | ||
424 | PINCTRL_PIN(66, "ldd_9"), | ||
425 | PINCTRL_PIN(67, "ldd_10"), | ||
426 | PINCTRL_PIN(68, "ldd_11"), | ||
427 | PINCTRL_PIN(69, "ldd_12"), | ||
428 | PINCTRL_PIN(70, "ldd_13"), | ||
429 | PINCTRL_PIN(71, "ldd_14"), | ||
430 | PINCTRL_PIN(72, "ldd_15"), | ||
431 | PINCTRL_PIN(73, "lcd_gpio_20"), | ||
432 | PINCTRL_PIN(74, "vip_0"), | ||
433 | PINCTRL_PIN(75, "vip_1"), | ||
434 | PINCTRL_PIN(76, "vip_2"), | ||
435 | PINCTRL_PIN(77, "vip_3"), | ||
436 | PINCTRL_PIN(78, "vip_4"), | ||
437 | PINCTRL_PIN(79, "vip_5"), | ||
438 | PINCTRL_PIN(80, "vip_6"), | ||
439 | PINCTRL_PIN(81, "vip_7"), | ||
440 | PINCTRL_PIN(82, "vip_pxclk"), | ||
441 | PINCTRL_PIN(83, "vip_hsync"), | ||
442 | PINCTRL_PIN(84, "vip_vsync"), | ||
443 | PINCTRL_PIN(85, "sdio3_clk"), | ||
444 | PINCTRL_PIN(86, "sdio3_cmd"), | ||
445 | PINCTRL_PIN(87, "sdio3_dat_0"), | ||
446 | PINCTRL_PIN(88, "sdio3_dat_1"), | ||
447 | PINCTRL_PIN(89, "sdio3_dat_2"), | ||
448 | PINCTRL_PIN(90, "sdio3_dat_3"), | ||
449 | PINCTRL_PIN(91, "sdio5_clk"), | ||
450 | PINCTRL_PIN(92, "sdio5_cmd"), | ||
451 | PINCTRL_PIN(93, "sdio5_dat_0"), | ||
452 | PINCTRL_PIN(94, "sdio5_dat_1"), | ||
453 | PINCTRL_PIN(95, "sdio5_dat_2"), | ||
454 | PINCTRL_PIN(96, "sdio5_dat_3"), | ||
455 | PINCTRL_PIN(97, "rgmii_txd_0"), | ||
456 | PINCTRL_PIN(98, "rgmii_txd_1"), | ||
457 | PINCTRL_PIN(99, "rgmii_txd_2"), | ||
458 | PINCTRL_PIN(100, "rgmii_txd_3"), | ||
459 | PINCTRL_PIN(101, "rgmii_txclk"), | ||
460 | PINCTRL_PIN(102, "rgmii_tx_ctl"), | ||
461 | PINCTRL_PIN(103, "rgmii_rxd_0"), | ||
462 | PINCTRL_PIN(104, "rgmii_rxd_1"), | ||
463 | PINCTRL_PIN(105, "rgmii_rxd_2"), | ||
464 | PINCTRL_PIN(106, "rgmii_rxd_3"), | ||
465 | PINCTRL_PIN(107, "rgmii_rx_clk"), | ||
466 | PINCTRL_PIN(108, "rgmii_rxc_ctl"), | ||
467 | PINCTRL_PIN(109, "rgmii_mdio"), | ||
468 | PINCTRL_PIN(110, "rgmii_mdc"), | ||
469 | PINCTRL_PIN(111, "rgmii_intr_n"), | ||
470 | PINCTRL_PIN(112, "i2s_mclk"), | ||
471 | PINCTRL_PIN(113, "i2s_bclk"), | ||
472 | PINCTRL_PIN(114, "i2s_ws"), | ||
473 | PINCTRL_PIN(115, "i2s_dout0"), | ||
474 | PINCTRL_PIN(116, "i2s_dout1"), | ||
475 | PINCTRL_PIN(117, "i2s_dout2"), | ||
476 | PINCTRL_PIN(118, "i2s_din"), | ||
477 | PINCTRL_PIN(119, "gpio_0"), | ||
478 | PINCTRL_PIN(120, "gpio_1"), | ||
479 | PINCTRL_PIN(121, "gpio_2"), | ||
480 | PINCTRL_PIN(122, "gpio_3"), | ||
481 | PINCTRL_PIN(123, "gpio_4"), | ||
482 | PINCTRL_PIN(124, "gpio_5"), | ||
483 | PINCTRL_PIN(125, "gpio_6"), | ||
484 | PINCTRL_PIN(126, "gpio_7"), | ||
485 | PINCTRL_PIN(127, "sda_0"), | ||
486 | PINCTRL_PIN(128, "scl_0"), | ||
487 | PINCTRL_PIN(129, "coex_pio_0"), | ||
488 | PINCTRL_PIN(130, "coex_pio_1"), | ||
489 | PINCTRL_PIN(131, "coex_pio_2"), | ||
490 | PINCTRL_PIN(132, "coex_pio_3"), | ||
491 | PINCTRL_PIN(133, "uart0_tx"), | ||
492 | PINCTRL_PIN(134, "uart0_rx"), | ||
493 | PINCTRL_PIN(135, "uart1_tx"), | ||
494 | PINCTRL_PIN(136, "uart1_rx"), | ||
495 | PINCTRL_PIN(137, "uart3_tx"), | ||
496 | PINCTRL_PIN(138, "uart3_rx"), | ||
497 | PINCTRL_PIN(139, "uart4_tx"), | ||
498 | PINCTRL_PIN(140, "uart4_rx"), | ||
499 | PINCTRL_PIN(141, "usp0_clk"), | ||
500 | PINCTRL_PIN(142, "usp0_tx"), | ||
501 | PINCTRL_PIN(143, "usp0_rx"), | ||
502 | PINCTRL_PIN(144, "usp0_fs"), | ||
503 | PINCTRL_PIN(145, "usp1_clk"), | ||
504 | PINCTRL_PIN(146, "usp1_tx"), | ||
505 | PINCTRL_PIN(147, "usp1_rx"), | ||
506 | PINCTRL_PIN(148, "usp1_fs"), | ||
507 | PINCTRL_PIN(149, "lvds_tx0d4p"), | ||
508 | PINCTRL_PIN(150, "lvds_tx0d4n"), | ||
509 | PINCTRL_PIN(151, "lvds_tx0d3p"), | ||
510 | PINCTRL_PIN(152, "lvds_tx0d3n"), | ||
511 | PINCTRL_PIN(153, "lvds_tx0d2p"), | ||
512 | PINCTRL_PIN(154, "lvds_tx0d2n"), | ||
513 | PINCTRL_PIN(155, "lvds_tx0d1p"), | ||
514 | PINCTRL_PIN(156, "lvds_tx0d1n"), | ||
515 | PINCTRL_PIN(157, "lvds_tx0d0p"), | ||
516 | PINCTRL_PIN(158, "lvds_tx0d0n"), | ||
517 | }; | ||
518 | |||
519 | struct atlas7_pad_config atlas7_ioc_pad_confs[] = { | ||
520 | /* The Configuration of IOC_RTC Pads */ | ||
521 | PADCONF(0, 3, 0x0, 0x100, 0x200, -1, 0, 0, 0, 0), | ||
522 | PADCONF(1, 3, 0x0, 0x100, 0x200, -1, 4, 2, 2, 0), | ||
523 | PADCONF(2, 3, 0x0, 0x100, 0x200, -1, 8, 4, 4, 0), | ||
524 | PADCONF(3, 5, 0x0, 0x100, 0x200, -1, 12, 6, 6, 0), | ||
525 | PADCONF(4, 4, 0x0, 0x100, 0x200, -1, 16, 8, 8, 0), | ||
526 | PADCONF(5, 4, 0x0, 0x100, 0x200, -1, 20, 10, 10, 0), | ||
527 | PADCONF(6, 3, 0x0, 0x100, 0x200, -1, 24, 12, 12, 0), | ||
528 | PADCONF(7, 3, 0x0, 0x100, 0x200, -1, 28, 14, 14, 0), | ||
529 | PADCONF(8, 3, 0x8, 0x100, 0x200, -1, 0, 16, 16, 0), | ||
530 | PADCONF(9, 3, 0x8, 0x100, 0x200, -1, 4, 18, 18, 0), | ||
531 | PADCONF(10, 4, 0x8, 0x100, 0x200, -1, 8, 20, 20, 0), | ||
532 | PADCONF(11, 4, 0x8, 0x100, 0x200, -1, 12, 22, 22, 0), | ||
533 | PADCONF(12, 5, 0x8, 0x100, 0x200, -1, 16, 24, 24, 0), | ||
534 | PADCONF(13, 6, 0x8, 0x100, 0x200, -1, 20, 26, 26, 0), | ||
535 | PADCONF(14, 5, 0x8, 0x100, 0x200, -1, 24, 28, 28, 0), | ||
536 | PADCONF(15, 5, 0x8, 0x100, 0x200, -1, 28, 30, 30, 0), | ||
537 | PADCONF(16, 5, 0x10, 0x108, 0x208, -1, 0, 0, 0, 0), | ||
538 | PADCONF(17, 5, 0x10, 0x108, 0x208, -1, 4, 2, 2, 0), | ||
539 | /* The Configuration of IOC_TOP Pads */ | ||
540 | PADCONF(18, 5, 0x80, 0x180, 0x300, -1, 0, 0, 0, 0), | ||
541 | PADCONF(19, 5, 0x80, 0x180, 0x300, -1, 4, 2, 2, 0), | ||
542 | PADCONF(20, 5, 0x80, 0x180, 0x300, -1, 8, 4, 4, 0), | ||
543 | PADCONF(21, 5, 0x80, 0x180, 0x300, -1, 12, 6, 6, 0), | ||
544 | PADCONF(22, 5, 0x88, 0x188, 0x308, -1, 0, 0, 0, 0), | ||
545 | PADCONF(23, 5, 0x88, 0x188, 0x308, -1, 4, 2, 2, 0), | ||
546 | PADCONF(24, 5, 0x88, 0x188, 0x308, -1, 8, 4, 4, 0), | ||
547 | PADCONF(25, 6, 0x88, 0x188, 0x308, -1, 12, 6, 6, 0), | ||
548 | PADCONF(26, 5, 0x88, 0x188, 0x308, -1, 16, 8, 8, 0), | ||
549 | PADCONF(27, 6, 0x88, 0x188, 0x308, -1, 20, 10, 10, 0), | ||
550 | PADCONF(28, 5, 0x88, 0x188, 0x308, -1, 24, 12, 12, 0), | ||
551 | PADCONF(29, 5, 0x88, 0x188, 0x308, -1, 28, 14, 14, 0), | ||
552 | PADCONF(30, 5, 0x90, 0x188, 0x308, -1, 0, 16, 16, 0), | ||
553 | PADCONF(31, 2, 0x98, 0x190, 0x310, -1, 0, 0, 0, 0), | ||
554 | PADCONF(32, 1, 0x98, 0x190, 0x310, -1, 4, 2, 4, 0), | ||
555 | PADCONF(33, 1, 0x98, 0x190, 0x310, -1, 8, 4, 6, 0), | ||
556 | PADCONF(34, 1, 0x98, 0x190, 0x310, -1, 12, 6, 8, 0), | ||
557 | PADCONF(35, 1, 0x98, 0x190, 0x310, -1, 16, 8, 10, 0), | ||
558 | PADCONF(36, 1, 0x98, 0x190, 0x310, -1, 20, 10, 12, 0), | ||
559 | PADCONF(37, 1, 0xa0, 0x198, 0x318, -1, 0, 0, 0, 0), | ||
560 | PADCONF(38, 1, 0xa0, 0x198, 0x318, -1, 4, 2, 2, 0), | ||
561 | PADCONF(39, 1, 0xa0, 0x198, 0x318, -1, 8, 4, 4, 0), | ||
562 | PADCONF(40, 1, 0xa0, 0x198, 0x318, -1, 12, 6, 6, 0), | ||
563 | PADCONF(41, 1, 0xa0, 0x198, 0x318, -1, 16, 8, 8, 0), | ||
564 | PADCONF(42, 1, 0xa0, 0x198, 0x318, -1, 20, 10, 10, 0), | ||
565 | PADCONF(43, 1, 0xa0, 0x198, 0x318, -1, 24, 12, 12, 0), | ||
566 | PADCONF(44, 1, 0xa0, 0x198, 0x318, -1, 28, 14, 14, 0), | ||
567 | PADCONF(45, 0, 0xa8, 0x198, 0x318, -1, 0, 16, 16, 0), | ||
568 | PADCONF(46, 0, 0xa8, 0x198, 0x318, -1, 4, 18, 18, 0), | ||
569 | PADCONF(47, 1, 0xa8, 0x198, 0x318, -1, 8, 20, 20, 0), | ||
570 | PADCONF(48, 1, 0xa8, 0x198, 0x318, -1, 12, 22, 22, 0), | ||
571 | PADCONF(49, 1, 0xa8, 0x198, 0x318, -1, 16, 24, 24, 0), | ||
572 | PADCONF(50, 1, 0xa8, 0x198, 0x318, -1, 20, 26, 26, 0), | ||
573 | PADCONF(51, 1, 0xa8, 0x198, 0x318, -1, 24, 28, 28, 0), | ||
574 | PADCONF(52, 1, 0xa8, 0x198, 0x318, -1, 28, 30, 30, 0), | ||
575 | PADCONF(53, 0, 0xb0, 0x1a0, 0x320, -1, 0, 0, 0, 0), | ||
576 | PADCONF(54, 0, 0xb0, 0x1a0, 0x320, -1, 4, 2, 2, 0), | ||
577 | PADCONF(55, 0, 0xb0, 0x1a0, 0x320, -1, 8, 4, 4, 0), | ||
578 | PADCONF(56, 0, 0xb0, 0x1a0, 0x320, -1, 12, 6, 6, 0), | ||
579 | PADCONF(57, 0, 0xb0, 0x1a0, 0x320, -1, 16, 8, 8, 0), | ||
580 | PADCONF(58, 0, 0xb0, 0x1a0, 0x320, -1, 20, 10, 10, 0), | ||
581 | PADCONF(59, 0, 0xb0, 0x1a0, 0x320, -1, 24, 12, 12, 0), | ||
582 | PADCONF(60, 0, 0xb0, 0x1a0, 0x320, -1, 28, 14, 14, 0), | ||
583 | PADCONF(61, 0, 0xb8, 0x1a0, 0x320, -1, 0, 16, 16, 0), | ||
584 | PADCONF(62, 0, 0xb8, 0x1a0, 0x320, -1, 4, 18, 18, 0), | ||
585 | PADCONF(63, 0, 0xb8, 0x1a0, 0x320, -1, 8, 20, 20, 0), | ||
586 | PADCONF(64, 0, 0xb8, 0x1a0, 0x320, -1, 12, 22, 22, 0), | ||
587 | PADCONF(65, 0, 0xb8, 0x1a0, 0x320, -1, 16, 24, 24, 0), | ||
588 | PADCONF(66, 0, 0xb8, 0x1a0, 0x320, -1, 20, 26, 26, 0), | ||
589 | PADCONF(67, 0, 0xb8, 0x1a0, 0x320, -1, 24, 28, 28, 0), | ||
590 | PADCONF(68, 0, 0xb8, 0x1a0, 0x320, -1, 28, 30, 30, 0), | ||
591 | PADCONF(69, 0, 0xc0, 0x1a8, 0x328, -1, 0, 0, 0, 0), | ||
592 | PADCONF(70, 0, 0xc0, 0x1a8, 0x328, -1, 4, 2, 2, 0), | ||
593 | PADCONF(71, 0, 0xc0, 0x1a8, 0x328, -1, 8, 4, 4, 0), | ||
594 | PADCONF(72, 0, 0xc0, 0x1a8, 0x328, -1, 12, 6, 6, 0), | ||
595 | PADCONF(73, 0, 0xc0, 0x1a8, 0x328, -1, 16, 8, 8, 0), | ||
596 | PADCONF(74, 0, 0xc8, 0x1b0, 0x330, -1, 0, 0, 0, 0), | ||
597 | PADCONF(75, 0, 0xc8, 0x1b0, 0x330, -1, 4, 2, 2, 0), | ||
598 | PADCONF(76, 0, 0xc8, 0x1b0, 0x330, -1, 8, 4, 4, 0), | ||
599 | PADCONF(77, 0, 0xc8, 0x1b0, 0x330, -1, 12, 6, 6, 0), | ||
600 | PADCONF(78, 0, 0xc8, 0x1b0, 0x330, -1, 16, 8, 8, 0), | ||
601 | PADCONF(79, 0, 0xc8, 0x1b0, 0x330, -1, 20, 10, 10, 0), | ||
602 | PADCONF(80, 0, 0xc8, 0x1b0, 0x330, -1, 24, 12, 12, 0), | ||
603 | PADCONF(81, 0, 0xc8, 0x1b0, 0x330, -1, 28, 14, 14, 0), | ||
604 | PADCONF(82, 0, 0xd0, 0x1b0, 0x330, -1, 0, 16, 16, 0), | ||
605 | PADCONF(83, 0, 0xd0, 0x1b0, 0x330, -1, 4, 18, 18, 0), | ||
606 | PADCONF(84, 0, 0xd0, 0x1b0, 0x330, -1, 8, 20, 20, 0), | ||
607 | PADCONF(85, 2, 0xd8, 0x1b8, 0x338, -1, 0, 0, 0, 0), | ||
608 | PADCONF(86, 1, 0xd8, 0x1b8, 0x338, -1, 4, 4, 4, 0), | ||
609 | PADCONF(87, 1, 0xd8, 0x1b8, 0x338, -1, 8, 6, 6, 0), | ||
610 | PADCONF(88, 1, 0xd8, 0x1b8, 0x338, -1, 12, 8, 8, 0), | ||
611 | PADCONF(89, 1, 0xd8, 0x1b8, 0x338, -1, 16, 10, 10, 0), | ||
612 | PADCONF(90, 1, 0xd8, 0x1b8, 0x338, -1, 20, 12, 12, 0), | ||
613 | PADCONF(91, 2, 0xe0, 0x1c0, 0x340, -1, 0, 0, 0, 0), | ||
614 | PADCONF(92, 1, 0xe0, 0x1c0, 0x340, -1, 4, 4, 4, 0), | ||
615 | PADCONF(93, 1, 0xe0, 0x1c0, 0x340, -1, 8, 6, 6, 0), | ||
616 | PADCONF(94, 1, 0xe0, 0x1c0, 0x340, -1, 12, 8, 8, 0), | ||
617 | PADCONF(95, 1, 0xe0, 0x1c0, 0x340, -1, 16, 10, 10, 0), | ||
618 | PADCONF(96, 1, 0xe0, 0x1c0, 0x340, -1, 20, 12, 12, 0), | ||
619 | PADCONF(97, 0, 0xe8, 0x1c8, 0x348, -1, 0, 0, 0, 0), | ||
620 | PADCONF(98, 0, 0xe8, 0x1c8, 0x348, -1, 4, 2, 2, 0), | ||
621 | PADCONF(99, 0, 0xe8, 0x1c8, 0x348, -1, 8, 4, 4, 0), | ||
622 | PADCONF(100, 0, 0xe8, 0x1c8, 0x348, -1, 12, 6, 6, 0), | ||
623 | PADCONF(101, 2, 0xe8, 0x1c8, 0x348, -1, 16, 8, 8, 0), | ||
624 | PADCONF(102, 0, 0xe8, 0x1c8, 0x348, -1, 20, 12, 12, 0), | ||
625 | PADCONF(103, 0, 0xe8, 0x1c8, 0x348, -1, 24, 14, 14, 0), | ||
626 | PADCONF(104, 0, 0xe8, 0x1c8, 0x348, -1, 28, 16, 16, 0), | ||
627 | PADCONF(105, 0, 0xf0, 0x1c8, 0x348, -1, 0, 18, 18, 0), | ||
628 | PADCONF(106, 0, 0xf0, 0x1c8, 0x348, -1, 4, 20, 20, 0), | ||
629 | PADCONF(107, 0, 0xf0, 0x1c8, 0x348, -1, 8, 22, 22, 0), | ||
630 | PADCONF(108, 0, 0xf0, 0x1c8, 0x348, -1, 12, 24, 24, 0), | ||
631 | PADCONF(109, 1, 0xf0, 0x1c8, 0x348, -1, 16, 26, 26, 0), | ||
632 | PADCONF(110, 0, 0xf0, 0x1c8, 0x348, -1, 20, 28, 28, 0), | ||
633 | PADCONF(111, 1, 0xf0, 0x1c8, 0x348, -1, 24, 30, 30, 0), | ||
634 | PADCONF(112, 5, 0xf8, 0x200, 0x350, -1, 0, 0, 0, 0), | ||
635 | PADCONF(113, 5, 0xf8, 0x200, 0x350, -1, 4, 2, 2, 0), | ||
636 | PADCONF(114, 5, 0xf8, 0x200, 0x350, -1, 8, 4, 4, 0), | ||
637 | PADCONF(115, 5, 0xf8, 0x200, 0x350, -1, 12, 6, 6, 0), | ||
638 | PADCONF(116, 5, 0xf8, 0x200, 0x350, -1, 16, 8, 8, 0), | ||
639 | PADCONF(117, 5, 0xf8, 0x200, 0x350, -1, 20, 10, 10, 0), | ||
640 | PADCONF(118, 5, 0xf8, 0x200, 0x350, -1, 24, 12, 12, 0), | ||
641 | PADCONF(119, 5, 0x100, 0x250, 0x358, -1, 0, 0, 0, 0), | ||
642 | PADCONF(120, 5, 0x100, 0x250, 0x358, -1, 4, 2, 2, 0), | ||
643 | PADCONF(121, 5, 0x100, 0x250, 0x358, -1, 8, 4, 4, 0), | ||
644 | PADCONF(122, 5, 0x100, 0x250, 0x358, -1, 12, 6, 6, 0), | ||
645 | PADCONF(123, 6, 0x100, 0x250, 0x358, -1, 16, 8, 8, 0), | ||
646 | PADCONF(124, 6, 0x100, 0x250, 0x358, -1, 20, 10, 10, 0), | ||
647 | PADCONF(125, 6, 0x100, 0x250, 0x358, -1, 24, 12, 12, 0), | ||
648 | PADCONF(126, 6, 0x100, 0x250, 0x358, -1, 28, 14, 14, 0), | ||
649 | PADCONF(127, 6, 0x108, 0x250, 0x358, -1, 16, 24, 24, 0), | ||
650 | PADCONF(128, 6, 0x108, 0x250, 0x358, -1, 20, 26, 26, 0), | ||
651 | PADCONF(129, 0, 0x110, 0x258, 0x360, -1, 0, 0, 0, 0), | ||
652 | PADCONF(130, 0, 0x110, 0x258, 0x360, -1, 4, 2, 2, 0), | ||
653 | PADCONF(131, 0, 0x110, 0x258, 0x360, -1, 8, 4, 4, 0), | ||
654 | PADCONF(132, 0, 0x110, 0x258, 0x360, -1, 12, 6, 6, 0), | ||
655 | PADCONF(133, 6, 0x118, 0x260, 0x368, -1, 0, 0, 0, 0), | ||
656 | PADCONF(134, 6, 0x118, 0x260, 0x368, -1, 4, 2, 2, 0), | ||
657 | PADCONF(135, 6, 0x118, 0x260, 0x368, -1, 16, 8, 8, 0), | ||
658 | PADCONF(136, 6, 0x118, 0x260, 0x368, -1, 20, 10, 10, 0), | ||
659 | PADCONF(137, 6, 0x118, 0x260, 0x368, -1, 24, 12, 12, 0), | ||
660 | PADCONF(138, 6, 0x118, 0x260, 0x368, -1, 28, 14, 14, 0), | ||
661 | PADCONF(139, 6, 0x120, 0x260, 0x368, -1, 0, 16, 16, 0), | ||
662 | PADCONF(140, 6, 0x120, 0x260, 0x368, -1, 4, 18, 18, 0), | ||
663 | PADCONF(141, 5, 0x128, 0x268, 0x378, -1, 0, 0, 0, 0), | ||
664 | PADCONF(142, 5, 0x128, 0x268, 0x378, -1, 4, 2, 2, 0), | ||
665 | PADCONF(143, 5, 0x128, 0x268, 0x378, -1, 8, 4, 4, 0), | ||
666 | PADCONF(144, 5, 0x128, 0x268, 0x378, -1, 12, 6, 6, 0), | ||
667 | PADCONF(145, 5, 0x128, 0x268, 0x378, -1, 16, 8, 8, 0), | ||
668 | PADCONF(146, 5, 0x128, 0x268, 0x378, -1, 20, 10, 10, 0), | ||
669 | PADCONF(147, 5, 0x128, 0x268, 0x378, -1, 24, 12, 12, 0), | ||
670 | PADCONF(148, 5, 0x128, 0x268, 0x378, -1, 28, 14, 14, 0), | ||
671 | PADCONF(149, 7, 0x130, 0x270, -1, 0x480, 0, 0, 0, 0), | ||
672 | PADCONF(150, 7, 0x130, 0x270, -1, 0x480, 4, 2, 0, 1), | ||
673 | PADCONF(151, 7, 0x130, 0x270, -1, 0x480, 8, 4, 0, 2), | ||
674 | PADCONF(152, 7, 0x130, 0x270, -1, 0x480, 12, 6, 0, 3), | ||
675 | PADCONF(153, 7, 0x130, 0x270, -1, 0x480, 16, 8, 0, 4), | ||
676 | PADCONF(154, 7, 0x130, 0x270, -1, 0x480, 20, 10, 0, 5), | ||
677 | PADCONF(155, 7, 0x130, 0x270, -1, 0x480, 24, 12, 0, 6), | ||
678 | PADCONF(156, 7, 0x130, 0x270, -1, 0x480, 28, 14, 0, 7), | ||
679 | PADCONF(157, 7, 0x138, 0x278, -1, 0x480, 0, 0, 0, 8), | ||
680 | PADCONF(158, 7, 0x138, 0x278, -1, 0x480, 4, 2, 0, 9), | ||
681 | }; | ||
682 | |||
683 | /* pin list of each pin group */ | ||
684 | static const unsigned int gnss_gpio_pins[] = { 119, 120, 121, 122, 123, 124, | ||
685 | 125, 126, 127, 128, 22, 23, 24, 25, 26, 27, 28, 29, 30, }; | ||
686 | static const unsigned int lcd_vip_gpio_pins[] = { 74, 75, 76, 77, 78, 79, 80, | ||
687 | 81, 82, 83, 84, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, | ||
688 | 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, }; | ||
689 | static const unsigned int sdio_i2s_gpio_pins[] = { 31, 32, 33, 34, 35, 36, | ||
690 | 85, 86, 87, 88, 89, 90, 129, 130, 131, 132, 91, 92, 93, 94, | ||
691 | 95, 96, 112, 113, 114, 115, 116, 117, 118, }; | ||
692 | static const unsigned int sp_rgmii_gpio_pins[] = { 97, 98, 99, 100, 101, 102, | ||
693 | 103, 104, 105, 106, 107, 108, 109, 110, 111, 18, 19, 20, 21, | ||
694 | 141, 142, 143, 144, 145, 146, 147, 148, }; | ||
695 | static const unsigned int lvds_gpio_pins[] = { 157, 158, 155, 156, 153, 154, | ||
696 | 151, 152, 149, 150, }; | ||
697 | static const unsigned int uart_nand_gpio_pins[] = { 44, 43, 42, 41, 40, 39, | ||
698 | 38, 37, 46, 47, 48, 49, 50, 52, 51, 45, 133, 134, 135, 136, | ||
699 | 137, 138, 139, 140, }; | ||
700 | static const unsigned int rtc_gpio_pins[] = { 0, 1, 2, 3, 4, 10, 11, 12, 13, | ||
701 | 14, 15, 16, 17, }; | ||
702 | static const unsigned int audio_ac97_pins[] = { 113, 118, 115, 114, }; | ||
703 | static const unsigned int audio_func_dbg_pins[] = { 141, 144, 44, 43, 42, 41, | ||
704 | 40, 39, 38, 37, 74, 75, 76, 77, 78, 79, 81, 113, 114, 118, | ||
705 | 115, 49, 50, 142, 143, 80, }; | ||
706 | static const unsigned int audio_i2s_pins[] = { 118, 115, 116, 117, 112, 113, | ||
707 | 114, }; | ||
708 | static const unsigned int audio_i2s_2ch_pins[] = { 118, 115, 112, 113, 114, }; | ||
709 | static const unsigned int audio_i2s_extclk_pins[] = { 112, }; | ||
710 | static const unsigned int audio_uart0_pins[] = { 143, 142, 141, 144, }; | ||
711 | static const unsigned int audio_uart1_pins[] = { 147, 146, 145, 148, }; | ||
712 | static const unsigned int audio_uart2_pins0[] = { 20, 21, 19, 18, }; | ||
713 | static const unsigned int audio_uart2_pins1[] = { 109, 110, 101, 111, }; | ||
714 | static const unsigned int c_can_trnsvr_pins[] = { 1, }; | ||
715 | static const unsigned int c0_can_pins0[] = { 11, 10, }; | ||
716 | static const unsigned int c0_can_pins1[] = { 2, 3, }; | ||
717 | static const unsigned int c1_can_pins0[] = { 138, 137, }; | ||
718 | static const unsigned int c1_can_pins1[] = { 147, 146, }; | ||
719 | static const unsigned int c1_can_pins2[] = { 2, 3, }; | ||
720 | static const unsigned int ca_audio_lpc_pins[] = { 62, 63, 64, 65, 66, 67, 68, | ||
721 | 69, 70, 71, }; | ||
722 | static const unsigned int ca_bt_lpc_pins[] = { 85, 86, 87, 88, 89, 90, }; | ||
723 | static const unsigned int ca_coex_pins[] = { 129, 130, 131, 132, }; | ||
724 | static const unsigned int ca_curator_lpc_pins[] = { 57, 58, 59, 60, }; | ||
725 | static const unsigned int ca_pcm_debug_pins[] = { 91, 93, 94, 92, }; | ||
726 | static const unsigned int ca_pio_pins[] = { 121, 122, 125, 126, 38, 37, 47, | ||
727 | 49, 50, 54, 55, 56, }; | ||
728 | static const unsigned int ca_sdio_debug_pins[] = { 40, 39, 44, 43, 42, 41, }; | ||
729 | static const unsigned int ca_spi_pins[] = { 82, 79, 80, 81, }; | ||
730 | static const unsigned int ca_trb_pins[] = { 91, 93, 94, 95, 96, 78, 74, 75, | ||
731 | 76, 77, }; | ||
732 | static const unsigned int ca_uart_debug_pins[] = { 136, 135, 134, 133, }; | ||
733 | static const unsigned int clkc_pins0[] = { 30, 47, }; | ||
734 | static const unsigned int clkc_pins1[] = { 78, 54, }; | ||
735 | static const unsigned int gn_gnss_i2c_pins[] = { 128, 127, }; | ||
736 | static const unsigned int gn_gnss_uart_nopause_pins[] = { 134, 133, }; | ||
737 | static const unsigned int gn_gnss_uart_pins[] = { 134, 133, 136, 135, }; | ||
738 | static const unsigned int gn_trg_spi_pins0[] = { 22, 25, 23, 24, }; | ||
739 | static const unsigned int gn_trg_spi_pins1[] = { 82, 79, 80, 81, }; | ||
740 | static const unsigned int cvbs_dbg_pins[] = { 54, 53, 82, 74, 75, 76, 77, 78, | ||
741 | 79, 80, 81, 83, 84, 73, 55, 56, }; | ||
742 | static const unsigned int cvbs_dbg_test_pins0[] = { 57, }; | ||
743 | static const unsigned int cvbs_dbg_test_pins1[] = { 58, }; | ||
744 | static const unsigned int cvbs_dbg_test_pins2[] = { 59, }; | ||
745 | static const unsigned int cvbs_dbg_test_pins3[] = { 60, }; | ||
746 | static const unsigned int cvbs_dbg_test_pins4[] = { 61, }; | ||
747 | static const unsigned int cvbs_dbg_test_pins5[] = { 62, }; | ||
748 | static const unsigned int cvbs_dbg_test_pins6[] = { 63, }; | ||
749 | static const unsigned int cvbs_dbg_test_pins7[] = { 64, }; | ||
750 | static const unsigned int cvbs_dbg_test_pins8[] = { 65, }; | ||
751 | static const unsigned int cvbs_dbg_test_pins9[] = { 66, }; | ||
752 | static const unsigned int cvbs_dbg_test_pins10[] = { 67, }; | ||
753 | static const unsigned int cvbs_dbg_test_pins11[] = { 68, }; | ||
754 | static const unsigned int cvbs_dbg_test_pins12[] = { 69, }; | ||
755 | static const unsigned int cvbs_dbg_test_pins13[] = { 70, }; | ||
756 | static const unsigned int cvbs_dbg_test_pins14[] = { 71, }; | ||
757 | static const unsigned int cvbs_dbg_test_pins15[] = { 72, }; | ||
758 | static const unsigned int gn_gnss_power_pins[] = { 123, 124, 121, 122, 125, | ||
759 | 120, }; | ||
760 | static const unsigned int gn_gnss_sw_status_pins[] = { 57, 58, 59, 60, 61, | ||
761 | 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 53, 55, 56, 54, }; | ||
762 | static const unsigned int gn_gnss_eclk_pins[] = { 113, }; | ||
763 | static const unsigned int gn_gnss_irq1_pins0[] = { 112, }; | ||
764 | static const unsigned int gn_gnss_irq2_pins0[] = { 118, }; | ||
765 | static const unsigned int gn_gnss_tm_pins[] = { 115, }; | ||
766 | static const unsigned int gn_gnss_tsync_pins[] = { 114, }; | ||
767 | static const unsigned int gn_io_gnsssys_sw_cfg_pins[] = { 44, 43, 42, 41, 40, | ||
768 | 39, 38, 37, 49, 50, 91, 92, 93, 94, 95, 96, }; | ||
769 | static const unsigned int gn_trg_pins0[] = { 29, 28, 26, 27, }; | ||
770 | static const unsigned int gn_trg_pins1[] = { 77, 76, 74, 75, }; | ||
771 | static const unsigned int gn_trg_shutdown_pins0[] = { 30, }; | ||
772 | static const unsigned int gn_trg_shutdown_pins1[] = { 83, }; | ||
773 | static const unsigned int gn_trg_shutdown_pins2[] = { 117, }; | ||
774 | static const unsigned int gn_trg_shutdown_pins3[] = { 123, }; | ||
775 | static const unsigned int i2c0_pins[] = { 128, 127, }; | ||
776 | static const unsigned int i2c1_pins[] = { 126, 125, }; | ||
777 | static const unsigned int jtag_pins0[] = { 125, 4, 2, 0, 1, 3, }; | ||
778 | static const unsigned int ks_kas_spi_pins0[] = { 141, 144, 143, 142, }; | ||
779 | static const unsigned int ld_ldd_pins[] = { 57, 58, 59, 60, 61, 62, 63, 64, | ||
780 | 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, | ||
781 | 81, 56, 53, }; | ||
782 | static const unsigned int ld_ldd_16bit_pins[] = { 57, 58, 59, 60, 61, 62, 63, | ||
783 | 64, 65, 66, 67, 68, 69, 70, 71, 72, 56, 53, }; | ||
784 | static const unsigned int ld_ldd_fck_pins[] = { 55, }; | ||
785 | static const unsigned int ld_ldd_lck_pins[] = { 54, }; | ||
786 | static const unsigned int lr_lcdrom_pins[] = { 73, 54, 57, 58, 59, 60, 61, | ||
787 | 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 56, 53, 55, }; | ||
788 | static const unsigned int lvds_analog_pins[] = { 149, 150, 151, 152, 153, 154, | ||
789 | 155, 156, 157, 158, }; | ||
790 | static const unsigned int nd_df_pins[] = { 44, 43, 42, 41, 40, 39, 38, 37, | ||
791 | 47, 46, 52, 51, 45, 49, 50, 48, 124, }; | ||
792 | static const unsigned int nd_df_nowp_pins[] = { 44, 43, 42, 41, 40, 39, 38, | ||
793 | 37, 47, 46, 52, 51, 45, 49, 50, 48, }; | ||
794 | static const unsigned int ps_pins[] = { 120, 119, }; | ||
795 | static const unsigned int pwc_core_on_pins[] = { 8, }; | ||
796 | static const unsigned int pwc_ext_on_pins[] = { 6, }; | ||
797 | static const unsigned int pwc_gpio3_clk_pins[] = { 3, }; | ||
798 | static const unsigned int pwc_io_on_pins[] = { 9, }; | ||
799 | static const unsigned int pwc_lowbatt_b_pins0[] = { 4, }; | ||
800 | static const unsigned int pwc_mem_on_pins[] = { 7, }; | ||
801 | static const unsigned int pwc_on_key_b_pins0[] = { 5, }; | ||
802 | static const unsigned int pwc_wakeup_src0_pins[] = { 0, }; | ||
803 | static const unsigned int pwc_wakeup_src1_pins[] = { 1, }; | ||
804 | static const unsigned int pwc_wakeup_src2_pins[] = { 2, }; | ||
805 | static const unsigned int pwc_wakeup_src3_pins[] = { 3, }; | ||
806 | static const unsigned int pw_cko0_pins0[] = { 123, }; | ||
807 | static const unsigned int pw_cko0_pins1[] = { 101, }; | ||
808 | static const unsigned int pw_cko0_pins2[] = { 82, }; | ||
809 | static const unsigned int pw_cko1_pins0[] = { 124, }; | ||
810 | static const unsigned int pw_cko1_pins1[] = { 110, }; | ||
811 | static const unsigned int pw_i2s01_clk_pins0[] = { 125, }; | ||
812 | static const unsigned int pw_i2s01_clk_pins1[] = { 117, }; | ||
813 | static const unsigned int pw_pwm0_pins[] = { 119, }; | ||
814 | static const unsigned int pw_pwm1_pins[] = { 120, }; | ||
815 | static const unsigned int pw_pwm2_pins0[] = { 121, }; | ||
816 | static const unsigned int pw_pwm2_pins1[] = { 98, }; | ||
817 | static const unsigned int pw_pwm3_pins0[] = { 122, }; | ||
818 | static const unsigned int pw_pwm3_pins1[] = { 73, }; | ||
819 | static const unsigned int pw_pwm_cpu_vol_pins0[] = { 121, }; | ||
820 | static const unsigned int pw_pwm_cpu_vol_pins1[] = { 98, }; | ||
821 | static const unsigned int pw_backlight_pins0[] = { 122, }; | ||
822 | static const unsigned int pw_backlight_pins1[] = { 73, }; | ||
823 | static const unsigned int rg_eth_mac_pins[] = { 108, 103, 104, 105, 106, 107, | ||
824 | 102, 97, 98, 99, 100, 101, }; | ||
825 | static const unsigned int rg_gmac_phy_intr_n_pins[] = { 111, }; | ||
826 | static const unsigned int rg_rgmii_mac_pins[] = { 109, 110, }; | ||
827 | static const unsigned int rg_rgmii_phy_ref_clk_pins0[] = { 111, }; | ||
828 | static const unsigned int rg_rgmii_phy_ref_clk_pins1[] = { 53, }; | ||
829 | static const unsigned int sd0_pins[] = { 46, 47, 44, 43, 42, 41, 40, 39, 38, | ||
830 | 37, }; | ||
831 | static const unsigned int sd0_4bit_pins[] = { 46, 47, 44, 43, 42, 41, }; | ||
832 | static const unsigned int sd1_pins[] = { 48, 49, 44, 43, 42, 41, 40, 39, 38, | ||
833 | 37, }; | ||
834 | static const unsigned int sd1_4bit_pins0[] = { 48, 49, 44, 43, 42, 41, }; | ||
835 | static const unsigned int sd1_4bit_pins1[] = { 48, 49, 40, 39, 38, 37, }; | ||
836 | static const unsigned int sd2_pins0[] = { 124, 31, 32, 33, 34, 35, 36, 123, }; | ||
837 | static const unsigned int sd2_no_cdb_pins0[] = { 31, 32, 33, 34, 35, 36, 123, }; | ||
838 | static const unsigned int sd3_pins[] = { 85, 86, 87, 88, 89, 90, }; | ||
839 | static const unsigned int sd5_pins[] = { 91, 92, 93, 94, 95, 96, }; | ||
840 | static const unsigned int sd6_pins0[] = { 79, 78, 74, 75, 76, 77, }; | ||
841 | static const unsigned int sd6_pins1[] = { 101, 99, 100, 110, 109, 111, }; | ||
842 | static const unsigned int sp0_ext_ldo_on_pins[] = { 4, }; | ||
843 | static const unsigned int sp0_qspi_pins[] = { 12, 13, 14, 15, 16, 17, }; | ||
844 | static const unsigned int sp1_spi_pins[] = { 19, 20, 21, 18, }; | ||
845 | static const unsigned int tpiu_trace_pins[] = { 53, 56, 57, 58, 59, 60, 61, | ||
846 | 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, }; | ||
847 | static const unsigned int uart0_pins[] = { 121, 120, 134, 133, }; | ||
848 | static const unsigned int uart0_nopause_pins[] = { 134, 133, }; | ||
849 | static const unsigned int uart1_pins[] = { 136, 135, }; | ||
850 | static const unsigned int uart2_pins[] = { 11, 10, }; | ||
851 | static const unsigned int uart3_pins0[] = { 125, 126, 138, 137, }; | ||
852 | static const unsigned int uart3_pins1[] = { 111, 109, 84, 83, }; | ||
853 | static const unsigned int uart3_pins2[] = { 140, 139, 138, 137, }; | ||
854 | static const unsigned int uart3_pins3[] = { 139, 140, 84, 83, }; | ||
855 | static const unsigned int uart3_nopause_pins0[] = { 138, 137, }; | ||
856 | static const unsigned int uart3_nopause_pins1[] = { 84, 83, }; | ||
857 | static const unsigned int uart4_pins0[] = { 122, 123, 140, 139, }; | ||
858 | static const unsigned int uart4_pins1[] = { 100, 99, 140, 139, }; | ||
859 | static const unsigned int uart4_pins2[] = { 117, 116, 140, 139, }; | ||
860 | static const unsigned int uart4_nopause_pins[] = { 140, 139, }; | ||
861 | static const unsigned int usb0_drvvbus_pins[] = { 51, }; | ||
862 | static const unsigned int usb1_drvvbus_pins[] = { 134, }; | ||
863 | static const unsigned int visbus_dout_pins[] = { 57, 58, 59, 60, 61, 62, 63, | ||
864 | 64, 65, 66, 67, 68, 69, 70, 71, 72, 53, 54, 55, 56, 85, 86, | ||
865 | 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, }; | ||
866 | static const unsigned int vi_vip1_pins[] = { 74, 75, 76, 77, 78, 79, 80, 81, | ||
867 | 82, 83, 84, 103, 104, 105, 106, 107, 102, 97, 98, }; | ||
868 | static const unsigned int vi_vip1_ext_pins[] = { 74, 75, 76, 77, 78, 79, 80, | ||
869 | 81, 82, 83, 84, 108, 103, 104, 105, 106, 107, 102, 97, 98, | ||
870 | 99, 100, }; | ||
871 | static const unsigned int vi_vip1_low8bit_pins[] = { 74, 75, 76, 77, 78, 79, | ||
872 | 80, 81, }; | ||
873 | static const unsigned int vi_vip1_high8bit_pins[] = { 82, 83, 84, 108, 103, | ||
874 | 104, 105, 106, }; | ||
875 | |||
876 | /* definition of pin group table */ | ||
877 | struct atlas7_pin_group altas7_pin_groups[] = { | ||
878 | GROUP("gnss_gpio_grp", gnss_gpio_pins), | ||
879 | GROUP("lcd_vip_gpio_grp", lcd_vip_gpio_pins), | ||
880 | GROUP("sdio_i2s_gpio_grp", sdio_i2s_gpio_pins), | ||
881 | GROUP("sp_rgmii_gpio_grp", sp_rgmii_gpio_pins), | ||
882 | GROUP("lvds_gpio_grp", lvds_gpio_pins), | ||
883 | GROUP("uart_nand_gpio_grp", uart_nand_gpio_pins), | ||
884 | GROUP("rtc_gpio_grp", rtc_gpio_pins), | ||
885 | GROUP("audio_ac97_grp", audio_ac97_pins), | ||
886 | GROUP("audio_func_dbg_grp", audio_func_dbg_pins), | ||
887 | GROUP("audio_i2s_grp", audio_i2s_pins), | ||
888 | GROUP("audio_i2s_2ch_grp", audio_i2s_2ch_pins), | ||
889 | GROUP("audio_i2s_extclk_grp", audio_i2s_extclk_pins), | ||
890 | GROUP("audio_uart0_grp", audio_uart0_pins), | ||
891 | GROUP("audio_uart1_grp", audio_uart1_pins), | ||
892 | GROUP("audio_uart2_grp0", audio_uart2_pins0), | ||
893 | GROUP("audio_uart2_grp1", audio_uart2_pins1), | ||
894 | GROUP("c_can_trnsvr_grp", c_can_trnsvr_pins), | ||
895 | GROUP("c0_can_grp0", c0_can_pins0), | ||
896 | GROUP("c0_can_grp1", c0_can_pins1), | ||
897 | GROUP("c1_can_grp0", c1_can_pins0), | ||
898 | GROUP("c1_can_grp1", c1_can_pins1), | ||
899 | GROUP("c1_can_grp2", c1_can_pins2), | ||
900 | GROUP("ca_audio_lpc_grp", ca_audio_lpc_pins), | ||
901 | GROUP("ca_bt_lpc_grp", ca_bt_lpc_pins), | ||
902 | GROUP("ca_coex_grp", ca_coex_pins), | ||
903 | GROUP("ca_curator_lpc_grp", ca_curator_lpc_pins), | ||
904 | GROUP("ca_pcm_debug_grp", ca_pcm_debug_pins), | ||
905 | GROUP("ca_pio_grp", ca_pio_pins), | ||
906 | GROUP("ca_sdio_debug_grp", ca_sdio_debug_pins), | ||
907 | GROUP("ca_spi_grp", ca_spi_pins), | ||
908 | GROUP("ca_trb_grp", ca_trb_pins), | ||
909 | GROUP("ca_uart_debug_grp", ca_uart_debug_pins), | ||
910 | GROUP("clkc_grp0", clkc_pins0), | ||
911 | GROUP("clkc_grp1", clkc_pins1), | ||
912 | GROUP("gn_gnss_i2c_grp", gn_gnss_i2c_pins), | ||
913 | GROUP("gn_gnss_uart_nopause_grp", gn_gnss_uart_nopause_pins), | ||
914 | GROUP("gn_gnss_uart_grp", gn_gnss_uart_pins), | ||
915 | GROUP("gn_trg_spi_grp0", gn_trg_spi_pins0), | ||
916 | GROUP("gn_trg_spi_grp1", gn_trg_spi_pins1), | ||
917 | GROUP("cvbs_dbg_grp", cvbs_dbg_pins), | ||
918 | GROUP("cvbs_dbg_test_grp0", cvbs_dbg_test_pins0), | ||
919 | GROUP("cvbs_dbg_test_grp1", cvbs_dbg_test_pins1), | ||
920 | GROUP("cvbs_dbg_test_grp2", cvbs_dbg_test_pins2), | ||
921 | GROUP("cvbs_dbg_test_grp3", cvbs_dbg_test_pins3), | ||
922 | GROUP("cvbs_dbg_test_grp4", cvbs_dbg_test_pins4), | ||
923 | GROUP("cvbs_dbg_test_grp5", cvbs_dbg_test_pins5), | ||
924 | GROUP("cvbs_dbg_test_grp6", cvbs_dbg_test_pins6), | ||
925 | GROUP("cvbs_dbg_test_grp7", cvbs_dbg_test_pins7), | ||
926 | GROUP("cvbs_dbg_test_grp8", cvbs_dbg_test_pins8), | ||
927 | GROUP("cvbs_dbg_test_grp9", cvbs_dbg_test_pins9), | ||
928 | GROUP("cvbs_dbg_test_grp10", cvbs_dbg_test_pins10), | ||
929 | GROUP("cvbs_dbg_test_grp11", cvbs_dbg_test_pins11), | ||
930 | GROUP("cvbs_dbg_test_grp12", cvbs_dbg_test_pins12), | ||
931 | GROUP("cvbs_dbg_test_grp13", cvbs_dbg_test_pins13), | ||
932 | GROUP("cvbs_dbg_test_grp14", cvbs_dbg_test_pins14), | ||
933 | GROUP("cvbs_dbg_test_grp15", cvbs_dbg_test_pins15), | ||
934 | GROUP("gn_gnss_power_grp", gn_gnss_power_pins), | ||
935 | GROUP("gn_gnss_sw_status_grp", gn_gnss_sw_status_pins), | ||
936 | GROUP("gn_gnss_eclk_grp", gn_gnss_eclk_pins), | ||
937 | GROUP("gn_gnss_irq1_grp0", gn_gnss_irq1_pins0), | ||
938 | GROUP("gn_gnss_irq2_grp0", gn_gnss_irq2_pins0), | ||
939 | GROUP("gn_gnss_tm_grp", gn_gnss_tm_pins), | ||
940 | GROUP("gn_gnss_tsync_grp", gn_gnss_tsync_pins), | ||
941 | GROUP("gn_io_gnsssys_sw_cfg_grp", gn_io_gnsssys_sw_cfg_pins), | ||
942 | GROUP("gn_trg_grp0", gn_trg_pins0), | ||
943 | GROUP("gn_trg_grp1", gn_trg_pins1), | ||
944 | GROUP("gn_trg_shutdown_grp0", gn_trg_shutdown_pins0), | ||
945 | GROUP("gn_trg_shutdown_grp1", gn_trg_shutdown_pins1), | ||
946 | GROUP("gn_trg_shutdown_grp2", gn_trg_shutdown_pins2), | ||
947 | GROUP("gn_trg_shutdown_grp3", gn_trg_shutdown_pins3), | ||
948 | GROUP("i2c0_grp", i2c0_pins), | ||
949 | GROUP("i2c1_grp", i2c1_pins), | ||
950 | GROUP("jtag_grp0", jtag_pins0), | ||
951 | GROUP("ks_kas_spi_grp0", ks_kas_spi_pins0), | ||
952 | GROUP("ld_ldd_grp", ld_ldd_pins), | ||
953 | GROUP("ld_ldd_16bit_grp", ld_ldd_16bit_pins), | ||
954 | GROUP("ld_ldd_fck_grp", ld_ldd_fck_pins), | ||
955 | GROUP("ld_ldd_lck_grp", ld_ldd_lck_pins), | ||
956 | GROUP("lr_lcdrom_grp", lr_lcdrom_pins), | ||
957 | GROUP("lvds_analog_grp", lvds_analog_pins), | ||
958 | GROUP("nd_df_grp", nd_df_pins), | ||
959 | GROUP("nd_df_nowp_grp", nd_df_nowp_pins), | ||
960 | GROUP("ps_grp", ps_pins), | ||
961 | GROUP("pwc_core_on_grp", pwc_core_on_pins), | ||
962 | GROUP("pwc_ext_on_grp", pwc_ext_on_pins), | ||
963 | GROUP("pwc_gpio3_clk_grp", pwc_gpio3_clk_pins), | ||
964 | GROUP("pwc_io_on_grp", pwc_io_on_pins), | ||
965 | GROUP("pwc_lowbatt_b_grp0", pwc_lowbatt_b_pins0), | ||
966 | GROUP("pwc_mem_on_grp", pwc_mem_on_pins), | ||
967 | GROUP("pwc_on_key_b_grp0", pwc_on_key_b_pins0), | ||
968 | GROUP("pwc_wakeup_src0_grp", pwc_wakeup_src0_pins), | ||
969 | GROUP("pwc_wakeup_src1_grp", pwc_wakeup_src1_pins), | ||
970 | GROUP("pwc_wakeup_src2_grp", pwc_wakeup_src2_pins), | ||
971 | GROUP("pwc_wakeup_src3_grp", pwc_wakeup_src3_pins), | ||
972 | GROUP("pw_cko0_grp0", pw_cko0_pins0), | ||
973 | GROUP("pw_cko0_grp1", pw_cko0_pins1), | ||
974 | GROUP("pw_cko0_grp2", pw_cko0_pins2), | ||
975 | GROUP("pw_cko1_grp0", pw_cko1_pins0), | ||
976 | GROUP("pw_cko1_grp1", pw_cko1_pins1), | ||
977 | GROUP("pw_i2s01_clk_grp0", pw_i2s01_clk_pins0), | ||
978 | GROUP("pw_i2s01_clk_grp1", pw_i2s01_clk_pins1), | ||
979 | GROUP("pw_pwm0_grp", pw_pwm0_pins), | ||
980 | GROUP("pw_pwm1_grp", pw_pwm1_pins), | ||
981 | GROUP("pw_pwm2_grp0", pw_pwm2_pins0), | ||
982 | GROUP("pw_pwm2_grp1", pw_pwm2_pins1), | ||
983 | GROUP("pw_pwm3_grp0", pw_pwm3_pins0), | ||
984 | GROUP("pw_pwm3_grp1", pw_pwm3_pins1), | ||
985 | GROUP("pw_pwm_cpu_vol_grp0", pw_pwm_cpu_vol_pins0), | ||
986 | GROUP("pw_pwm_cpu_vol_grp1", pw_pwm_cpu_vol_pins1), | ||
987 | GROUP("pw_backlight_grp0", pw_backlight_pins0), | ||
988 | GROUP("pw_backlight_grp1", pw_backlight_pins1), | ||
989 | GROUP("rg_eth_mac_grp", rg_eth_mac_pins), | ||
990 | GROUP("rg_gmac_phy_intr_n_grp", rg_gmac_phy_intr_n_pins), | ||
991 | GROUP("rg_rgmii_mac_grp", rg_rgmii_mac_pins), | ||
992 | GROUP("rg_rgmii_phy_ref_clk_grp0", rg_rgmii_phy_ref_clk_pins0), | ||
993 | GROUP("rg_rgmii_phy_ref_clk_grp1", rg_rgmii_phy_ref_clk_pins1), | ||
994 | GROUP("sd0_grp", sd0_pins), | ||
995 | GROUP("sd0_4bit_grp", sd0_4bit_pins), | ||
996 | GROUP("sd1_grp", sd1_pins), | ||
997 | GROUP("sd1_4bit_grp0", sd1_4bit_pins0), | ||
998 | GROUP("sd1_4bit_grp1", sd1_4bit_pins1), | ||
999 | GROUP("sd2_grp0", sd2_pins0), | ||
1000 | GROUP("sd2_no_cdb_grp0", sd2_no_cdb_pins0), | ||
1001 | GROUP("sd3_grp", sd3_pins), | ||
1002 | GROUP("sd5_grp", sd5_pins), | ||
1003 | GROUP("sd6_grp0", sd6_pins0), | ||
1004 | GROUP("sd6_grp1", sd6_pins1), | ||
1005 | GROUP("sp0_ext_ldo_on_grp", sp0_ext_ldo_on_pins), | ||
1006 | GROUP("sp0_qspi_grp", sp0_qspi_pins), | ||
1007 | GROUP("sp1_spi_grp", sp1_spi_pins), | ||
1008 | GROUP("tpiu_trace_grp", tpiu_trace_pins), | ||
1009 | GROUP("uart0_grp", uart0_pins), | ||
1010 | GROUP("uart0_nopause_grp", uart0_nopause_pins), | ||
1011 | GROUP("uart1_grp", uart1_pins), | ||
1012 | GROUP("uart2_grp", uart2_pins), | ||
1013 | GROUP("uart3_grp0", uart3_pins0), | ||
1014 | GROUP("uart3_grp1", uart3_pins1), | ||
1015 | GROUP("uart3_grp2", uart3_pins2), | ||
1016 | GROUP("uart3_grp3", uart3_pins3), | ||
1017 | GROUP("uart3_nopause_grp0", uart3_nopause_pins0), | ||
1018 | GROUP("uart3_nopause_grp1", uart3_nopause_pins1), | ||
1019 | GROUP("uart4_grp0", uart4_pins0), | ||
1020 | GROUP("uart4_grp1", uart4_pins1), | ||
1021 | GROUP("uart4_grp2", uart4_pins2), | ||
1022 | GROUP("uart4_nopause_grp", uart4_nopause_pins), | ||
1023 | GROUP("usb0_drvvbus_grp", usb0_drvvbus_pins), | ||
1024 | GROUP("usb1_drvvbus_grp", usb1_drvvbus_pins), | ||
1025 | GROUP("visbus_dout_grp", visbus_dout_pins), | ||
1026 | GROUP("vi_vip1_grp", vi_vip1_pins), | ||
1027 | GROUP("vi_vip1_ext_grp", vi_vip1_ext_pins), | ||
1028 | GROUP("vi_vip1_low8bit_grp", vi_vip1_low8bit_pins), | ||
1029 | GROUP("vi_vip1_high8bit_grp", vi_vip1_high8bit_pins), | ||
1030 | }; | ||
1031 | |||
1032 | /* How many groups that a function can use */ | ||
1033 | static const char * const gnss_gpio_grp[] = { "gnss_gpio_grp", }; | ||
1034 | static const char * const lcd_vip_gpio_grp[] = { "lcd_vip_gpio_grp", }; | ||
1035 | static const char * const sdio_i2s_gpio_grp[] = { "sdio_i2s_gpio_grp", }; | ||
1036 | static const char * const sp_rgmii_gpio_grp[] = { "sp_rgmii_gpio_grp", }; | ||
1037 | static const char * const lvds_gpio_grp[] = { "lvds_gpio_grp", }; | ||
1038 | static const char * const uart_nand_gpio_grp[] = { "uart_nand_gpio_grp", }; | ||
1039 | static const char * const rtc_gpio_grp[] = { "rtc_gpio_grp", }; | ||
1040 | static const char * const audio_ac97_grp[] = { "audio_ac97_grp", }; | ||
1041 | static const char * const audio_func_dbg_grp[] = { "audio_func_dbg_grp", }; | ||
1042 | static const char * const audio_i2s_grp[] = { "audio_i2s_grp", }; | ||
1043 | static const char * const audio_i2s_2ch_grp[] = { "audio_i2s_2ch_grp", }; | ||
1044 | static const char * const audio_i2s_extclk_grp[] = { "audio_i2s_extclk_grp", }; | ||
1045 | static const char * const audio_uart0_grp[] = { "audio_uart0_grp", }; | ||
1046 | static const char * const audio_uart1_grp[] = { "audio_uart1_grp", }; | ||
1047 | static const char * const audio_uart2_grp0[] = { "audio_uart2_grp0", }; | ||
1048 | static const char * const audio_uart2_grp1[] = { "audio_uart2_grp1", }; | ||
1049 | static const char * const c_can_trnsvr_grp[] = { "c_can_trnsvr_grp", }; | ||
1050 | static const char * const c0_can_grp0[] = { "c0_can_grp0", }; | ||
1051 | static const char * const c0_can_grp1[] = { "c0_can_grp1", }; | ||
1052 | static const char * const c1_can_grp0[] = { "c1_can_grp0", }; | ||
1053 | static const char * const c1_can_grp1[] = { "c1_can_grp1", }; | ||
1054 | static const char * const c1_can_grp2[] = { "c1_can_grp2", }; | ||
1055 | static const char * const ca_audio_lpc_grp[] = { "ca_audio_lpc_grp", }; | ||
1056 | static const char * const ca_bt_lpc_grp[] = { "ca_bt_lpc_grp", }; | ||
1057 | static const char * const ca_coex_grp[] = { "ca_coex_grp", }; | ||
1058 | static const char * const ca_curator_lpc_grp[] = { "ca_curator_lpc_grp", }; | ||
1059 | static const char * const ca_pcm_debug_grp[] = { "ca_pcm_debug_grp", }; | ||
1060 | static const char * const ca_pio_grp[] = { "ca_pio_grp", }; | ||
1061 | static const char * const ca_sdio_debug_grp[] = { "ca_sdio_debug_grp", }; | ||
1062 | static const char * const ca_spi_grp[] = { "ca_spi_grp", }; | ||
1063 | static const char * const ca_trb_grp[] = { "ca_trb_grp", }; | ||
1064 | static const char * const ca_uart_debug_grp[] = { "ca_uart_debug_grp", }; | ||
1065 | static const char * const clkc_grp0[] = { "clkc_grp0", }; | ||
1066 | static const char * const clkc_grp1[] = { "clkc_grp1", }; | ||
1067 | static const char * const gn_gnss_i2c_grp[] = { "gn_gnss_i2c_grp", }; | ||
1068 | static const char * const gn_gnss_uart_nopause_grp[] = { | ||
1069 | "gn_gnss_uart_nopause_grp", }; | ||
1070 | static const char * const gn_gnss_uart_grp[] = { "gn_gnss_uart_grp", }; | ||
1071 | static const char * const gn_trg_spi_grp0[] = { "gn_trg_spi_grp0", }; | ||
1072 | static const char * const gn_trg_spi_grp1[] = { "gn_trg_spi_grp1", }; | ||
1073 | static const char * const cvbs_dbg_grp[] = { "cvbs_dbg_grp", }; | ||
1074 | static const char * const cvbs_dbg_test_grp0[] = { "cvbs_dbg_test_grp0", }; | ||
1075 | static const char * const cvbs_dbg_test_grp1[] = { "cvbs_dbg_test_grp1", }; | ||
1076 | static const char * const cvbs_dbg_test_grp2[] = { "cvbs_dbg_test_grp2", }; | ||
1077 | static const char * const cvbs_dbg_test_grp3[] = { "cvbs_dbg_test_grp3", }; | ||
1078 | static const char * const cvbs_dbg_test_grp4[] = { "cvbs_dbg_test_grp4", }; | ||
1079 | static const char * const cvbs_dbg_test_grp5[] = { "cvbs_dbg_test_grp5", }; | ||
1080 | static const char * const cvbs_dbg_test_grp6[] = { "cvbs_dbg_test_grp6", }; | ||
1081 | static const char * const cvbs_dbg_test_grp7[] = { "cvbs_dbg_test_grp7", }; | ||
1082 | static const char * const cvbs_dbg_test_grp8[] = { "cvbs_dbg_test_grp8", }; | ||
1083 | static const char * const cvbs_dbg_test_grp9[] = { "cvbs_dbg_test_grp9", }; | ||
1084 | static const char * const cvbs_dbg_test_grp10[] = { "cvbs_dbg_test_grp10", }; | ||
1085 | static const char * const cvbs_dbg_test_grp11[] = { "cvbs_dbg_test_grp11", }; | ||
1086 | static const char * const cvbs_dbg_test_grp12[] = { "cvbs_dbg_test_grp12", }; | ||
1087 | static const char * const cvbs_dbg_test_grp13[] = { "cvbs_dbg_test_grp13", }; | ||
1088 | static const char * const cvbs_dbg_test_grp14[] = { "cvbs_dbg_test_grp14", }; | ||
1089 | static const char * const cvbs_dbg_test_grp15[] = { "cvbs_dbg_test_grp15", }; | ||
1090 | static const char * const gn_gnss_power_grp[] = { "gn_gnss_power_grp", }; | ||
1091 | static const char * const gn_gnss_sw_status_grp[] = { | ||
1092 | "gn_gnss_sw_status_grp", }; | ||
1093 | static const char * const gn_gnss_eclk_grp[] = { "gn_gnss_eclk_grp", }; | ||
1094 | static const char * const gn_gnss_irq1_grp0[] = { "gn_gnss_irq1_grp0", }; | ||
1095 | static const char * const gn_gnss_irq2_grp0[] = { "gn_gnss_irq2_grp0", }; | ||
1096 | static const char * const gn_gnss_tm_grp[] = { "gn_gnss_tm_grp", }; | ||
1097 | static const char * const gn_gnss_tsync_grp[] = { "gn_gnss_tsync_grp", }; | ||
1098 | static const char * const gn_io_gnsssys_sw_cfg_grp[] = { | ||
1099 | "gn_io_gnsssys_sw_cfg_grp", }; | ||
1100 | static const char * const gn_trg_grp0[] = { "gn_trg_grp0", }; | ||
1101 | static const char * const gn_trg_grp1[] = { "gn_trg_grp1", }; | ||
1102 | static const char * const gn_trg_shutdown_grp0[] = { "gn_trg_shutdown_grp0", }; | ||
1103 | static const char * const gn_trg_shutdown_grp1[] = { "gn_trg_shutdown_grp1", }; | ||
1104 | static const char * const gn_trg_shutdown_grp2[] = { "gn_trg_shutdown_grp2", }; | ||
1105 | static const char * const gn_trg_shutdown_grp3[] = { "gn_trg_shutdown_grp3", }; | ||
1106 | static const char * const i2c0_grp[] = { "i2c0_grp", }; | ||
1107 | static const char * const i2c1_grp[] = { "i2c1_grp", }; | ||
1108 | static const char * const jtag_grp0[] = { "jtag_grp0", }; | ||
1109 | static const char * const ks_kas_spi_grp0[] = { "ks_kas_spi_grp0", }; | ||
1110 | static const char * const ld_ldd_grp[] = { "ld_ldd_grp", }; | ||
1111 | static const char * const ld_ldd_16bit_grp[] = { "ld_ldd_16bit_grp", }; | ||
1112 | static const char * const ld_ldd_fck_grp[] = { "ld_ldd_fck_grp", }; | ||
1113 | static const char * const ld_ldd_lck_grp[] = { "ld_ldd_lck_grp", }; | ||
1114 | static const char * const lr_lcdrom_grp[] = { "lr_lcdrom_grp", }; | ||
1115 | static const char * const lvds_analog_grp[] = { "lvds_analog_grp", }; | ||
1116 | static const char * const nd_df_grp[] = { "nd_df_grp", }; | ||
1117 | static const char * const nd_df_nowp_grp[] = { "nd_df_nowp_grp", }; | ||
1118 | static const char * const ps_grp[] = { "ps_grp", }; | ||
1119 | static const char * const pwc_core_on_grp[] = { "pwc_core_on_grp", }; | ||
1120 | static const char * const pwc_ext_on_grp[] = { "pwc_ext_on_grp", }; | ||
1121 | static const char * const pwc_gpio3_clk_grp[] = { "pwc_gpio3_clk_grp", }; | ||
1122 | static const char * const pwc_io_on_grp[] = { "pwc_io_on_grp", }; | ||
1123 | static const char * const pwc_lowbatt_b_grp0[] = { "pwc_lowbatt_b_grp0", }; | ||
1124 | static const char * const pwc_mem_on_grp[] = { "pwc_mem_on_grp", }; | ||
1125 | static const char * const pwc_on_key_b_grp0[] = { "pwc_on_key_b_grp0", }; | ||
1126 | static const char * const pwc_wakeup_src0_grp[] = { "pwc_wakeup_src0_grp", }; | ||
1127 | static const char * const pwc_wakeup_src1_grp[] = { "pwc_wakeup_src1_grp", }; | ||
1128 | static const char * const pwc_wakeup_src2_grp[] = { "pwc_wakeup_src2_grp", }; | ||
1129 | static const char * const pwc_wakeup_src3_grp[] = { "pwc_wakeup_src3_grp", }; | ||
1130 | static const char * const pw_cko0_grp0[] = { "pw_cko0_grp0", }; | ||
1131 | static const char * const pw_cko0_grp1[] = { "pw_cko0_grp1", }; | ||
1132 | static const char * const pw_cko0_grp2[] = { "pw_cko0_grp2", }; | ||
1133 | static const char * const pw_cko1_grp0[] = { "pw_cko1_grp0", }; | ||
1134 | static const char * const pw_cko1_grp1[] = { "pw_cko1_grp1", }; | ||
1135 | static const char * const pw_i2s01_clk_grp0[] = { "pw_i2s01_clk_grp0", }; | ||
1136 | static const char * const pw_i2s01_clk_grp1[] = { "pw_i2s01_clk_grp1", }; | ||
1137 | static const char * const pw_pwm0_grp[] = { "pw_pwm0_grp", }; | ||
1138 | static const char * const pw_pwm1_grp[] = { "pw_pwm1_grp", }; | ||
1139 | static const char * const pw_pwm2_grp0[] = { "pw_pwm2_grp0", }; | ||
1140 | static const char * const pw_pwm2_grp1[] = { "pw_pwm2_grp1", }; | ||
1141 | static const char * const pw_pwm3_grp0[] = { "pw_pwm3_grp0", }; | ||
1142 | static const char * const pw_pwm3_grp1[] = { "pw_pwm3_grp1", }; | ||
1143 | static const char * const pw_pwm_cpu_vol_grp0[] = { "pw_pwm_cpu_vol_grp0", }; | ||
1144 | static const char * const pw_pwm_cpu_vol_grp1[] = { "pw_pwm_cpu_vol_grp1", }; | ||
1145 | static const char * const pw_backlight_grp0[] = { "pw_backlight_grp0", }; | ||
1146 | static const char * const pw_backlight_grp1[] = { "pw_backlight_grp1", }; | ||
1147 | static const char * const rg_eth_mac_grp[] = { "rg_eth_mac_grp", }; | ||
1148 | static const char * const rg_gmac_phy_intr_n_grp[] = { | ||
1149 | "rg_gmac_phy_intr_n_grp", }; | ||
1150 | static const char * const rg_rgmii_mac_grp[] = { "rg_rgmii_mac_grp", }; | ||
1151 | static const char * const rg_rgmii_phy_ref_clk_grp0[] = { | ||
1152 | "rg_rgmii_phy_ref_clk_grp0", }; | ||
1153 | static const char * const rg_rgmii_phy_ref_clk_grp1[] = { | ||
1154 | "rg_rgmii_phy_ref_clk_grp1", }; | ||
1155 | static const char * const sd0_grp[] = { "sd0_grp", }; | ||
1156 | static const char * const sd0_4bit_grp[] = { "sd0_4bit_grp", }; | ||
1157 | static const char * const sd1_grp[] = { "sd1_grp", }; | ||
1158 | static const char * const sd1_4bit_grp0[] = { "sd1_4bit_grp0", }; | ||
1159 | static const char * const sd1_4bit_grp1[] = { "sd1_4bit_grp1", }; | ||
1160 | static const char * const sd2_grp0[] = { "sd2_grp0", }; | ||
1161 | static const char * const sd2_no_cdb_grp0[] = { "sd2_no_cdb_grp0", }; | ||
1162 | static const char * const sd3_grp[] = { "sd3_grp", }; | ||
1163 | static const char * const sd5_grp[] = { "sd5_grp", }; | ||
1164 | static const char * const sd6_grp0[] = { "sd6_grp0", }; | ||
1165 | static const char * const sd6_grp1[] = { "sd6_grp1", }; | ||
1166 | static const char * const sp0_ext_ldo_on_grp[] = { "sp0_ext_ldo_on_grp", }; | ||
1167 | static const char * const sp0_qspi_grp[] = { "sp0_qspi_grp", }; | ||
1168 | static const char * const sp1_spi_grp[] = { "sp1_spi_grp", }; | ||
1169 | static const char * const tpiu_trace_grp[] = { "tpiu_trace_grp", }; | ||
1170 | static const char * const uart0_grp[] = { "uart0_grp", }; | ||
1171 | static const char * const uart0_nopause_grp[] = { "uart0_nopause_grp", }; | ||
1172 | static const char * const uart1_grp[] = { "uart1_grp", }; | ||
1173 | static const char * const uart2_grp[] = { "uart2_grp", }; | ||
1174 | static const char * const uart3_grp0[] = { "uart3_grp0", }; | ||
1175 | static const char * const uart3_grp1[] = { "uart3_grp1", }; | ||
1176 | static const char * const uart3_grp2[] = { "uart3_grp2", }; | ||
1177 | static const char * const uart3_grp3[] = { "uart3_grp3", }; | ||
1178 | static const char * const uart3_nopause_grp0[] = { "uart3_nopause_grp0", }; | ||
1179 | static const char * const uart3_nopause_grp1[] = { "uart3_nopause_grp1", }; | ||
1180 | static const char * const uart4_grp0[] = { "uart4_grp0", }; | ||
1181 | static const char * const uart4_grp1[] = { "uart4_grp1", }; | ||
1182 | static const char * const uart4_grp2[] = { "uart4_grp2", }; | ||
1183 | static const char * const uart4_nopause_grp[] = { "uart4_nopause_grp", }; | ||
1184 | static const char * const usb0_drvvbus_grp[] = { "usb0_drvvbus_grp", }; | ||
1185 | static const char * const usb1_drvvbus_grp[] = { "usb1_drvvbus_grp", }; | ||
1186 | static const char * const visbus_dout_grp[] = { "visbus_dout_grp", }; | ||
1187 | static const char * const vi_vip1_grp[] = { "vi_vip1_grp", }; | ||
1188 | static const char * const vi_vip1_ext_grp[] = { "vi_vip1_ext_grp", }; | ||
1189 | static const char * const vi_vip1_low8bit_grp[] = { "vi_vip1_low8bit_grp", }; | ||
1190 | static const char * const vi_vip1_high8bit_grp[] = { "vi_vip1_high8bit_grp", }; | ||
1191 | |||
1192 | static struct atlas7_pad_mux gnss_gpio_grp_pad_mux[] = { | ||
1193 | MUX(1, 119, 0, N, N, N, N), | ||
1194 | MUX(1, 120, 0, N, N, N, N), | ||
1195 | MUX(1, 121, 0, N, N, N, N), | ||
1196 | MUX(1, 122, 0, N, N, N, N), | ||
1197 | MUX(1, 123, 0, N, N, N, N), | ||
1198 | MUX(1, 124, 0, N, N, N, N), | ||
1199 | MUX(1, 125, 0, N, N, N, N), | ||
1200 | MUX(1, 126, 0, N, N, N, N), | ||
1201 | MUX(1, 127, 0, N, N, N, N), | ||
1202 | MUX(1, 128, 0, N, N, N, N), | ||
1203 | MUX(1, 22, 0, N, N, N, N), | ||
1204 | MUX(1, 23, 0, N, N, N, N), | ||
1205 | MUX(1, 24, 0, N, N, N, N), | ||
1206 | MUX(1, 25, 0, N, N, N, N), | ||
1207 | MUX(1, 26, 0, N, N, N, N), | ||
1208 | MUX(1, 27, 0, N, N, N, N), | ||
1209 | MUX(1, 28, 0, N, N, N, N), | ||
1210 | MUX(1, 29, 0, N, N, N, N), | ||
1211 | MUX(1, 30, 0, N, N, N, N), | ||
1212 | }; | ||
1213 | |||
1214 | static struct atlas7_grp_mux gnss_gpio_grp_mux = { | ||
1215 | .pad_mux_count = ARRAY_SIZE(gnss_gpio_grp_pad_mux), | ||
1216 | .pad_mux_list = gnss_gpio_grp_pad_mux, | ||
1217 | }; | ||
1218 | |||
1219 | static struct atlas7_pad_mux lcd_vip_gpio_grp_pad_mux[] = { | ||
1220 | MUX(1, 74, 0, N, N, N, N), | ||
1221 | MUX(1, 75, 0, N, N, N, N), | ||
1222 | MUX(1, 76, 0, N, N, N, N), | ||
1223 | MUX(1, 77, 0, N, N, N, N), | ||
1224 | MUX(1, 78, 0, N, N, N, N), | ||
1225 | MUX(1, 79, 0, N, N, N, N), | ||
1226 | MUX(1, 80, 0, N, N, N, N), | ||
1227 | MUX(1, 81, 0, N, N, N, N), | ||
1228 | MUX(1, 82, 0, N, N, N, N), | ||
1229 | MUX(1, 83, 0, N, N, N, N), | ||
1230 | MUX(1, 84, 0, N, N, N, N), | ||
1231 | MUX(1, 53, 0, N, N, N, N), | ||
1232 | MUX(1, 54, 0, N, N, N, N), | ||
1233 | MUX(1, 55, 0, N, N, N, N), | ||
1234 | MUX(1, 56, 0, N, N, N, N), | ||
1235 | MUX(1, 57, 0, N, N, N, N), | ||
1236 | MUX(1, 58, 0, N, N, N, N), | ||
1237 | MUX(1, 59, 0, N, N, N, N), | ||
1238 | MUX(1, 60, 0, N, N, N, N), | ||
1239 | MUX(1, 61, 0, N, N, N, N), | ||
1240 | MUX(1, 62, 0, N, N, N, N), | ||
1241 | MUX(1, 63, 0, N, N, N, N), | ||
1242 | MUX(1, 64, 0, N, N, N, N), | ||
1243 | MUX(1, 65, 0, N, N, N, N), | ||
1244 | MUX(1, 66, 0, N, N, N, N), | ||
1245 | MUX(1, 67, 0, N, N, N, N), | ||
1246 | MUX(1, 68, 0, N, N, N, N), | ||
1247 | MUX(1, 69, 0, N, N, N, N), | ||
1248 | MUX(1, 70, 0, N, N, N, N), | ||
1249 | MUX(1, 71, 0, N, N, N, N), | ||
1250 | MUX(1, 72, 0, N, N, N, N), | ||
1251 | MUX(1, 73, 0, N, N, N, N), | ||
1252 | }; | ||
1253 | |||
1254 | static struct atlas7_grp_mux lcd_vip_gpio_grp_mux = { | ||
1255 | .pad_mux_count = ARRAY_SIZE(lcd_vip_gpio_grp_pad_mux), | ||
1256 | .pad_mux_list = lcd_vip_gpio_grp_pad_mux, | ||
1257 | }; | ||
1258 | |||
1259 | static struct atlas7_pad_mux sdio_i2s_gpio_grp_pad_mux[] = { | ||
1260 | MUX(1, 31, 0, N, N, N, N), | ||
1261 | MUX(1, 32, 0, N, N, N, N), | ||
1262 | MUX(1, 33, 0, N, N, N, N), | ||
1263 | MUX(1, 34, 0, N, N, N, N), | ||
1264 | MUX(1, 35, 0, N, N, N, N), | ||
1265 | MUX(1, 36, 0, N, N, N, N), | ||
1266 | MUX(1, 85, 0, N, N, N, N), | ||
1267 | MUX(1, 86, 0, N, N, N, N), | ||
1268 | MUX(1, 87, 0, N, N, N, N), | ||
1269 | MUX(1, 88, 0, N, N, N, N), | ||
1270 | MUX(1, 89, 0, N, N, N, N), | ||
1271 | MUX(1, 90, 0, N, N, N, N), | ||
1272 | MUX(1, 129, 0, N, N, N, N), | ||
1273 | MUX(1, 130, 0, N, N, N, N), | ||
1274 | MUX(1, 131, 0, N, N, N, N), | ||
1275 | MUX(1, 132, 0, N, N, N, N), | ||
1276 | MUX(1, 91, 0, N, N, N, N), | ||
1277 | MUX(1, 92, 0, N, N, N, N), | ||
1278 | MUX(1, 93, 0, N, N, N, N), | ||
1279 | MUX(1, 94, 0, N, N, N, N), | ||
1280 | MUX(1, 95, 0, N, N, N, N), | ||
1281 | MUX(1, 96, 0, N, N, N, N), | ||
1282 | MUX(1, 112, 0, N, N, N, N), | ||
1283 | MUX(1, 113, 0, N, N, N, N), | ||
1284 | MUX(1, 114, 0, N, N, N, N), | ||
1285 | MUX(1, 115, 0, N, N, N, N), | ||
1286 | MUX(1, 116, 0, N, N, N, N), | ||
1287 | MUX(1, 117, 0, N, N, N, N), | ||
1288 | MUX(1, 118, 0, N, N, N, N), | ||
1289 | }; | ||
1290 | |||
1291 | static struct atlas7_grp_mux sdio_i2s_gpio_grp_mux = { | ||
1292 | .pad_mux_count = ARRAY_SIZE(sdio_i2s_gpio_grp_pad_mux), | ||
1293 | .pad_mux_list = sdio_i2s_gpio_grp_pad_mux, | ||
1294 | }; | ||
1295 | |||
1296 | static struct atlas7_pad_mux sp_rgmii_gpio_grp_pad_mux[] = { | ||
1297 | MUX(1, 97, 0, N, N, N, N), | ||
1298 | MUX(1, 98, 0, N, N, N, N), | ||
1299 | MUX(1, 99, 0, N, N, N, N), | ||
1300 | MUX(1, 100, 0, N, N, N, N), | ||
1301 | MUX(1, 101, 0, N, N, N, N), | ||
1302 | MUX(1, 102, 0, N, N, N, N), | ||
1303 | MUX(1, 103, 0, N, N, N, N), | ||
1304 | MUX(1, 104, 0, N, N, N, N), | ||
1305 | MUX(1, 105, 0, N, N, N, N), | ||
1306 | MUX(1, 106, 0, N, N, N, N), | ||
1307 | MUX(1, 107, 0, N, N, N, N), | ||
1308 | MUX(1, 108, 0, N, N, N, N), | ||
1309 | MUX(1, 109, 0, N, N, N, N), | ||
1310 | MUX(1, 110, 0, N, N, N, N), | ||
1311 | MUX(1, 111, 0, N, N, N, N), | ||
1312 | MUX(1, 18, 0, N, N, N, N), | ||
1313 | MUX(1, 19, 0, N, N, N, N), | ||
1314 | MUX(1, 20, 0, N, N, N, N), | ||
1315 | MUX(1, 21, 0, N, N, N, N), | ||
1316 | MUX(1, 141, 0, N, N, N, N), | ||
1317 | MUX(1, 142, 0, N, N, N, N), | ||
1318 | MUX(1, 143, 0, N, N, N, N), | ||
1319 | MUX(1, 144, 0, N, N, N, N), | ||
1320 | MUX(1, 145, 0, N, N, N, N), | ||
1321 | MUX(1, 146, 0, N, N, N, N), | ||
1322 | MUX(1, 147, 0, N, N, N, N), | ||
1323 | MUX(1, 148, 0, N, N, N, N), | ||
1324 | }; | ||
1325 | |||
1326 | static struct atlas7_grp_mux sp_rgmii_gpio_grp_mux = { | ||
1327 | .pad_mux_count = ARRAY_SIZE(sp_rgmii_gpio_grp_pad_mux), | ||
1328 | .pad_mux_list = sp_rgmii_gpio_grp_pad_mux, | ||
1329 | }; | ||
1330 | |||
1331 | static struct atlas7_pad_mux lvds_gpio_grp_pad_mux[] = { | ||
1332 | MUX(1, 157, 0, N, N, N, N), | ||
1333 | MUX(1, 158, 0, N, N, N, N), | ||
1334 | MUX(1, 155, 0, N, N, N, N), | ||
1335 | MUX(1, 156, 0, N, N, N, N), | ||
1336 | MUX(1, 153, 0, N, N, N, N), | ||
1337 | MUX(1, 154, 0, N, N, N, N), | ||
1338 | MUX(1, 151, 0, N, N, N, N), | ||
1339 | MUX(1, 152, 0, N, N, N, N), | ||
1340 | MUX(1, 149, 0, N, N, N, N), | ||
1341 | MUX(1, 150, 0, N, N, N, N), | ||
1342 | }; | ||
1343 | |||
1344 | static struct atlas7_grp_mux lvds_gpio_grp_mux = { | ||
1345 | .pad_mux_count = ARRAY_SIZE(lvds_gpio_grp_pad_mux), | ||
1346 | .pad_mux_list = lvds_gpio_grp_pad_mux, | ||
1347 | }; | ||
1348 | |||
1349 | static struct atlas7_pad_mux uart_nand_gpio_grp_pad_mux[] = { | ||
1350 | MUX(1, 44, 0, N, N, N, N), | ||
1351 | MUX(1, 43, 0, N, N, N, N), | ||
1352 | MUX(1, 42, 0, N, N, N, N), | ||
1353 | MUX(1, 41, 0, N, N, N, N), | ||
1354 | MUX(1, 40, 0, N, N, N, N), | ||
1355 | MUX(1, 39, 0, N, N, N, N), | ||
1356 | MUX(1, 38, 0, N, N, N, N), | ||
1357 | MUX(1, 37, 0, N, N, N, N), | ||
1358 | MUX(1, 46, 0, N, N, N, N), | ||
1359 | MUX(1, 47, 0, N, N, N, N), | ||
1360 | MUX(1, 48, 0, N, N, N, N), | ||
1361 | MUX(1, 49, 0, N, N, N, N), | ||
1362 | MUX(1, 50, 0, N, N, N, N), | ||
1363 | MUX(1, 52, 0, N, N, N, N), | ||
1364 | MUX(1, 51, 0, N, N, N, N), | ||
1365 | MUX(1, 45, 0, N, N, N, N), | ||
1366 | MUX(1, 133, 0, N, N, N, N), | ||
1367 | MUX(1, 134, 0, N, N, N, N), | ||
1368 | MUX(1, 135, 0, N, N, N, N), | ||
1369 | MUX(1, 136, 0, N, N, N, N), | ||
1370 | MUX(1, 137, 0, N, N, N, N), | ||
1371 | MUX(1, 138, 0, N, N, N, N), | ||
1372 | MUX(1, 139, 0, N, N, N, N), | ||
1373 | MUX(1, 140, 0, N, N, N, N), | ||
1374 | }; | ||
1375 | |||
1376 | static struct atlas7_grp_mux uart_nand_gpio_grp_mux = { | ||
1377 | .pad_mux_count = ARRAY_SIZE(uart_nand_gpio_grp_pad_mux), | ||
1378 | .pad_mux_list = uart_nand_gpio_grp_pad_mux, | ||
1379 | }; | ||
1380 | |||
1381 | static struct atlas7_pad_mux rtc_gpio_grp_pad_mux[] = { | ||
1382 | MUX(0, 0, 0, N, N, N, N), | ||
1383 | MUX(0, 1, 0, N, N, N, N), | ||
1384 | MUX(0, 2, 0, N, N, N, N), | ||
1385 | MUX(0, 3, 0, N, N, N, N), | ||
1386 | MUX(0, 4, 0, N, N, N, N), | ||
1387 | MUX(0, 10, 0, N, N, N, N), | ||
1388 | MUX(0, 11, 0, N, N, N, N), | ||
1389 | MUX(0, 12, 0, N, N, N, N), | ||
1390 | MUX(0, 13, 0, N, N, N, N), | ||
1391 | MUX(0, 14, 0, N, N, N, N), | ||
1392 | MUX(0, 15, 0, N, N, N, N), | ||
1393 | MUX(0, 16, 0, N, N, N, N), | ||
1394 | MUX(0, 17, 0, N, N, N, N), | ||
1395 | }; | ||
1396 | |||
1397 | static struct atlas7_grp_mux rtc_gpio_grp_mux = { | ||
1398 | .pad_mux_count = ARRAY_SIZE(rtc_gpio_grp_pad_mux), | ||
1399 | .pad_mux_list = rtc_gpio_grp_pad_mux, | ||
1400 | }; | ||
1401 | |||
1402 | static struct atlas7_pad_mux audio_ac97_grp_pad_mux[] = { | ||
1403 | MUX(1, 113, 2, N, N, N, N), | ||
1404 | MUX(1, 118, 2, N, N, N, N), | ||
1405 | MUX(1, 115, 2, N, N, N, N), | ||
1406 | MUX(1, 114, 2, N, N, N, N), | ||
1407 | }; | ||
1408 | |||
1409 | static struct atlas7_grp_mux audio_ac97_grp_mux = { | ||
1410 | .pad_mux_count = ARRAY_SIZE(audio_ac97_grp_pad_mux), | ||
1411 | .pad_mux_list = audio_ac97_grp_pad_mux, | ||
1412 | }; | ||
1413 | |||
1414 | static struct atlas7_pad_mux audio_func_dbg_grp_pad_mux[] = { | ||
1415 | MUX(1, 141, 4, N, N, N, N), | ||
1416 | MUX(1, 144, 4, N, N, N, N), | ||
1417 | MUX(1, 44, 6, N, N, N, N), | ||
1418 | MUX(1, 43, 6, N, N, N, N), | ||
1419 | MUX(1, 42, 6, N, N, N, N), | ||
1420 | MUX(1, 41, 6, N, N, N, N), | ||
1421 | MUX(1, 40, 6, N, N, N, N), | ||
1422 | MUX(1, 39, 6, N, N, N, N), | ||
1423 | MUX(1, 38, 6, N, N, N, N), | ||
1424 | MUX(1, 37, 6, N, N, N, N), | ||
1425 | MUX(1, 74, 6, N, N, N, N), | ||
1426 | MUX(1, 75, 6, N, N, N, N), | ||
1427 | MUX(1, 76, 6, N, N, N, N), | ||
1428 | MUX(1, 77, 6, N, N, N, N), | ||
1429 | MUX(1, 78, 6, N, N, N, N), | ||
1430 | MUX(1, 79, 6, N, N, N, N), | ||
1431 | MUX(1, 81, 6, N, N, N, N), | ||
1432 | MUX(1, 113, 6, N, N, N, N), | ||
1433 | MUX(1, 114, 6, N, N, N, N), | ||
1434 | MUX(1, 118, 6, N, N, N, N), | ||
1435 | MUX(1, 115, 6, N, N, N, N), | ||
1436 | MUX(1, 49, 6, N, N, N, N), | ||
1437 | MUX(1, 50, 6, N, N, N, N), | ||
1438 | MUX(1, 142, 4, N, N, N, N), | ||
1439 | MUX(1, 143, 4, N, N, N, N), | ||
1440 | MUX(1, 80, 6, N, N, N, N), | ||
1441 | }; | ||
1442 | |||
1443 | static struct atlas7_grp_mux audio_func_dbg_grp_mux = { | ||
1444 | .pad_mux_count = ARRAY_SIZE(audio_func_dbg_grp_pad_mux), | ||
1445 | .pad_mux_list = audio_func_dbg_grp_pad_mux, | ||
1446 | }; | ||
1447 | |||
1448 | static struct atlas7_pad_mux audio_i2s_grp_pad_mux[] = { | ||
1449 | MUX(1, 118, 1, N, N, N, N), | ||
1450 | MUX(1, 115, 1, N, N, N, N), | ||
1451 | MUX(1, 116, 1, N, N, N, N), | ||
1452 | MUX(1, 117, 1, N, N, N, N), | ||
1453 | MUX(1, 112, 1, N, N, N, N), | ||
1454 | MUX(1, 113, 1, N, N, N, N), | ||
1455 | MUX(1, 114, 1, N, N, N, N), | ||
1456 | }; | ||
1457 | |||
1458 | static struct atlas7_grp_mux audio_i2s_grp_mux = { | ||
1459 | .pad_mux_count = ARRAY_SIZE(audio_i2s_grp_pad_mux), | ||
1460 | .pad_mux_list = audio_i2s_grp_pad_mux, | ||
1461 | }; | ||
1462 | |||
1463 | static struct atlas7_pad_mux audio_i2s_2ch_grp_pad_mux[] = { | ||
1464 | MUX(1, 118, 1, N, N, N, N), | ||
1465 | MUX(1, 115, 1, N, N, N, N), | ||
1466 | MUX(1, 112, 1, N, N, N, N), | ||
1467 | MUX(1, 113, 1, N, N, N, N), | ||
1468 | MUX(1, 114, 1, N, N, N, N), | ||
1469 | }; | ||
1470 | |||
1471 | static struct atlas7_grp_mux audio_i2s_2ch_grp_mux = { | ||
1472 | .pad_mux_count = ARRAY_SIZE(audio_i2s_2ch_grp_pad_mux), | ||
1473 | .pad_mux_list = audio_i2s_2ch_grp_pad_mux, | ||
1474 | }; | ||
1475 | |||
1476 | static struct atlas7_pad_mux audio_i2s_extclk_grp_pad_mux[] = { | ||
1477 | MUX(1, 112, 2, N, N, N, N), | ||
1478 | }; | ||
1479 | |||
1480 | static struct atlas7_grp_mux audio_i2s_extclk_grp_mux = { | ||
1481 | .pad_mux_count = ARRAY_SIZE(audio_i2s_extclk_grp_pad_mux), | ||
1482 | .pad_mux_list = audio_i2s_extclk_grp_pad_mux, | ||
1483 | }; | ||
1484 | |||
1485 | static struct atlas7_pad_mux audio_uart0_grp_pad_mux[] = { | ||
1486 | MUX(1, 143, 1, N, N, N, N), | ||
1487 | MUX(1, 142, 1, N, N, N, N), | ||
1488 | MUX(1, 141, 1, N, N, N, N), | ||
1489 | MUX(1, 144, 1, N, N, N, N), | ||
1490 | }; | ||
1491 | |||
1492 | static struct atlas7_grp_mux audio_uart0_grp_mux = { | ||
1493 | .pad_mux_count = ARRAY_SIZE(audio_uart0_grp_pad_mux), | ||
1494 | .pad_mux_list = audio_uart0_grp_pad_mux, | ||
1495 | }; | ||
1496 | |||
1497 | static struct atlas7_pad_mux audio_uart1_grp_pad_mux[] = { | ||
1498 | MUX(1, 147, 1, N, N, N, N), | ||
1499 | MUX(1, 146, 1, N, N, N, N), | ||
1500 | MUX(1, 145, 1, N, N, N, N), | ||
1501 | MUX(1, 148, 1, N, N, N, N), | ||
1502 | }; | ||
1503 | |||
1504 | static struct atlas7_grp_mux audio_uart1_grp_mux = { | ||
1505 | .pad_mux_count = ARRAY_SIZE(audio_uart1_grp_pad_mux), | ||
1506 | .pad_mux_list = audio_uart1_grp_pad_mux, | ||
1507 | }; | ||
1508 | |||
1509 | static struct atlas7_pad_mux audio_uart2_grp0_pad_mux[] = { | ||
1510 | MUX(1, 20, 2, 0xa00, 24, 0xa80, 24), | ||
1511 | MUX(1, 21, 2, 0xa00, 25, 0xa80, 25), | ||
1512 | MUX(1, 19, 2, 0xa00, 23, 0xa80, 23), | ||
1513 | MUX(1, 18, 2, 0xa00, 22, 0xa80, 22), | ||
1514 | }; | ||
1515 | |||
1516 | static struct atlas7_grp_mux audio_uart2_grp0_mux = { | ||
1517 | .pad_mux_count = ARRAY_SIZE(audio_uart2_grp0_pad_mux), | ||
1518 | .pad_mux_list = audio_uart2_grp0_pad_mux, | ||
1519 | }; | ||
1520 | |||
1521 | static struct atlas7_pad_mux audio_uart2_grp1_pad_mux[] = { | ||
1522 | MUX(1, 109, 2, 0xa00, 24, 0xa80, 24), | ||
1523 | MUX(1, 110, 2, 0xa00, 25, 0xa80, 25), | ||
1524 | MUX(1, 101, 2, 0xa00, 23, 0xa80, 23), | ||
1525 | MUX(1, 111, 2, 0xa00, 22, 0xa80, 22), | ||
1526 | }; | ||
1527 | |||
1528 | static struct atlas7_grp_mux audio_uart2_grp1_mux = { | ||
1529 | .pad_mux_count = ARRAY_SIZE(audio_uart2_grp1_pad_mux), | ||
1530 | .pad_mux_list = audio_uart2_grp1_pad_mux, | ||
1531 | }; | ||
1532 | |||
1533 | static struct atlas7_pad_mux c_can_trnsvr_grp_pad_mux[] = { | ||
1534 | MUX(0, 1, 2, N, N, N, N), | ||
1535 | }; | ||
1536 | |||
1537 | static struct atlas7_grp_mux c_can_trnsvr_grp_mux = { | ||
1538 | .pad_mux_count = ARRAY_SIZE(c_can_trnsvr_grp_pad_mux), | ||
1539 | .pad_mux_list = c_can_trnsvr_grp_pad_mux, | ||
1540 | }; | ||
1541 | |||
1542 | static struct atlas7_pad_mux c0_can_grp0_pad_mux[] = { | ||
1543 | MUX(0, 11, 1, 0xa08, 9, 0xa88, 9), | ||
1544 | MUX(0, 10, 1, N, N, N, N), | ||
1545 | }; | ||
1546 | |||
1547 | static struct atlas7_grp_mux c0_can_grp0_mux = { | ||
1548 | .pad_mux_count = ARRAY_SIZE(c0_can_grp0_pad_mux), | ||
1549 | .pad_mux_list = c0_can_grp0_pad_mux, | ||
1550 | }; | ||
1551 | |||
1552 | static struct atlas7_pad_mux c0_can_grp1_pad_mux[] = { | ||
1553 | MUX(0, 2, 5, 0xa08, 9, 0xa88, 9), | ||
1554 | MUX(0, 3, 5, N, N, N, N), | ||
1555 | }; | ||
1556 | |||
1557 | static struct atlas7_grp_mux c0_can_grp1_mux = { | ||
1558 | .pad_mux_count = ARRAY_SIZE(c0_can_grp1_pad_mux), | ||
1559 | .pad_mux_list = c0_can_grp1_pad_mux, | ||
1560 | }; | ||
1561 | |||
1562 | static struct atlas7_pad_mux c1_can_grp0_pad_mux[] = { | ||
1563 | MUX(1, 138, 2, 0xa00, 4, 0xa80, 4), | ||
1564 | MUX(1, 137, 2, N, N, N, N), | ||
1565 | }; | ||
1566 | |||
1567 | static struct atlas7_grp_mux c1_can_grp0_mux = { | ||
1568 | .pad_mux_count = ARRAY_SIZE(c1_can_grp0_pad_mux), | ||
1569 | .pad_mux_list = c1_can_grp0_pad_mux, | ||
1570 | }; | ||
1571 | |||
1572 | static struct atlas7_pad_mux c1_can_grp1_pad_mux[] = { | ||
1573 | MUX(1, 147, 2, 0xa00, 4, 0xa80, 4), | ||
1574 | MUX(1, 146, 2, N, N, N, N), | ||
1575 | }; | ||
1576 | |||
1577 | static struct atlas7_grp_mux c1_can_grp1_mux = { | ||
1578 | .pad_mux_count = ARRAY_SIZE(c1_can_grp1_pad_mux), | ||
1579 | .pad_mux_list = c1_can_grp1_pad_mux, | ||
1580 | }; | ||
1581 | |||
1582 | static struct atlas7_pad_mux c1_can_grp2_pad_mux[] = { | ||
1583 | MUX(0, 2, 2, 0xa00, 4, 0xa80, 4), | ||
1584 | MUX(0, 3, 2, N, N, N, N), | ||
1585 | }; | ||
1586 | |||
1587 | static struct atlas7_grp_mux c1_can_grp2_mux = { | ||
1588 | .pad_mux_count = ARRAY_SIZE(c1_can_grp2_pad_mux), | ||
1589 | .pad_mux_list = c1_can_grp2_pad_mux, | ||
1590 | }; | ||
1591 | |||
1592 | static struct atlas7_pad_mux ca_audio_lpc_grp_pad_mux[] = { | ||
1593 | MUX(1, 62, 4, N, N, N, N), | ||
1594 | MUX(1, 63, 4, N, N, N, N), | ||
1595 | MUX(1, 64, 4, N, N, N, N), | ||
1596 | MUX(1, 65, 4, N, N, N, N), | ||
1597 | MUX(1, 66, 4, N, N, N, N), | ||
1598 | MUX(1, 67, 4, N, N, N, N), | ||
1599 | MUX(1, 68, 4, N, N, N, N), | ||
1600 | MUX(1, 69, 4, N, N, N, N), | ||
1601 | MUX(1, 70, 4, N, N, N, N), | ||
1602 | MUX(1, 71, 4, N, N, N, N), | ||
1603 | }; | ||
1604 | |||
1605 | static struct atlas7_grp_mux ca_audio_lpc_grp_mux = { | ||
1606 | .pad_mux_count = ARRAY_SIZE(ca_audio_lpc_grp_pad_mux), | ||
1607 | .pad_mux_list = ca_audio_lpc_grp_pad_mux, | ||
1608 | }; | ||
1609 | |||
1610 | static struct atlas7_pad_mux ca_bt_lpc_grp_pad_mux[] = { | ||
1611 | MUX(1, 85, 5, N, N, N, N), | ||
1612 | MUX(1, 86, 5, N, N, N, N), | ||
1613 | MUX(1, 87, 5, N, N, N, N), | ||
1614 | MUX(1, 88, 5, N, N, N, N), | ||
1615 | MUX(1, 89, 5, N, N, N, N), | ||
1616 | MUX(1, 90, 5, N, N, N, N), | ||
1617 | }; | ||
1618 | |||
1619 | static struct atlas7_grp_mux ca_bt_lpc_grp_mux = { | ||
1620 | .pad_mux_count = ARRAY_SIZE(ca_bt_lpc_grp_pad_mux), | ||
1621 | .pad_mux_list = ca_bt_lpc_grp_pad_mux, | ||
1622 | }; | ||
1623 | |||
1624 | static struct atlas7_pad_mux ca_coex_grp_pad_mux[] = { | ||
1625 | MUX(1, 129, 1, N, N, N, N), | ||
1626 | MUX(1, 130, 1, N, N, N, N), | ||
1627 | MUX(1, 131, 1, N, N, N, N), | ||
1628 | MUX(1, 132, 1, N, N, N, N), | ||
1629 | }; | ||
1630 | |||
1631 | static struct atlas7_grp_mux ca_coex_grp_mux = { | ||
1632 | .pad_mux_count = ARRAY_SIZE(ca_coex_grp_pad_mux), | ||
1633 | .pad_mux_list = ca_coex_grp_pad_mux, | ||
1634 | }; | ||
1635 | |||
1636 | static struct atlas7_pad_mux ca_curator_lpc_grp_pad_mux[] = { | ||
1637 | MUX(1, 57, 4, N, N, N, N), | ||
1638 | MUX(1, 58, 4, N, N, N, N), | ||
1639 | MUX(1, 59, 4, N, N, N, N), | ||
1640 | MUX(1, 60, 4, N, N, N, N), | ||
1641 | }; | ||
1642 | |||
1643 | static struct atlas7_grp_mux ca_curator_lpc_grp_mux = { | ||
1644 | .pad_mux_count = ARRAY_SIZE(ca_curator_lpc_grp_pad_mux), | ||
1645 | .pad_mux_list = ca_curator_lpc_grp_pad_mux, | ||
1646 | }; | ||
1647 | |||
1648 | static struct atlas7_pad_mux ca_pcm_debug_grp_pad_mux[] = { | ||
1649 | MUX(1, 91, 5, N, N, N, N), | ||
1650 | MUX(1, 93, 5, N, N, N, N), | ||
1651 | MUX(1, 94, 5, N, N, N, N), | ||
1652 | MUX(1, 92, 5, N, N, N, N), | ||
1653 | }; | ||
1654 | |||
1655 | static struct atlas7_grp_mux ca_pcm_debug_grp_mux = { | ||
1656 | .pad_mux_count = ARRAY_SIZE(ca_pcm_debug_grp_pad_mux), | ||
1657 | .pad_mux_list = ca_pcm_debug_grp_pad_mux, | ||
1658 | }; | ||
1659 | |||
1660 | static struct atlas7_pad_mux ca_pio_grp_pad_mux[] = { | ||
1661 | MUX(1, 121, 2, N, N, N, N), | ||
1662 | MUX(1, 122, 2, N, N, N, N), | ||
1663 | MUX(1, 125, 6, N, N, N, N), | ||
1664 | MUX(1, 126, 6, N, N, N, N), | ||
1665 | MUX(1, 38, 5, N, N, N, N), | ||
1666 | MUX(1, 37, 5, N, N, N, N), | ||
1667 | MUX(1, 47, 5, N, N, N, N), | ||
1668 | MUX(1, 49, 5, N, N, N, N), | ||
1669 | MUX(1, 50, 5, N, N, N, N), | ||
1670 | MUX(1, 54, 4, N, N, N, N), | ||
1671 | MUX(1, 55, 4, N, N, N, N), | ||
1672 | MUX(1, 56, 4, N, N, N, N), | ||
1673 | }; | ||
1674 | |||
1675 | static struct atlas7_grp_mux ca_pio_grp_mux = { | ||
1676 | .pad_mux_count = ARRAY_SIZE(ca_pio_grp_pad_mux), | ||
1677 | .pad_mux_list = ca_pio_grp_pad_mux, | ||
1678 | }; | ||
1679 | |||
1680 | static struct atlas7_pad_mux ca_sdio_debug_grp_pad_mux[] = { | ||
1681 | MUX(1, 40, 5, N, N, N, N), | ||
1682 | MUX(1, 39, 5, N, N, N, N), | ||
1683 | MUX(1, 44, 5, N, N, N, N), | ||
1684 | MUX(1, 43, 5, N, N, N, N), | ||
1685 | MUX(1, 42, 5, N, N, N, N), | ||
1686 | MUX(1, 41, 5, N, N, N, N), | ||
1687 | }; | ||
1688 | |||
1689 | static struct atlas7_grp_mux ca_sdio_debug_grp_mux = { | ||
1690 | .pad_mux_count = ARRAY_SIZE(ca_sdio_debug_grp_pad_mux), | ||
1691 | .pad_mux_list = ca_sdio_debug_grp_pad_mux, | ||
1692 | }; | ||
1693 | |||
1694 | static struct atlas7_pad_mux ca_spi_grp_pad_mux[] = { | ||
1695 | MUX(1, 82, 5, N, N, N, N), | ||
1696 | MUX(1, 79, 5, 0xa08, 6, 0xa88, 6), | ||
1697 | MUX(1, 80, 5, N, N, N, N), | ||
1698 | MUX(1, 81, 5, N, N, N, N), | ||
1699 | }; | ||
1700 | |||
1701 | static struct atlas7_grp_mux ca_spi_grp_mux = { | ||
1702 | .pad_mux_count = ARRAY_SIZE(ca_spi_grp_pad_mux), | ||
1703 | .pad_mux_list = ca_spi_grp_pad_mux, | ||
1704 | }; | ||
1705 | |||
1706 | static struct atlas7_pad_mux ca_trb_grp_pad_mux[] = { | ||
1707 | MUX(1, 91, 4, N, N, N, N), | ||
1708 | MUX(1, 93, 4, N, N, N, N), | ||
1709 | MUX(1, 94, 4, N, N, N, N), | ||
1710 | MUX(1, 95, 4, N, N, N, N), | ||
1711 | MUX(1, 96, 4, N, N, N, N), | ||
1712 | MUX(1, 78, 5, N, N, N, N), | ||
1713 | MUX(1, 74, 5, N, N, N, N), | ||
1714 | MUX(1, 75, 5, N, N, N, N), | ||
1715 | MUX(1, 76, 5, N, N, N, N), | ||
1716 | MUX(1, 77, 5, N, N, N, N), | ||
1717 | }; | ||
1718 | |||
1719 | static struct atlas7_grp_mux ca_trb_grp_mux = { | ||
1720 | .pad_mux_count = ARRAY_SIZE(ca_trb_grp_pad_mux), | ||
1721 | .pad_mux_list = ca_trb_grp_pad_mux, | ||
1722 | }; | ||
1723 | |||
1724 | static struct atlas7_pad_mux ca_uart_debug_grp_pad_mux[] = { | ||
1725 | MUX(1, 136, 3, N, N, N, N), | ||
1726 | MUX(1, 135, 3, N, N, N, N), | ||
1727 | MUX(1, 134, 3, N, N, N, N), | ||
1728 | MUX(1, 133, 3, N, N, N, N), | ||
1729 | }; | ||
1730 | |||
1731 | static struct atlas7_grp_mux ca_uart_debug_grp_mux = { | ||
1732 | .pad_mux_count = ARRAY_SIZE(ca_uart_debug_grp_pad_mux), | ||
1733 | .pad_mux_list = ca_uart_debug_grp_pad_mux, | ||
1734 | }; | ||
1735 | |||
1736 | static struct atlas7_pad_mux clkc_grp0_pad_mux[] = { | ||
1737 | MUX(1, 30, 2, 0xa08, 14, 0xa88, 14), | ||
1738 | MUX(1, 47, 6, N, N, N, N), | ||
1739 | }; | ||
1740 | |||
1741 | static struct atlas7_grp_mux clkc_grp0_mux = { | ||
1742 | .pad_mux_count = ARRAY_SIZE(clkc_grp0_pad_mux), | ||
1743 | .pad_mux_list = clkc_grp0_pad_mux, | ||
1744 | }; | ||
1745 | |||
1746 | static struct atlas7_pad_mux clkc_grp1_pad_mux[] = { | ||
1747 | MUX(1, 78, 3, 0xa08, 14, 0xa88, 14), | ||
1748 | MUX(1, 54, 5, N, N, N, N), | ||
1749 | }; | ||
1750 | |||
1751 | static struct atlas7_grp_mux clkc_grp1_mux = { | ||
1752 | .pad_mux_count = ARRAY_SIZE(clkc_grp1_pad_mux), | ||
1753 | .pad_mux_list = clkc_grp1_pad_mux, | ||
1754 | }; | ||
1755 | |||
1756 | static struct atlas7_pad_mux gn_gnss_i2c_grp_pad_mux[] = { | ||
1757 | MUX(1, 128, 2, N, N, N, N), | ||
1758 | MUX(1, 127, 2, N, N, N, N), | ||
1759 | }; | ||
1760 | |||
1761 | static struct atlas7_grp_mux gn_gnss_i2c_grp_mux = { | ||
1762 | .pad_mux_count = ARRAY_SIZE(gn_gnss_i2c_grp_pad_mux), | ||
1763 | .pad_mux_list = gn_gnss_i2c_grp_pad_mux, | ||
1764 | }; | ||
1765 | |||
1766 | static struct atlas7_pad_mux gn_gnss_uart_nopause_grp_pad_mux[] = { | ||
1767 | MUX(1, 134, 4, N, N, N, N), | ||
1768 | MUX(1, 133, 4, N, N, N, N), | ||
1769 | }; | ||
1770 | |||
1771 | static struct atlas7_grp_mux gn_gnss_uart_nopause_grp_mux = { | ||
1772 | .pad_mux_count = ARRAY_SIZE(gn_gnss_uart_nopause_grp_pad_mux), | ||
1773 | .pad_mux_list = gn_gnss_uart_nopause_grp_pad_mux, | ||
1774 | }; | ||
1775 | |||
1776 | static struct atlas7_pad_mux gn_gnss_uart_grp_pad_mux[] = { | ||
1777 | MUX(1, 134, 4, N, N, N, N), | ||
1778 | MUX(1, 133, 4, N, N, N, N), | ||
1779 | MUX(1, 136, 4, N, N, N, N), | ||
1780 | MUX(1, 135, 4, N, N, N, N), | ||
1781 | }; | ||
1782 | |||
1783 | static struct atlas7_grp_mux gn_gnss_uart_grp_mux = { | ||
1784 | .pad_mux_count = ARRAY_SIZE(gn_gnss_uart_grp_pad_mux), | ||
1785 | .pad_mux_list = gn_gnss_uart_grp_pad_mux, | ||
1786 | }; | ||
1787 | |||
1788 | static struct atlas7_pad_mux gn_trg_spi_grp0_pad_mux[] = { | ||
1789 | MUX(1, 22, 1, N, N, N, N), | ||
1790 | MUX(1, 25, 1, N, N, N, N), | ||
1791 | MUX(1, 23, 1, 0xa00, 10, 0xa80, 10), | ||
1792 | MUX(1, 24, 1, N, N, N, N), | ||
1793 | }; | ||
1794 | |||
1795 | static struct atlas7_grp_mux gn_trg_spi_grp0_mux = { | ||
1796 | .pad_mux_count = ARRAY_SIZE(gn_trg_spi_grp0_pad_mux), | ||
1797 | .pad_mux_list = gn_trg_spi_grp0_pad_mux, | ||
1798 | }; | ||
1799 | |||
1800 | static struct atlas7_pad_mux gn_trg_spi_grp1_pad_mux[] = { | ||
1801 | MUX(1, 82, 3, N, N, N, N), | ||
1802 | MUX(1, 79, 3, N, N, N, N), | ||
1803 | MUX(1, 80, 3, 0xa00, 10, 0xa80, 10), | ||
1804 | MUX(1, 81, 3, N, N, N, N), | ||
1805 | }; | ||
1806 | |||
1807 | static struct atlas7_grp_mux gn_trg_spi_grp1_mux = { | ||
1808 | .pad_mux_count = ARRAY_SIZE(gn_trg_spi_grp1_pad_mux), | ||
1809 | .pad_mux_list = gn_trg_spi_grp1_pad_mux, | ||
1810 | }; | ||
1811 | |||
1812 | static struct atlas7_pad_mux cvbs_dbg_grp_pad_mux[] = { | ||
1813 | MUX(1, 54, 3, N, N, N, N), | ||
1814 | MUX(1, 53, 3, N, N, N, N), | ||
1815 | MUX(1, 82, 7, N, N, N, N), | ||
1816 | MUX(1, 74, 7, N, N, N, N), | ||
1817 | MUX(1, 75, 7, N, N, N, N), | ||
1818 | MUX(1, 76, 7, N, N, N, N), | ||
1819 | MUX(1, 77, 7, N, N, N, N), | ||
1820 | MUX(1, 78, 7, N, N, N, N), | ||
1821 | MUX(1, 79, 7, N, N, N, N), | ||
1822 | MUX(1, 80, 7, N, N, N, N), | ||
1823 | MUX(1, 81, 7, N, N, N, N), | ||
1824 | MUX(1, 83, 7, N, N, N, N), | ||
1825 | MUX(1, 84, 7, N, N, N, N), | ||
1826 | MUX(1, 73, 3, N, N, N, N), | ||
1827 | MUX(1, 55, 3, N, N, N, N), | ||
1828 | MUX(1, 56, 3, N, N, N, N), | ||
1829 | }; | ||
1830 | |||
1831 | static struct atlas7_grp_mux cvbs_dbg_grp_mux = { | ||
1832 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_grp_pad_mux), | ||
1833 | .pad_mux_list = cvbs_dbg_grp_pad_mux, | ||
1834 | }; | ||
1835 | |||
1836 | static struct atlas7_pad_mux cvbs_dbg_test_grp0_pad_mux[] = { | ||
1837 | MUX(1, 57, 3, N, N, N, N), | ||
1838 | }; | ||
1839 | |||
1840 | static struct atlas7_grp_mux cvbs_dbg_test_grp0_mux = { | ||
1841 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp0_pad_mux), | ||
1842 | .pad_mux_list = cvbs_dbg_test_grp0_pad_mux, | ||
1843 | }; | ||
1844 | |||
1845 | static struct atlas7_pad_mux cvbs_dbg_test_grp1_pad_mux[] = { | ||
1846 | MUX(1, 58, 3, N, N, N, N), | ||
1847 | }; | ||
1848 | |||
1849 | static struct atlas7_grp_mux cvbs_dbg_test_grp1_mux = { | ||
1850 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp1_pad_mux), | ||
1851 | .pad_mux_list = cvbs_dbg_test_grp1_pad_mux, | ||
1852 | }; | ||
1853 | |||
1854 | static struct atlas7_pad_mux cvbs_dbg_test_grp2_pad_mux[] = { | ||
1855 | MUX(1, 59, 3, N, N, N, N), | ||
1856 | }; | ||
1857 | |||
1858 | static struct atlas7_grp_mux cvbs_dbg_test_grp2_mux = { | ||
1859 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp2_pad_mux), | ||
1860 | .pad_mux_list = cvbs_dbg_test_grp2_pad_mux, | ||
1861 | }; | ||
1862 | |||
1863 | static struct atlas7_pad_mux cvbs_dbg_test_grp3_pad_mux[] = { | ||
1864 | MUX(1, 60, 3, N, N, N, N), | ||
1865 | }; | ||
1866 | |||
1867 | static struct atlas7_grp_mux cvbs_dbg_test_grp3_mux = { | ||
1868 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp3_pad_mux), | ||
1869 | .pad_mux_list = cvbs_dbg_test_grp3_pad_mux, | ||
1870 | }; | ||
1871 | |||
1872 | static struct atlas7_pad_mux cvbs_dbg_test_grp4_pad_mux[] = { | ||
1873 | MUX(1, 61, 3, N, N, N, N), | ||
1874 | }; | ||
1875 | |||
1876 | static struct atlas7_grp_mux cvbs_dbg_test_grp4_mux = { | ||
1877 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp4_pad_mux), | ||
1878 | .pad_mux_list = cvbs_dbg_test_grp4_pad_mux, | ||
1879 | }; | ||
1880 | |||
1881 | static struct atlas7_pad_mux cvbs_dbg_test_grp5_pad_mux[] = { | ||
1882 | MUX(1, 62, 3, N, N, N, N), | ||
1883 | }; | ||
1884 | |||
1885 | static struct atlas7_grp_mux cvbs_dbg_test_grp5_mux = { | ||
1886 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp5_pad_mux), | ||
1887 | .pad_mux_list = cvbs_dbg_test_grp5_pad_mux, | ||
1888 | }; | ||
1889 | |||
1890 | static struct atlas7_pad_mux cvbs_dbg_test_grp6_pad_mux[] = { | ||
1891 | MUX(1, 63, 3, N, N, N, N), | ||
1892 | }; | ||
1893 | |||
1894 | static struct atlas7_grp_mux cvbs_dbg_test_grp6_mux = { | ||
1895 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp6_pad_mux), | ||
1896 | .pad_mux_list = cvbs_dbg_test_grp6_pad_mux, | ||
1897 | }; | ||
1898 | |||
1899 | static struct atlas7_pad_mux cvbs_dbg_test_grp7_pad_mux[] = { | ||
1900 | MUX(1, 64, 3, N, N, N, N), | ||
1901 | }; | ||
1902 | |||
1903 | static struct atlas7_grp_mux cvbs_dbg_test_grp7_mux = { | ||
1904 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp7_pad_mux), | ||
1905 | .pad_mux_list = cvbs_dbg_test_grp7_pad_mux, | ||
1906 | }; | ||
1907 | |||
1908 | static struct atlas7_pad_mux cvbs_dbg_test_grp8_pad_mux[] = { | ||
1909 | MUX(1, 65, 3, N, N, N, N), | ||
1910 | }; | ||
1911 | |||
1912 | static struct atlas7_grp_mux cvbs_dbg_test_grp8_mux = { | ||
1913 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp8_pad_mux), | ||
1914 | .pad_mux_list = cvbs_dbg_test_grp8_pad_mux, | ||
1915 | }; | ||
1916 | |||
1917 | static struct atlas7_pad_mux cvbs_dbg_test_grp9_pad_mux[] = { | ||
1918 | MUX(1, 66, 3, N, N, N, N), | ||
1919 | }; | ||
1920 | |||
1921 | static struct atlas7_grp_mux cvbs_dbg_test_grp9_mux = { | ||
1922 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp9_pad_mux), | ||
1923 | .pad_mux_list = cvbs_dbg_test_grp9_pad_mux, | ||
1924 | }; | ||
1925 | |||
1926 | static struct atlas7_pad_mux cvbs_dbg_test_grp10_pad_mux[] = { | ||
1927 | MUX(1, 67, 3, N, N, N, N), | ||
1928 | }; | ||
1929 | |||
1930 | static struct atlas7_grp_mux cvbs_dbg_test_grp10_mux = { | ||
1931 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp10_pad_mux), | ||
1932 | .pad_mux_list = cvbs_dbg_test_grp10_pad_mux, | ||
1933 | }; | ||
1934 | |||
1935 | static struct atlas7_pad_mux cvbs_dbg_test_grp11_pad_mux[] = { | ||
1936 | MUX(1, 68, 3, N, N, N, N), | ||
1937 | }; | ||
1938 | |||
1939 | static struct atlas7_grp_mux cvbs_dbg_test_grp11_mux = { | ||
1940 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp11_pad_mux), | ||
1941 | .pad_mux_list = cvbs_dbg_test_grp11_pad_mux, | ||
1942 | }; | ||
1943 | |||
1944 | static struct atlas7_pad_mux cvbs_dbg_test_grp12_pad_mux[] = { | ||
1945 | MUX(1, 69, 3, N, N, N, N), | ||
1946 | }; | ||
1947 | |||
1948 | static struct atlas7_grp_mux cvbs_dbg_test_grp12_mux = { | ||
1949 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp12_pad_mux), | ||
1950 | .pad_mux_list = cvbs_dbg_test_grp12_pad_mux, | ||
1951 | }; | ||
1952 | |||
1953 | static struct atlas7_pad_mux cvbs_dbg_test_grp13_pad_mux[] = { | ||
1954 | MUX(1, 70, 3, N, N, N, N), | ||
1955 | }; | ||
1956 | |||
1957 | static struct atlas7_grp_mux cvbs_dbg_test_grp13_mux = { | ||
1958 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp13_pad_mux), | ||
1959 | .pad_mux_list = cvbs_dbg_test_grp13_pad_mux, | ||
1960 | }; | ||
1961 | |||
1962 | static struct atlas7_pad_mux cvbs_dbg_test_grp14_pad_mux[] = { | ||
1963 | MUX(1, 71, 3, N, N, N, N), | ||
1964 | }; | ||
1965 | |||
1966 | static struct atlas7_grp_mux cvbs_dbg_test_grp14_mux = { | ||
1967 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp14_pad_mux), | ||
1968 | .pad_mux_list = cvbs_dbg_test_grp14_pad_mux, | ||
1969 | }; | ||
1970 | |||
1971 | static struct atlas7_pad_mux cvbs_dbg_test_grp15_pad_mux[] = { | ||
1972 | MUX(1, 72, 3, N, N, N, N), | ||
1973 | }; | ||
1974 | |||
1975 | static struct atlas7_grp_mux cvbs_dbg_test_grp15_mux = { | ||
1976 | .pad_mux_count = ARRAY_SIZE(cvbs_dbg_test_grp15_pad_mux), | ||
1977 | .pad_mux_list = cvbs_dbg_test_grp15_pad_mux, | ||
1978 | }; | ||
1979 | |||
1980 | static struct atlas7_pad_mux gn_gnss_power_grp_pad_mux[] = { | ||
1981 | MUX(1, 123, 7, N, N, N, N), | ||
1982 | MUX(1, 124, 7, N, N, N, N), | ||
1983 | MUX(1, 121, 7, N, N, N, N), | ||
1984 | MUX(1, 122, 7, N, N, N, N), | ||
1985 | MUX(1, 125, 7, N, N, N, N), | ||
1986 | MUX(1, 120, 7, N, N, N, N), | ||
1987 | }; | ||
1988 | |||
1989 | static struct atlas7_grp_mux gn_gnss_power_grp_mux = { | ||
1990 | .pad_mux_count = ARRAY_SIZE(gn_gnss_power_grp_pad_mux), | ||
1991 | .pad_mux_list = gn_gnss_power_grp_pad_mux, | ||
1992 | }; | ||
1993 | |||
1994 | static struct atlas7_pad_mux gn_gnss_sw_status_grp_pad_mux[] = { | ||
1995 | MUX(1, 57, 7, N, N, N, N), | ||
1996 | MUX(1, 58, 7, N, N, N, N), | ||
1997 | MUX(1, 59, 7, N, N, N, N), | ||
1998 | MUX(1, 60, 7, N, N, N, N), | ||
1999 | MUX(1, 61, 7, N, N, N, N), | ||
2000 | MUX(1, 62, 7, N, N, N, N), | ||
2001 | MUX(1, 63, 7, N, N, N, N), | ||
2002 | MUX(1, 64, 7, N, N, N, N), | ||
2003 | MUX(1, 65, 7, N, N, N, N), | ||
2004 | MUX(1, 66, 7, N, N, N, N), | ||
2005 | MUX(1, 67, 7, N, N, N, N), | ||
2006 | MUX(1, 68, 7, N, N, N, N), | ||
2007 | MUX(1, 69, 7, N, N, N, N), | ||
2008 | MUX(1, 70, 7, N, N, N, N), | ||
2009 | MUX(1, 71, 7, N, N, N, N), | ||
2010 | MUX(1, 72, 7, N, N, N, N), | ||
2011 | MUX(1, 53, 7, N, N, N, N), | ||
2012 | MUX(1, 55, 7, N, N, N, N), | ||
2013 | MUX(1, 56, 7, 0xa08, 12, 0xa88, 12), | ||
2014 | MUX(1, 54, 7, N, N, N, N), | ||
2015 | }; | ||
2016 | |||
2017 | static struct atlas7_grp_mux gn_gnss_sw_status_grp_mux = { | ||
2018 | .pad_mux_count = ARRAY_SIZE(gn_gnss_sw_status_grp_pad_mux), | ||
2019 | .pad_mux_list = gn_gnss_sw_status_grp_pad_mux, | ||
2020 | }; | ||
2021 | |||
2022 | static struct atlas7_pad_mux gn_gnss_eclk_grp_pad_mux[] = { | ||
2023 | MUX(1, 113, 4, N, N, N, N), | ||
2024 | }; | ||
2025 | |||
2026 | static struct atlas7_grp_mux gn_gnss_eclk_grp_mux = { | ||
2027 | .pad_mux_count = ARRAY_SIZE(gn_gnss_eclk_grp_pad_mux), | ||
2028 | .pad_mux_list = gn_gnss_eclk_grp_pad_mux, | ||
2029 | }; | ||
2030 | |||
2031 | static struct atlas7_pad_mux gn_gnss_irq1_grp0_pad_mux[] = { | ||
2032 | MUX(1, 112, 4, 0xa08, 10, 0xa88, 10), | ||
2033 | }; | ||
2034 | |||
2035 | static struct atlas7_grp_mux gn_gnss_irq1_grp0_mux = { | ||
2036 | .pad_mux_count = ARRAY_SIZE(gn_gnss_irq1_grp0_pad_mux), | ||
2037 | .pad_mux_list = gn_gnss_irq1_grp0_pad_mux, | ||
2038 | }; | ||
2039 | |||
2040 | static struct atlas7_pad_mux gn_gnss_irq2_grp0_pad_mux[] = { | ||
2041 | MUX(1, 118, 4, 0xa08, 11, 0xa88, 11), | ||
2042 | }; | ||
2043 | |||
2044 | static struct atlas7_grp_mux gn_gnss_irq2_grp0_mux = { | ||
2045 | .pad_mux_count = ARRAY_SIZE(gn_gnss_irq2_grp0_pad_mux), | ||
2046 | .pad_mux_list = gn_gnss_irq2_grp0_pad_mux, | ||
2047 | }; | ||
2048 | |||
2049 | static struct atlas7_pad_mux gn_gnss_tm_grp_pad_mux[] = { | ||
2050 | MUX(1, 115, 4, N, N, N, N), | ||
2051 | }; | ||
2052 | |||
2053 | static struct atlas7_grp_mux gn_gnss_tm_grp_mux = { | ||
2054 | .pad_mux_count = ARRAY_SIZE(gn_gnss_tm_grp_pad_mux), | ||
2055 | .pad_mux_list = gn_gnss_tm_grp_pad_mux, | ||
2056 | }; | ||
2057 | |||
2058 | static struct atlas7_pad_mux gn_gnss_tsync_grp_pad_mux[] = { | ||
2059 | MUX(1, 114, 4, N, N, N, N), | ||
2060 | }; | ||
2061 | |||
2062 | static struct atlas7_grp_mux gn_gnss_tsync_grp_mux = { | ||
2063 | .pad_mux_count = ARRAY_SIZE(gn_gnss_tsync_grp_pad_mux), | ||
2064 | .pad_mux_list = gn_gnss_tsync_grp_pad_mux, | ||
2065 | }; | ||
2066 | |||
2067 | static struct atlas7_pad_mux gn_io_gnsssys_sw_cfg_grp_pad_mux[] = { | ||
2068 | MUX(1, 44, 7, N, N, N, N), | ||
2069 | MUX(1, 43, 7, N, N, N, N), | ||
2070 | MUX(1, 42, 7, N, N, N, N), | ||
2071 | MUX(1, 41, 7, N, N, N, N), | ||
2072 | MUX(1, 40, 7, N, N, N, N), | ||
2073 | MUX(1, 39, 7, N, N, N, N), | ||
2074 | MUX(1, 38, 7, N, N, N, N), | ||
2075 | MUX(1, 37, 7, N, N, N, N), | ||
2076 | MUX(1, 49, 7, N, N, N, N), | ||
2077 | MUX(1, 50, 7, N, N, N, N), | ||
2078 | MUX(1, 91, 7, N, N, N, N), | ||
2079 | MUX(1, 92, 7, N, N, N, N), | ||
2080 | MUX(1, 93, 7, N, N, N, N), | ||
2081 | MUX(1, 94, 7, N, N, N, N), | ||
2082 | MUX(1, 95, 7, N, N, N, N), | ||
2083 | MUX(1, 96, 7, N, N, N, N), | ||
2084 | }; | ||
2085 | |||
2086 | static struct atlas7_grp_mux gn_io_gnsssys_sw_cfg_grp_mux = { | ||
2087 | .pad_mux_count = ARRAY_SIZE(gn_io_gnsssys_sw_cfg_grp_pad_mux), | ||
2088 | .pad_mux_list = gn_io_gnsssys_sw_cfg_grp_pad_mux, | ||
2089 | }; | ||
2090 | |||
2091 | static struct atlas7_pad_mux gn_trg_grp0_pad_mux[] = { | ||
2092 | MUX(1, 29, 1, 0xa00, 6, 0xa80, 6), | ||
2093 | MUX(1, 28, 1, 0xa00, 7, 0xa80, 7), | ||
2094 | MUX(1, 26, 1, 0xa00, 8, 0xa80, 8), | ||
2095 | MUX(1, 27, 1, 0xa00, 9, 0xa80, 9), | ||
2096 | }; | ||
2097 | |||
2098 | static struct atlas7_grp_mux gn_trg_grp0_mux = { | ||
2099 | .pad_mux_count = ARRAY_SIZE(gn_trg_grp0_pad_mux), | ||
2100 | .pad_mux_list = gn_trg_grp0_pad_mux, | ||
2101 | }; | ||
2102 | |||
2103 | static struct atlas7_pad_mux gn_trg_grp1_pad_mux[] = { | ||
2104 | MUX(1, 77, 3, 0xa00, 6, 0xa80, 6), | ||
2105 | MUX(1, 76, 3, 0xa00, 7, 0xa80, 7), | ||
2106 | MUX(1, 74, 3, 0xa00, 8, 0xa80, 8), | ||
2107 | MUX(1, 75, 3, 0xa00, 9, 0xa80, 9), | ||
2108 | }; | ||
2109 | |||
2110 | static struct atlas7_grp_mux gn_trg_grp1_mux = { | ||
2111 | .pad_mux_count = ARRAY_SIZE(gn_trg_grp1_pad_mux), | ||
2112 | .pad_mux_list = gn_trg_grp1_pad_mux, | ||
2113 | }; | ||
2114 | |||
2115 | static struct atlas7_pad_mux gn_trg_shutdown_grp0_pad_mux[] = { | ||
2116 | MUX(1, 30, 1, N, N, N, N), | ||
2117 | }; | ||
2118 | |||
2119 | static struct atlas7_grp_mux gn_trg_shutdown_grp0_mux = { | ||
2120 | .pad_mux_count = ARRAY_SIZE(gn_trg_shutdown_grp0_pad_mux), | ||
2121 | .pad_mux_list = gn_trg_shutdown_grp0_pad_mux, | ||
2122 | }; | ||
2123 | |||
2124 | static struct atlas7_pad_mux gn_trg_shutdown_grp1_pad_mux[] = { | ||
2125 | MUX(1, 83, 3, N, N, N, N), | ||
2126 | }; | ||
2127 | |||
2128 | static struct atlas7_grp_mux gn_trg_shutdown_grp1_mux = { | ||
2129 | .pad_mux_count = ARRAY_SIZE(gn_trg_shutdown_grp1_pad_mux), | ||
2130 | .pad_mux_list = gn_trg_shutdown_grp1_pad_mux, | ||
2131 | }; | ||
2132 | |||
2133 | static struct atlas7_pad_mux gn_trg_shutdown_grp2_pad_mux[] = { | ||
2134 | MUX(1, 117, 4, N, N, N, N), | ||
2135 | }; | ||
2136 | |||
2137 | static struct atlas7_grp_mux gn_trg_shutdown_grp2_mux = { | ||
2138 | .pad_mux_count = ARRAY_SIZE(gn_trg_shutdown_grp2_pad_mux), | ||
2139 | .pad_mux_list = gn_trg_shutdown_grp2_pad_mux, | ||
2140 | }; | ||
2141 | |||
2142 | static struct atlas7_pad_mux gn_trg_shutdown_grp3_pad_mux[] = { | ||
2143 | MUX(1, 123, 5, N, N, N, N), | ||
2144 | }; | ||
2145 | |||
2146 | static struct atlas7_grp_mux gn_trg_shutdown_grp3_mux = { | ||
2147 | .pad_mux_count = ARRAY_SIZE(gn_trg_shutdown_grp3_pad_mux), | ||
2148 | .pad_mux_list = gn_trg_shutdown_grp3_pad_mux, | ||
2149 | }; | ||
2150 | |||
2151 | static struct atlas7_pad_mux i2c0_grp_pad_mux[] = { | ||
2152 | MUX(1, 128, 1, N, N, N, N), | ||
2153 | MUX(1, 127, 1, N, N, N, N), | ||
2154 | }; | ||
2155 | |||
2156 | static struct atlas7_grp_mux i2c0_grp_mux = { | ||
2157 | .pad_mux_count = ARRAY_SIZE(i2c0_grp_pad_mux), | ||
2158 | .pad_mux_list = i2c0_grp_pad_mux, | ||
2159 | }; | ||
2160 | |||
2161 | static struct atlas7_pad_mux i2c1_grp_pad_mux[] = { | ||
2162 | MUX(1, 126, 4, N, N, N, N), | ||
2163 | MUX(1, 125, 4, N, N, N, N), | ||
2164 | }; | ||
2165 | |||
2166 | static struct atlas7_grp_mux i2c1_grp_mux = { | ||
2167 | .pad_mux_count = ARRAY_SIZE(i2c1_grp_pad_mux), | ||
2168 | .pad_mux_list = i2c1_grp_pad_mux, | ||
2169 | }; | ||
2170 | |||
2171 | static struct atlas7_pad_mux jtag_grp0_pad_mux[] = { | ||
2172 | MUX(1, 125, 5, 0xa08, 2, 0xa88, 2), | ||
2173 | MUX(0, 4, 3, 0xa08, 3, 0xa88, 3), | ||
2174 | MUX(0, 2, 3, N, N, N, N), | ||
2175 | MUX(0, 0, 3, N, N, N, N), | ||
2176 | MUX(0, 1, 3, N, N, N, N), | ||
2177 | MUX(0, 3, 3, N, N, N, N), | ||
2178 | }; | ||
2179 | |||
2180 | static struct atlas7_grp_mux jtag_grp0_mux = { | ||
2181 | .pad_mux_count = ARRAY_SIZE(jtag_grp0_pad_mux), | ||
2182 | .pad_mux_list = jtag_grp0_pad_mux, | ||
2183 | }; | ||
2184 | |||
2185 | static struct atlas7_pad_mux ks_kas_spi_grp0_pad_mux[] = { | ||
2186 | MUX(1, 141, 2, N, N, N, N), | ||
2187 | MUX(1, 144, 2, 0xa08, 8, 0xa88, 8), | ||
2188 | MUX(1, 143, 2, N, N, N, N), | ||
2189 | MUX(1, 142, 2, N, N, N, N), | ||
2190 | }; | ||
2191 | |||
2192 | static struct atlas7_grp_mux ks_kas_spi_grp0_mux = { | ||
2193 | .pad_mux_count = ARRAY_SIZE(ks_kas_spi_grp0_pad_mux), | ||
2194 | .pad_mux_list = ks_kas_spi_grp0_pad_mux, | ||
2195 | }; | ||
2196 | |||
2197 | static struct atlas7_pad_mux ld_ldd_grp_pad_mux[] = { | ||
2198 | MUX(1, 57, 1, N, N, N, N), | ||
2199 | MUX(1, 58, 1, N, N, N, N), | ||
2200 | MUX(1, 59, 1, N, N, N, N), | ||
2201 | MUX(1, 60, 1, N, N, N, N), | ||
2202 | MUX(1, 61, 1, N, N, N, N), | ||
2203 | MUX(1, 62, 1, N, N, N, N), | ||
2204 | MUX(1, 63, 1, N, N, N, N), | ||
2205 | MUX(1, 64, 1, N, N, N, N), | ||
2206 | MUX(1, 65, 1, N, N, N, N), | ||
2207 | MUX(1, 66, 1, N, N, N, N), | ||
2208 | MUX(1, 67, 1, N, N, N, N), | ||
2209 | MUX(1, 68, 1, N, N, N, N), | ||
2210 | MUX(1, 69, 1, N, N, N, N), | ||
2211 | MUX(1, 70, 1, N, N, N, N), | ||
2212 | MUX(1, 71, 1, N, N, N, N), | ||
2213 | MUX(1, 72, 1, N, N, N, N), | ||
2214 | MUX(1, 74, 2, N, N, N, N), | ||
2215 | MUX(1, 75, 2, N, N, N, N), | ||
2216 | MUX(1, 76, 2, N, N, N, N), | ||
2217 | MUX(1, 77, 2, N, N, N, N), | ||
2218 | MUX(1, 78, 2, N, N, N, N), | ||
2219 | MUX(1, 79, 2, N, N, N, N), | ||
2220 | MUX(1, 80, 2, N, N, N, N), | ||
2221 | MUX(1, 81, 2, N, N, N, N), | ||
2222 | MUX(1, 56, 1, N, N, N, N), | ||
2223 | MUX(1, 53, 1, N, N, N, N), | ||
2224 | }; | ||
2225 | |||
2226 | static struct atlas7_grp_mux ld_ldd_grp_mux = { | ||
2227 | .pad_mux_count = ARRAY_SIZE(ld_ldd_grp_pad_mux), | ||
2228 | .pad_mux_list = ld_ldd_grp_pad_mux, | ||
2229 | }; | ||
2230 | |||
2231 | static struct atlas7_pad_mux ld_ldd_16bit_grp_pad_mux[] = { | ||
2232 | MUX(1, 57, 1, N, N, N, N), | ||
2233 | MUX(1, 58, 1, N, N, N, N), | ||
2234 | MUX(1, 59, 1, N, N, N, N), | ||
2235 | MUX(1, 60, 1, N, N, N, N), | ||
2236 | MUX(1, 61, 1, N, N, N, N), | ||
2237 | MUX(1, 62, 1, N, N, N, N), | ||
2238 | MUX(1, 63, 1, N, N, N, N), | ||
2239 | MUX(1, 64, 1, N, N, N, N), | ||
2240 | MUX(1, 65, 1, N, N, N, N), | ||
2241 | MUX(1, 66, 1, N, N, N, N), | ||
2242 | MUX(1, 67, 1, N, N, N, N), | ||
2243 | MUX(1, 68, 1, N, N, N, N), | ||
2244 | MUX(1, 69, 1, N, N, N, N), | ||
2245 | MUX(1, 70, 1, N, N, N, N), | ||
2246 | MUX(1, 71, 1, N, N, N, N), | ||
2247 | MUX(1, 72, 1, N, N, N, N), | ||
2248 | MUX(1, 56, 1, N, N, N, N), | ||
2249 | MUX(1, 53, 1, N, N, N, N), | ||
2250 | }; | ||
2251 | |||
2252 | static struct atlas7_grp_mux ld_ldd_16bit_grp_mux = { | ||
2253 | .pad_mux_count = ARRAY_SIZE(ld_ldd_16bit_grp_pad_mux), | ||
2254 | .pad_mux_list = ld_ldd_16bit_grp_pad_mux, | ||
2255 | }; | ||
2256 | |||
2257 | static struct atlas7_pad_mux ld_ldd_fck_grp_pad_mux[] = { | ||
2258 | MUX(1, 55, 1, N, N, N, N), | ||
2259 | }; | ||
2260 | |||
2261 | static struct atlas7_grp_mux ld_ldd_fck_grp_mux = { | ||
2262 | .pad_mux_count = ARRAY_SIZE(ld_ldd_fck_grp_pad_mux), | ||
2263 | .pad_mux_list = ld_ldd_fck_grp_pad_mux, | ||
2264 | }; | ||
2265 | |||
2266 | static struct atlas7_pad_mux ld_ldd_lck_grp_pad_mux[] = { | ||
2267 | MUX(1, 54, 1, N, N, N, N), | ||
2268 | }; | ||
2269 | |||
2270 | static struct atlas7_grp_mux ld_ldd_lck_grp_mux = { | ||
2271 | .pad_mux_count = ARRAY_SIZE(ld_ldd_lck_grp_pad_mux), | ||
2272 | .pad_mux_list = ld_ldd_lck_grp_pad_mux, | ||
2273 | }; | ||
2274 | |||
2275 | static struct atlas7_pad_mux lr_lcdrom_grp_pad_mux[] = { | ||
2276 | MUX(1, 73, 2, N, N, N, N), | ||
2277 | MUX(1, 54, 2, N, N, N, N), | ||
2278 | MUX(1, 57, 2, N, N, N, N), | ||
2279 | MUX(1, 58, 2, N, N, N, N), | ||
2280 | MUX(1, 59, 2, N, N, N, N), | ||
2281 | MUX(1, 60, 2, N, N, N, N), | ||
2282 | MUX(1, 61, 2, N, N, N, N), | ||
2283 | MUX(1, 62, 2, N, N, N, N), | ||
2284 | MUX(1, 63, 2, N, N, N, N), | ||
2285 | MUX(1, 64, 2, N, N, N, N), | ||
2286 | MUX(1, 65, 2, N, N, N, N), | ||
2287 | MUX(1, 66, 2, N, N, N, N), | ||
2288 | MUX(1, 67, 2, N, N, N, N), | ||
2289 | MUX(1, 68, 2, N, N, N, N), | ||
2290 | MUX(1, 69, 2, N, N, N, N), | ||
2291 | MUX(1, 70, 2, N, N, N, N), | ||
2292 | MUX(1, 71, 2, N, N, N, N), | ||
2293 | MUX(1, 72, 2, N, N, N, N), | ||
2294 | MUX(1, 56, 2, N, N, N, N), | ||
2295 | MUX(1, 53, 2, N, N, N, N), | ||
2296 | MUX(1, 55, 2, N, N, N, N), | ||
2297 | }; | ||
2298 | |||
2299 | static struct atlas7_grp_mux lr_lcdrom_grp_mux = { | ||
2300 | .pad_mux_count = ARRAY_SIZE(lr_lcdrom_grp_pad_mux), | ||
2301 | .pad_mux_list = lr_lcdrom_grp_pad_mux, | ||
2302 | }; | ||
2303 | |||
2304 | static struct atlas7_pad_mux lvds_analog_grp_pad_mux[] = { | ||
2305 | MUX(1, 149, 8, N, N, N, N), | ||
2306 | MUX(1, 150, 8, N, N, N, N), | ||
2307 | MUX(1, 151, 8, N, N, N, N), | ||
2308 | MUX(1, 152, 8, N, N, N, N), | ||
2309 | MUX(1, 153, 8, N, N, N, N), | ||
2310 | MUX(1, 154, 8, N, N, N, N), | ||
2311 | MUX(1, 155, 8, N, N, N, N), | ||
2312 | MUX(1, 156, 8, N, N, N, N), | ||
2313 | MUX(1, 157, 8, N, N, N, N), | ||
2314 | MUX(1, 158, 8, N, N, N, N), | ||
2315 | }; | ||
2316 | |||
2317 | static struct atlas7_grp_mux lvds_analog_grp_mux = { | ||
2318 | .pad_mux_count = ARRAY_SIZE(lvds_analog_grp_pad_mux), | ||
2319 | .pad_mux_list = lvds_analog_grp_pad_mux, | ||
2320 | }; | ||
2321 | |||
2322 | static struct atlas7_pad_mux nd_df_grp_pad_mux[] = { | ||
2323 | MUX(1, 44, 1, N, N, N, N), | ||
2324 | MUX(1, 43, 1, N, N, N, N), | ||
2325 | MUX(1, 42, 1, N, N, N, N), | ||
2326 | MUX(1, 41, 1, N, N, N, N), | ||
2327 | MUX(1, 40, 1, N, N, N, N), | ||
2328 | MUX(1, 39, 1, N, N, N, N), | ||
2329 | MUX(1, 38, 1, N, N, N, N), | ||
2330 | MUX(1, 37, 1, N, N, N, N), | ||
2331 | MUX(1, 47, 1, N, N, N, N), | ||
2332 | MUX(1, 46, 1, N, N, N, N), | ||
2333 | MUX(1, 52, 1, N, N, N, N), | ||
2334 | MUX(1, 51, 1, N, N, N, N), | ||
2335 | MUX(1, 45, 1, N, N, N, N), | ||
2336 | MUX(1, 49, 1, N, N, N, N), | ||
2337 | MUX(1, 50, 1, N, N, N, N), | ||
2338 | MUX(1, 48, 1, N, N, N, N), | ||
2339 | MUX(1, 124, 4, N, N, N, N), | ||
2340 | }; | ||
2341 | |||
2342 | static struct atlas7_grp_mux nd_df_grp_mux = { | ||
2343 | .pad_mux_count = ARRAY_SIZE(nd_df_grp_pad_mux), | ||
2344 | .pad_mux_list = nd_df_grp_pad_mux, | ||
2345 | }; | ||
2346 | |||
2347 | static struct atlas7_pad_mux nd_df_nowp_grp_pad_mux[] = { | ||
2348 | MUX(1, 44, 1, N, N, N, N), | ||
2349 | MUX(1, 43, 1, N, N, N, N), | ||
2350 | MUX(1, 42, 1, N, N, N, N), | ||
2351 | MUX(1, 41, 1, N, N, N, N), | ||
2352 | MUX(1, 40, 1, N, N, N, N), | ||
2353 | MUX(1, 39, 1, N, N, N, N), | ||
2354 | MUX(1, 38, 1, N, N, N, N), | ||
2355 | MUX(1, 37, 1, N, N, N, N), | ||
2356 | MUX(1, 47, 1, N, N, N, N), | ||
2357 | MUX(1, 46, 1, N, N, N, N), | ||
2358 | MUX(1, 52, 1, N, N, N, N), | ||
2359 | MUX(1, 51, 1, N, N, N, N), | ||
2360 | MUX(1, 45, 1, N, N, N, N), | ||
2361 | MUX(1, 49, 1, N, N, N, N), | ||
2362 | MUX(1, 50, 1, N, N, N, N), | ||
2363 | MUX(1, 48, 1, N, N, N, N), | ||
2364 | }; | ||
2365 | |||
2366 | static struct atlas7_grp_mux nd_df_nowp_grp_mux = { | ||
2367 | .pad_mux_count = ARRAY_SIZE(nd_df_nowp_grp_pad_mux), | ||
2368 | .pad_mux_list = nd_df_nowp_grp_pad_mux, | ||
2369 | }; | ||
2370 | |||
2371 | static struct atlas7_pad_mux ps_grp_pad_mux[] = { | ||
2372 | MUX(1, 120, 2, N, N, N, N), | ||
2373 | MUX(1, 119, 2, N, N, N, N), | ||
2374 | }; | ||
2375 | |||
2376 | static struct atlas7_grp_mux ps_grp_mux = { | ||
2377 | .pad_mux_count = ARRAY_SIZE(ps_grp_pad_mux), | ||
2378 | .pad_mux_list = ps_grp_pad_mux, | ||
2379 | }; | ||
2380 | |||
2381 | static struct atlas7_pad_mux pwc_core_on_grp_pad_mux[] = { | ||
2382 | MUX(0, 8, 1, N, N, N, N), | ||
2383 | }; | ||
2384 | |||
2385 | static struct atlas7_grp_mux pwc_core_on_grp_mux = { | ||
2386 | .pad_mux_count = ARRAY_SIZE(pwc_core_on_grp_pad_mux), | ||
2387 | .pad_mux_list = pwc_core_on_grp_pad_mux, | ||
2388 | }; | ||
2389 | |||
2390 | static struct atlas7_pad_mux pwc_ext_on_grp_pad_mux[] = { | ||
2391 | MUX(0, 6, 1, N, N, N, N), | ||
2392 | }; | ||
2393 | |||
2394 | static struct atlas7_grp_mux pwc_ext_on_grp_mux = { | ||
2395 | .pad_mux_count = ARRAY_SIZE(pwc_ext_on_grp_pad_mux), | ||
2396 | .pad_mux_list = pwc_ext_on_grp_pad_mux, | ||
2397 | }; | ||
2398 | |||
2399 | static struct atlas7_pad_mux pwc_gpio3_clk_grp_pad_mux[] = { | ||
2400 | MUX(0, 3, 4, N, N, N, N), | ||
2401 | }; | ||
2402 | |||
2403 | static struct atlas7_grp_mux pwc_gpio3_clk_grp_mux = { | ||
2404 | .pad_mux_count = ARRAY_SIZE(pwc_gpio3_clk_grp_pad_mux), | ||
2405 | .pad_mux_list = pwc_gpio3_clk_grp_pad_mux, | ||
2406 | }; | ||
2407 | |||
2408 | static struct atlas7_pad_mux pwc_io_on_grp_pad_mux[] = { | ||
2409 | MUX(0, 9, 1, N, N, N, N), | ||
2410 | }; | ||
2411 | |||
2412 | static struct atlas7_grp_mux pwc_io_on_grp_mux = { | ||
2413 | .pad_mux_count = ARRAY_SIZE(pwc_io_on_grp_pad_mux), | ||
2414 | .pad_mux_list = pwc_io_on_grp_pad_mux, | ||
2415 | }; | ||
2416 | |||
2417 | static struct atlas7_pad_mux pwc_lowbatt_b_grp0_pad_mux[] = { | ||
2418 | MUX(0, 4, 1, 0xa08, 4, 0xa88, 4), | ||
2419 | }; | ||
2420 | |||
2421 | static struct atlas7_grp_mux pwc_lowbatt_b_grp0_mux = { | ||
2422 | .pad_mux_count = ARRAY_SIZE(pwc_lowbatt_b_grp0_pad_mux), | ||
2423 | .pad_mux_list = pwc_lowbatt_b_grp0_pad_mux, | ||
2424 | }; | ||
2425 | |||
2426 | static struct atlas7_pad_mux pwc_mem_on_grp_pad_mux[] = { | ||
2427 | MUX(0, 7, 1, N, N, N, N), | ||
2428 | }; | ||
2429 | |||
2430 | static struct atlas7_grp_mux pwc_mem_on_grp_mux = { | ||
2431 | .pad_mux_count = ARRAY_SIZE(pwc_mem_on_grp_pad_mux), | ||
2432 | .pad_mux_list = pwc_mem_on_grp_pad_mux, | ||
2433 | }; | ||
2434 | |||
2435 | static struct atlas7_pad_mux pwc_on_key_b_grp0_pad_mux[] = { | ||
2436 | MUX(0, 5, 1, 0xa08, 5, 0xa88, 5), | ||
2437 | }; | ||
2438 | |||
2439 | static struct atlas7_grp_mux pwc_on_key_b_grp0_mux = { | ||
2440 | .pad_mux_count = ARRAY_SIZE(pwc_on_key_b_grp0_pad_mux), | ||
2441 | .pad_mux_list = pwc_on_key_b_grp0_pad_mux, | ||
2442 | }; | ||
2443 | |||
2444 | static struct atlas7_pad_mux pwc_wakeup_src0_grp_pad_mux[] = { | ||
2445 | MUX(0, 0, 1, N, N, N, N), | ||
2446 | }; | ||
2447 | |||
2448 | static struct atlas7_grp_mux pwc_wakeup_src0_grp_mux = { | ||
2449 | .pad_mux_count = ARRAY_SIZE(pwc_wakeup_src0_grp_pad_mux), | ||
2450 | .pad_mux_list = pwc_wakeup_src0_grp_pad_mux, | ||
2451 | }; | ||
2452 | |||
2453 | static struct atlas7_pad_mux pwc_wakeup_src1_grp_pad_mux[] = { | ||
2454 | MUX(0, 1, 1, N, N, N, N), | ||
2455 | }; | ||
2456 | |||
2457 | static struct atlas7_grp_mux pwc_wakeup_src1_grp_mux = { | ||
2458 | .pad_mux_count = ARRAY_SIZE(pwc_wakeup_src1_grp_pad_mux), | ||
2459 | .pad_mux_list = pwc_wakeup_src1_grp_pad_mux, | ||
2460 | }; | ||
2461 | |||
2462 | static struct atlas7_pad_mux pwc_wakeup_src2_grp_pad_mux[] = { | ||
2463 | MUX(0, 2, 1, N, N, N, N), | ||
2464 | }; | ||
2465 | |||
2466 | static struct atlas7_grp_mux pwc_wakeup_src2_grp_mux = { | ||
2467 | .pad_mux_count = ARRAY_SIZE(pwc_wakeup_src2_grp_pad_mux), | ||
2468 | .pad_mux_list = pwc_wakeup_src2_grp_pad_mux, | ||
2469 | }; | ||
2470 | |||
2471 | static struct atlas7_pad_mux pwc_wakeup_src3_grp_pad_mux[] = { | ||
2472 | MUX(0, 3, 1, N, N, N, N), | ||
2473 | }; | ||
2474 | |||
2475 | static struct atlas7_grp_mux pwc_wakeup_src3_grp_mux = { | ||
2476 | .pad_mux_count = ARRAY_SIZE(pwc_wakeup_src3_grp_pad_mux), | ||
2477 | .pad_mux_list = pwc_wakeup_src3_grp_pad_mux, | ||
2478 | }; | ||
2479 | |||
2480 | static struct atlas7_pad_mux pw_cko0_grp0_pad_mux[] = { | ||
2481 | MUX(1, 123, 3, N, N, N, N), | ||
2482 | }; | ||
2483 | |||
2484 | static struct atlas7_grp_mux pw_cko0_grp0_mux = { | ||
2485 | .pad_mux_count = ARRAY_SIZE(pw_cko0_grp0_pad_mux), | ||
2486 | .pad_mux_list = pw_cko0_grp0_pad_mux, | ||
2487 | }; | ||
2488 | |||
2489 | static struct atlas7_pad_mux pw_cko0_grp1_pad_mux[] = { | ||
2490 | MUX(1, 101, 4, N, N, N, N), | ||
2491 | }; | ||
2492 | |||
2493 | static struct atlas7_grp_mux pw_cko0_grp1_mux = { | ||
2494 | .pad_mux_count = ARRAY_SIZE(pw_cko0_grp1_pad_mux), | ||
2495 | .pad_mux_list = pw_cko0_grp1_pad_mux, | ||
2496 | }; | ||
2497 | |||
2498 | static struct atlas7_pad_mux pw_cko0_grp2_pad_mux[] = { | ||
2499 | MUX(1, 82, 2, N, N, N, N), | ||
2500 | }; | ||
2501 | |||
2502 | static struct atlas7_grp_mux pw_cko0_grp2_mux = { | ||
2503 | .pad_mux_count = ARRAY_SIZE(pw_cko0_grp2_pad_mux), | ||
2504 | .pad_mux_list = pw_cko0_grp2_pad_mux, | ||
2505 | }; | ||
2506 | |||
2507 | static struct atlas7_pad_mux pw_cko1_grp0_pad_mux[] = { | ||
2508 | MUX(1, 124, 3, N, N, N, N), | ||
2509 | }; | ||
2510 | |||
2511 | static struct atlas7_grp_mux pw_cko1_grp0_mux = { | ||
2512 | .pad_mux_count = ARRAY_SIZE(pw_cko1_grp0_pad_mux), | ||
2513 | .pad_mux_list = pw_cko1_grp0_pad_mux, | ||
2514 | }; | ||
2515 | |||
2516 | static struct atlas7_pad_mux pw_cko1_grp1_pad_mux[] = { | ||
2517 | MUX(1, 110, 4, N, N, N, N), | ||
2518 | }; | ||
2519 | |||
2520 | static struct atlas7_grp_mux pw_cko1_grp1_mux = { | ||
2521 | .pad_mux_count = ARRAY_SIZE(pw_cko1_grp1_pad_mux), | ||
2522 | .pad_mux_list = pw_cko1_grp1_pad_mux, | ||
2523 | }; | ||
2524 | |||
2525 | static struct atlas7_pad_mux pw_i2s01_clk_grp0_pad_mux[] = { | ||
2526 | MUX(1, 125, 3, N, N, N, N), | ||
2527 | }; | ||
2528 | |||
2529 | static struct atlas7_grp_mux pw_i2s01_clk_grp0_mux = { | ||
2530 | .pad_mux_count = ARRAY_SIZE(pw_i2s01_clk_grp0_pad_mux), | ||
2531 | .pad_mux_list = pw_i2s01_clk_grp0_pad_mux, | ||
2532 | }; | ||
2533 | |||
2534 | static struct atlas7_pad_mux pw_i2s01_clk_grp1_pad_mux[] = { | ||
2535 | MUX(1, 117, 3, N, N, N, N), | ||
2536 | }; | ||
2537 | |||
2538 | static struct atlas7_grp_mux pw_i2s01_clk_grp1_mux = { | ||
2539 | .pad_mux_count = ARRAY_SIZE(pw_i2s01_clk_grp1_pad_mux), | ||
2540 | .pad_mux_list = pw_i2s01_clk_grp1_pad_mux, | ||
2541 | }; | ||
2542 | |||
2543 | static struct atlas7_pad_mux pw_pwm0_grp_pad_mux[] = { | ||
2544 | MUX(1, 119, 3, N, N, N, N), | ||
2545 | }; | ||
2546 | |||
2547 | static struct atlas7_grp_mux pw_pwm0_grp_mux = { | ||
2548 | .pad_mux_count = ARRAY_SIZE(pw_pwm0_grp_pad_mux), | ||
2549 | .pad_mux_list = pw_pwm0_grp_pad_mux, | ||
2550 | }; | ||
2551 | |||
2552 | static struct atlas7_pad_mux pw_pwm1_grp_pad_mux[] = { | ||
2553 | MUX(1, 120, 3, N, N, N, N), | ||
2554 | }; | ||
2555 | |||
2556 | static struct atlas7_grp_mux pw_pwm1_grp_mux = { | ||
2557 | .pad_mux_count = ARRAY_SIZE(pw_pwm1_grp_pad_mux), | ||
2558 | .pad_mux_list = pw_pwm1_grp_pad_mux, | ||
2559 | }; | ||
2560 | |||
2561 | static struct atlas7_pad_mux pw_pwm2_grp0_pad_mux[] = { | ||
2562 | MUX(1, 121, 3, N, N, N, N), | ||
2563 | }; | ||
2564 | |||
2565 | static struct atlas7_grp_mux pw_pwm2_grp0_mux = { | ||
2566 | .pad_mux_count = ARRAY_SIZE(pw_pwm2_grp0_pad_mux), | ||
2567 | .pad_mux_list = pw_pwm2_grp0_pad_mux, | ||
2568 | }; | ||
2569 | |||
2570 | static struct atlas7_pad_mux pw_pwm2_grp1_pad_mux[] = { | ||
2571 | MUX(1, 98, 3, N, N, N, N), | ||
2572 | }; | ||
2573 | |||
2574 | static struct atlas7_grp_mux pw_pwm2_grp1_mux = { | ||
2575 | .pad_mux_count = ARRAY_SIZE(pw_pwm2_grp1_pad_mux), | ||
2576 | .pad_mux_list = pw_pwm2_grp1_pad_mux, | ||
2577 | }; | ||
2578 | |||
2579 | static struct atlas7_pad_mux pw_pwm3_grp0_pad_mux[] = { | ||
2580 | MUX(1, 122, 3, N, N, N, N), | ||
2581 | }; | ||
2582 | |||
2583 | static struct atlas7_grp_mux pw_pwm3_grp0_mux = { | ||
2584 | .pad_mux_count = ARRAY_SIZE(pw_pwm3_grp0_pad_mux), | ||
2585 | .pad_mux_list = pw_pwm3_grp0_pad_mux, | ||
2586 | }; | ||
2587 | |||
2588 | static struct atlas7_pad_mux pw_pwm3_grp1_pad_mux[] = { | ||
2589 | MUX(1, 73, 4, N, N, N, N), | ||
2590 | }; | ||
2591 | |||
2592 | static struct atlas7_grp_mux pw_pwm3_grp1_mux = { | ||
2593 | .pad_mux_count = ARRAY_SIZE(pw_pwm3_grp1_pad_mux), | ||
2594 | .pad_mux_list = pw_pwm3_grp1_pad_mux, | ||
2595 | }; | ||
2596 | |||
2597 | static struct atlas7_pad_mux pw_pwm_cpu_vol_grp0_pad_mux[] = { | ||
2598 | MUX(1, 121, 3, N, N, N, N), | ||
2599 | }; | ||
2600 | |||
2601 | static struct atlas7_grp_mux pw_pwm_cpu_vol_grp0_mux = { | ||
2602 | .pad_mux_count = ARRAY_SIZE(pw_pwm_cpu_vol_grp0_pad_mux), | ||
2603 | .pad_mux_list = pw_pwm_cpu_vol_grp0_pad_mux, | ||
2604 | }; | ||
2605 | |||
2606 | static struct atlas7_pad_mux pw_pwm_cpu_vol_grp1_pad_mux[] = { | ||
2607 | MUX(1, 98, 3, N, N, N, N), | ||
2608 | }; | ||
2609 | |||
2610 | static struct atlas7_grp_mux pw_pwm_cpu_vol_grp1_mux = { | ||
2611 | .pad_mux_count = ARRAY_SIZE(pw_pwm_cpu_vol_grp1_pad_mux), | ||
2612 | .pad_mux_list = pw_pwm_cpu_vol_grp1_pad_mux, | ||
2613 | }; | ||
2614 | |||
2615 | static struct atlas7_pad_mux pw_backlight_grp0_pad_mux[] = { | ||
2616 | MUX(1, 122, 3, N, N, N, N), | ||
2617 | }; | ||
2618 | |||
2619 | static struct atlas7_grp_mux pw_backlight_grp0_mux = { | ||
2620 | .pad_mux_count = ARRAY_SIZE(pw_backlight_grp0_pad_mux), | ||
2621 | .pad_mux_list = pw_backlight_grp0_pad_mux, | ||
2622 | }; | ||
2623 | |||
2624 | static struct atlas7_pad_mux pw_backlight_grp1_pad_mux[] = { | ||
2625 | MUX(1, 73, 4, N, N, N, N), | ||
2626 | }; | ||
2627 | |||
2628 | static struct atlas7_grp_mux pw_backlight_grp1_mux = { | ||
2629 | .pad_mux_count = ARRAY_SIZE(pw_backlight_grp1_pad_mux), | ||
2630 | .pad_mux_list = pw_backlight_grp1_pad_mux, | ||
2631 | }; | ||
2632 | |||
2633 | static struct atlas7_pad_mux rg_eth_mac_grp_pad_mux[] = { | ||
2634 | MUX(1, 108, 1, N, N, N, N), | ||
2635 | MUX(1, 103, 1, N, N, N, N), | ||
2636 | MUX(1, 104, 1, N, N, N, N), | ||
2637 | MUX(1, 105, 1, N, N, N, N), | ||
2638 | MUX(1, 106, 1, N, N, N, N), | ||
2639 | MUX(1, 107, 1, N, N, N, N), | ||
2640 | MUX(1, 102, 1, N, N, N, N), | ||
2641 | MUX(1, 97, 1, N, N, N, N), | ||
2642 | MUX(1, 98, 1, N, N, N, N), | ||
2643 | MUX(1, 99, 1, N, N, N, N), | ||
2644 | MUX(1, 100, 1, N, N, N, N), | ||
2645 | MUX(1, 101, 1, N, N, N, N), | ||
2646 | }; | ||
2647 | |||
2648 | static struct atlas7_grp_mux rg_eth_mac_grp_mux = { | ||
2649 | .pad_mux_count = ARRAY_SIZE(rg_eth_mac_grp_pad_mux), | ||
2650 | .pad_mux_list = rg_eth_mac_grp_pad_mux, | ||
2651 | }; | ||
2652 | |||
2653 | static struct atlas7_pad_mux rg_gmac_phy_intr_n_grp_pad_mux[] = { | ||
2654 | MUX(1, 111, 1, 0xa08, 13, 0xa88, 13), | ||
2655 | }; | ||
2656 | |||
2657 | static struct atlas7_grp_mux rg_gmac_phy_intr_n_grp_mux = { | ||
2658 | .pad_mux_count = ARRAY_SIZE(rg_gmac_phy_intr_n_grp_pad_mux), | ||
2659 | .pad_mux_list = rg_gmac_phy_intr_n_grp_pad_mux, | ||
2660 | }; | ||
2661 | |||
2662 | static struct atlas7_pad_mux rg_rgmii_mac_grp_pad_mux[] = { | ||
2663 | MUX(1, 109, 1, N, N, N, N), | ||
2664 | MUX(1, 110, 1, N, N, N, N), | ||
2665 | }; | ||
2666 | |||
2667 | static struct atlas7_grp_mux rg_rgmii_mac_grp_mux = { | ||
2668 | .pad_mux_count = ARRAY_SIZE(rg_rgmii_mac_grp_pad_mux), | ||
2669 | .pad_mux_list = rg_rgmii_mac_grp_pad_mux, | ||
2670 | }; | ||
2671 | |||
2672 | static struct atlas7_pad_mux rg_rgmii_phy_ref_clk_grp0_pad_mux[] = { | ||
2673 | MUX(1, 111, 5, N, N, N, N), | ||
2674 | }; | ||
2675 | |||
2676 | static struct atlas7_grp_mux rg_rgmii_phy_ref_clk_grp0_mux = { | ||
2677 | .pad_mux_count = ARRAY_SIZE(rg_rgmii_phy_ref_clk_grp0_pad_mux), | ||
2678 | .pad_mux_list = rg_rgmii_phy_ref_clk_grp0_pad_mux, | ||
2679 | }; | ||
2680 | |||
2681 | static struct atlas7_pad_mux rg_rgmii_phy_ref_clk_grp1_pad_mux[] = { | ||
2682 | MUX(1, 53, 4, N, N, N, N), | ||
2683 | }; | ||
2684 | |||
2685 | static struct atlas7_grp_mux rg_rgmii_phy_ref_clk_grp1_mux = { | ||
2686 | .pad_mux_count = ARRAY_SIZE(rg_rgmii_phy_ref_clk_grp1_pad_mux), | ||
2687 | .pad_mux_list = rg_rgmii_phy_ref_clk_grp1_pad_mux, | ||
2688 | }; | ||
2689 | |||
2690 | static struct atlas7_pad_mux sd0_grp_pad_mux[] = { | ||
2691 | MUX(1, 46, 2, N, N, N, N), | ||
2692 | MUX(1, 47, 2, N, N, N, N), | ||
2693 | MUX(1, 44, 2, N, N, N, N), | ||
2694 | MUX(1, 43, 2, N, N, N, N), | ||
2695 | MUX(1, 42, 2, N, N, N, N), | ||
2696 | MUX(1, 41, 2, N, N, N, N), | ||
2697 | MUX(1, 40, 2, N, N, N, N), | ||
2698 | MUX(1, 39, 2, N, N, N, N), | ||
2699 | MUX(1, 38, 2, N, N, N, N), | ||
2700 | MUX(1, 37, 2, N, N, N, N), | ||
2701 | }; | ||
2702 | |||
2703 | static struct atlas7_grp_mux sd0_grp_mux = { | ||
2704 | .pad_mux_count = ARRAY_SIZE(sd0_grp_pad_mux), | ||
2705 | .pad_mux_list = sd0_grp_pad_mux, | ||
2706 | }; | ||
2707 | |||
2708 | static struct atlas7_pad_mux sd0_4bit_grp_pad_mux[] = { | ||
2709 | MUX(1, 46, 2, N, N, N, N), | ||
2710 | MUX(1, 47, 2, N, N, N, N), | ||
2711 | MUX(1, 44, 2, N, N, N, N), | ||
2712 | MUX(1, 43, 2, N, N, N, N), | ||
2713 | MUX(1, 42, 2, N, N, N, N), | ||
2714 | MUX(1, 41, 2, N, N, N, N), | ||
2715 | }; | ||
2716 | |||
2717 | static struct atlas7_grp_mux sd0_4bit_grp_mux = { | ||
2718 | .pad_mux_count = ARRAY_SIZE(sd0_4bit_grp_pad_mux), | ||
2719 | .pad_mux_list = sd0_4bit_grp_pad_mux, | ||
2720 | }; | ||
2721 | |||
2722 | static struct atlas7_pad_mux sd1_grp_pad_mux[] = { | ||
2723 | MUX(1, 48, 3, N, N, N, N), | ||
2724 | MUX(1, 49, 3, N, N, N, N), | ||
2725 | MUX(1, 44, 3, 0xa00, 0, 0xa80, 0), | ||
2726 | MUX(1, 43, 3, 0xa00, 1, 0xa80, 1), | ||
2727 | MUX(1, 42, 3, 0xa00, 2, 0xa80, 2), | ||
2728 | MUX(1, 41, 3, 0xa00, 3, 0xa80, 3), | ||
2729 | MUX(1, 40, 3, N, N, N, N), | ||
2730 | MUX(1, 39, 3, N, N, N, N), | ||
2731 | MUX(1, 38, 3, N, N, N, N), | ||
2732 | MUX(1, 37, 3, N, N, N, N), | ||
2733 | }; | ||
2734 | |||
2735 | static struct atlas7_grp_mux sd1_grp_mux = { | ||
2736 | .pad_mux_count = ARRAY_SIZE(sd1_grp_pad_mux), | ||
2737 | .pad_mux_list = sd1_grp_pad_mux, | ||
2738 | }; | ||
2739 | |||
2740 | static struct atlas7_pad_mux sd1_4bit_grp0_pad_mux[] = { | ||
2741 | MUX(1, 48, 3, N, N, N, N), | ||
2742 | MUX(1, 49, 3, N, N, N, N), | ||
2743 | MUX(1, 44, 3, 0xa00, 0, 0xa80, 0), | ||
2744 | MUX(1, 43, 3, 0xa00, 1, 0xa80, 1), | ||
2745 | MUX(1, 42, 3, 0xa00, 2, 0xa80, 2), | ||
2746 | MUX(1, 41, 3, 0xa00, 3, 0xa80, 3), | ||
2747 | }; | ||
2748 | |||
2749 | static struct atlas7_grp_mux sd1_4bit_grp0_mux = { | ||
2750 | .pad_mux_count = ARRAY_SIZE(sd1_4bit_grp0_pad_mux), | ||
2751 | .pad_mux_list = sd1_4bit_grp0_pad_mux, | ||
2752 | }; | ||
2753 | |||
2754 | static struct atlas7_pad_mux sd1_4bit_grp1_pad_mux[] = { | ||
2755 | MUX(1, 48, 3, N, N, N, N), | ||
2756 | MUX(1, 49, 3, N, N, N, N), | ||
2757 | MUX(1, 40, 4, 0xa00, 0, 0xa80, 0), | ||
2758 | MUX(1, 39, 4, 0xa00, 1, 0xa80, 1), | ||
2759 | MUX(1, 38, 4, 0xa00, 2, 0xa80, 2), | ||
2760 | MUX(1, 37, 4, 0xa00, 3, 0xa80, 3), | ||
2761 | }; | ||
2762 | |||
2763 | static struct atlas7_grp_mux sd1_4bit_grp1_mux = { | ||
2764 | .pad_mux_count = ARRAY_SIZE(sd1_4bit_grp1_pad_mux), | ||
2765 | .pad_mux_list = sd1_4bit_grp1_pad_mux, | ||
2766 | }; | ||
2767 | |||
2768 | static struct atlas7_pad_mux sd2_grp0_pad_mux[] = { | ||
2769 | MUX(1, 124, 2, 0xa08, 7, 0xa88, 7), | ||
2770 | MUX(1, 31, 1, N, N, N, N), | ||
2771 | MUX(1, 32, 1, N, N, N, N), | ||
2772 | MUX(1, 33, 1, N, N, N, N), | ||
2773 | MUX(1, 34, 1, N, N, N, N), | ||
2774 | MUX(1, 35, 1, N, N, N, N), | ||
2775 | MUX(1, 36, 1, N, N, N, N), | ||
2776 | MUX(1, 123, 2, N, N, N, N), | ||
2777 | }; | ||
2778 | |||
2779 | static struct atlas7_grp_mux sd2_grp0_mux = { | ||
2780 | .pad_mux_count = ARRAY_SIZE(sd2_grp0_pad_mux), | ||
2781 | .pad_mux_list = sd2_grp0_pad_mux, | ||
2782 | }; | ||
2783 | |||
2784 | static struct atlas7_pad_mux sd2_no_cdb_grp0_pad_mux[] = { | ||
2785 | MUX(1, 31, 1, N, N, N, N), | ||
2786 | MUX(1, 32, 1, N, N, N, N), | ||
2787 | MUX(1, 33, 1, N, N, N, N), | ||
2788 | MUX(1, 34, 1, N, N, N, N), | ||
2789 | MUX(1, 35, 1, N, N, N, N), | ||
2790 | MUX(1, 36, 1, N, N, N, N), | ||
2791 | MUX(1, 123, 2, N, N, N, N), | ||
2792 | }; | ||
2793 | |||
2794 | static struct atlas7_grp_mux sd2_no_cdb_grp0_mux = { | ||
2795 | .pad_mux_count = ARRAY_SIZE(sd2_no_cdb_grp0_pad_mux), | ||
2796 | .pad_mux_list = sd2_no_cdb_grp0_pad_mux, | ||
2797 | }; | ||
2798 | |||
2799 | static struct atlas7_pad_mux sd3_grp_pad_mux[] = { | ||
2800 | MUX(1, 85, 1, N, N, N, N), | ||
2801 | MUX(1, 86, 1, N, N, N, N), | ||
2802 | MUX(1, 87, 1, N, N, N, N), | ||
2803 | MUX(1, 88, 1, N, N, N, N), | ||
2804 | MUX(1, 89, 1, N, N, N, N), | ||
2805 | MUX(1, 90, 1, N, N, N, N), | ||
2806 | }; | ||
2807 | |||
2808 | static struct atlas7_grp_mux sd3_grp_mux = { | ||
2809 | .pad_mux_count = ARRAY_SIZE(sd3_grp_pad_mux), | ||
2810 | .pad_mux_list = sd3_grp_pad_mux, | ||
2811 | }; | ||
2812 | |||
2813 | static struct atlas7_pad_mux sd5_grp_pad_mux[] = { | ||
2814 | MUX(1, 91, 1, N, N, N, N), | ||
2815 | MUX(1, 92, 1, N, N, N, N), | ||
2816 | MUX(1, 93, 1, N, N, N, N), | ||
2817 | MUX(1, 94, 1, N, N, N, N), | ||
2818 | MUX(1, 95, 1, N, N, N, N), | ||
2819 | MUX(1, 96, 1, N, N, N, N), | ||
2820 | }; | ||
2821 | |||
2822 | static struct atlas7_grp_mux sd5_grp_mux = { | ||
2823 | .pad_mux_count = ARRAY_SIZE(sd5_grp_pad_mux), | ||
2824 | .pad_mux_list = sd5_grp_pad_mux, | ||
2825 | }; | ||
2826 | |||
2827 | static struct atlas7_pad_mux sd6_grp0_pad_mux[] = { | ||
2828 | MUX(1, 79, 4, 0xa00, 27, 0xa80, 27), | ||
2829 | MUX(1, 78, 4, 0xa00, 26, 0xa80, 26), | ||
2830 | MUX(1, 74, 4, 0xa00, 28, 0xa80, 28), | ||
2831 | MUX(1, 75, 4, 0xa00, 29, 0xa80, 29), | ||
2832 | MUX(1, 76, 4, 0xa00, 30, 0xa80, 30), | ||
2833 | MUX(1, 77, 4, 0xa00, 31, 0xa80, 31), | ||
2834 | }; | ||
2835 | |||
2836 | static struct atlas7_grp_mux sd6_grp0_mux = { | ||
2837 | .pad_mux_count = ARRAY_SIZE(sd6_grp0_pad_mux), | ||
2838 | .pad_mux_list = sd6_grp0_pad_mux, | ||
2839 | }; | ||
2840 | |||
2841 | static struct atlas7_pad_mux sd6_grp1_pad_mux[] = { | ||
2842 | MUX(1, 101, 3, 0xa00, 27, 0xa80, 27), | ||
2843 | MUX(1, 99, 3, 0xa00, 26, 0xa80, 26), | ||
2844 | MUX(1, 100, 3, 0xa00, 28, 0xa80, 28), | ||
2845 | MUX(1, 110, 3, 0xa00, 29, 0xa80, 29), | ||
2846 | MUX(1, 109, 3, 0xa00, 30, 0xa80, 30), | ||
2847 | MUX(1, 111, 3, 0xa00, 31, 0xa80, 31), | ||
2848 | }; | ||
2849 | |||
2850 | static struct atlas7_grp_mux sd6_grp1_mux = { | ||
2851 | .pad_mux_count = ARRAY_SIZE(sd6_grp1_pad_mux), | ||
2852 | .pad_mux_list = sd6_grp1_pad_mux, | ||
2853 | }; | ||
2854 | |||
2855 | static struct atlas7_pad_mux sp0_ext_ldo_on_grp_pad_mux[] = { | ||
2856 | MUX(0, 4, 2, N, N, N, N), | ||
2857 | }; | ||
2858 | |||
2859 | static struct atlas7_grp_mux sp0_ext_ldo_on_grp_mux = { | ||
2860 | .pad_mux_count = ARRAY_SIZE(sp0_ext_ldo_on_grp_pad_mux), | ||
2861 | .pad_mux_list = sp0_ext_ldo_on_grp_pad_mux, | ||
2862 | }; | ||
2863 | |||
2864 | static struct atlas7_pad_mux sp0_qspi_grp_pad_mux[] = { | ||
2865 | MUX(0, 12, 1, N, N, N, N), | ||
2866 | MUX(0, 13, 1, N, N, N, N), | ||
2867 | MUX(0, 14, 1, N, N, N, N), | ||
2868 | MUX(0, 15, 1, N, N, N, N), | ||
2869 | MUX(0, 16, 1, N, N, N, N), | ||
2870 | MUX(0, 17, 1, N, N, N, N), | ||
2871 | }; | ||
2872 | |||
2873 | static struct atlas7_grp_mux sp0_qspi_grp_mux = { | ||
2874 | .pad_mux_count = ARRAY_SIZE(sp0_qspi_grp_pad_mux), | ||
2875 | .pad_mux_list = sp0_qspi_grp_pad_mux, | ||
2876 | }; | ||
2877 | |||
2878 | static struct atlas7_pad_mux sp1_spi_grp_pad_mux[] = { | ||
2879 | MUX(1, 19, 1, N, N, N, N), | ||
2880 | MUX(1, 20, 1, N, N, N, N), | ||
2881 | MUX(1, 21, 1, N, N, N, N), | ||
2882 | MUX(1, 18, 1, N, N, N, N), | ||
2883 | }; | ||
2884 | |||
2885 | static struct atlas7_grp_mux sp1_spi_grp_mux = { | ||
2886 | .pad_mux_count = ARRAY_SIZE(sp1_spi_grp_pad_mux), | ||
2887 | .pad_mux_list = sp1_spi_grp_pad_mux, | ||
2888 | }; | ||
2889 | |||
2890 | static struct atlas7_pad_mux tpiu_trace_grp_pad_mux[] = { | ||
2891 | MUX(1, 53, 5, N, N, N, N), | ||
2892 | MUX(1, 56, 5, N, N, N, N), | ||
2893 | MUX(1, 57, 5, N, N, N, N), | ||
2894 | MUX(1, 58, 5, N, N, N, N), | ||
2895 | MUX(1, 59, 5, N, N, N, N), | ||
2896 | MUX(1, 60, 5, N, N, N, N), | ||
2897 | MUX(1, 61, 5, N, N, N, N), | ||
2898 | MUX(1, 62, 5, N, N, N, N), | ||
2899 | MUX(1, 63, 5, N, N, N, N), | ||
2900 | MUX(1, 64, 5, N, N, N, N), | ||
2901 | MUX(1, 65, 5, N, N, N, N), | ||
2902 | MUX(1, 66, 5, N, N, N, N), | ||
2903 | MUX(1, 67, 5, N, N, N, N), | ||
2904 | MUX(1, 68, 5, N, N, N, N), | ||
2905 | MUX(1, 69, 5, N, N, N, N), | ||
2906 | MUX(1, 70, 5, N, N, N, N), | ||
2907 | MUX(1, 71, 5, N, N, N, N), | ||
2908 | MUX(1, 72, 5, N, N, N, N), | ||
2909 | }; | ||
2910 | |||
2911 | static struct atlas7_grp_mux tpiu_trace_grp_mux = { | ||
2912 | .pad_mux_count = ARRAY_SIZE(tpiu_trace_grp_pad_mux), | ||
2913 | .pad_mux_list = tpiu_trace_grp_pad_mux, | ||
2914 | }; | ||
2915 | |||
2916 | static struct atlas7_pad_mux uart0_grp_pad_mux[] = { | ||
2917 | MUX(1, 121, 4, N, N, N, N), | ||
2918 | MUX(1, 120, 4, N, N, N, N), | ||
2919 | MUX(1, 134, 1, N, N, N, N), | ||
2920 | MUX(1, 133, 1, N, N, N, N), | ||
2921 | }; | ||
2922 | |||
2923 | static struct atlas7_grp_mux uart0_grp_mux = { | ||
2924 | .pad_mux_count = ARRAY_SIZE(uart0_grp_pad_mux), | ||
2925 | .pad_mux_list = uart0_grp_pad_mux, | ||
2926 | }; | ||
2927 | |||
2928 | static struct atlas7_pad_mux uart0_nopause_grp_pad_mux[] = { | ||
2929 | MUX(1, 134, 1, N, N, N, N), | ||
2930 | MUX(1, 133, 1, N, N, N, N), | ||
2931 | }; | ||
2932 | |||
2933 | static struct atlas7_grp_mux uart0_nopause_grp_mux = { | ||
2934 | .pad_mux_count = ARRAY_SIZE(uart0_nopause_grp_pad_mux), | ||
2935 | .pad_mux_list = uart0_nopause_grp_pad_mux, | ||
2936 | }; | ||
2937 | |||
2938 | static struct atlas7_pad_mux uart1_grp_pad_mux[] = { | ||
2939 | MUX(1, 136, 1, N, N, N, N), | ||
2940 | MUX(1, 135, 1, N, N, N, N), | ||
2941 | }; | ||
2942 | |||
2943 | static struct atlas7_grp_mux uart1_grp_mux = { | ||
2944 | .pad_mux_count = ARRAY_SIZE(uart1_grp_pad_mux), | ||
2945 | .pad_mux_list = uart1_grp_pad_mux, | ||
2946 | }; | ||
2947 | |||
2948 | static struct atlas7_pad_mux uart2_grp_pad_mux[] = { | ||
2949 | MUX(0, 11, 2, N, N, N, N), | ||
2950 | MUX(0, 10, 2, N, N, N, N), | ||
2951 | }; | ||
2952 | |||
2953 | static struct atlas7_grp_mux uart2_grp_mux = { | ||
2954 | .pad_mux_count = ARRAY_SIZE(uart2_grp_pad_mux), | ||
2955 | .pad_mux_list = uart2_grp_pad_mux, | ||
2956 | }; | ||
2957 | |||
2958 | static struct atlas7_pad_mux uart3_grp0_pad_mux[] = { | ||
2959 | MUX(1, 125, 2, 0xa08, 0, 0xa88, 0), | ||
2960 | MUX(1, 126, 2, N, N, N, N), | ||
2961 | MUX(1, 138, 1, 0xa00, 5, 0xa80, 5), | ||
2962 | MUX(1, 137, 1, N, N, N, N), | ||
2963 | }; | ||
2964 | |||
2965 | static struct atlas7_grp_mux uart3_grp0_mux = { | ||
2966 | .pad_mux_count = ARRAY_SIZE(uart3_grp0_pad_mux), | ||
2967 | .pad_mux_list = uart3_grp0_pad_mux, | ||
2968 | }; | ||
2969 | |||
2970 | static struct atlas7_pad_mux uart3_grp1_pad_mux[] = { | ||
2971 | MUX(1, 111, 4, 0xa08, 0, 0xa88, 0), | ||
2972 | MUX(1, 109, 4, N, N, N, N), | ||
2973 | MUX(1, 84, 2, 0xa00, 5, 0xa80, 5), | ||
2974 | MUX(1, 83, 2, N, N, N, N), | ||
2975 | }; | ||
2976 | |||
2977 | static struct atlas7_grp_mux uart3_grp1_mux = { | ||
2978 | .pad_mux_count = ARRAY_SIZE(uart3_grp1_pad_mux), | ||
2979 | .pad_mux_list = uart3_grp1_pad_mux, | ||
2980 | }; | ||
2981 | |||
2982 | static struct atlas7_pad_mux uart3_grp2_pad_mux[] = { | ||
2983 | MUX(1, 140, 2, 0xa08, 0, 0xa88, 0), | ||
2984 | MUX(1, 139, 2, N, N, N, N), | ||
2985 | MUX(1, 138, 1, 0xa00, 5, 0xa80, 5), | ||
2986 | MUX(1, 137, 1, N, N, N, N), | ||
2987 | }; | ||
2988 | |||
2989 | static struct atlas7_grp_mux uart3_grp2_mux = { | ||
2990 | .pad_mux_count = ARRAY_SIZE(uart3_grp2_pad_mux), | ||
2991 | .pad_mux_list = uart3_grp2_pad_mux, | ||
2992 | }; | ||
2993 | |||
2994 | static struct atlas7_pad_mux uart3_grp3_pad_mux[] = { | ||
2995 | MUX(1, 139, 2, N, N, N, N), | ||
2996 | MUX(1, 140, 2, 0xa08, 0, 0xa88, 0), | ||
2997 | MUX(1, 84, 2, 0xa00, 5, 0xa80, 5), | ||
2998 | MUX(1, 83, 2, N, N, N, N), | ||
2999 | }; | ||
3000 | |||
3001 | static struct atlas7_grp_mux uart3_grp3_mux = { | ||
3002 | .pad_mux_count = ARRAY_SIZE(uart3_grp3_pad_mux), | ||
3003 | .pad_mux_list = uart3_grp3_pad_mux, | ||
3004 | }; | ||
3005 | |||
3006 | static struct atlas7_pad_mux uart3_nopause_grp0_pad_mux[] = { | ||
3007 | MUX(1, 138, 1, 0xa00, 5, 0xa80, 5), | ||
3008 | MUX(1, 137, 1, N, N, N, N), | ||
3009 | }; | ||
3010 | |||
3011 | static struct atlas7_grp_mux uart3_nopause_grp0_mux = { | ||
3012 | .pad_mux_count = ARRAY_SIZE(uart3_nopause_grp0_pad_mux), | ||
3013 | .pad_mux_list = uart3_nopause_grp0_pad_mux, | ||
3014 | }; | ||
3015 | |||
3016 | static struct atlas7_pad_mux uart3_nopause_grp1_pad_mux[] = { | ||
3017 | MUX(1, 84, 2, 0xa00, 5, 0xa80, 5), | ||
3018 | MUX(1, 83, 2, N, N, N, N), | ||
3019 | }; | ||
3020 | |||
3021 | static struct atlas7_grp_mux uart3_nopause_grp1_mux = { | ||
3022 | .pad_mux_count = ARRAY_SIZE(uart3_nopause_grp1_pad_mux), | ||
3023 | .pad_mux_list = uart3_nopause_grp1_pad_mux, | ||
3024 | }; | ||
3025 | |||
3026 | static struct atlas7_pad_mux uart4_grp0_pad_mux[] = { | ||
3027 | MUX(1, 122, 4, 0xa08, 1, 0xa88, 1), | ||
3028 | MUX(1, 123, 4, N, N, N, N), | ||
3029 | MUX(1, 140, 1, N, N, N, N), | ||
3030 | MUX(1, 139, 1, N, N, N, N), | ||
3031 | }; | ||
3032 | |||
3033 | static struct atlas7_grp_mux uart4_grp0_mux = { | ||
3034 | .pad_mux_count = ARRAY_SIZE(uart4_grp0_pad_mux), | ||
3035 | .pad_mux_list = uart4_grp0_pad_mux, | ||
3036 | }; | ||
3037 | |||
3038 | static struct atlas7_pad_mux uart4_grp1_pad_mux[] = { | ||
3039 | MUX(1, 100, 4, 0xa08, 1, 0xa88, 1), | ||
3040 | MUX(1, 99, 4, N, N, N, N), | ||
3041 | MUX(1, 140, 1, N, N, N, N), | ||
3042 | MUX(1, 139, 1, N, N, N, N), | ||
3043 | }; | ||
3044 | |||
3045 | static struct atlas7_grp_mux uart4_grp1_mux = { | ||
3046 | .pad_mux_count = ARRAY_SIZE(uart4_grp1_pad_mux), | ||
3047 | .pad_mux_list = uart4_grp1_pad_mux, | ||
3048 | }; | ||
3049 | |||
3050 | static struct atlas7_pad_mux uart4_grp2_pad_mux[] = { | ||
3051 | MUX(1, 117, 2, 0xa08, 1, 0xa88, 1), | ||
3052 | MUX(1, 116, 2, N, N, N, N), | ||
3053 | MUX(1, 140, 1, N, N, N, N), | ||
3054 | MUX(1, 139, 1, N, N, N, N), | ||
3055 | }; | ||
3056 | |||
3057 | static struct atlas7_grp_mux uart4_grp2_mux = { | ||
3058 | .pad_mux_count = ARRAY_SIZE(uart4_grp2_pad_mux), | ||
3059 | .pad_mux_list = uart4_grp2_pad_mux, | ||
3060 | }; | ||
3061 | |||
3062 | static struct atlas7_pad_mux uart4_nopause_grp_pad_mux[] = { | ||
3063 | MUX(1, 140, 1, N, N, N, N), | ||
3064 | MUX(1, 139, 1, N, N, N, N), | ||
3065 | }; | ||
3066 | |||
3067 | static struct atlas7_grp_mux uart4_nopause_grp_mux = { | ||
3068 | .pad_mux_count = ARRAY_SIZE(uart4_nopause_grp_pad_mux), | ||
3069 | .pad_mux_list = uart4_nopause_grp_pad_mux, | ||
3070 | }; | ||
3071 | |||
3072 | static struct atlas7_pad_mux usb0_drvvbus_grp_pad_mux[] = { | ||
3073 | MUX(1, 51, 2, N, N, N, N), | ||
3074 | }; | ||
3075 | |||
3076 | static struct atlas7_grp_mux usb0_drvvbus_grp_mux = { | ||
3077 | .pad_mux_count = ARRAY_SIZE(usb0_drvvbus_grp_pad_mux), | ||
3078 | .pad_mux_list = usb0_drvvbus_grp_pad_mux, | ||
3079 | }; | ||
3080 | |||
3081 | static struct atlas7_pad_mux usb1_drvvbus_grp_pad_mux[] = { | ||
3082 | MUX(1, 134, 2, N, N, N, N), | ||
3083 | }; | ||
3084 | |||
3085 | static struct atlas7_grp_mux usb1_drvvbus_grp_mux = { | ||
3086 | .pad_mux_count = ARRAY_SIZE(usb1_drvvbus_grp_pad_mux), | ||
3087 | .pad_mux_list = usb1_drvvbus_grp_pad_mux, | ||
3088 | }; | ||
3089 | |||
3090 | static struct atlas7_pad_mux visbus_dout_grp_pad_mux[] = { | ||
3091 | MUX(1, 57, 6, N, N, N, N), | ||
3092 | MUX(1, 58, 6, N, N, N, N), | ||
3093 | MUX(1, 59, 6, N, N, N, N), | ||
3094 | MUX(1, 60, 6, N, N, N, N), | ||
3095 | MUX(1, 61, 6, N, N, N, N), | ||
3096 | MUX(1, 62, 6, N, N, N, N), | ||
3097 | MUX(1, 63, 6, N, N, N, N), | ||
3098 | MUX(1, 64, 6, N, N, N, N), | ||
3099 | MUX(1, 65, 6, N, N, N, N), | ||
3100 | MUX(1, 66, 6, N, N, N, N), | ||
3101 | MUX(1, 67, 6, N, N, N, N), | ||
3102 | MUX(1, 68, 6, N, N, N, N), | ||
3103 | MUX(1, 69, 6, N, N, N, N), | ||
3104 | MUX(1, 70, 6, N, N, N, N), | ||
3105 | MUX(1, 71, 6, N, N, N, N), | ||
3106 | MUX(1, 72, 6, N, N, N, N), | ||
3107 | MUX(1, 53, 6, N, N, N, N), | ||
3108 | MUX(1, 54, 6, N, N, N, N), | ||
3109 | MUX(1, 55, 6, N, N, N, N), | ||
3110 | MUX(1, 56, 6, N, N, N, N), | ||
3111 | MUX(1, 85, 6, N, N, N, N), | ||
3112 | MUX(1, 86, 6, N, N, N, N), | ||
3113 | MUX(1, 87, 6, N, N, N, N), | ||
3114 | MUX(1, 88, 6, N, N, N, N), | ||
3115 | MUX(1, 89, 6, N, N, N, N), | ||
3116 | MUX(1, 90, 6, N, N, N, N), | ||
3117 | MUX(1, 91, 6, N, N, N, N), | ||
3118 | MUX(1, 92, 6, N, N, N, N), | ||
3119 | MUX(1, 93, 6, N, N, N, N), | ||
3120 | MUX(1, 94, 6, N, N, N, N), | ||
3121 | MUX(1, 95, 6, N, N, N, N), | ||
3122 | MUX(1, 96, 6, N, N, N, N), | ||
3123 | }; | ||
3124 | |||
3125 | static struct atlas7_grp_mux visbus_dout_grp_mux = { | ||
3126 | .pad_mux_count = ARRAY_SIZE(visbus_dout_grp_pad_mux), | ||
3127 | .pad_mux_list = visbus_dout_grp_pad_mux, | ||
3128 | }; | ||
3129 | |||
3130 | static struct atlas7_pad_mux vi_vip1_grp_pad_mux[] = { | ||
3131 | MUX(1, 74, 1, N, N, N, N), | ||
3132 | MUX(1, 75, 1, N, N, N, N), | ||
3133 | MUX(1, 76, 1, N, N, N, N), | ||
3134 | MUX(1, 77, 1, N, N, N, N), | ||
3135 | MUX(1, 78, 1, N, N, N, N), | ||
3136 | MUX(1, 79, 1, N, N, N, N), | ||
3137 | MUX(1, 80, 1, N, N, N, N), | ||
3138 | MUX(1, 81, 1, N, N, N, N), | ||
3139 | MUX(1, 82, 1, N, N, N, N), | ||
3140 | MUX(1, 83, 1, N, N, N, N), | ||
3141 | MUX(1, 84, 1, N, N, N, N), | ||
3142 | MUX(1, 103, 2, N, N, N, N), | ||
3143 | MUX(1, 104, 2, N, N, N, N), | ||
3144 | MUX(1, 105, 2, N, N, N, N), | ||
3145 | MUX(1, 106, 2, N, N, N, N), | ||
3146 | MUX(1, 107, 2, N, N, N, N), | ||
3147 | MUX(1, 102, 2, N, N, N, N), | ||
3148 | MUX(1, 97, 2, N, N, N, N), | ||
3149 | MUX(1, 98, 2, N, N, N, N), | ||
3150 | }; | ||
3151 | |||
3152 | static struct atlas7_grp_mux vi_vip1_grp_mux = { | ||
3153 | .pad_mux_count = ARRAY_SIZE(vi_vip1_grp_pad_mux), | ||
3154 | .pad_mux_list = vi_vip1_grp_pad_mux, | ||
3155 | }; | ||
3156 | |||
3157 | static struct atlas7_pad_mux vi_vip1_ext_grp_pad_mux[] = { | ||
3158 | MUX(1, 74, 1, N, N, N, N), | ||
3159 | MUX(1, 75, 1, N, N, N, N), | ||
3160 | MUX(1, 76, 1, N, N, N, N), | ||
3161 | MUX(1, 77, 1, N, N, N, N), | ||
3162 | MUX(1, 78, 1, N, N, N, N), | ||
3163 | MUX(1, 79, 1, N, N, N, N), | ||
3164 | MUX(1, 80, 1, N, N, N, N), | ||
3165 | MUX(1, 81, 1, N, N, N, N), | ||
3166 | MUX(1, 82, 1, N, N, N, N), | ||
3167 | MUX(1, 83, 1, N, N, N, N), | ||
3168 | MUX(1, 84, 1, N, N, N, N), | ||
3169 | MUX(1, 108, 2, N, N, N, N), | ||
3170 | MUX(1, 103, 2, N, N, N, N), | ||
3171 | MUX(1, 104, 2, N, N, N, N), | ||
3172 | MUX(1, 105, 2, N, N, N, N), | ||
3173 | MUX(1, 106, 2, N, N, N, N), | ||
3174 | MUX(1, 107, 2, N, N, N, N), | ||
3175 | MUX(1, 102, 2, N, N, N, N), | ||
3176 | MUX(1, 97, 2, N, N, N, N), | ||
3177 | MUX(1, 98, 2, N, N, N, N), | ||
3178 | MUX(1, 99, 2, N, N, N, N), | ||
3179 | MUX(1, 100, 2, N, N, N, N), | ||
3180 | }; | ||
3181 | |||
3182 | static struct atlas7_grp_mux vi_vip1_ext_grp_mux = { | ||
3183 | .pad_mux_count = ARRAY_SIZE(vi_vip1_ext_grp_pad_mux), | ||
3184 | .pad_mux_list = vi_vip1_ext_grp_pad_mux, | ||
3185 | }; | ||
3186 | |||
3187 | static struct atlas7_pad_mux vi_vip1_low8bit_grp_pad_mux[] = { | ||
3188 | MUX(1, 74, 1, N, N, N, N), | ||
3189 | MUX(1, 75, 1, N, N, N, N), | ||
3190 | MUX(1, 76, 1, N, N, N, N), | ||
3191 | MUX(1, 77, 1, N, N, N, N), | ||
3192 | MUX(1, 78, 1, N, N, N, N), | ||
3193 | MUX(1, 79, 1, N, N, N, N), | ||
3194 | MUX(1, 80, 1, N, N, N, N), | ||
3195 | MUX(1, 81, 1, N, N, N, N), | ||
3196 | }; | ||
3197 | |||
3198 | static struct atlas7_grp_mux vi_vip1_low8bit_grp_mux = { | ||
3199 | .pad_mux_count = ARRAY_SIZE(vi_vip1_low8bit_grp_pad_mux), | ||
3200 | .pad_mux_list = vi_vip1_low8bit_grp_pad_mux, | ||
3201 | }; | ||
3202 | |||
3203 | static struct atlas7_pad_mux vi_vip1_high8bit_grp_pad_mux[] = { | ||
3204 | MUX(1, 82, 1, N, N, N, N), | ||
3205 | MUX(1, 83, 1, N, N, N, N), | ||
3206 | MUX(1, 84, 1, N, N, N, N), | ||
3207 | MUX(1, 108, 2, N, N, N, N), | ||
3208 | MUX(1, 103, 2, N, N, N, N), | ||
3209 | MUX(1, 104, 2, N, N, N, N), | ||
3210 | MUX(1, 105, 2, N, N, N, N), | ||
3211 | MUX(1, 106, 2, N, N, N, N), | ||
3212 | }; | ||
3213 | |||
3214 | static struct atlas7_grp_mux vi_vip1_high8bit_grp_mux = { | ||
3215 | .pad_mux_count = ARRAY_SIZE(vi_vip1_high8bit_grp_pad_mux), | ||
3216 | .pad_mux_list = vi_vip1_high8bit_grp_pad_mux, | ||
3217 | }; | ||
3218 | |||
3219 | static struct atlas7_pmx_func atlas7_pmx_functions[] = { | ||
3220 | FUNCTION("gnss_gpio", gnss_gpio_grp, &gnss_gpio_grp_mux), | ||
3221 | FUNCTION("lcd_vip_gpio", lcd_vip_gpio_grp, &lcd_vip_gpio_grp_mux), | ||
3222 | FUNCTION("sdio_i2s_gpio", sdio_i2s_gpio_grp, &sdio_i2s_gpio_grp_mux), | ||
3223 | FUNCTION("sp_rgmii_gpio", sp_rgmii_gpio_grp, &sp_rgmii_gpio_grp_mux), | ||
3224 | FUNCTION("lvds_gpio", lvds_gpio_grp, &lvds_gpio_grp_mux), | ||
3225 | FUNCTION("uart_nand_gpio", | ||
3226 | uart_nand_gpio_grp, | ||
3227 | &uart_nand_gpio_grp_mux), | ||
3228 | FUNCTION("rtc_gpio", rtc_gpio_grp, &rtc_gpio_grp_mux), | ||
3229 | FUNCTION("audio_ac97", audio_ac97_grp, &audio_ac97_grp_mux), | ||
3230 | FUNCTION("audio_func_dbg", | ||
3231 | audio_func_dbg_grp, | ||
3232 | &audio_func_dbg_grp_mux), | ||
3233 | FUNCTION("audio_i2s", audio_i2s_grp, &audio_i2s_grp_mux), | ||
3234 | FUNCTION("audio_i2s_2ch", audio_i2s_2ch_grp, &audio_i2s_2ch_grp_mux), | ||
3235 | FUNCTION("audio_i2s_extclk", | ||
3236 | audio_i2s_extclk_grp, | ||
3237 | &audio_i2s_extclk_grp_mux), | ||
3238 | FUNCTION("audio_uart0", audio_uart0_grp, &audio_uart0_grp_mux), | ||
3239 | FUNCTION("audio_uart1", audio_uart1_grp, &audio_uart1_grp_mux), | ||
3240 | FUNCTION("audio_uart2_m0", audio_uart2_grp0, &audio_uart2_grp0_mux), | ||
3241 | FUNCTION("audio_uart2_m1", audio_uart2_grp1, &audio_uart2_grp1_mux), | ||
3242 | FUNCTION("c_can_trnsvr", c_can_trnsvr_grp, &c_can_trnsvr_grp_mux), | ||
3243 | FUNCTION("c0_can_m0", c0_can_grp0, &c0_can_grp0_mux), | ||
3244 | FUNCTION("c0_can_m1", c0_can_grp1, &c0_can_grp1_mux), | ||
3245 | FUNCTION("c1_can_m0", c1_can_grp0, &c1_can_grp0_mux), | ||
3246 | FUNCTION("c1_can_m1", c1_can_grp1, &c1_can_grp1_mux), | ||
3247 | FUNCTION("c1_can_m2", c1_can_grp2, &c1_can_grp2_mux), | ||
3248 | FUNCTION("ca_audio_lpc", ca_audio_lpc_grp, &ca_audio_lpc_grp_mux), | ||
3249 | FUNCTION("ca_bt_lpc", ca_bt_lpc_grp, &ca_bt_lpc_grp_mux), | ||
3250 | FUNCTION("ca_coex", ca_coex_grp, &ca_coex_grp_mux), | ||
3251 | FUNCTION("ca_curator_lpc", | ||
3252 | ca_curator_lpc_grp, | ||
3253 | &ca_curator_lpc_grp_mux), | ||
3254 | FUNCTION("ca_pcm_debug", ca_pcm_debug_grp, &ca_pcm_debug_grp_mux), | ||
3255 | FUNCTION("ca_pio", ca_pio_grp, &ca_pio_grp_mux), | ||
3256 | FUNCTION("ca_sdio_debug", ca_sdio_debug_grp, &ca_sdio_debug_grp_mux), | ||
3257 | FUNCTION("ca_spi", ca_spi_grp, &ca_spi_grp_mux), | ||
3258 | FUNCTION("ca_trb", ca_trb_grp, &ca_trb_grp_mux), | ||
3259 | FUNCTION("ca_uart_debug", ca_uart_debug_grp, &ca_uart_debug_grp_mux), | ||
3260 | FUNCTION("clkc_m0", clkc_grp0, &clkc_grp0_mux), | ||
3261 | FUNCTION("clkc_m1", clkc_grp1, &clkc_grp1_mux), | ||
3262 | FUNCTION("gn_gnss_i2c", gn_gnss_i2c_grp, &gn_gnss_i2c_grp_mux), | ||
3263 | FUNCTION("gn_gnss_uart_nopause", | ||
3264 | gn_gnss_uart_nopause_grp, | ||
3265 | &gn_gnss_uart_nopause_grp_mux), | ||
3266 | FUNCTION("gn_gnss_uart", gn_gnss_uart_grp, &gn_gnss_uart_grp_mux), | ||
3267 | FUNCTION("gn_trg_spi_m0", gn_trg_spi_grp0, &gn_trg_spi_grp0_mux), | ||
3268 | FUNCTION("gn_trg_spi_m1", gn_trg_spi_grp1, &gn_trg_spi_grp1_mux), | ||
3269 | FUNCTION("cvbs_dbg", cvbs_dbg_grp, &cvbs_dbg_grp_mux), | ||
3270 | FUNCTION("cvbs_dbg_test_m0", | ||
3271 | cvbs_dbg_test_grp0, | ||
3272 | &cvbs_dbg_test_grp0_mux), | ||
3273 | FUNCTION("cvbs_dbg_test_m1", | ||
3274 | cvbs_dbg_test_grp1, | ||
3275 | &cvbs_dbg_test_grp1_mux), | ||
3276 | FUNCTION("cvbs_dbg_test_m2", | ||
3277 | cvbs_dbg_test_grp2, | ||
3278 | &cvbs_dbg_test_grp2_mux), | ||
3279 | FUNCTION("cvbs_dbg_test_m3", | ||
3280 | cvbs_dbg_test_grp3, | ||
3281 | &cvbs_dbg_test_grp3_mux), | ||
3282 | FUNCTION("cvbs_dbg_test_m4", | ||
3283 | cvbs_dbg_test_grp4, | ||
3284 | &cvbs_dbg_test_grp4_mux), | ||
3285 | FUNCTION("cvbs_dbg_test_m5", | ||
3286 | cvbs_dbg_test_grp5, | ||
3287 | &cvbs_dbg_test_grp5_mux), | ||
3288 | FUNCTION("cvbs_dbg_test_m6", | ||
3289 | cvbs_dbg_test_grp6, | ||
3290 | &cvbs_dbg_test_grp6_mux), | ||
3291 | FUNCTION("cvbs_dbg_test_m7", | ||
3292 | cvbs_dbg_test_grp7, | ||
3293 | &cvbs_dbg_test_grp7_mux), | ||
3294 | FUNCTION("cvbs_dbg_test_m8", | ||
3295 | cvbs_dbg_test_grp8, | ||
3296 | &cvbs_dbg_test_grp8_mux), | ||
3297 | FUNCTION("cvbs_dbg_test_m9", | ||
3298 | cvbs_dbg_test_grp9, | ||
3299 | &cvbs_dbg_test_grp9_mux), | ||
3300 | FUNCTION("cvbs_dbg_test_m10", | ||
3301 | cvbs_dbg_test_grp10, | ||
3302 | &cvbs_dbg_test_grp10_mux), | ||
3303 | FUNCTION("cvbs_dbg_test_m11", | ||
3304 | cvbs_dbg_test_grp11, | ||
3305 | &cvbs_dbg_test_grp11_mux), | ||
3306 | FUNCTION("cvbs_dbg_test_m12", | ||
3307 | cvbs_dbg_test_grp12, | ||
3308 | &cvbs_dbg_test_grp12_mux), | ||
3309 | FUNCTION("cvbs_dbg_test_m13", | ||
3310 | cvbs_dbg_test_grp13, | ||
3311 | &cvbs_dbg_test_grp13_mux), | ||
3312 | FUNCTION("cvbs_dbg_test_m14", | ||
3313 | cvbs_dbg_test_grp14, | ||
3314 | &cvbs_dbg_test_grp14_mux), | ||
3315 | FUNCTION("cvbs_dbg_test_m15", | ||
3316 | cvbs_dbg_test_grp15, | ||
3317 | &cvbs_dbg_test_grp15_mux), | ||
3318 | FUNCTION("gn_gnss_power", gn_gnss_power_grp, &gn_gnss_power_grp_mux), | ||
3319 | FUNCTION("gn_gnss_sw_status", | ||
3320 | gn_gnss_sw_status_grp, | ||
3321 | &gn_gnss_sw_status_grp_mux), | ||
3322 | FUNCTION("gn_gnss_eclk", gn_gnss_eclk_grp, &gn_gnss_eclk_grp_mux), | ||
3323 | FUNCTION("gn_gnss_irq1_m0", | ||
3324 | gn_gnss_irq1_grp0, | ||
3325 | &gn_gnss_irq1_grp0_mux), | ||
3326 | FUNCTION("gn_gnss_irq2_m0", | ||
3327 | gn_gnss_irq2_grp0, | ||
3328 | &gn_gnss_irq2_grp0_mux), | ||
3329 | FUNCTION("gn_gnss_tm", gn_gnss_tm_grp, &gn_gnss_tm_grp_mux), | ||
3330 | FUNCTION("gn_gnss_tsync", gn_gnss_tsync_grp, &gn_gnss_tsync_grp_mux), | ||
3331 | FUNCTION("gn_io_gnsssys_sw_cfg", | ||
3332 | gn_io_gnsssys_sw_cfg_grp, | ||
3333 | &gn_io_gnsssys_sw_cfg_grp_mux), | ||
3334 | FUNCTION("gn_trg_m0", gn_trg_grp0, &gn_trg_grp0_mux), | ||
3335 | FUNCTION("gn_trg_m1", gn_trg_grp1, &gn_trg_grp1_mux), | ||
3336 | FUNCTION("gn_trg_shutdown_m0", | ||
3337 | gn_trg_shutdown_grp0, | ||
3338 | &gn_trg_shutdown_grp0_mux), | ||
3339 | FUNCTION("gn_trg_shutdown_m1", | ||
3340 | gn_trg_shutdown_grp1, | ||
3341 | &gn_trg_shutdown_grp1_mux), | ||
3342 | FUNCTION("gn_trg_shutdown_m2", | ||
3343 | gn_trg_shutdown_grp2, | ||
3344 | &gn_trg_shutdown_grp2_mux), | ||
3345 | FUNCTION("gn_trg_shutdown_m3", | ||
3346 | gn_trg_shutdown_grp3, | ||
3347 | &gn_trg_shutdown_grp3_mux), | ||
3348 | FUNCTION("i2c0", i2c0_grp, &i2c0_grp_mux), | ||
3349 | FUNCTION("i2c1", i2c1_grp, &i2c1_grp_mux), | ||
3350 | FUNCTION("jtag_m0", jtag_grp0, &jtag_grp0_mux), | ||
3351 | FUNCTION("ks_kas_spi_m0", ks_kas_spi_grp0, &ks_kas_spi_grp0_mux), | ||
3352 | FUNCTION("ld_ldd", ld_ldd_grp, &ld_ldd_grp_mux), | ||
3353 | FUNCTION("ld_ldd_16bit", ld_ldd_16bit_grp, &ld_ldd_16bit_grp_mux), | ||
3354 | FUNCTION("ld_ldd_fck", ld_ldd_fck_grp, &ld_ldd_fck_grp_mux), | ||
3355 | FUNCTION("ld_ldd_lck", ld_ldd_lck_grp, &ld_ldd_lck_grp_mux), | ||
3356 | FUNCTION("lr_lcdrom", lr_lcdrom_grp, &lr_lcdrom_grp_mux), | ||
3357 | FUNCTION("lvds_analog", lvds_analog_grp, &lvds_analog_grp_mux), | ||
3358 | FUNCTION("nd_df", nd_df_grp, &nd_df_grp_mux), | ||
3359 | FUNCTION("nd_df_nowp", nd_df_nowp_grp, &nd_df_nowp_grp_mux), | ||
3360 | FUNCTION("ps", ps_grp, &ps_grp_mux), | ||
3361 | FUNCTION("pwc_core_on", pwc_core_on_grp, &pwc_core_on_grp_mux), | ||
3362 | FUNCTION("pwc_ext_on", pwc_ext_on_grp, &pwc_ext_on_grp_mux), | ||
3363 | FUNCTION("pwc_gpio3_clk", pwc_gpio3_clk_grp, &pwc_gpio3_clk_grp_mux), | ||
3364 | FUNCTION("pwc_io_on", pwc_io_on_grp, &pwc_io_on_grp_mux), | ||
3365 | FUNCTION("pwc_lowbatt_b_m0", | ||
3366 | pwc_lowbatt_b_grp0, | ||
3367 | &pwc_lowbatt_b_grp0_mux), | ||
3368 | FUNCTION("pwc_mem_on", pwc_mem_on_grp, &pwc_mem_on_grp_mux), | ||
3369 | FUNCTION("pwc_on_key_b_m0", | ||
3370 | pwc_on_key_b_grp0, | ||
3371 | &pwc_on_key_b_grp0_mux), | ||
3372 | FUNCTION("pwc_wakeup_src0", | ||
3373 | pwc_wakeup_src0_grp, | ||
3374 | &pwc_wakeup_src0_grp_mux), | ||
3375 | FUNCTION("pwc_wakeup_src1", | ||
3376 | pwc_wakeup_src1_grp, | ||
3377 | &pwc_wakeup_src1_grp_mux), | ||
3378 | FUNCTION("pwc_wakeup_src2", | ||
3379 | pwc_wakeup_src2_grp, | ||
3380 | &pwc_wakeup_src2_grp_mux), | ||
3381 | FUNCTION("pwc_wakeup_src3", | ||
3382 | pwc_wakeup_src3_grp, | ||
3383 | &pwc_wakeup_src3_grp_mux), | ||
3384 | FUNCTION("pw_cko0_m0", pw_cko0_grp0, &pw_cko0_grp0_mux), | ||
3385 | FUNCTION("pw_cko0_m1", pw_cko0_grp1, &pw_cko0_grp1_mux), | ||
3386 | FUNCTION("pw_cko0_m2", pw_cko0_grp2, &pw_cko0_grp2_mux), | ||
3387 | FUNCTION("pw_cko1_m0", pw_cko1_grp0, &pw_cko1_grp0_mux), | ||
3388 | FUNCTION("pw_cko1_m1", pw_cko1_grp1, &pw_cko1_grp1_mux), | ||
3389 | FUNCTION("pw_i2s01_clk_m0", | ||
3390 | pw_i2s01_clk_grp0, | ||
3391 | &pw_i2s01_clk_grp0_mux), | ||
3392 | FUNCTION("pw_i2s01_clk_m1", | ||
3393 | pw_i2s01_clk_grp1, | ||
3394 | &pw_i2s01_clk_grp1_mux), | ||
3395 | FUNCTION("pw_pwm0", pw_pwm0_grp, &pw_pwm0_grp_mux), | ||
3396 | FUNCTION("pw_pwm1", pw_pwm1_grp, &pw_pwm1_grp_mux), | ||
3397 | FUNCTION("pw_pwm2_m0", pw_pwm2_grp0, &pw_pwm2_grp0_mux), | ||
3398 | FUNCTION("pw_pwm2_m1", pw_pwm2_grp1, &pw_pwm2_grp1_mux), | ||
3399 | FUNCTION("pw_pwm3_m0", pw_pwm3_grp0, &pw_pwm3_grp0_mux), | ||
3400 | FUNCTION("pw_pwm3_m1", pw_pwm3_grp1, &pw_pwm3_grp1_mux), | ||
3401 | FUNCTION("pw_pwm_cpu_vol_m0", | ||
3402 | pw_pwm_cpu_vol_grp0, | ||
3403 | &pw_pwm_cpu_vol_grp0_mux), | ||
3404 | FUNCTION("pw_pwm_cpu_vol_m1", | ||
3405 | pw_pwm_cpu_vol_grp1, | ||
3406 | &pw_pwm_cpu_vol_grp1_mux), | ||
3407 | FUNCTION("pw_backlight_m0", | ||
3408 | pw_backlight_grp0, | ||
3409 | &pw_backlight_grp0_mux), | ||
3410 | FUNCTION("pw_backlight_m1", | ||
3411 | pw_backlight_grp1, | ||
3412 | &pw_backlight_grp1_mux), | ||
3413 | FUNCTION("rg_eth_mac", rg_eth_mac_grp, &rg_eth_mac_grp_mux), | ||
3414 | FUNCTION("rg_gmac_phy_intr_n", | ||
3415 | rg_gmac_phy_intr_n_grp, | ||
3416 | &rg_gmac_phy_intr_n_grp_mux), | ||
3417 | FUNCTION("rg_rgmii_mac", rg_rgmii_mac_grp, &rg_rgmii_mac_grp_mux), | ||
3418 | FUNCTION("rg_rgmii_phy_ref_clk_m0", | ||
3419 | rg_rgmii_phy_ref_clk_grp0, | ||
3420 | &rg_rgmii_phy_ref_clk_grp0_mux), | ||
3421 | FUNCTION("rg_rgmii_phy_ref_clk_m1", | ||
3422 | rg_rgmii_phy_ref_clk_grp1, | ||
3423 | &rg_rgmii_phy_ref_clk_grp1_mux), | ||
3424 | FUNCTION("sd0", sd0_grp, &sd0_grp_mux), | ||
3425 | FUNCTION("sd0_4bit", sd0_4bit_grp, &sd0_4bit_grp_mux), | ||
3426 | FUNCTION("sd1", sd1_grp, &sd1_grp_mux), | ||
3427 | FUNCTION("sd1_4bit_m0", sd1_4bit_grp0, &sd1_4bit_grp0_mux), | ||
3428 | FUNCTION("sd1_4bit_m1", sd1_4bit_grp1, &sd1_4bit_grp1_mux), | ||
3429 | FUNCTION("sd2_m0", sd2_grp0, &sd2_grp0_mux), | ||
3430 | FUNCTION("sd2_no_cdb_m0", sd2_no_cdb_grp0, &sd2_no_cdb_grp0_mux), | ||
3431 | FUNCTION("sd3", sd3_grp, &sd3_grp_mux), | ||
3432 | FUNCTION("sd5", sd5_grp, &sd5_grp_mux), | ||
3433 | FUNCTION("sd6_m0", sd6_grp0, &sd6_grp0_mux), | ||
3434 | FUNCTION("sd6_m1", sd6_grp1, &sd6_grp1_mux), | ||
3435 | FUNCTION("sp0_ext_ldo_on", | ||
3436 | sp0_ext_ldo_on_grp, | ||
3437 | &sp0_ext_ldo_on_grp_mux), | ||
3438 | FUNCTION("sp0_qspi", sp0_qspi_grp, &sp0_qspi_grp_mux), | ||
3439 | FUNCTION("sp1_spi", sp1_spi_grp, &sp1_spi_grp_mux), | ||
3440 | FUNCTION("tpiu_trace", tpiu_trace_grp, &tpiu_trace_grp_mux), | ||
3441 | FUNCTION("uart0", uart0_grp, &uart0_grp_mux), | ||
3442 | FUNCTION("uart0_nopause", uart0_nopause_grp, &uart0_nopause_grp_mux), | ||
3443 | FUNCTION("uart1", uart1_grp, &uart1_grp_mux), | ||
3444 | FUNCTION("uart2", uart2_grp, &uart2_grp_mux), | ||
3445 | FUNCTION("uart3_m0", uart3_grp0, &uart3_grp0_mux), | ||
3446 | FUNCTION("uart3_m1", uart3_grp1, &uart3_grp1_mux), | ||
3447 | FUNCTION("uart3_m2", uart3_grp2, &uart3_grp2_mux), | ||
3448 | FUNCTION("uart3_m3", uart3_grp3, &uart3_grp3_mux), | ||
3449 | FUNCTION("uart3_nopause_m0", | ||
3450 | uart3_nopause_grp0, | ||
3451 | &uart3_nopause_grp0_mux), | ||
3452 | FUNCTION("uart3_nopause_m1", | ||
3453 | uart3_nopause_grp1, | ||
3454 | &uart3_nopause_grp1_mux), | ||
3455 | FUNCTION("uart4_m0", uart4_grp0, &uart4_grp0_mux), | ||
3456 | FUNCTION("uart4_m1", uart4_grp1, &uart4_grp1_mux), | ||
3457 | FUNCTION("uart4_m2", uart4_grp2, &uart4_grp2_mux), | ||
3458 | FUNCTION("uart4_nopause", uart4_nopause_grp, &uart4_nopause_grp_mux), | ||
3459 | FUNCTION("usb0_drvvbus", usb0_drvvbus_grp, &usb0_drvvbus_grp_mux), | ||
3460 | FUNCTION("usb1_drvvbus", usb1_drvvbus_grp, &usb1_drvvbus_grp_mux), | ||
3461 | FUNCTION("visbus_dout", visbus_dout_grp, &visbus_dout_grp_mux), | ||
3462 | FUNCTION("vi_vip1", vi_vip1_grp, &vi_vip1_grp_mux), | ||
3463 | FUNCTION("vi_vip1_ext", vi_vip1_ext_grp, &vi_vip1_ext_grp_mux), | ||
3464 | FUNCTION("vi_vip1_low8bit", | ||
3465 | vi_vip1_low8bit_grp, | ||
3466 | &vi_vip1_low8bit_grp_mux), | ||
3467 | FUNCTION("vi_vip1_high8bit", | ||
3468 | vi_vip1_high8bit_grp, | ||
3469 | &vi_vip1_high8bit_grp_mux), | ||
3470 | }; | ||
3471 | |||
3472 | struct atlas7_pinctrl_data atlas7_ioc_data = { | ||
3473 | .pads = (struct pinctrl_pin_desc *)atlas7_ioc_pads, | ||
3474 | .pads_cnt = ARRAY_SIZE(atlas7_ioc_pads), | ||
3475 | .grps = (struct atlas7_pin_group *)altas7_pin_groups, | ||
3476 | .grps_cnt = ARRAY_SIZE(altas7_pin_groups), | ||
3477 | .funcs = (struct atlas7_pmx_func *)atlas7_pmx_functions, | ||
3478 | .funcs_cnt = ARRAY_SIZE(atlas7_pmx_functions), | ||
3479 | .confs = (struct atlas7_pad_config *)atlas7_ioc_pad_confs, | ||
3480 | .confs_cnt = ARRAY_SIZE(atlas7_ioc_pad_confs), | ||
3481 | }; | ||
3482 | |||
3483 | static inline u32 atlas7_pin_to_bank(u32 pin) | ||
3484 | { | ||
3485 | return (pin >= ATLAS7_PINCTRL_BANK_0_PINS) ? 1 : 0; | ||
3486 | } | ||
3487 | |||
3488 | static int atlas7_pmx_get_funcs_count(struct pinctrl_dev *pctldev) | ||
3489 | { | ||
3490 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3491 | |||
3492 | return pmx->pctl_data->funcs_cnt; | ||
3493 | } | ||
3494 | |||
3495 | static const char *atlas7_pmx_get_func_name(struct pinctrl_dev *pctldev, | ||
3496 | u32 selector) | ||
3497 | { | ||
3498 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3499 | |||
3500 | return pmx->pctl_data->funcs[selector].name; | ||
3501 | } | ||
3502 | |||
3503 | static int atlas7_pmx_get_func_groups(struct pinctrl_dev *pctldev, | ||
3504 | u32 selector, const char * const **groups, | ||
3505 | u32 * const num_groups) | ||
3506 | { | ||
3507 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3508 | |||
3509 | *groups = pmx->pctl_data->funcs[selector].groups; | ||
3510 | *num_groups = pmx->pctl_data->funcs[selector].num_groups; | ||
3511 | |||
3512 | return 0; | ||
3513 | } | ||
3514 | |||
3515 | static void __atlas7_pmx_pin_input_disable_set(struct atlas7_pmx *pmx, | ||
3516 | const struct atlas7_pad_mux *mux) | ||
3517 | { | ||
3518 | /* Set Input Disable to avoid input glitches | ||
3519 | * | ||
3520 | * All Input-Disable Control registers are located on IOCRTC. | ||
3521 | * So the regs bank is always 0. | ||
3522 | * | ||
3523 | */ | ||
3524 | if (mux->dinput_reg && mux->dinput_val_reg) { | ||
3525 | writel(DI_MASK << mux->dinput_bit, | ||
3526 | pmx->regs[BANK_DS] + CLR_REG(mux->dinput_reg)); | ||
3527 | writel(DI_DISABLE << mux->dinput_bit, | ||
3528 | pmx->regs[BANK_DS] + mux->dinput_reg); | ||
3529 | |||
3530 | |||
3531 | writel(DIV_MASK << mux->dinput_val_bit, | ||
3532 | pmx->regs[BANK_DS] + CLR_REG(mux->dinput_val_reg)); | ||
3533 | writel(DIV_DISABLE << mux->dinput_val_bit, | ||
3534 | pmx->regs[BANK_DS] + mux->dinput_val_reg); | ||
3535 | } | ||
3536 | } | ||
3537 | |||
3538 | static void __atlas7_pmx_pin_input_disable_clr(struct atlas7_pmx *pmx, | ||
3539 | const struct atlas7_pad_mux *mux) | ||
3540 | { | ||
3541 | /* Clear Input Disable to avoid input glitches */ | ||
3542 | if (mux->dinput_reg && mux->dinput_val_reg) { | ||
3543 | writel(DI_MASK << mux->dinput_bit, | ||
3544 | pmx->regs[BANK_DS] + CLR_REG(mux->dinput_reg)); | ||
3545 | writel(DI_ENABLE << mux->dinput_bit, | ||
3546 | pmx->regs[BANK_DS] + mux->dinput_reg); | ||
3547 | |||
3548 | writel(DIV_MASK << mux->dinput_val_bit, | ||
3549 | pmx->regs[BANK_DS] + CLR_REG(mux->dinput_val_reg)); | ||
3550 | writel(DIV_ENABLE << mux->dinput_val_bit, | ||
3551 | pmx->regs[BANK_DS] + mux->dinput_val_reg); | ||
3552 | } | ||
3553 | } | ||
3554 | |||
3555 | static int __atlas7_pmx_pin_ad_sel(struct atlas7_pmx *pmx, | ||
3556 | struct atlas7_pad_config *conf, | ||
3557 | u32 bank, u32 ad_sel) | ||
3558 | { | ||
3559 | unsigned long regv; | ||
3560 | |||
3561 | /* Write to clear register to clear A/D selector */ | ||
3562 | writel(ANA_CLEAR_MASK << conf->ad_ctrl_bit, | ||
3563 | pmx->regs[bank] + CLR_REG(conf->ad_ctrl_reg)); | ||
3564 | |||
3565 | /* Set target pad A/D selector */ | ||
3566 | regv = readl(pmx->regs[bank] + conf->ad_ctrl_reg); | ||
3567 | regv &= ~(ANA_CLEAR_MASK << conf->ad_ctrl_bit); | ||
3568 | writel(regv | (ad_sel << conf->ad_ctrl_bit), | ||
3569 | pmx->regs[bank] + conf->ad_ctrl_reg); | ||
3570 | |||
3571 | regv = readl(pmx->regs[bank] + conf->ad_ctrl_reg); | ||
3572 | pr_debug("bank:%d reg:0x%04x val:0x%08lx\n", | ||
3573 | bank, conf->ad_ctrl_reg, regv); | ||
3574 | return 0; | ||
3575 | } | ||
3576 | |||
3577 | static int __atlas7_pmx_pin_analog_enable(struct atlas7_pmx *pmx, | ||
3578 | struct atlas7_pad_config *conf, u32 bank) | ||
3579 | { | ||
3580 | /* Only PAD_T_AD pins can change between Analogue&Digital */ | ||
3581 | if (conf->type != PAD_T_AD) | ||
3582 | return -EINVAL; | ||
3583 | |||
3584 | return __atlas7_pmx_pin_ad_sel(pmx, conf, bank, 0); | ||
3585 | } | ||
3586 | |||
3587 | static int __atlas7_pmx_pin_digital_enable(struct atlas7_pmx *pmx, | ||
3588 | struct atlas7_pad_config *conf, u32 bank) | ||
3589 | { | ||
3590 | /* Other type pads are always digital */ | ||
3591 | if (conf->type != PAD_T_AD) | ||
3592 | return 0; | ||
3593 | |||
3594 | return __atlas7_pmx_pin_ad_sel(pmx, conf, bank, 1); | ||
3595 | } | ||
3596 | |||
3597 | static int __atlas7_pmx_pin_enable(struct atlas7_pmx *pmx, | ||
3598 | u32 pin, u32 func) | ||
3599 | { | ||
3600 | struct atlas7_pad_config *conf; | ||
3601 | u32 bank; | ||
3602 | int ret; | ||
3603 | unsigned long regv; | ||
3604 | |||
3605 | pr_debug("PMX DUMP ### pin#%d func:%d #### START >>>\n", | ||
3606 | pin, func); | ||
3607 | |||
3608 | /* Get this Pad's descriptor from PINCTRL */ | ||
3609 | conf = &pmx->pctl_data->confs[pin]; | ||
3610 | bank = atlas7_pin_to_bank(pin); | ||
3611 | |||
3612 | /* Just enable the analog function of this pad */ | ||
3613 | if (FUNC_ANALOGUE == func) { | ||
3614 | ret = __atlas7_pmx_pin_analog_enable(pmx, conf, bank); | ||
3615 | if (ret) | ||
3616 | dev_err(pmx->dev, | ||
3617 | "Convert pad#%d to analog failed, ret=%d\n", | ||
3618 | pin, ret); | ||
3619 | return ret; | ||
3620 | } | ||
3621 | |||
3622 | /* Set Pads from analog to digital */ | ||
3623 | ret = __atlas7_pmx_pin_digital_enable(pmx, conf, bank); | ||
3624 | if (ret) { | ||
3625 | dev_err(pmx->dev, | ||
3626 | "Convert pad#%d to digital failed, ret=%d\n", | ||
3627 | pin, ret); | ||
3628 | return ret; | ||
3629 | } | ||
3630 | |||
3631 | /* Write to clear register to clear current function */ | ||
3632 | writel(FUNC_CLEAR_MASK << conf->mux_bit, | ||
3633 | pmx->regs[bank] + CLR_REG(conf->mux_reg)); | ||
3634 | |||
3635 | /* Set target pad mux function */ | ||
3636 | regv = readl(pmx->regs[bank] + conf->mux_reg); | ||
3637 | regv &= ~(FUNC_CLEAR_MASK << conf->mux_bit); | ||
3638 | writel(regv | (func << conf->mux_bit), | ||
3639 | pmx->regs[bank] + conf->mux_reg); | ||
3640 | |||
3641 | regv = readl(pmx->regs[bank] + conf->mux_reg); | ||
3642 | pr_debug("bank:%d reg:0x%04x val:0x%08lx\n", | ||
3643 | bank, conf->mux_reg, regv); | ||
3644 | |||
3645 | return 0; | ||
3646 | } | ||
3647 | |||
3648 | static int atlas7_pmx_set_mux(struct pinctrl_dev *pctldev, | ||
3649 | u32 func_selector, u32 group_selector) | ||
3650 | { | ||
3651 | int idx, ret; | ||
3652 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3653 | struct atlas7_pmx_func *pmx_func; | ||
3654 | struct atlas7_pin_group *pin_grp; | ||
3655 | const struct atlas7_grp_mux *grp_mux; | ||
3656 | const struct atlas7_pad_mux *mux; | ||
3657 | |||
3658 | pmx_func = &pmx->pctl_data->funcs[func_selector]; | ||
3659 | pin_grp = &pmx->pctl_data->grps[group_selector]; | ||
3660 | |||
3661 | pr_debug("PMX DUMP ### Function:[%s] Group:[%s] #### START >>>\n", | ||
3662 | pmx_func->name, pin_grp->name); | ||
3663 | |||
3664 | grp_mux = pmx_func->grpmux; | ||
3665 | |||
3666 | for (idx = 0; idx < grp_mux->pad_mux_count; idx++) { | ||
3667 | mux = &grp_mux->pad_mux_list[idx]; | ||
3668 | __atlas7_pmx_pin_input_disable_set(pmx, mux); | ||
3669 | ret = __atlas7_pmx_pin_enable(pmx, mux->pin, mux->func); | ||
3670 | if (ret) { | ||
3671 | dev_err(pmx->dev, | ||
3672 | "FUNC:%s GRP:%s PIN#%d.%d failed, ret=%d\n", | ||
3673 | pmx_func->name, pin_grp->name, | ||
3674 | mux->pin, mux->func, ret); | ||
3675 | BUG_ON(1); | ||
3676 | } | ||
3677 | __atlas7_pmx_pin_input_disable_clr(pmx, mux); | ||
3678 | } | ||
3679 | pr_debug("PMX DUMP ### Function:[%s] Group:[%s] #### END <<<\n", | ||
3680 | pmx_func->name, pin_grp->name); | ||
3681 | |||
3682 | return 0; | ||
3683 | } | ||
3684 | |||
3685 | struct atlas7_ds_info { | ||
3686 | u32 ma; | ||
3687 | u32 ds_16st; | ||
3688 | u32 ds_4we; | ||
3689 | u32 ds_0204m31; | ||
3690 | u32 ds_0610m31; | ||
3691 | }; | ||
3692 | |||
3693 | const struct atlas7_ds_info atlas7_ds_map[] = { | ||
3694 | { 2, DS_16ST_0, DS_4WE_0, DS_M31_0, DS_NULL}, | ||
3695 | { 4, DS_16ST_1, DS_NULL, DS_M31_1, DS_NULL}, | ||
3696 | { 6, DS_16ST_2, DS_NULL, DS_NULL, DS_M31_0}, | ||
3697 | { 8, DS_16ST_3, DS_4WE_1, DS_NULL, DS_NULL}, | ||
3698 | { 10, DS_16ST_4, DS_NULL, DS_NULL, DS_M31_1}, | ||
3699 | { 12, DS_16ST_5, DS_NULL, DS_NULL, DS_NULL}, | ||
3700 | { 14, DS_16ST_6, DS_NULL, DS_NULL, DS_NULL}, | ||
3701 | { 16, DS_16ST_7, DS_4WE_2, DS_NULL, DS_NULL}, | ||
3702 | { 18, DS_16ST_8, DS_NULL, DS_NULL, DS_NULL}, | ||
3703 | { 20, DS_16ST_9, DS_NULL, DS_NULL, DS_NULL}, | ||
3704 | { 22, DS_16ST_10, DS_NULL, DS_NULL, DS_NULL}, | ||
3705 | { 24, DS_16ST_11, DS_NULL, DS_NULL, DS_NULL}, | ||
3706 | { 26, DS_16ST_12, DS_NULL, DS_NULL, DS_NULL}, | ||
3707 | { 28, DS_16ST_13, DS_4WE_3, DS_NULL, DS_NULL}, | ||
3708 | { 30, DS_16ST_14, DS_NULL, DS_NULL, DS_NULL}, | ||
3709 | { 32, DS_16ST_15, DS_NULL, DS_NULL, DS_NULL}, | ||
3710 | }; | ||
3711 | |||
3712 | static u32 convert_current_to_drive_strength(u32 type, u32 ma) | ||
3713 | { | ||
3714 | int idx; | ||
3715 | |||
3716 | for (idx = 0; idx < ARRAY_SIZE(atlas7_ds_map); idx++) { | ||
3717 | if (atlas7_ds_map[idx].ma != ma) | ||
3718 | continue; | ||
3719 | |||
3720 | if (type == PAD_T_4WE_PD || type == PAD_T_4WE_PU) | ||
3721 | return atlas7_ds_map[idx].ds_4we; | ||
3722 | else if (type == PAD_T_16ST) | ||
3723 | return atlas7_ds_map[idx].ds_16st; | ||
3724 | else if (type == PAD_T_M31_0204_PD || type == PAD_T_M31_0204_PU) | ||
3725 | return atlas7_ds_map[idx].ds_0204m31; | ||
3726 | else if (type == PAD_T_M31_0610_PD || type == PAD_T_M31_0610_PU) | ||
3727 | return atlas7_ds_map[idx].ds_0610m31; | ||
3728 | } | ||
3729 | |||
3730 | return DS_NULL; | ||
3731 | } | ||
3732 | |||
3733 | static int altas7_pinctrl_set_pull_sel(struct pinctrl_dev *pctldev, | ||
3734 | u32 pin, u32 sel) | ||
3735 | { | ||
3736 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3737 | struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin]; | ||
3738 | u32 type = conf->type; | ||
3739 | u32 shift = conf->pupd_bit; | ||
3740 | u32 bank = atlas7_pin_to_bank(pin); | ||
3741 | void __iomem *pull_sel_reg, *pull_clr_reg; | ||
3742 | |||
3743 | pull_sel_reg = pmx->regs[bank] + conf->pupd_reg; | ||
3744 | pull_clr_reg = CLR_REG(pull_sel_reg); | ||
3745 | |||
3746 | if (type == PAD_T_4WE_PD || type == PAD_T_4WE_PU) { | ||
3747 | writel(P4WE_PULL_MASK << shift, pull_clr_reg); | ||
3748 | |||
3749 | if (sel == PULL_UP) | ||
3750 | writel(P4WE_PULL_UP << shift, pull_sel_reg); | ||
3751 | else if (sel == HIGH_HYSTERESIS) | ||
3752 | writel(P4WE_HIGH_HYSTERESIS << shift, pull_sel_reg); | ||
3753 | else if (sel == HIGH_Z) | ||
3754 | writel(P4WE_HIGH_Z << shift, pull_sel_reg); | ||
3755 | else if (sel == PULL_DOWN) | ||
3756 | writel(P4WE_PULL_DOWN << shift, pull_sel_reg); | ||
3757 | else { | ||
3758 | pr_err("Unknown Pull select type for 4WEPAD#%d\n", | ||
3759 | pin); | ||
3760 | return -ENOTSUPP; | ||
3761 | } | ||
3762 | } else if (type == PAD_T_16ST) { | ||
3763 | writel(P16ST_PULL_MASK << shift, pull_clr_reg); | ||
3764 | |||
3765 | if (sel == PULL_UP) | ||
3766 | writel(P16ST_PULL_UP << shift, pull_sel_reg); | ||
3767 | else if (sel == HIGH_Z) | ||
3768 | writel(P16ST_HIGH_Z << shift, pull_sel_reg); | ||
3769 | else if (sel == PULL_DOWN) | ||
3770 | writel(P16ST_PULL_DOWN << shift, pull_sel_reg); | ||
3771 | else { | ||
3772 | pr_err("Unknown Pull select type for 16STPAD#%d\n", | ||
3773 | pin); | ||
3774 | return -ENOTSUPP; | ||
3775 | } | ||
3776 | } else if (type == PAD_T_M31_0204_PD || | ||
3777 | type == PAD_T_M31_0204_PU || | ||
3778 | type == PAD_T_M31_0610_PD || | ||
3779 | type == PAD_T_M31_0610_PU) { | ||
3780 | writel(PM31_PULL_MASK << shift, pull_clr_reg); | ||
3781 | |||
3782 | if (sel == PULL_UP) | ||
3783 | writel(PM31_PULL_ENABLED << shift, pull_sel_reg); | ||
3784 | else if (sel == PULL_DOWN) | ||
3785 | writel(PM31_PULL_DISABLED << shift, pull_sel_reg); | ||
3786 | else { | ||
3787 | pr_err("Unknown Pull select type for M31PAD#%d\n", | ||
3788 | pin); | ||
3789 | return -ENOTSUPP; | ||
3790 | } | ||
3791 | } else if (type == PAD_T_AD) { | ||
3792 | writel(PANGD_PULL_MASK << shift, pull_clr_reg); | ||
3793 | |||
3794 | if (sel == PULL_UP) | ||
3795 | writel(PANGD_PULL_UP << shift, pull_sel_reg); | ||
3796 | else if (sel == HIGH_Z) | ||
3797 | writel(PANGD_HIGH_Z << shift, pull_sel_reg); | ||
3798 | else if (sel == PULL_DOWN) | ||
3799 | writel(PANGD_PULL_DOWN << shift, pull_sel_reg); | ||
3800 | else { | ||
3801 | pr_err("Unknown Pull select type for A/D PAD#%d\n", | ||
3802 | pin); | ||
3803 | return -ENOTSUPP; | ||
3804 | } | ||
3805 | } else { | ||
3806 | pr_err("Unknown Pad type[%d] for pull select PAD#%d\n", | ||
3807 | type, pin); | ||
3808 | return -ENOTSUPP; | ||
3809 | } | ||
3810 | |||
3811 | pr_debug("PIN_CFG ### SET PIN#%d PULL SELECTOR:%d == OK ####\n", | ||
3812 | pin, sel); | ||
3813 | return 0; | ||
3814 | } | ||
3815 | |||
3816 | static int __altas7_pinctrl_set_drive_strength_sel(struct pinctrl_dev *pctldev, | ||
3817 | u32 pin, u32 sel) | ||
3818 | { | ||
3819 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3820 | struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin]; | ||
3821 | u32 type = conf->type; | ||
3822 | u32 shift = conf->drvstr_bit; | ||
3823 | u32 bank = atlas7_pin_to_bank(pin); | ||
3824 | void __iomem *ds_sel_reg, *ds_clr_reg; | ||
3825 | |||
3826 | ds_sel_reg = pmx->regs[bank] + conf->drvstr_reg; | ||
3827 | ds_clr_reg = CLR_REG(ds_sel_reg); | ||
3828 | if (type == PAD_T_4WE_PD || type == PAD_T_4WE_PU) { | ||
3829 | if (sel & (~DS_2BIT_MASK)) | ||
3830 | goto unsupport; | ||
3831 | |||
3832 | writel(DS_2BIT_IM_VAL << shift, ds_clr_reg); | ||
3833 | writel(sel << shift, ds_sel_reg); | ||
3834 | |||
3835 | return 0; | ||
3836 | } else if (type == PAD_T_16ST) { | ||
3837 | if (sel & (~DS_4BIT_MASK)) | ||
3838 | goto unsupport; | ||
3839 | |||
3840 | writel(DS_4BIT_IM_VAL << shift, ds_clr_reg); | ||
3841 | writel(sel << shift, ds_sel_reg); | ||
3842 | |||
3843 | return 0; | ||
3844 | } else if (type == PAD_T_M31_0204_PD || type == PAD_T_M31_0204_PU || | ||
3845 | type == PAD_T_M31_0610_PD || type == PAD_T_M31_0610_PU) { | ||
3846 | if (sel & (~DS_1BIT_MASK)) | ||
3847 | goto unsupport; | ||
3848 | |||
3849 | writel(DS_1BIT_IM_VAL << shift, ds_clr_reg); | ||
3850 | writel(sel << shift, ds_sel_reg); | ||
3851 | |||
3852 | return 0; | ||
3853 | } | ||
3854 | |||
3855 | unsupport: | ||
3856 | pr_err("Pad#%d type[%d] doesn't support ds code[%d]!\n", | ||
3857 | pin, type, sel); | ||
3858 | return -ENOTSUPP; | ||
3859 | } | ||
3860 | |||
3861 | static int altas7_pinctrl_set_drive_strength_sel(struct pinctrl_dev *pctldev, | ||
3862 | u32 pin, u32 ma) | ||
3863 | { | ||
3864 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3865 | struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin]; | ||
3866 | u32 type = conf->type; | ||
3867 | u32 sel; | ||
3868 | int ret; | ||
3869 | |||
3870 | sel = convert_current_to_drive_strength(conf->type, ma); | ||
3871 | if (DS_NULL == sel) { | ||
3872 | pr_err("Pad#%d type[%d] doesn't support ds current[%d]!\n", | ||
3873 | pin, type, ma); | ||
3874 | return -ENOTSUPP; | ||
3875 | } | ||
3876 | |||
3877 | ret = __altas7_pinctrl_set_drive_strength_sel(pctldev, | ||
3878 | pin, sel); | ||
3879 | pr_debug("PIN_CFG ### SET PIN#%d DS:%d MA:%d == %s ####\n", | ||
3880 | pin, sel, ma, ret?"FAILED":"OK"); | ||
3881 | return ret; | ||
3882 | } | ||
3883 | |||
3884 | static int atlas7_pmx_gpio_request_enable(struct pinctrl_dev *pctldev, | ||
3885 | struct pinctrl_gpio_range *range, u32 pin) | ||
3886 | { | ||
3887 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3888 | u32 idx; | ||
3889 | |||
3890 | dev_dbg(pmx->dev, | ||
3891 | "atlas7_pmx_gpio_request_enable: pin=%d\n", pin); | ||
3892 | for (idx = 0; idx < range->npins; idx++) { | ||
3893 | if (pin == range->pins[idx]) | ||
3894 | break; | ||
3895 | } | ||
3896 | |||
3897 | if (idx >= range->npins) { | ||
3898 | dev_err(pmx->dev, | ||
3899 | "The pin#%d could not be requested as GPIO!!\n", | ||
3900 | pin); | ||
3901 | return -EPERM; | ||
3902 | } | ||
3903 | |||
3904 | __atlas7_pmx_pin_enable(pmx, pin, FUNC_GPIO); | ||
3905 | |||
3906 | return 0; | ||
3907 | } | ||
3908 | |||
3909 | static struct pinmux_ops atlas7_pinmux_ops = { | ||
3910 | .get_functions_count = atlas7_pmx_get_funcs_count, | ||
3911 | .get_function_name = atlas7_pmx_get_func_name, | ||
3912 | .get_function_groups = atlas7_pmx_get_func_groups, | ||
3913 | .set_mux = atlas7_pmx_set_mux, | ||
3914 | .gpio_request_enable = atlas7_pmx_gpio_request_enable, | ||
3915 | }; | ||
3916 | |||
3917 | static int atlas7_pinctrl_get_groups_count(struct pinctrl_dev *pctldev) | ||
3918 | { | ||
3919 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3920 | |||
3921 | return pmx->pctl_data->grps_cnt; | ||
3922 | } | ||
3923 | |||
3924 | static const char *atlas7_pinctrl_get_group_name(struct pinctrl_dev *pctldev, | ||
3925 | u32 group) | ||
3926 | { | ||
3927 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3928 | |||
3929 | return pmx->pctl_data->grps[group].name; | ||
3930 | } | ||
3931 | |||
3932 | static int atlas7_pinctrl_get_group_pins(struct pinctrl_dev *pctldev, | ||
3933 | u32 group, const u32 **pins, u32 *num_pins) | ||
3934 | { | ||
3935 | struct atlas7_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); | ||
3936 | |||
3937 | *num_pins = pmx->pctl_data->grps[group].num_pins; | ||
3938 | *pins = pmx->pctl_data->grps[group].pins; | ||
3939 | |||
3940 | return 0; | ||
3941 | } | ||
3942 | |||
3943 | static int atlas7_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev, | ||
3944 | struct device_node *np_config, | ||
3945 | struct pinctrl_map **map, | ||
3946 | u32 *num_maps) | ||
3947 | { | ||
3948 | return pinconf_generic_dt_node_to_map(pctldev, np_config, map, | ||
3949 | num_maps, PIN_MAP_TYPE_INVALID); | ||
3950 | } | ||
3951 | |||
3952 | static void atlas7_pinctrl_dt_free_map(struct pinctrl_dev *pctldev, | ||
3953 | struct pinctrl_map *map, u32 num_maps) | ||
3954 | { | ||
3955 | kfree(map); | ||
3956 | } | ||
3957 | |||
3958 | static const struct pinctrl_ops atlas7_pinctrl_ops = { | ||
3959 | .get_groups_count = atlas7_pinctrl_get_groups_count, | ||
3960 | .get_group_name = atlas7_pinctrl_get_group_name, | ||
3961 | .get_group_pins = atlas7_pinctrl_get_group_pins, | ||
3962 | .dt_node_to_map = atlas7_pinctrl_dt_node_to_map, | ||
3963 | .dt_free_map = atlas7_pinctrl_dt_free_map, | ||
3964 | }; | ||
3965 | |||
3966 | static int atlas7_pin_config_set(struct pinctrl_dev *pctldev, | ||
3967 | unsigned pin, unsigned long *configs, | ||
3968 | unsigned num_configs) | ||
3969 | { | ||
3970 | u16 param, arg; | ||
3971 | int idx, err; | ||
3972 | |||
3973 | for (idx = 0; idx < num_configs; idx++) { | ||
3974 | param = pinconf_to_config_param(configs[idx]); | ||
3975 | arg = pinconf_to_config_argument(configs[idx]); | ||
3976 | |||
3977 | pr_debug("PMX CFG###### ATLAS7 PIN#%d [%s] CONFIG PARAM:%d ARG:%d >>>>>\n", | ||
3978 | pin, atlas7_ioc_pads[pin].name, param, arg); | ||
3979 | switch (param) { | ||
3980 | case PIN_CONFIG_BIAS_PULL_UP: | ||
3981 | err = altas7_pinctrl_set_pull_sel(pctldev, | ||
3982 | pin, PULL_UP); | ||
3983 | if (err) | ||
3984 | return err; | ||
3985 | break; | ||
3986 | |||
3987 | case PIN_CONFIG_BIAS_PULL_DOWN: | ||
3988 | err = altas7_pinctrl_set_pull_sel(pctldev, | ||
3989 | pin, PULL_DOWN); | ||
3990 | if (err) | ||
3991 | return err; | ||
3992 | break; | ||
3993 | |||
3994 | case PIN_CONFIG_INPUT_SCHMITT_ENABLE: | ||
3995 | err = altas7_pinctrl_set_pull_sel(pctldev, | ||
3996 | pin, HIGH_HYSTERESIS); | ||
3997 | if (err) | ||
3998 | return err; | ||
3999 | break; | ||
4000 | case PIN_CONFIG_BIAS_HIGH_IMPEDANCE: | ||
4001 | err = altas7_pinctrl_set_pull_sel(pctldev, | ||
4002 | pin, HIGH_Z); | ||
4003 | if (err) | ||
4004 | return err; | ||
4005 | break; | ||
4006 | |||
4007 | case PIN_CONFIG_DRIVE_STRENGTH: | ||
4008 | err = altas7_pinctrl_set_drive_strength_sel(pctldev, | ||
4009 | pin, arg); | ||
4010 | if (err) | ||
4011 | return err; | ||
4012 | break; | ||
4013 | default: | ||
4014 | return -ENOTSUPP; | ||
4015 | } | ||
4016 | pr_debug("PMX CFG###### ATLAS7 PIN#%d [%s] CONFIG PARAM:%d ARG:%d <<<<\n", | ||
4017 | pin, atlas7_ioc_pads[pin].name, param, arg); | ||
4018 | } | ||
4019 | |||
4020 | return 0; | ||
4021 | } | ||
4022 | |||
4023 | static int atlas7_pin_config_group_set(struct pinctrl_dev *pctldev, | ||
4024 | unsigned group, unsigned long *configs, | ||
4025 | unsigned num_configs) | ||
4026 | { | ||
4027 | const unsigned *pins; | ||
4028 | unsigned npins; | ||
4029 | int i, ret; | ||
4030 | |||
4031 | ret = atlas7_pinctrl_get_group_pins(pctldev, group, &pins, &npins); | ||
4032 | if (ret) | ||
4033 | return ret; | ||
4034 | for (i = 0; i < npins; i++) { | ||
4035 | if (atlas7_pin_config_set(pctldev, pins[i], | ||
4036 | configs, num_configs)) | ||
4037 | return -ENOTSUPP; | ||
4038 | } | ||
4039 | return 0; | ||
4040 | } | ||
4041 | |||
4042 | static const struct pinconf_ops atlas7_pinconf_ops = { | ||
4043 | .pin_config_set = atlas7_pin_config_set, | ||
4044 | .pin_config_group_set = atlas7_pin_config_group_set, | ||
4045 | .is_generic = true, | ||
4046 | }; | ||
4047 | |||
4048 | static int atlas7_pinmux_probe(struct platform_device *pdev) | ||
4049 | { | ||
4050 | int ret, idx; | ||
4051 | struct atlas7_pmx *pmx; | ||
4052 | struct device_node *np = pdev->dev.of_node; | ||
4053 | u32 banks = ATLAS7_PINCTRL_REG_BANKS; | ||
4054 | |||
4055 | /* Create state holders etc for this driver */ | ||
4056 | pmx = devm_kzalloc(&pdev->dev, sizeof(*pmx), GFP_KERNEL); | ||
4057 | if (!pmx) | ||
4058 | return -ENOMEM; | ||
4059 | |||
4060 | pmx->dev = &pdev->dev; | ||
4061 | |||
4062 | pmx->pctl_data = &atlas7_ioc_data; | ||
4063 | pmx->pctl_desc.name = "pinctrl-atlas7"; | ||
4064 | pmx->pctl_desc.pins = pmx->pctl_data->pads; | ||
4065 | pmx->pctl_desc.npins = pmx->pctl_data->pads_cnt; | ||
4066 | pmx->pctl_desc.pctlops = &atlas7_pinctrl_ops; | ||
4067 | pmx->pctl_desc.pmxops = &atlas7_pinmux_ops; | ||
4068 | pmx->pctl_desc.confops = &atlas7_pinconf_ops; | ||
4069 | |||
4070 | for (idx = 0; idx < banks; idx++) { | ||
4071 | pmx->regs[idx] = of_iomap(np, idx); | ||
4072 | if (!pmx->regs[idx]) { | ||
4073 | dev_err(&pdev->dev, | ||
4074 | "can't map ioc bank#%d registers\n", idx); | ||
4075 | ret = -ENOMEM; | ||
4076 | goto unmap_io; | ||
4077 | } | ||
4078 | } | ||
4079 | |||
4080 | /* Now register the pin controller and all pins it handles */ | ||
4081 | pmx->pctl = pinctrl_register(&pmx->pctl_desc, &pdev->dev, pmx); | ||
4082 | if (IS_ERR(pmx->pctl)) { | ||
4083 | dev_err(&pdev->dev, "could not register atlas7 pinmux driver\n"); | ||
4084 | ret = PTR_ERR(pmx->pctl); | ||
4085 | goto unmap_io; | ||
4086 | } | ||
4087 | |||
4088 | platform_set_drvdata(pdev, pmx); | ||
4089 | |||
4090 | dev_info(&pdev->dev, "initialized atlas7 pinmux driver\n"); | ||
4091 | |||
4092 | return 0; | ||
4093 | |||
4094 | unmap_io: | ||
4095 | for (idx = 0; idx < banks; idx++) { | ||
4096 | if (!pmx->regs[idx]) | ||
4097 | break; | ||
4098 | iounmap(pmx->regs[idx]); | ||
4099 | } | ||
4100 | |||
4101 | return ret; | ||
4102 | } | ||
4103 | |||
4104 | static const struct of_device_id atlas7_pinmux_ids[] = { | ||
4105 | { .compatible = "sirf,atlas7-ioc",}, | ||
4106 | }; | ||
4107 | |||
4108 | static struct platform_driver atlas7_pinmux_driver = { | ||
4109 | .driver = { | ||
4110 | .name = "atlas7-ioc", | ||
4111 | .of_match_table = atlas7_pinmux_ids, | ||
4112 | }, | ||
4113 | .probe = atlas7_pinmux_probe, | ||
4114 | }; | ||
4115 | |||
4116 | static int __init atlas7_pinmux_init(void) | ||
4117 | { | ||
4118 | return platform_driver_register(&atlas7_pinmux_driver); | ||
4119 | } | ||
4120 | arch_initcall(atlas7_pinmux_init); | ||
4121 | |||
4122 | |||
4123 | /** | ||
4124 | * The Following is GPIO Code | ||
4125 | */ | ||
4126 | static inline struct | ||
4127 | atlas7_gpio_bank *atlas7_gpio_to_bank(struct atlas7_gpio_chip *a7gc, u32 gpio) | ||
4128 | { | ||
4129 | return &a7gc->banks[GPIO_TO_BANK(gpio)]; | ||
4130 | } | ||
4131 | |||
4132 | static int __atlas7_gpio_to_pin(struct atlas7_gpio_chip *a7gc, u32 gpio) | ||
4133 | { | ||
4134 | struct atlas7_gpio_bank *bank; | ||
4135 | u32 ofs; | ||
4136 | |||
4137 | bank = atlas7_gpio_to_bank(a7gc, gpio); | ||
4138 | ofs = gpio - bank->gpio_offset; | ||
4139 | if (ofs >= bank->ngpio) | ||
4140 | return -ENODEV; | ||
4141 | |||
4142 | return bank->gpio_pins[ofs]; | ||
4143 | } | ||
4144 | |||
4145 | static void atlas7_gpio_irq_ack(struct irq_data *d) | ||
4146 | { | ||
4147 | struct gpio_chip *gc = irq_data_get_irq_chip_data(d); | ||
4148 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(gc); | ||
4149 | struct atlas7_gpio_bank *bank; | ||
4150 | void __iomem *ctrl_reg; | ||
4151 | u32 val, pin_in_bank; | ||
4152 | unsigned long flags; | ||
4153 | |||
4154 | bank = atlas7_gpio_to_bank(a7gc, d->hwirq); | ||
4155 | pin_in_bank = d->hwirq - bank->gpio_offset; | ||
4156 | ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank); | ||
4157 | |||
4158 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4159 | |||
4160 | val = readl(ctrl_reg); | ||
4161 | /* clear interrupt status */ | ||
4162 | writel(val, ctrl_reg); | ||
4163 | |||
4164 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4165 | } | ||
4166 | |||
4167 | static void __atlas7_gpio_irq_mask(struct atlas7_gpio_chip *a7gc, int idx) | ||
4168 | { | ||
4169 | struct atlas7_gpio_bank *bank; | ||
4170 | void __iomem *ctrl_reg; | ||
4171 | u32 val, pin_in_bank; | ||
4172 | |||
4173 | bank = atlas7_gpio_to_bank(a7gc, idx); | ||
4174 | pin_in_bank = idx - bank->gpio_offset; | ||
4175 | ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank); | ||
4176 | |||
4177 | val = readl(ctrl_reg); | ||
4178 | val &= ~(ATLAS7_GPIO_CTL_INTR_EN_MASK | | ||
4179 | ATLAS7_GPIO_CTL_INTR_STATUS_MASK); | ||
4180 | writel(val, ctrl_reg); | ||
4181 | } | ||
4182 | |||
4183 | static void atlas7_gpio_irq_mask(struct irq_data *d) | ||
4184 | { | ||
4185 | struct gpio_chip *gc = irq_data_get_irq_chip_data(d); | ||
4186 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(gc); | ||
4187 | unsigned long flags; | ||
4188 | |||
4189 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4190 | |||
4191 | __atlas7_gpio_irq_mask(a7gc, d->hwirq); | ||
4192 | |||
4193 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4194 | } | ||
4195 | |||
4196 | static void atlas7_gpio_irq_unmask(struct irq_data *d) | ||
4197 | { | ||
4198 | struct gpio_chip *gc = irq_data_get_irq_chip_data(d); | ||
4199 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(gc); | ||
4200 | struct atlas7_gpio_bank *bank; | ||
4201 | void __iomem *ctrl_reg; | ||
4202 | u32 val, pin_in_bank; | ||
4203 | unsigned long flags; | ||
4204 | |||
4205 | bank = atlas7_gpio_to_bank(a7gc, d->hwirq); | ||
4206 | pin_in_bank = d->hwirq - bank->gpio_offset; | ||
4207 | ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank); | ||
4208 | |||
4209 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4210 | |||
4211 | val = readl(ctrl_reg); | ||
4212 | val &= ~ATLAS7_GPIO_CTL_INTR_STATUS_MASK; | ||
4213 | val |= ATLAS7_GPIO_CTL_INTR_EN_MASK; | ||
4214 | writel(val, ctrl_reg); | ||
4215 | |||
4216 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4217 | } | ||
4218 | |||
4219 | static int atlas7_gpio_irq_type(struct irq_data *d, | ||
4220 | unsigned int type) | ||
4221 | { | ||
4222 | struct gpio_chip *gc = irq_data_get_irq_chip_data(d); | ||
4223 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(gc); | ||
4224 | struct atlas7_gpio_bank *bank; | ||
4225 | void __iomem *ctrl_reg; | ||
4226 | u32 val, pin_in_bank; | ||
4227 | unsigned long flags; | ||
4228 | |||
4229 | bank = atlas7_gpio_to_bank(a7gc, d->hwirq); | ||
4230 | pin_in_bank = d->hwirq - bank->gpio_offset; | ||
4231 | ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank); | ||
4232 | |||
4233 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4234 | |||
4235 | val = readl(ctrl_reg); | ||
4236 | val &= ~(ATLAS7_GPIO_CTL_INTR_STATUS_MASK | | ||
4237 | ATLAS7_GPIO_CTL_INTR_EN_MASK); | ||
4238 | |||
4239 | switch (type) { | ||
4240 | case IRQ_TYPE_NONE: | ||
4241 | break; | ||
4242 | |||
4243 | case IRQ_TYPE_EDGE_RISING: | ||
4244 | val |= ATLAS7_GPIO_CTL_INTR_HIGH_MASK | | ||
4245 | ATLAS7_GPIO_CTL_INTR_TYPE_MASK; | ||
4246 | val &= ~ATLAS7_GPIO_CTL_INTR_LOW_MASK; | ||
4247 | break; | ||
4248 | |||
4249 | case IRQ_TYPE_EDGE_FALLING: | ||
4250 | val &= ~ATLAS7_GPIO_CTL_INTR_HIGH_MASK; | ||
4251 | val |= ATLAS7_GPIO_CTL_INTR_LOW_MASK | | ||
4252 | ATLAS7_GPIO_CTL_INTR_TYPE_MASK; | ||
4253 | break; | ||
4254 | |||
4255 | case IRQ_TYPE_EDGE_BOTH: | ||
4256 | val |= ATLAS7_GPIO_CTL_INTR_HIGH_MASK | | ||
4257 | ATLAS7_GPIO_CTL_INTR_LOW_MASK | | ||
4258 | ATLAS7_GPIO_CTL_INTR_TYPE_MASK; | ||
4259 | break; | ||
4260 | |||
4261 | case IRQ_TYPE_LEVEL_LOW: | ||
4262 | val &= ~(ATLAS7_GPIO_CTL_INTR_HIGH_MASK | | ||
4263 | ATLAS7_GPIO_CTL_INTR_TYPE_MASK); | ||
4264 | val |= ATLAS7_GPIO_CTL_INTR_LOW_MASK; | ||
4265 | break; | ||
4266 | |||
4267 | case IRQ_TYPE_LEVEL_HIGH: | ||
4268 | val |= ATLAS7_GPIO_CTL_INTR_HIGH_MASK; | ||
4269 | val &= ~(ATLAS7_GPIO_CTL_INTR_LOW_MASK | | ||
4270 | ATLAS7_GPIO_CTL_INTR_TYPE_MASK); | ||
4271 | break; | ||
4272 | } | ||
4273 | |||
4274 | writel(val, ctrl_reg); | ||
4275 | |||
4276 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4277 | |||
4278 | return 0; | ||
4279 | } | ||
4280 | |||
4281 | static struct irq_chip atlas7_gpio_irq_chip = { | ||
4282 | .name = "atlas7-gpio-irq", | ||
4283 | .irq_ack = atlas7_gpio_irq_ack, | ||
4284 | .irq_mask = atlas7_gpio_irq_mask, | ||
4285 | .irq_unmask = atlas7_gpio_irq_unmask, | ||
4286 | .irq_set_type = atlas7_gpio_irq_type, | ||
4287 | }; | ||
4288 | |||
4289 | static void atlas7_gpio_handle_irq(unsigned int irq, struct irq_desc *desc) | ||
4290 | { | ||
4291 | struct gpio_chip *gc = irq_desc_get_handler_data(desc); | ||
4292 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(gc); | ||
4293 | struct atlas7_gpio_bank *bank = NULL; | ||
4294 | u32 status, ctrl; | ||
4295 | int pin_in_bank = 0, idx; | ||
4296 | struct irq_chip *chip = irq_get_chip(irq); | ||
4297 | |||
4298 | for (idx = 0; idx < a7gc->nbank; idx++) { | ||
4299 | bank = &a7gc->banks[idx]; | ||
4300 | if (bank->irq == irq) | ||
4301 | break; | ||
4302 | } | ||
4303 | BUG_ON(idx == a7gc->nbank); | ||
4304 | |||
4305 | chained_irq_enter(chip, desc); | ||
4306 | |||
4307 | status = readl(ATLAS7_GPIO_INT_STATUS(bank)); | ||
4308 | if (!status) { | ||
4309 | pr_warn("%s: gpio [%s] status %#x no interrupt is flaged\n", | ||
4310 | __func__, gc->label, status); | ||
4311 | handle_bad_irq(irq, desc); | ||
4312 | return; | ||
4313 | } | ||
4314 | |||
4315 | while (status) { | ||
4316 | ctrl = readl(ATLAS7_GPIO_CTRL(bank, pin_in_bank)); | ||
4317 | |||
4318 | /* | ||
4319 | * Here we must check whether the corresponding GPIO's | ||
4320 | * interrupt has been enabled, otherwise just skip it | ||
4321 | */ | ||
4322 | if ((status & 0x1) && (ctrl & ATLAS7_GPIO_CTL_INTR_EN_MASK)) { | ||
4323 | pr_debug("%s: chip[%s] gpio:%d happens\n", | ||
4324 | __func__, gc->label, | ||
4325 | bank->gpio_offset + pin_in_bank); | ||
4326 | generic_handle_irq( | ||
4327 | irq_find_mapping(gc->irqdomain, | ||
4328 | bank->gpio_offset + pin_in_bank)); | ||
4329 | } | ||
4330 | |||
4331 | if (++pin_in_bank >= bank->ngpio) | ||
4332 | break; | ||
4333 | |||
4334 | status = status >> 1; | ||
4335 | } | ||
4336 | |||
4337 | chained_irq_exit(chip, desc); | ||
4338 | } | ||
4339 | |||
4340 | static void __atlas7_gpio_set_input(struct atlas7_gpio_chip *a7gc, | ||
4341 | unsigned int gpio) | ||
4342 | { | ||
4343 | struct atlas7_gpio_bank *bank; | ||
4344 | void __iomem *ctrl_reg; | ||
4345 | u32 val, pin_in_bank; | ||
4346 | |||
4347 | bank = atlas7_gpio_to_bank(a7gc, gpio); | ||
4348 | pin_in_bank = gpio - bank->gpio_offset; | ||
4349 | ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank); | ||
4350 | |||
4351 | val = readl(ctrl_reg); | ||
4352 | val &= ~ATLAS7_GPIO_CTL_OUT_EN_MASK; | ||
4353 | writel(val, ctrl_reg); | ||
4354 | } | ||
4355 | |||
4356 | static int atlas7_gpio_request(struct gpio_chip *chip, | ||
4357 | unsigned int gpio) | ||
4358 | { | ||
4359 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(chip); | ||
4360 | int ret; | ||
4361 | unsigned long flags; | ||
4362 | |||
4363 | ret = __atlas7_gpio_to_pin(a7gc, gpio); | ||
4364 | if (ret < 0) | ||
4365 | return ret; | ||
4366 | |||
4367 | if (pinctrl_request_gpio(chip->base + gpio)) | ||
4368 | return -ENODEV; | ||
4369 | |||
4370 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4371 | |||
4372 | /* | ||
4373 | * default status: | ||
4374 | * set direction as input and mask irq | ||
4375 | */ | ||
4376 | __atlas7_gpio_set_input(a7gc, gpio); | ||
4377 | __atlas7_gpio_irq_mask(a7gc, gpio); | ||
4378 | |||
4379 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4380 | |||
4381 | return 0; | ||
4382 | } | ||
4383 | |||
4384 | static void atlas7_gpio_free(struct gpio_chip *chip, | ||
4385 | unsigned int gpio) | ||
4386 | { | ||
4387 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(chip); | ||
4388 | unsigned long flags; | ||
4389 | |||
4390 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4391 | |||
4392 | __atlas7_gpio_irq_mask(a7gc, gpio); | ||
4393 | __atlas7_gpio_set_input(a7gc, gpio); | ||
4394 | |||
4395 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4396 | |||
4397 | pinctrl_free_gpio(chip->base + gpio); | ||
4398 | } | ||
4399 | |||
4400 | static int atlas7_gpio_direction_input(struct gpio_chip *chip, | ||
4401 | unsigned int gpio) | ||
4402 | { | ||
4403 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(chip); | ||
4404 | unsigned long flags; | ||
4405 | |||
4406 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4407 | |||
4408 | __atlas7_gpio_set_input(a7gc, gpio); | ||
4409 | |||
4410 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4411 | |||
4412 | return 0; | ||
4413 | } | ||
4414 | |||
4415 | static void __atlas7_gpio_set_output(struct atlas7_gpio_chip *a7gc, | ||
4416 | unsigned int gpio, int value) | ||
4417 | { | ||
4418 | struct atlas7_gpio_bank *bank; | ||
4419 | void __iomem *ctrl_reg; | ||
4420 | u32 out_ctrl, pin_in_bank; | ||
4421 | |||
4422 | bank = atlas7_gpio_to_bank(a7gc, gpio); | ||
4423 | pin_in_bank = gpio - bank->gpio_offset; | ||
4424 | ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank); | ||
4425 | |||
4426 | out_ctrl = readl(ctrl_reg); | ||
4427 | if (value) | ||
4428 | out_ctrl |= ATLAS7_GPIO_CTL_DATAOUT_MASK; | ||
4429 | else | ||
4430 | out_ctrl &= ~ATLAS7_GPIO_CTL_DATAOUT_MASK; | ||
4431 | |||
4432 | out_ctrl &= ~ATLAS7_GPIO_CTL_INTR_EN_MASK; | ||
4433 | out_ctrl |= ATLAS7_GPIO_CTL_OUT_EN_MASK; | ||
4434 | writel(out_ctrl, ctrl_reg); | ||
4435 | } | ||
4436 | |||
4437 | static int atlas7_gpio_direction_output(struct gpio_chip *chip, | ||
4438 | unsigned int gpio, int value) | ||
4439 | { | ||
4440 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(chip); | ||
4441 | unsigned long flags; | ||
4442 | |||
4443 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4444 | |||
4445 | __atlas7_gpio_set_output(a7gc, gpio, value); | ||
4446 | |||
4447 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4448 | |||
4449 | return 0; | ||
4450 | } | ||
4451 | |||
4452 | static int atlas7_gpio_get_value(struct gpio_chip *chip, | ||
4453 | unsigned int gpio) | ||
4454 | { | ||
4455 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(chip); | ||
4456 | struct atlas7_gpio_bank *bank; | ||
4457 | u32 val, pin_in_bank; | ||
4458 | unsigned long flags; | ||
4459 | |||
4460 | bank = atlas7_gpio_to_bank(a7gc, gpio); | ||
4461 | pin_in_bank = gpio - bank->gpio_offset; | ||
4462 | |||
4463 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4464 | |||
4465 | val = readl(ATLAS7_GPIO_CTRL(bank, pin_in_bank)); | ||
4466 | |||
4467 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4468 | |||
4469 | return !!(val & ATLAS7_GPIO_CTL_DATAIN_MASK); | ||
4470 | } | ||
4471 | |||
4472 | static void atlas7_gpio_set_value(struct gpio_chip *chip, | ||
4473 | unsigned int gpio, int value) | ||
4474 | { | ||
4475 | struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(chip); | ||
4476 | struct atlas7_gpio_bank *bank; | ||
4477 | void __iomem *ctrl_reg; | ||
4478 | u32 ctrl, pin_in_bank; | ||
4479 | unsigned long flags; | ||
4480 | |||
4481 | bank = atlas7_gpio_to_bank(a7gc, gpio); | ||
4482 | pin_in_bank = gpio - bank->gpio_offset; | ||
4483 | ctrl_reg = ATLAS7_GPIO_CTRL(bank, pin_in_bank); | ||
4484 | |||
4485 | spin_lock_irqsave(&a7gc->lock, flags); | ||
4486 | |||
4487 | ctrl = readl(ctrl_reg); | ||
4488 | if (value) | ||
4489 | ctrl |= ATLAS7_GPIO_CTL_DATAOUT_MASK; | ||
4490 | else | ||
4491 | ctrl &= ~ATLAS7_GPIO_CTL_DATAOUT_MASK; | ||
4492 | writel(ctrl, ctrl_reg); | ||
4493 | |||
4494 | spin_unlock_irqrestore(&a7gc->lock, flags); | ||
4495 | } | ||
4496 | |||
4497 | static const struct of_device_id atlas7_gpio_ids[] = { | ||
4498 | { .compatible = "sirf,atlas7-gpio", }, | ||
4499 | }; | ||
4500 | |||
4501 | static int atlas7_gpio_probe(struct platform_device *pdev) | ||
4502 | { | ||
4503 | struct device_node *np = pdev->dev.of_node; | ||
4504 | struct atlas7_gpio_chip *a7gc; | ||
4505 | struct gpio_chip *chip; | ||
4506 | u32 nbank; | ||
4507 | int ret, idx; | ||
4508 | |||
4509 | ret = of_property_read_u32(np, "gpio-banks", &nbank); | ||
4510 | if (ret) { | ||
4511 | dev_err(&pdev->dev, | ||
4512 | "Could not find GPIO bank info,ret=%d!\n", | ||
4513 | ret); | ||
4514 | return ret; | ||
4515 | } | ||
4516 | |||
4517 | /* retrieve gpio descriptor data */ | ||
4518 | a7gc = devm_kzalloc(&pdev->dev, sizeof(*a7gc) + | ||
4519 | sizeof(struct atlas7_gpio_bank) * nbank, GFP_KERNEL); | ||
4520 | if (!a7gc) | ||
4521 | return -ENOMEM; | ||
4522 | |||
4523 | /* Get Gpio clk */ | ||
4524 | a7gc->clk = of_clk_get(np, 0); | ||
4525 | if (!IS_ERR(a7gc->clk)) { | ||
4526 | ret = clk_prepare_enable(a7gc->clk); | ||
4527 | if (ret) { | ||
4528 | dev_err(&pdev->dev, | ||
4529 | "Could not enable clock!\n"); | ||
4530 | return ret; | ||
4531 | } | ||
4532 | } | ||
4533 | |||
4534 | /* Get Gpio Registers */ | ||
4535 | a7gc->reg = of_iomap(np, 0); | ||
4536 | if (!a7gc->reg) { | ||
4537 | dev_err(&pdev->dev, "Could not map GPIO Registers!\n"); | ||
4538 | return -ENOMEM; | ||
4539 | } | ||
4540 | |||
4541 | a7gc->nbank = nbank; | ||
4542 | spin_lock_init(&a7gc->lock); | ||
4543 | |||
4544 | /* Setup GPIO Chip */ | ||
4545 | chip = &a7gc->chip; | ||
4546 | chip->request = atlas7_gpio_request; | ||
4547 | chip->free = atlas7_gpio_free; | ||
4548 | chip->direction_input = atlas7_gpio_direction_input; | ||
4549 | chip->get = atlas7_gpio_get_value; | ||
4550 | chip->direction_output = atlas7_gpio_direction_output; | ||
4551 | chip->set = atlas7_gpio_set_value; | ||
4552 | chip->base = -1; | ||
4553 | /* Each chip can support 32 pins at one bank */ | ||
4554 | chip->ngpio = NGPIO_OF_BANK * nbank; | ||
4555 | chip->label = kstrdup(np->name, GFP_KERNEL); | ||
4556 | chip->of_node = np; | ||
4557 | chip->of_gpio_n_cells = 2; | ||
4558 | chip->dev = &pdev->dev; | ||
4559 | |||
4560 | /* Add gpio chip to system */ | ||
4561 | ret = gpiochip_add(chip); | ||
4562 | if (ret) { | ||
4563 | dev_err(&pdev->dev, | ||
4564 | "%s: error in probe function with status %d\n", | ||
4565 | np->name, ret); | ||
4566 | goto failed; | ||
4567 | } | ||
4568 | |||
4569 | /* Add gpio chip to irq subsystem */ | ||
4570 | ret = gpiochip_irqchip_add(chip, &atlas7_gpio_irq_chip, | ||
4571 | 0, handle_level_irq, IRQ_TYPE_NONE); | ||
4572 | if (ret) { | ||
4573 | dev_err(&pdev->dev, | ||
4574 | "could not connect irqchip to gpiochip\n"); | ||
4575 | goto failed; | ||
4576 | } | ||
4577 | |||
4578 | for (idx = 0; idx < nbank; idx++) { | ||
4579 | struct gpio_pin_range *pin_range; | ||
4580 | struct atlas7_gpio_bank *bank; | ||
4581 | |||
4582 | bank = &a7gc->banks[idx]; | ||
4583 | /* Set ctrl registers' base of this bank */ | ||
4584 | bank->base = ATLAS7_GPIO_BASE(a7gc, idx); | ||
4585 | |||
4586 | /* Get interrupt number from DTS */ | ||
4587 | ret = of_irq_get(np, idx); | ||
4588 | if (ret == -EPROBE_DEFER) { | ||
4589 | dev_err(&pdev->dev, | ||
4590 | "Unable to find IRQ number. ret=%d\n", ret); | ||
4591 | goto failed; | ||
4592 | } | ||
4593 | bank->irq = ret; | ||
4594 | |||
4595 | gpiochip_set_chained_irqchip(chip, &atlas7_gpio_irq_chip, | ||
4596 | bank->irq, atlas7_gpio_handle_irq); | ||
4597 | |||
4598 | /* Records gpio_pin_range to a7gc */ | ||
4599 | list_for_each_entry(pin_range, &chip->pin_ranges, node) { | ||
4600 | struct pinctrl_gpio_range *range; | ||
4601 | |||
4602 | range = &pin_range->range; | ||
4603 | if (range->id == NGPIO_OF_BANK * idx) { | ||
4604 | bank->gpio_offset = range->id; | ||
4605 | bank->ngpio = range->npins; | ||
4606 | bank->gpio_pins = range->pins; | ||
4607 | bank->pctldev = pin_range->pctldev; | ||
4608 | break; | ||
4609 | } | ||
4610 | } | ||
4611 | |||
4612 | BUG_ON(!bank->pctldev); | ||
4613 | } | ||
4614 | |||
4615 | dev_info(&pdev->dev, "add to system.\n"); | ||
4616 | return 0; | ||
4617 | failed: | ||
4618 | return ret; | ||
4619 | } | ||
4620 | |||
4621 | static struct platform_driver atlas7_gpio_driver = { | ||
4622 | .driver = { | ||
4623 | .name = "atlas7-gpio", | ||
4624 | .owner = THIS_MODULE, | ||
4625 | .of_match_table = atlas7_gpio_ids, | ||
4626 | }, | ||
4627 | .probe = atlas7_gpio_probe, | ||
4628 | }; | ||
4629 | |||
4630 | static int __init atlas7_gpio_init(void) | ||
4631 | { | ||
4632 | return platform_driver_register(&atlas7_gpio_driver); | ||
4633 | } | ||
4634 | subsys_initcall(atlas7_gpio_init); | ||
4635 | |||
4636 | MODULE_DESCRIPTION("SIRFSOC Atlas7 pin control driver"); | ||
4637 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/pinctrl/sirf/pinctrl-sirf.c b/drivers/pinctrl/sirf/pinctrl-sirf.c index e2efbbae4061..8ba26e45499a 100644 --- a/drivers/pinctrl/sirf/pinctrl-sirf.c +++ b/drivers/pinctrl/sirf/pinctrl-sirf.c | |||
@@ -310,9 +310,9 @@ static int sirfsoc_pinmux_probe(struct platform_device *pdev) | |||
310 | 310 | ||
311 | /* Now register the pin controller and all pins it handles */ | 311 | /* Now register the pin controller and all pins it handles */ |
312 | spmx->pmx = pinctrl_register(&sirfsoc_pinmux_desc, &pdev->dev, spmx); | 312 | spmx->pmx = pinctrl_register(&sirfsoc_pinmux_desc, &pdev->dev, spmx); |
313 | if (!spmx->pmx) { | 313 | if (IS_ERR(spmx->pmx)) { |
314 | dev_err(&pdev->dev, "could not register SIRFSOC pinmux driver\n"); | 314 | dev_err(&pdev->dev, "could not register SIRFSOC pinmux driver\n"); |
315 | ret = -EINVAL; | 315 | ret = PTR_ERR(spmx->pmx); |
316 | goto out_no_pmx; | 316 | goto out_no_pmx; |
317 | } | 317 | } |
318 | 318 | ||
diff --git a/drivers/pinctrl/spear/pinctrl-spear.c b/drivers/pinctrl/spear/pinctrl-spear.c index abdb05ac43dc..f87a5eaf75da 100644 --- a/drivers/pinctrl/spear/pinctrl-spear.c +++ b/drivers/pinctrl/spear/pinctrl-spear.c | |||
@@ -396,9 +396,9 @@ int spear_pinctrl_probe(struct platform_device *pdev, | |||
396 | spear_pinctrl_desc.npins = machdata->npins; | 396 | spear_pinctrl_desc.npins = machdata->npins; |
397 | 397 | ||
398 | pmx->pctl = pinctrl_register(&spear_pinctrl_desc, &pdev->dev, pmx); | 398 | pmx->pctl = pinctrl_register(&spear_pinctrl_desc, &pdev->dev, pmx); |
399 | if (!pmx->pctl) { | 399 | if (IS_ERR(pmx->pctl)) { |
400 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); | 400 | dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); |
401 | return -ENODEV; | 401 | return PTR_ERR(pmx->pctl); |
402 | } | 402 | } |
403 | 403 | ||
404 | return 0; | 404 | return 0; |
diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig index 2eb893e0ea1e..ae27872ff3a6 100644 --- a/drivers/pinctrl/sunxi/Kconfig +++ b/drivers/pinctrl/sunxi/Kconfig | |||
@@ -38,6 +38,10 @@ config PINCTRL_SUN8I_A23 | |||
38 | def_bool MACH_SUN8I | 38 | def_bool MACH_SUN8I |
39 | select PINCTRL_SUNXI_COMMON | 39 | select PINCTRL_SUNXI_COMMON |
40 | 40 | ||
41 | config PINCTRL_SUN8I_A33 | ||
42 | def_bool MACH_SUN8I | ||
43 | select PINCTRL_SUNXI_COMMON | ||
44 | |||
41 | config PINCTRL_SUN8I_A23_R | 45 | config PINCTRL_SUN8I_A23_R |
42 | def_bool MACH_SUN8I | 46 | def_bool MACH_SUN8I |
43 | depends on RESET_CONTROLLER | 47 | depends on RESET_CONTROLLER |
diff --git a/drivers/pinctrl/sunxi/Makefile b/drivers/pinctrl/sunxi/Makefile index b796d579dce6..227a1213947c 100644 --- a/drivers/pinctrl/sunxi/Makefile +++ b/drivers/pinctrl/sunxi/Makefile | |||
@@ -11,4 +11,5 @@ obj-$(CONFIG_PINCTRL_SUN6I_A31_R) += pinctrl-sun6i-a31-r.o | |||
11 | obj-$(CONFIG_PINCTRL_SUN7I_A20) += pinctrl-sun7i-a20.o | 11 | obj-$(CONFIG_PINCTRL_SUN7I_A20) += pinctrl-sun7i-a20.o |
12 | obj-$(CONFIG_PINCTRL_SUN8I_A23) += pinctrl-sun8i-a23.o | 12 | obj-$(CONFIG_PINCTRL_SUN8I_A23) += pinctrl-sun8i-a23.o |
13 | obj-$(CONFIG_PINCTRL_SUN8I_A23_R) += pinctrl-sun8i-a23-r.o | 13 | obj-$(CONFIG_PINCTRL_SUN8I_A23_R) += pinctrl-sun8i-a23-r.o |
14 | obj-$(CONFIG_PINCTRL_SUN8I_A33) += pinctrl-sun8i-a33.o | ||
14 | obj-$(CONFIG_PINCTRL_SUN9I_A80) += pinctrl-sun9i-a80.o | 15 | obj-$(CONFIG_PINCTRL_SUN9I_A80) += pinctrl-sun9i-a80.o |
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun6i-a31s.c b/drivers/pinctrl/sunxi/pinctrl-sun6i-a31s.c index d3725dcd6979..e570d5c93ecc 100644 --- a/drivers/pinctrl/sunxi/pinctrl-sun6i-a31s.c +++ b/drivers/pinctrl/sunxi/pinctrl-sun6i-a31s.c | |||
@@ -804,7 +804,6 @@ static struct platform_driver sun6i_a31s_pinctrl_driver = { | |||
804 | .probe = sun6i_a31s_pinctrl_probe, | 804 | .probe = sun6i_a31s_pinctrl_probe, |
805 | .driver = { | 805 | .driver = { |
806 | .name = "sun6i-a31s-pinctrl", | 806 | .name = "sun6i-a31s-pinctrl", |
807 | .owner = THIS_MODULE, | ||
808 | .of_match_table = sun6i_a31s_pinctrl_match, | 807 | .of_match_table = sun6i_a31s_pinctrl_match, |
809 | }, | 808 | }, |
810 | }; | 809 | }; |
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c new file mode 100644 index 000000000000..00265f0435a7 --- /dev/null +++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c | |||
@@ -0,0 +1,513 @@ | |||
1 | /* | ||
2 | * Allwinner a33 SoCs pinctrl driver. | ||
3 | * | ||
4 | * Copyright (C) 2015 Vishnu Patekar <vishnupatekar0510@gmail.com> | ||
5 | * | ||
6 | * Based on pinctrl-sun8i-a23.c, which is: | ||
7 | * Copyright (C) 2014 Chen-Yu Tsai <wens@csie.org> | ||
8 | * Copyright (C) 2014 Maxime Ripard <maxime.ripard@free-electrons.com> | ||
9 | * | ||
10 | * This file is licensed under the terms of the GNU General Public | ||
11 | * License version 2. This program is licensed "as is" without any | ||
12 | * warranty of any kind, whether express or implied. | ||
13 | */ | ||
14 | |||
15 | #include <linux/module.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/of.h> | ||
18 | #include <linux/of_device.h> | ||
19 | #include <linux/pinctrl/pinctrl.h> | ||
20 | |||
21 | #include "pinctrl-sunxi.h" | ||
22 | |||
23 | static const struct sunxi_desc_pin sun8i_a33_pins[] = { | ||
24 | /* Hole */ | ||
25 | SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0), | ||
26 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
27 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
28 | SUNXI_FUNCTION(0x2, "uart2"), /* TX */ | ||
29 | SUNXI_FUNCTION(0x3, "uart0"), /* TX */ | ||
30 | SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 0)), /* PB_EINT0 */ | ||
31 | SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1), | ||
32 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
33 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
34 | SUNXI_FUNCTION(0x2, "uart2"), /* RX */ | ||
35 | SUNXI_FUNCTION(0x3, "uart0"), /* RX */ | ||
36 | SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 1)), /* PB_EINT1 */ | ||
37 | SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2), | ||
38 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
39 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
40 | SUNXI_FUNCTION(0x2, "uart2"), /* RTS */ | ||
41 | SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 2)), /* PB_EINT2 */ | ||
42 | SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3), | ||
43 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
44 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
45 | SUNXI_FUNCTION(0x2, "uart2"), /* CTS */ | ||
46 | SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 3)), /* PB_EINT3 */ | ||
47 | SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4), | ||
48 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
49 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
50 | SUNXI_FUNCTION(0x2, "i2s0"), /* SYNC */ | ||
51 | SUNXI_FUNCTION(0x3, "aif2"), /* SYNC */ | ||
52 | SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 4)), /* PB_EINT4 */ | ||
53 | SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5), | ||
54 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
55 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
56 | SUNXI_FUNCTION(0x2, "i2s0"), /* BCLK */ | ||
57 | SUNXI_FUNCTION(0x3, "aif2"), /* BCLK */ | ||
58 | SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 5)), /* PB_EINT5 */ | ||
59 | SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6), | ||
60 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
61 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
62 | SUNXI_FUNCTION(0x2, "i2s0"), /* DOUT */ | ||
63 | SUNXI_FUNCTION(0x3, "aif2"), /* DOUT */ | ||
64 | SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 6)), /* PB_EINT6 */ | ||
65 | SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7), | ||
66 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
67 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
68 | SUNXI_FUNCTION(0x2, "i2s0"), /* DIN */ | ||
69 | SUNXI_FUNCTION(0x3, "aif2"), /* DIN */ | ||
70 | SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 7)), /* PB_EINT7 */ | ||
71 | /* Hole */ | ||
72 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0), | ||
73 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
74 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
75 | SUNXI_FUNCTION(0x2, "nand0"), /* WE */ | ||
76 | SUNXI_FUNCTION(0x3, "spi0")), /* MOSI */ | ||
77 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1), | ||
78 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
79 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
80 | SUNXI_FUNCTION(0x2, "nand0"), /* ALE */ | ||
81 | SUNXI_FUNCTION(0x3, "spi0")), /* MISO */ | ||
82 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2), | ||
83 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
84 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
85 | SUNXI_FUNCTION(0x2, "nand0"), /* CLE */ | ||
86 | SUNXI_FUNCTION(0x3, "spi0")), /* CLK */ | ||
87 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3), | ||
88 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
89 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
90 | SUNXI_FUNCTION(0x2, "nand0"), /* CE1 */ | ||
91 | SUNXI_FUNCTION(0x3, "spi0")), /* CS */ | ||
92 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4), | ||
93 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
94 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
95 | SUNXI_FUNCTION(0x2, "nand0")), /* CE0 */ | ||
96 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5), | ||
97 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
98 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
99 | SUNXI_FUNCTION(0x2, "nand0"), /* RE */ | ||
100 | SUNXI_FUNCTION(0x3, "mmc2")), /* CLK */ | ||
101 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6), | ||
102 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
103 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
104 | SUNXI_FUNCTION(0x2, "nand0"), /* RB0 */ | ||
105 | SUNXI_FUNCTION(0x3, "mmc2")), /* CMD */ | ||
106 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7), | ||
107 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
108 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
109 | SUNXI_FUNCTION(0x2, "nand0")), /* RB1 */ | ||
110 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 8), | ||
111 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
112 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
113 | SUNXI_FUNCTION(0x2, "nand0"), /* DQ0 */ | ||
114 | SUNXI_FUNCTION(0x3, "mmc2")), /* D0 */ | ||
115 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 9), | ||
116 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
117 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
118 | SUNXI_FUNCTION(0x2, "nand0"), /* DQ1 */ | ||
119 | SUNXI_FUNCTION(0x3, "mmc2")), /* D1 */ | ||
120 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 10), | ||
121 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
122 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
123 | SUNXI_FUNCTION(0x2, "nand0"), /* DQ2 */ | ||
124 | SUNXI_FUNCTION(0x3, "mmc2")), /* D2 */ | ||
125 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 11), | ||
126 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
127 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
128 | SUNXI_FUNCTION(0x2, "nand0"), /* DQ3 */ | ||
129 | SUNXI_FUNCTION(0x3, "mmc2")), /* D3 */ | ||
130 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 12), | ||
131 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
132 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
133 | SUNXI_FUNCTION(0x2, "nand0"), /* DQ4 */ | ||
134 | SUNXI_FUNCTION(0x3, "mmc2")), /* D4 */ | ||
135 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 13), | ||
136 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
137 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
138 | SUNXI_FUNCTION(0x2, "nand0"), /* DQ5 */ | ||
139 | SUNXI_FUNCTION(0x3, "mmc2")), /* D5 */ | ||
140 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), | ||
141 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
142 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
143 | SUNXI_FUNCTION(0x2, "nand"), /* DQ6 */ | ||
144 | SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ | ||
145 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), | ||
146 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
147 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
148 | SUNXI_FUNCTION(0x2, "nand"), /* DQ7 */ | ||
149 | SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ | ||
150 | SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), | ||
151 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
152 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
153 | SUNXI_FUNCTION(0x2, "nand"), /* DQS */ | ||
154 | SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ | ||
155 | /* Hole */ | ||
156 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2), | ||
157 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
158 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
159 | SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */ | ||
160 | SUNXI_FUNCTION(0x3, "mmc1")), /* CLK */ | ||
161 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3), | ||
162 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
163 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
164 | SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */ | ||
165 | SUNXI_FUNCTION(0x3, "mmc1")), /* CMD */ | ||
166 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4), | ||
167 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
168 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
169 | SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */ | ||
170 | SUNXI_FUNCTION(0x3, "mmc1")), /* D0 */ | ||
171 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5), | ||
172 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
173 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
174 | SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */ | ||
175 | SUNXI_FUNCTION(0x3, "mmc1")), /* D1 */ | ||
176 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6), | ||
177 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
178 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
179 | SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */ | ||
180 | SUNXI_FUNCTION(0x3, "mmc1")), /* D2 */ | ||
181 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7), | ||
182 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
183 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
184 | SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */ | ||
185 | SUNXI_FUNCTION(0x3, "mmc1")), /* D3 */ | ||
186 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10), | ||
187 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
188 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
189 | SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */ | ||
190 | SUNXI_FUNCTION(0x3, "uart1")), /* TX */ | ||
191 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11), | ||
192 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
193 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
194 | SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */ | ||
195 | SUNXI_FUNCTION(0x3, "uart1")), /* RX */ | ||
196 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12), | ||
197 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
198 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
199 | SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */ | ||
200 | SUNXI_FUNCTION(0x3, "uart1")), /* RTS */ | ||
201 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13), | ||
202 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
203 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
204 | SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */ | ||
205 | SUNXI_FUNCTION(0x3, "uart1")), /* CTS */ | ||
206 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14), | ||
207 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
208 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
209 | SUNXI_FUNCTION(0x2, "lcd0")), /* D14 */ | ||
210 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15), | ||
211 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
212 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
213 | SUNXI_FUNCTION(0x2, "lcd0")), /* D15 */ | ||
214 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18), | ||
215 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
216 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
217 | SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */ | ||
218 | SUNXI_FUNCTION(0x3, "lvds0")), /* VP0 */ | ||
219 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19), | ||
220 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
221 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
222 | SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */ | ||
223 | SUNXI_FUNCTION(0x3, "lvds0")), /* VN0 */ | ||
224 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20), | ||
225 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
226 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
227 | SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */ | ||
228 | SUNXI_FUNCTION(0x3, "lvds0")), /* VP1 */ | ||
229 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21), | ||
230 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
231 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
232 | SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */ | ||
233 | SUNXI_FUNCTION(0x3, "lvds0")), /* VN1 */ | ||
234 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22), | ||
235 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
236 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
237 | SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */ | ||
238 | SUNXI_FUNCTION(0x3, "lvds0")), /* VP2 */ | ||
239 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 23), | ||
240 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
241 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
242 | SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */ | ||
243 | SUNXI_FUNCTION(0x3, "lvds0")), /* VN2 */ | ||
244 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 24), | ||
245 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
246 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
247 | SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */ | ||
248 | SUNXI_FUNCTION(0x3, "lvds0")), /* VPC */ | ||
249 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 25), | ||
250 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
251 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
252 | SUNXI_FUNCTION(0x2, "lcd0"), /* DE */ | ||
253 | SUNXI_FUNCTION(0x3, "lvds0")), /* VNC */ | ||
254 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 26), | ||
255 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
256 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
257 | SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */ | ||
258 | SUNXI_FUNCTION(0x3, "lvds0")), /* VP3 */ | ||
259 | SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 27), | ||
260 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
261 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
262 | SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */ | ||
263 | SUNXI_FUNCTION(0x3, "lvds0")), /* VN3 */ | ||
264 | /* Hole */ | ||
265 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0), | ||
266 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
267 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
268 | SUNXI_FUNCTION(0x2, "csi")), /* PCLK */ | ||
269 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1), | ||
270 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
271 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
272 | SUNXI_FUNCTION(0x2, "csi")), /* MCLK */ | ||
273 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2), | ||
274 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
275 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
276 | SUNXI_FUNCTION(0x2, "csi")), /* HSYNC */ | ||
277 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3), | ||
278 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
279 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
280 | SUNXI_FUNCTION(0x2, "csi")), /* VSYNC */ | ||
281 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4), | ||
282 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
283 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
284 | SUNXI_FUNCTION(0x2, "csi")), /* D0 */ | ||
285 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5), | ||
286 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
287 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
288 | SUNXI_FUNCTION(0x2, "csi")), /* D1 */ | ||
289 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6), | ||
290 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
291 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
292 | SUNXI_FUNCTION(0x2, "csi")), /* D2 */ | ||
293 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7), | ||
294 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
295 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
296 | SUNXI_FUNCTION(0x2, "csi")), /* D3 */ | ||
297 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8), | ||
298 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
299 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
300 | SUNXI_FUNCTION(0x2, "csi")), /* D4 */ | ||
301 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9), | ||
302 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
303 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
304 | SUNXI_FUNCTION(0x2, "csi")), /* D5 */ | ||
305 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10), | ||
306 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
307 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
308 | SUNXI_FUNCTION(0x2, "csi")), /* D6 */ | ||
309 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11), | ||
310 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
311 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
312 | SUNXI_FUNCTION(0x2, "csi")), /* D7 */ | ||
313 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12), | ||
314 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
315 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
316 | SUNXI_FUNCTION(0x2, "csi"), /* SCK */ | ||
317 | SUNXI_FUNCTION(0x3, "i2c2")), /* SCK */ | ||
318 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13), | ||
319 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
320 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
321 | SUNXI_FUNCTION(0x2, "csi"), /* SDA */ | ||
322 | SUNXI_FUNCTION(0x3, "i2c2")), /* SDA */ | ||
323 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 14), | ||
324 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
325 | SUNXI_FUNCTION(0x1, "gpio_out")), | ||
326 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 15), | ||
327 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
328 | SUNXI_FUNCTION(0x1, "gpio_out")), | ||
329 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 16), | ||
330 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
331 | SUNXI_FUNCTION(0x1, "gpio_out")), | ||
332 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 17), | ||
333 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
334 | SUNXI_FUNCTION(0x1, "gpio_out")), | ||
335 | /* Hole */ | ||
336 | SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0), | ||
337 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
338 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
339 | SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */ | ||
340 | SUNXI_FUNCTION(0x3, "jtag")), /* MS1 */ | ||
341 | SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1), | ||
342 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
343 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
344 | SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */ | ||
345 | SUNXI_FUNCTION(0x3, "jtag")), /* DI1 */ | ||
346 | SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2), | ||
347 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
348 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
349 | SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */ | ||
350 | SUNXI_FUNCTION(0x3, "uart0")), /* TX */ | ||
351 | SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3), | ||
352 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
353 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
354 | SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */ | ||
355 | SUNXI_FUNCTION(0x3, "jtag")), /* DO1 */ | ||
356 | SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4), | ||
357 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
358 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
359 | SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */ | ||
360 | SUNXI_FUNCTION(0x3, "uart0")), /* RX */ | ||
361 | SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5), | ||
362 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
363 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
364 | SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */ | ||
365 | SUNXI_FUNCTION(0x3, "jtag")), /* CK1 */ | ||
366 | /* Hole */ | ||
367 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0), | ||
368 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
369 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
370 | SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */ | ||
371 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 0)), /* PG_EINT0 */ | ||
372 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1), | ||
373 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
374 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
375 | SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */ | ||
376 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 1)), /* PG_EINT1 */ | ||
377 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2), | ||
378 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
379 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
380 | SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */ | ||
381 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 2)), /* PG_EINT2 */ | ||
382 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3), | ||
383 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
384 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
385 | SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */ | ||
386 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 3)), /* PG_EINT3 */ | ||
387 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4), | ||
388 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
389 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
390 | SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */ | ||
391 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 4)), /* PG_EINT4 */ | ||
392 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5), | ||
393 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
394 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
395 | SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */ | ||
396 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 5)), /* PG_EINT5 */ | ||
397 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6), | ||
398 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
399 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
400 | SUNXI_FUNCTION(0x2, "uart1"), /* TX */ | ||
401 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 6)), /* PG_EINT6 */ | ||
402 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7), | ||
403 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
404 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
405 | SUNXI_FUNCTION(0x2, "uart1"), /* RX */ | ||
406 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 7)), /* PG_EINT7 */ | ||
407 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8), | ||
408 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
409 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
410 | SUNXI_FUNCTION(0x2, "uart2"), /* RTS */ | ||
411 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 8)), /* PG_EINT8 */ | ||
412 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9), | ||
413 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
414 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
415 | SUNXI_FUNCTION(0x2, "uart2"), /* CTS */ | ||
416 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 9)), /* PG_EINT9 */ | ||
417 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10), | ||
418 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
419 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
420 | SUNXI_FUNCTION(0x2, "i2s1"), /* SYNC */ | ||
421 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 10)), /* PG_EINT10 */ | ||
422 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11), | ||
423 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
424 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
425 | SUNXI_FUNCTION(0x2, "i2s1"), /* CLK */ | ||
426 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 11)), /* PG_EINT11 */ | ||
427 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12), | ||
428 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
429 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
430 | SUNXI_FUNCTION(0x2, "i2s1"), /* DOUT */ | ||
431 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 12)), /* PG_EINT12 */ | ||
432 | SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13), | ||
433 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
434 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
435 | SUNXI_FUNCTION(0x2, "i2s1"), /* DIN */ | ||
436 | SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 13)), /* PG_EINT13 */ | ||
437 | /* Hole */ | ||
438 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 0), | ||
439 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
440 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
441 | SUNXI_FUNCTION(0x2, "pwm0")), | ||
442 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 1), | ||
443 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
444 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
445 | SUNXI_FUNCTION(0x2, "pwm1")), | ||
446 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 2), | ||
447 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
448 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
449 | SUNXI_FUNCTION(0x2, "i2c0")), /* SCK */ | ||
450 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 3), | ||
451 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
452 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
453 | SUNXI_FUNCTION(0x2, "i2c0")), /* SDA */ | ||
454 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 4), | ||
455 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
456 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
457 | SUNXI_FUNCTION(0x2, "i2c1")), /* SCK */ | ||
458 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 5), | ||
459 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
460 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
461 | SUNXI_FUNCTION(0x2, "i2c1")), /* SDA */ | ||
462 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 6), | ||
463 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
464 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
465 | SUNXI_FUNCTION(0x2, "spi0"), /* CS */ | ||
466 | SUNXI_FUNCTION(0x3, "uart3")), /* TX */ | ||
467 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 7), | ||
468 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
469 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
470 | SUNXI_FUNCTION(0x2, "spi0"), /* CLK */ | ||
471 | SUNXI_FUNCTION(0x3, "uart3")), /* RX */ | ||
472 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 8), | ||
473 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
474 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
475 | SUNXI_FUNCTION(0x2, "spi0"), /* DOUT */ | ||
476 | SUNXI_FUNCTION(0x3, "uart3")), /* RTS */ | ||
477 | SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 9), | ||
478 | SUNXI_FUNCTION(0x0, "gpio_in"), | ||
479 | SUNXI_FUNCTION(0x1, "gpio_out"), | ||
480 | SUNXI_FUNCTION(0x2, "spi0"), /* DIN */ | ||
481 | SUNXI_FUNCTION(0x3, "uart3")), /* CTS */ | ||
482 | }; | ||
483 | |||
484 | static const struct sunxi_pinctrl_desc sun8i_a33_pinctrl_data = { | ||
485 | .pins = sun8i_a33_pins, | ||
486 | .npins = ARRAY_SIZE(sun8i_a33_pins), | ||
487 | .irq_banks = 2, | ||
488 | }; | ||
489 | |||
490 | static int sun8i_a33_pinctrl_probe(struct platform_device *pdev) | ||
491 | { | ||
492 | return sunxi_pinctrl_init(pdev, | ||
493 | &sun8i_a33_pinctrl_data); | ||
494 | } | ||
495 | |||
496 | static const struct of_device_id sun8i_a33_pinctrl_match[] = { | ||
497 | { .compatible = "allwinner,sun8i-a33-pinctrl", }, | ||
498 | {} | ||
499 | }; | ||
500 | MODULE_DEVICE_TABLE(of, sun8i_a33_pinctrl_match); | ||
501 | |||
502 | static struct platform_driver sun8i_a33_pinctrl_driver = { | ||
503 | .probe = sun8i_a33_pinctrl_probe, | ||
504 | .driver = { | ||
505 | .name = "sun8i-a33-pinctrl", | ||
506 | .of_match_table = sun8i_a33_pinctrl_match, | ||
507 | }, | ||
508 | }; | ||
509 | module_platform_driver(sun8i_a33_pinctrl_driver); | ||
510 | |||
511 | MODULE_AUTHOR("Vishnu Patekar <vishnupatekar0510@gmail.com>"); | ||
512 | MODULE_DESCRIPTION("Allwinner a33 pinctrl driver"); | ||
513 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c index f8e171b76693..d7857c72e627 100644 --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c | |||
@@ -911,9 +911,9 @@ int sunxi_pinctrl_init(struct platform_device *pdev, | |||
911 | 911 | ||
912 | pctl->pctl_dev = pinctrl_register(pctrl_desc, | 912 | pctl->pctl_dev = pinctrl_register(pctrl_desc, |
913 | &pdev->dev, pctl); | 913 | &pdev->dev, pctl); |
914 | if (!pctl->pctl_dev) { | 914 | if (IS_ERR(pctl->pctl_dev)) { |
915 | dev_err(&pdev->dev, "couldn't register pinctrl driver\n"); | 915 | dev_err(&pdev->dev, "couldn't register pinctrl driver\n"); |
916 | return -EINVAL; | 916 | return PTR_ERR(pctl->pctl_dev); |
917 | } | 917 | } |
918 | 918 | ||
919 | pctl->chip = devm_kzalloc(&pdev->dev, sizeof(*pctl->chip), GFP_KERNEL); | 919 | pctl->chip = devm_kzalloc(&pdev->dev, sizeof(*pctl->chip), GFP_KERNEL); |
diff --git a/drivers/pinctrl/vt8500/pinctrl-wmt.c b/drivers/pinctrl/vt8500/pinctrl-wmt.c index d055d63309e4..c15316b003c5 100644 --- a/drivers/pinctrl/vt8500/pinctrl-wmt.c +++ b/drivers/pinctrl/vt8500/pinctrl-wmt.c | |||
@@ -594,9 +594,9 @@ int wmt_pinctrl_probe(struct platform_device *pdev, | |||
594 | data->dev = &pdev->dev; | 594 | data->dev = &pdev->dev; |
595 | 595 | ||
596 | data->pctl_dev = pinctrl_register(&wmt_desc, &pdev->dev, data); | 596 | data->pctl_dev = pinctrl_register(&wmt_desc, &pdev->dev, data); |
597 | if (!data->pctl_dev) { | 597 | if (IS_ERR(data->pctl_dev)) { |
598 | dev_err(&pdev->dev, "Failed to register pinctrl\n"); | 598 | dev_err(&pdev->dev, "Failed to register pinctrl\n"); |
599 | return -EINVAL; | 599 | return PTR_ERR(data->pctl_dev); |
600 | } | 600 | } |
601 | 601 | ||
602 | err = gpiochip_add(&data->gpio_chip); | 602 | err = gpiochip_add(&data->gpio_chip); |
diff --git a/include/dt-bindings/pinctrl/mt6397-pinfunc.h b/include/dt-bindings/pinctrl/mt6397-pinfunc.h new file mode 100644 index 000000000000..85739b308c2f --- /dev/null +++ b/include/dt-bindings/pinctrl/mt6397-pinfunc.h | |||
@@ -0,0 +1,256 @@ | |||
1 | #ifndef __DTS_MT6397_PINFUNC_H | ||
2 | #define __DTS_MT6397_PINFUNC_H | ||
3 | |||
4 | #include <dt-bindings/pinctrl/mt65xx.h> | ||
5 | |||
6 | #define MT6397_PIN_0_INT__FUNC_GPIO0 (MTK_PIN_NO(0) | 0) | ||
7 | #define MT6397_PIN_0_INT__FUNC_INT (MTK_PIN_NO(0) | 1) | ||
8 | |||
9 | #define MT6397_PIN_1_SRCVOLTEN__FUNC_GPIO1 (MTK_PIN_NO(1) | 0) | ||
10 | #define MT6397_PIN_1_SRCVOLTEN__FUNC_SRCVOLTEN (MTK_PIN_NO(1) | 1) | ||
11 | #define MT6397_PIN_1_SRCVOLTEN__FUNC_TEST_CK1 (MTK_PIN_NO(1) | 6) | ||
12 | |||
13 | #define MT6397_PIN_2_SRCLKEN_PERI__FUNC_GPIO2 (MTK_PIN_NO(2) | 0) | ||
14 | #define MT6397_PIN_2_SRCLKEN_PERI__FUNC_SRCLKEN_PERI (MTK_PIN_NO(2) | 1) | ||
15 | #define MT6397_PIN_2_SRCLKEN_PERI__FUNC_TEST_CK2 (MTK_PIN_NO(2) | 6) | ||
16 | |||
17 | #define MT6397_PIN_3_RTC_32K1V8__FUNC_GPIO3 (MTK_PIN_NO(3) | 0) | ||
18 | #define MT6397_PIN_3_RTC_32K1V8__FUNC_RTC_32K1V8 (MTK_PIN_NO(3) | 1) | ||
19 | #define MT6397_PIN_3_RTC_32K1V8__FUNC_TEST_CK3 (MTK_PIN_NO(3) | 6) | ||
20 | |||
21 | #define MT6397_PIN_4_WRAP_EVENT__FUNC_GPIO4 (MTK_PIN_NO(4) | 0) | ||
22 | #define MT6397_PIN_4_WRAP_EVENT__FUNC_WRAP_EVENT (MTK_PIN_NO(4) | 1) | ||
23 | |||
24 | #define MT6397_PIN_5_SPI_CLK__FUNC_GPIO5 (MTK_PIN_NO(5) | 0) | ||
25 | #define MT6397_PIN_5_SPI_CLK__FUNC_SPI_CLK (MTK_PIN_NO(5) | 1) | ||
26 | |||
27 | #define MT6397_PIN_6_SPI_CSN__FUNC_GPIO6 (MTK_PIN_NO(6) | 0) | ||
28 | #define MT6397_PIN_6_SPI_CSN__FUNC_SPI_CSN (MTK_PIN_NO(6) | 1) | ||
29 | |||
30 | #define MT6397_PIN_7_SPI_MOSI__FUNC_GPIO7 (MTK_PIN_NO(7) | 0) | ||
31 | #define MT6397_PIN_7_SPI_MOSI__FUNC_SPI_MOSI (MTK_PIN_NO(7) | 1) | ||
32 | |||
33 | #define MT6397_PIN_8_SPI_MISO__FUNC_GPIO8 (MTK_PIN_NO(8) | 0) | ||
34 | #define MT6397_PIN_8_SPI_MISO__FUNC_SPI_MISO (MTK_PIN_NO(8) | 1) | ||
35 | |||
36 | #define MT6397_PIN_9_AUD_CLK_MOSI__FUNC_GPIO9 (MTK_PIN_NO(9) | 0) | ||
37 | #define MT6397_PIN_9_AUD_CLK_MOSI__FUNC_AUD_CLK (MTK_PIN_NO(9) | 1) | ||
38 | #define MT6397_PIN_9_AUD_CLK_MOSI__FUNC_TEST_IN0 (MTK_PIN_NO(9) | 6) | ||
39 | #define MT6397_PIN_9_AUD_CLK_MOSI__FUNC_TEST_OUT0 (MTK_PIN_NO(9) | 7) | ||
40 | |||
41 | #define MT6397_PIN_10_AUD_DAT_MISO__FUNC_GPIO10 (MTK_PIN_NO(10) | 0) | ||
42 | #define MT6397_PIN_10_AUD_DAT_MISO__FUNC_AUD_MISO (MTK_PIN_NO(10) | 1) | ||
43 | #define MT6397_PIN_10_AUD_DAT_MISO__FUNC_TEST_IN1 (MTK_PIN_NO(10) | 6) | ||
44 | #define MT6397_PIN_10_AUD_DAT_MISO__FUNC_TEST_OUT1 (MTK_PIN_NO(10) | 7) | ||
45 | |||
46 | #define MT6397_PIN_11_AUD_DAT_MOSI__FUNC_GPIO11 (MTK_PIN_NO(11) | 0) | ||
47 | #define MT6397_PIN_11_AUD_DAT_MOSI__FUNC_AUD_MOSI (MTK_PIN_NO(11) | 1) | ||
48 | #define MT6397_PIN_11_AUD_DAT_MOSI__FUNC_TEST_IN2 (MTK_PIN_NO(11) | 6) | ||
49 | #define MT6397_PIN_11_AUD_DAT_MOSI__FUNC_TEST_OUT2 (MTK_PIN_NO(11) | 7) | ||
50 | |||
51 | #define MT6397_PIN_12_COL0__FUNC_GPIO12 (MTK_PIN_NO(12) | 0) | ||
52 | #define MT6397_PIN_12_COL0__FUNC_COL0_USBDL (MTK_PIN_NO(12) | 1) | ||
53 | #define MT6397_PIN_12_COL0__FUNC_EINT10_1X (MTK_PIN_NO(12) | 2) | ||
54 | #define MT6397_PIN_12_COL0__FUNC_PWM1_3X (MTK_PIN_NO(12) | 3) | ||
55 | #define MT6397_PIN_12_COL0__FUNC_TEST_IN3 (MTK_PIN_NO(12) | 6) | ||
56 | #define MT6397_PIN_12_COL0__FUNC_TEST_OUT3 (MTK_PIN_NO(12) | 7) | ||
57 | |||
58 | #define MT6397_PIN_13_COL1__FUNC_GPIO13 (MTK_PIN_NO(13) | 0) | ||
59 | #define MT6397_PIN_13_COL1__FUNC_COL1 (MTK_PIN_NO(13) | 1) | ||
60 | #define MT6397_PIN_13_COL1__FUNC_EINT11_1X (MTK_PIN_NO(13) | 2) | ||
61 | #define MT6397_PIN_13_COL1__FUNC_SCL0_2X (MTK_PIN_NO(13) | 3) | ||
62 | #define MT6397_PIN_13_COL1__FUNC_TEST_IN4 (MTK_PIN_NO(13) | 6) | ||
63 | #define MT6397_PIN_13_COL1__FUNC_TEST_OUT4 (MTK_PIN_NO(13) | 7) | ||
64 | |||
65 | #define MT6397_PIN_14_COL2__FUNC_GPIO14 (MTK_PIN_NO(14) | 0) | ||
66 | #define MT6397_PIN_14_COL2__FUNC_COL2 (MTK_PIN_NO(14) | 1) | ||
67 | #define MT6397_PIN_14_COL2__FUNC_EINT12_1X (MTK_PIN_NO(14) | 2) | ||
68 | #define MT6397_PIN_14_COL2__FUNC_SDA0_2X (MTK_PIN_NO(14) | 3) | ||
69 | #define MT6397_PIN_14_COL2__FUNC_TEST_IN5 (MTK_PIN_NO(14) | 6) | ||
70 | #define MT6397_PIN_14_COL2__FUNC_TEST_OUT5 (MTK_PIN_NO(14) | 7) | ||
71 | |||
72 | #define MT6397_PIN_15_COL3__FUNC_GPIO15 (MTK_PIN_NO(15) | 0) | ||
73 | #define MT6397_PIN_15_COL3__FUNC_COL3 (MTK_PIN_NO(15) | 1) | ||
74 | #define MT6397_PIN_15_COL3__FUNC_EINT13_1X (MTK_PIN_NO(15) | 2) | ||
75 | #define MT6397_PIN_15_COL3__FUNC_SCL1_2X (MTK_PIN_NO(15) | 3) | ||
76 | #define MT6397_PIN_15_COL3__FUNC_TEST_IN6 (MTK_PIN_NO(15) | 6) | ||
77 | #define MT6397_PIN_15_COL3__FUNC_TEST_OUT6 (MTK_PIN_NO(15) | 7) | ||
78 | |||
79 | #define MT6397_PIN_16_COL4__FUNC_GPIO16 (MTK_PIN_NO(16) | 0) | ||
80 | #define MT6397_PIN_16_COL4__FUNC_COL4 (MTK_PIN_NO(16) | 1) | ||
81 | #define MT6397_PIN_16_COL4__FUNC_EINT14_1X (MTK_PIN_NO(16) | 2) | ||
82 | #define MT6397_PIN_16_COL4__FUNC_SDA1_2X (MTK_PIN_NO(16) | 3) | ||
83 | #define MT6397_PIN_16_COL4__FUNC_TEST_IN7 (MTK_PIN_NO(16) | 6) | ||
84 | #define MT6397_PIN_16_COL4__FUNC_TEST_OUT7 (MTK_PIN_NO(16) | 7) | ||
85 | |||
86 | #define MT6397_PIN_17_COL5__FUNC_GPIO17 (MTK_PIN_NO(17) | 0) | ||
87 | #define MT6397_PIN_17_COL5__FUNC_COL5 (MTK_PIN_NO(17) | 1) | ||
88 | #define MT6397_PIN_17_COL5__FUNC_EINT15_1X (MTK_PIN_NO(17) | 2) | ||
89 | #define MT6397_PIN_17_COL5__FUNC_SCL2_2X (MTK_PIN_NO(17) | 3) | ||
90 | #define MT6397_PIN_17_COL5__FUNC_TEST_IN8 (MTK_PIN_NO(17) | 6) | ||
91 | #define MT6397_PIN_17_COL5__FUNC_TEST_OUT8 (MTK_PIN_NO(17) | 7) | ||
92 | |||
93 | #define MT6397_PIN_18_COL6__FUNC_GPIO18 (MTK_PIN_NO(18) | 0) | ||
94 | #define MT6397_PIN_18_COL6__FUNC_COL6 (MTK_PIN_NO(18) | 1) | ||
95 | #define MT6397_PIN_18_COL6__FUNC_EINT16_1X (MTK_PIN_NO(18) | 2) | ||
96 | #define MT6397_PIN_18_COL6__FUNC_SDA2_2X (MTK_PIN_NO(18) | 3) | ||
97 | #define MT6397_PIN_18_COL6__FUNC_GPIO32K_0 (MTK_PIN_NO(18) | 4) | ||
98 | #define MT6397_PIN_18_COL6__FUNC_GPIO26M_0 (MTK_PIN_NO(18) | 5) | ||
99 | #define MT6397_PIN_18_COL6__FUNC_TEST_IN9 (MTK_PIN_NO(18) | 6) | ||
100 | #define MT6397_PIN_18_COL6__FUNC_TEST_OUT9 (MTK_PIN_NO(18) | 7) | ||
101 | |||
102 | #define MT6397_PIN_19_COL7__FUNC_GPIO19 (MTK_PIN_NO(19) | 0) | ||
103 | #define MT6397_PIN_19_COL7__FUNC_COL7 (MTK_PIN_NO(19) | 1) | ||
104 | #define MT6397_PIN_19_COL7__FUNC_EINT17_1X (MTK_PIN_NO(19) | 2) | ||
105 | #define MT6397_PIN_19_COL7__FUNC_PWM2_3X (MTK_PIN_NO(19) | 3) | ||
106 | #define MT6397_PIN_19_COL7__FUNC_GPIO32K_1 (MTK_PIN_NO(19) | 4) | ||
107 | #define MT6397_PIN_19_COL7__FUNC_GPIO26M_1 (MTK_PIN_NO(19) | 5) | ||
108 | #define MT6397_PIN_19_COL7__FUNC_TEST_IN10 (MTK_PIN_NO(19) | 6) | ||
109 | #define MT6397_PIN_19_COL7__FUNC_TEST_OUT10 (MTK_PIN_NO(19) | 7) | ||
110 | |||
111 | #define MT6397_PIN_20_ROW0__FUNC_GPIO20 (MTK_PIN_NO(20) | 0) | ||
112 | #define MT6397_PIN_20_ROW0__FUNC_ROW0 (MTK_PIN_NO(20) | 1) | ||
113 | #define MT6397_PIN_20_ROW0__FUNC_EINT18_1X (MTK_PIN_NO(20) | 2) | ||
114 | #define MT6397_PIN_20_ROW0__FUNC_SCL0_3X (MTK_PIN_NO(20) | 3) | ||
115 | #define MT6397_PIN_20_ROW0__FUNC_TEST_IN11 (MTK_PIN_NO(20) | 6) | ||
116 | #define MT6397_PIN_20_ROW0__FUNC_TEST_OUT11 (MTK_PIN_NO(20) | 7) | ||
117 | |||
118 | #define MT6397_PIN_21_ROW1__FUNC_GPIO21 (MTK_PIN_NO(21) | 0) | ||
119 | #define MT6397_PIN_21_ROW1__FUNC_ROW1 (MTK_PIN_NO(21) | 1) | ||
120 | #define MT6397_PIN_21_ROW1__FUNC_EINT19_1X (MTK_PIN_NO(21) | 2) | ||
121 | #define MT6397_PIN_21_ROW1__FUNC_SDA0_3X (MTK_PIN_NO(21) | 3) | ||
122 | #define MT6397_PIN_21_ROW1__FUNC_AUD_TSTCK (MTK_PIN_NO(21) | 4) | ||
123 | #define MT6397_PIN_21_ROW1__FUNC_TEST_IN12 (MTK_PIN_NO(21) | 6) | ||
124 | #define MT6397_PIN_21_ROW1__FUNC_TEST_OUT12 (MTK_PIN_NO(21) | 7) | ||
125 | |||
126 | #define MT6397_PIN_22_ROW2__FUNC_GPIO22 (MTK_PIN_NO(22) | 0) | ||
127 | #define MT6397_PIN_22_ROW2__FUNC_ROW2 (MTK_PIN_NO(22) | 1) | ||
128 | #define MT6397_PIN_22_ROW2__FUNC_EINT20_1X (MTK_PIN_NO(22) | 2) | ||
129 | #define MT6397_PIN_22_ROW2__FUNC_SCL1_3X (MTK_PIN_NO(22) | 3) | ||
130 | #define MT6397_PIN_22_ROW2__FUNC_TEST_IN13 (MTK_PIN_NO(22) | 6) | ||
131 | #define MT6397_PIN_22_ROW2__FUNC_TEST_OUT13 (MTK_PIN_NO(22) | 7) | ||
132 | |||
133 | #define MT6397_PIN_23_ROW3__FUNC_GPIO23 (MTK_PIN_NO(23) | 0) | ||
134 | #define MT6397_PIN_23_ROW3__FUNC_ROW3 (MTK_PIN_NO(23) | 1) | ||
135 | #define MT6397_PIN_23_ROW3__FUNC_EINT21_1X (MTK_PIN_NO(23) | 2) | ||
136 | #define MT6397_PIN_23_ROW3__FUNC_SDA1_3X (MTK_PIN_NO(23) | 3) | ||
137 | #define MT6397_PIN_23_ROW3__FUNC_TEST_IN14 (MTK_PIN_NO(23) | 6) | ||
138 | #define MT6397_PIN_23_ROW3__FUNC_TEST_OUT14 (MTK_PIN_NO(23) | 7) | ||
139 | |||
140 | #define MT6397_PIN_24_ROW4__FUNC_GPIO24 (MTK_PIN_NO(24) | 0) | ||
141 | #define MT6397_PIN_24_ROW4__FUNC_ROW4 (MTK_PIN_NO(24) | 1) | ||
142 | #define MT6397_PIN_24_ROW4__FUNC_EINT22_1X (MTK_PIN_NO(24) | 2) | ||
143 | #define MT6397_PIN_24_ROW4__FUNC_SCL2_3X (MTK_PIN_NO(24) | 3) | ||
144 | #define MT6397_PIN_24_ROW4__FUNC_TEST_IN15 (MTK_PIN_NO(24) | 6) | ||
145 | #define MT6397_PIN_24_ROW4__FUNC_TEST_OUT15 (MTK_PIN_NO(24) | 7) | ||
146 | |||
147 | #define MT6397_PIN_25_ROW5__FUNC_GPIO25 (MTK_PIN_NO(25) | 0) | ||
148 | #define MT6397_PIN_25_ROW5__FUNC_ROW5 (MTK_PIN_NO(25) | 1) | ||
149 | #define MT6397_PIN_25_ROW5__FUNC_EINT23_1X (MTK_PIN_NO(25) | 2) | ||
150 | #define MT6397_PIN_25_ROW5__FUNC_SDA2_3X (MTK_PIN_NO(25) | 3) | ||
151 | #define MT6397_PIN_25_ROW5__FUNC_TEST_IN16 (MTK_PIN_NO(25) | 6) | ||
152 | #define MT6397_PIN_25_ROW5__FUNC_TEST_OUT16 (MTK_PIN_NO(25) | 7) | ||
153 | |||
154 | #define MT6397_PIN_26_ROW6__FUNC_GPIO26 (MTK_PIN_NO(26) | 0) | ||
155 | #define MT6397_PIN_26_ROW6__FUNC_ROW6 (MTK_PIN_NO(26) | 1) | ||
156 | #define MT6397_PIN_26_ROW6__FUNC_EINT24_1X (MTK_PIN_NO(26) | 2) | ||
157 | #define MT6397_PIN_26_ROW6__FUNC_PWM3_3X (MTK_PIN_NO(26) | 3) | ||
158 | #define MT6397_PIN_26_ROW6__FUNC_GPIO32K_2 (MTK_PIN_NO(26) | 4) | ||
159 | #define MT6397_PIN_26_ROW6__FUNC_GPIO26M_2 (MTK_PIN_NO(26) | 5) | ||
160 | #define MT6397_PIN_26_ROW6__FUNC_TEST_IN17 (MTK_PIN_NO(26) | 6) | ||
161 | #define MT6397_PIN_26_ROW6__FUNC_TEST_OUT17 (MTK_PIN_NO(26) | 7) | ||
162 | |||
163 | #define MT6397_PIN_27_ROW7__FUNC_GPIO27 (MTK_PIN_NO(27) | 0) | ||
164 | #define MT6397_PIN_27_ROW7__FUNC_ROW7 (MTK_PIN_NO(27) | 1) | ||
165 | #define MT6397_PIN_27_ROW7__FUNC_EINT3_1X (MTK_PIN_NO(27) | 2) | ||
166 | #define MT6397_PIN_27_ROW7__FUNC_CBUS (MTK_PIN_NO(27) | 3) | ||
167 | #define MT6397_PIN_27_ROW7__FUNC_GPIO32K_3 (MTK_PIN_NO(27) | 4) | ||
168 | #define MT6397_PIN_27_ROW7__FUNC_GPIO26M_3 (MTK_PIN_NO(27) | 5) | ||
169 | #define MT6397_PIN_27_ROW7__FUNC_TEST_IN18 (MTK_PIN_NO(27) | 6) | ||
170 | #define MT6397_PIN_27_ROW7__FUNC_TEST_OUT18 (MTK_PIN_NO(27) | 7) | ||
171 | |||
172 | #define MT6397_PIN_28_PWM1__FUNC_GPIO28 (MTK_PIN_NO(28) | 0) | ||
173 | #define MT6397_PIN_28_PWM1__FUNC_PWM1 (MTK_PIN_NO(28) | 1) | ||
174 | #define MT6397_PIN_28_PWM1__FUNC_EINT4_1X (MTK_PIN_NO(28) | 2) | ||
175 | #define MT6397_PIN_28_PWM1__FUNC_GPIO32K_4 (MTK_PIN_NO(28) | 4) | ||
176 | #define MT6397_PIN_28_PWM1__FUNC_GPIO26M_4 (MTK_PIN_NO(28) | 5) | ||
177 | #define MT6397_PIN_28_PWM1__FUNC_TEST_IN19 (MTK_PIN_NO(28) | 6) | ||
178 | #define MT6397_PIN_28_PWM1__FUNC_TEST_OUT19 (MTK_PIN_NO(28) | 7) | ||
179 | |||
180 | #define MT6397_PIN_29_PWM2__FUNC_GPIO29 (MTK_PIN_NO(29) | 0) | ||
181 | #define MT6397_PIN_29_PWM2__FUNC_PWM2 (MTK_PIN_NO(29) | 1) | ||
182 | #define MT6397_PIN_29_PWM2__FUNC_EINT5_1X (MTK_PIN_NO(29) | 2) | ||
183 | #define MT6397_PIN_29_PWM2__FUNC_GPIO32K_5 (MTK_PIN_NO(29) | 4) | ||
184 | #define MT6397_PIN_29_PWM2__FUNC_GPIO26M_5 (MTK_PIN_NO(29) | 5) | ||
185 | #define MT6397_PIN_29_PWM2__FUNC_TEST_IN20 (MTK_PIN_NO(29) | 6) | ||
186 | #define MT6397_PIN_29_PWM2__FUNC_TEST_OUT20 (MTK_PIN_NO(29) | 7) | ||
187 | |||
188 | #define MT6397_PIN_30_PWM3__FUNC_GPIO30 (MTK_PIN_NO(30) | 0) | ||
189 | #define MT6397_PIN_30_PWM3__FUNC_PWM3 (MTK_PIN_NO(30) | 1) | ||
190 | #define MT6397_PIN_30_PWM3__FUNC_EINT6_1X (MTK_PIN_NO(30) | 2) | ||
191 | #define MT6397_PIN_30_PWM3__FUNC_COL0 (MTK_PIN_NO(30) | 3) | ||
192 | #define MT6397_PIN_30_PWM3__FUNC_GPIO32K_6 (MTK_PIN_NO(30) | 4) | ||
193 | #define MT6397_PIN_30_PWM3__FUNC_GPIO26M_6 (MTK_PIN_NO(30) | 5) | ||
194 | #define MT6397_PIN_30_PWM3__FUNC_TEST_IN21 (MTK_PIN_NO(30) | 6) | ||
195 | #define MT6397_PIN_30_PWM3__FUNC_TEST_OUT21 (MTK_PIN_NO(30) | 7) | ||
196 | |||
197 | #define MT6397_PIN_31_SCL0__FUNC_GPIO31 (MTK_PIN_NO(31) | 0) | ||
198 | #define MT6397_PIN_31_SCL0__FUNC_SCL0 (MTK_PIN_NO(31) | 1) | ||
199 | #define MT6397_PIN_31_SCL0__FUNC_EINT7_1X (MTK_PIN_NO(31) | 2) | ||
200 | #define MT6397_PIN_31_SCL0__FUNC_PWM1_2X (MTK_PIN_NO(31) | 3) | ||
201 | #define MT6397_PIN_31_SCL0__FUNC_TEST_IN22 (MTK_PIN_NO(31) | 6) | ||
202 | #define MT6397_PIN_31_SCL0__FUNC_TEST_OUT22 (MTK_PIN_NO(31) | 7) | ||
203 | |||
204 | #define MT6397_PIN_32_SDA0__FUNC_GPIO32 (MTK_PIN_NO(32) | 0) | ||
205 | #define MT6397_PIN_32_SDA0__FUNC_SDA0 (MTK_PIN_NO(32) | 1) | ||
206 | #define MT6397_PIN_32_SDA0__FUNC_EINT8_1X (MTK_PIN_NO(32) | 2) | ||
207 | #define MT6397_PIN_32_SDA0__FUNC_TEST_IN23 (MTK_PIN_NO(32) | 6) | ||
208 | #define MT6397_PIN_32_SDA0__FUNC_TEST_OUT23 (MTK_PIN_NO(32) | 7) | ||
209 | |||
210 | #define MT6397_PIN_33_SCL1__FUNC_GPIO33 (MTK_PIN_NO(33) | 0) | ||
211 | #define MT6397_PIN_33_SCL1__FUNC_SCL1 (MTK_PIN_NO(33) | 1) | ||
212 | #define MT6397_PIN_33_SCL1__FUNC_EINT9_1X (MTK_PIN_NO(33) | 2) | ||
213 | #define MT6397_PIN_33_SCL1__FUNC_PWM2_2X (MTK_PIN_NO(33) | 3) | ||
214 | #define MT6397_PIN_33_SCL1__FUNC_TEST_IN24 (MTK_PIN_NO(33) | 6) | ||
215 | #define MT6397_PIN_33_SCL1__FUNC_TEST_OUT24 (MTK_PIN_NO(33) | 7) | ||
216 | |||
217 | #define MT6397_PIN_34_SDA1__FUNC_GPIO34 (MTK_PIN_NO(34) | 0) | ||
218 | #define MT6397_PIN_34_SDA1__FUNC_SDA1 (MTK_PIN_NO(34) | 1) | ||
219 | #define MT6397_PIN_34_SDA1__FUNC_EINT0_1X (MTK_PIN_NO(34) | 2) | ||
220 | #define MT6397_PIN_34_SDA1__FUNC_TEST_IN25 (MTK_PIN_NO(34) | 6) | ||
221 | #define MT6397_PIN_34_SDA1__FUNC_TEST_OUT25 (MTK_PIN_NO(34) | 7) | ||
222 | |||
223 | #define MT6397_PIN_35_SCL2__FUNC_GPIO35 (MTK_PIN_NO(35) | 0) | ||
224 | #define MT6397_PIN_35_SCL2__FUNC_SCL2 (MTK_PIN_NO(35) | 1) | ||
225 | #define MT6397_PIN_35_SCL2__FUNC_EINT1_1X (MTK_PIN_NO(35) | 2) | ||
226 | #define MT6397_PIN_35_SCL2__FUNC_PWM3_2X (MTK_PIN_NO(35) | 3) | ||
227 | #define MT6397_PIN_35_SCL2__FUNC_TEST_IN26 (MTK_PIN_NO(35) | 6) | ||
228 | #define MT6397_PIN_35_SCL2__FUNC_TEST_OUT26 (MTK_PIN_NO(35) | 7) | ||
229 | |||
230 | #define MT6397_PIN_36_SDA2__FUNC_GPIO36 (MTK_PIN_NO(36) | 0) | ||
231 | #define MT6397_PIN_36_SDA2__FUNC_SDA2 (MTK_PIN_NO(36) | 1) | ||
232 | #define MT6397_PIN_36_SDA2__FUNC_EINT2_1X (MTK_PIN_NO(36) | 2) | ||
233 | #define MT6397_PIN_36_SDA2__FUNC_TEST_IN27 (MTK_PIN_NO(36) | 6) | ||
234 | #define MT6397_PIN_36_SDA2__FUNC_TEST_OUT27 (MTK_PIN_NO(36) | 7) | ||
235 | |||
236 | #define MT6397_PIN_37_HDMISD__FUNC_GPIO37 (MTK_PIN_NO(37) | 0) | ||
237 | #define MT6397_PIN_37_HDMISD__FUNC_HDMISD (MTK_PIN_NO(37) | 1) | ||
238 | #define MT6397_PIN_37_HDMISD__FUNC_TEST_IN28 (MTK_PIN_NO(37) | 6) | ||
239 | #define MT6397_PIN_37_HDMISD__FUNC_TEST_OUT28 (MTK_PIN_NO(37) | 7) | ||
240 | |||
241 | #define MT6397_PIN_38_HDMISCK__FUNC_GPIO38 (MTK_PIN_NO(38) | 0) | ||
242 | #define MT6397_PIN_38_HDMISCK__FUNC_HDMISCK (MTK_PIN_NO(38) | 1) | ||
243 | #define MT6397_PIN_38_HDMISCK__FUNC_TEST_IN29 (MTK_PIN_NO(38) | 6) | ||
244 | #define MT6397_PIN_38_HDMISCK__FUNC_TEST_OUT29 (MTK_PIN_NO(38) | 7) | ||
245 | |||
246 | #define MT6397_PIN_39_HTPLG__FUNC_GPIO39 (MTK_PIN_NO(39) | 0) | ||
247 | #define MT6397_PIN_39_HTPLG__FUNC_HTPLG (MTK_PIN_NO(39) | 1) | ||
248 | #define MT6397_PIN_39_HTPLG__FUNC_TEST_IN30 (MTK_PIN_NO(39) | 6) | ||
249 | #define MT6397_PIN_39_HTPLG__FUNC_TEST_OUT30 (MTK_PIN_NO(39) | 7) | ||
250 | |||
251 | #define MT6397_PIN_40_CEC__FUNC_GPIO40 (MTK_PIN_NO(40) | 0) | ||
252 | #define MT6397_PIN_40_CEC__FUNC_CEC (MTK_PIN_NO(40) | 1) | ||
253 | #define MT6397_PIN_40_CEC__FUNC_TEST_IN31 (MTK_PIN_NO(40) | 6) | ||
254 | #define MT6397_PIN_40_CEC__FUNC_TEST_OUT31 (MTK_PIN_NO(40) | 7) | ||
255 | |||
256 | #endif /* __DTS_MT6397_PINFUNC_H */ | ||
diff --git a/include/linux/pinctrl/consumer.h b/include/linux/pinctrl/consumer.h index 18eccefea06e..d7e5d608faa7 100644 --- a/include/linux/pinctrl/consumer.h +++ b/include/linux/pinctrl/consumer.h | |||
@@ -142,7 +142,7 @@ static inline struct pinctrl * __must_check pinctrl_get_select( | |||
142 | s = pinctrl_lookup_state(p, name); | 142 | s = pinctrl_lookup_state(p, name); |
143 | if (IS_ERR(s)) { | 143 | if (IS_ERR(s)) { |
144 | pinctrl_put(p); | 144 | pinctrl_put(p); |
145 | return ERR_PTR(PTR_ERR(s)); | 145 | return ERR_CAST(s); |
146 | } | 146 | } |
147 | 147 | ||
148 | ret = pinctrl_select_state(p, s); | 148 | ret = pinctrl_select_state(p, s); |
diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h index 66e4697516de..9ba59fcba549 100644 --- a/include/linux/pinctrl/pinctrl.h +++ b/include/linux/pinctrl/pinctrl.h | |||
@@ -127,7 +127,7 @@ struct pinctrl_ops { | |||
127 | */ | 127 | */ |
128 | struct pinctrl_desc { | 128 | struct pinctrl_desc { |
129 | const char *name; | 129 | const char *name; |
130 | struct pinctrl_pin_desc const *pins; | 130 | const struct pinctrl_pin_desc *pins; |
131 | unsigned int npins; | 131 | unsigned int npins; |
132 | const struct pinctrl_ops *pctlops; | 132 | const struct pinctrl_ops *pctlops; |
133 | const struct pinmux_ops *pmxops; | 133 | const struct pinmux_ops *pmxops; |
diff --git a/include/linux/pinctrl/pinmux.h b/include/linux/pinctrl/pinmux.h index 511bda9ed4bf..ace60d775b20 100644 --- a/include/linux/pinctrl/pinmux.h +++ b/include/linux/pinctrl/pinmux.h | |||
@@ -56,6 +56,9 @@ struct pinctrl_dev; | |||
56 | * depending on whether the GPIO is configured as input or output, | 56 | * depending on whether the GPIO is configured as input or output, |
57 | * a direction selector function may be implemented as a backing | 57 | * a direction selector function may be implemented as a backing |
58 | * to the GPIO controllers that need pin muxing. | 58 | * to the GPIO controllers that need pin muxing. |
59 | * @strict: do not allow simultaneous use of the same pin for GPIO and another | ||
60 | * function. Check both gpio_owner and mux_owner strictly before approving | ||
61 | * the pin request. | ||
59 | */ | 62 | */ |
60 | struct pinmux_ops { | 63 | struct pinmux_ops { |
61 | int (*request) (struct pinctrl_dev *pctldev, unsigned offset); | 64 | int (*request) (struct pinctrl_dev *pctldev, unsigned offset); |
@@ -66,7 +69,7 @@ struct pinmux_ops { | |||
66 | int (*get_function_groups) (struct pinctrl_dev *pctldev, | 69 | int (*get_function_groups) (struct pinctrl_dev *pctldev, |
67 | unsigned selector, | 70 | unsigned selector, |
68 | const char * const **groups, | 71 | const char * const **groups, |
69 | unsigned * const num_groups); | 72 | unsigned *num_groups); |
70 | int (*set_mux) (struct pinctrl_dev *pctldev, unsigned func_selector, | 73 | int (*set_mux) (struct pinctrl_dev *pctldev, unsigned func_selector, |
71 | unsigned group_selector); | 74 | unsigned group_selector); |
72 | int (*gpio_request_enable) (struct pinctrl_dev *pctldev, | 75 | int (*gpio_request_enable) (struct pinctrl_dev *pctldev, |
@@ -79,6 +82,7 @@ struct pinmux_ops { | |||
79 | struct pinctrl_gpio_range *range, | 82 | struct pinctrl_gpio_range *range, |
80 | unsigned offset, | 83 | unsigned offset, |
81 | bool input); | 84 | bool input); |
85 | bool strict; | ||
82 | }; | 86 | }; |
83 | 87 | ||
84 | #endif /* CONFIG_PINMUX */ | 88 | #endif /* CONFIG_PINMUX */ |