54b975fa25ebf00981f1df5b42cb6318948d72b1
[openwrt/staging/wigyori.git] / package / boot / uboot-sunxi / patches / 4005-pinctrl-sunxi-move-pinctrl-code-and-remove-GPIO_EXTR.patch
1 From 3e291cf021a0fd248c4a4d86e8bb2b65ca1b0f5c Mon Sep 17 00:00:00 2001
2 From: Andre Przywara <andre.przywara@arm.com>
3 Date: Tue, 6 Sep 2022 10:36:38 +0100
4 Subject: [PATCH 4005/4031] pinctrl: sunxi: move pinctrl code and remove
5 GPIO_EXTRA_HEADER
6
7 U-Boot's generic GPIO_EXTRA_HEADER is a convenience symbol to allow code
8 to more easily include platform specific GPIO headers. This should not
9 be needed in a DM world anymore, since the generic GPIO framework
10 handles that nicely.
11 For Allwinner boards we still need to deal with non-DM GPIO in the SPL,
12 but this should become the exception, not the rule.
13
14 Make this more obvious by removing the definition of GPIO_EXTRA_HEADER,
15 and just force every legacy user of platform specific GPIO to include
16 the new sunxi_gpio.h header explicitly. Everyone doing so should feel
17 ashamed and should find a way to avoid it from now on.
18 This also moves and renames the existing sunxi-specific low level
19 pinctrl routines from arch/arm/mach-sunxi into board/sunxi, and the
20 gpio.h header to the generic include/ directory, so the common code can
21 be shared outside of arch/arm.
22
23 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
24 ---
25 arch/arm/Kconfig | 1 -
26 arch/arm/mach-sunxi/Makefile | 1 -
27 arch/arm/mach-sunxi/board.c | 1 +
28 arch/arm/mach-sunxi/dram_suniv.c | 2 +-
29 arch/arm/mach-sunxi/spl_spi_sunxi.c | 1 +
30 board/sunxi/Makefile | 1 +
31 board/sunxi/board.c | 1 +
32 board/sunxi/chip.c | 2 +-
33 arch/arm/mach-sunxi/pinmux.c => board/sunxi/pinctrl.c | 5 ++++-
34 drivers/gpio/axp_gpio.c | 1 +
35 drivers/gpio/sunxi_gpio.c | 1 +
36 drivers/i2c/sun6i_p2wi.c | 2 +-
37 drivers/i2c/sun8i_rsb.c | 2 +-
38 drivers/mmc/sunxi_mmc.c | 1 +
39 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 1 +
40 drivers/video/hitachi_tx18d42vm_lcd.c | 1 +
41 drivers/video/ssd2828.c | 1 -
42 drivers/video/sunxi/sunxi_display.c | 1 +
43 drivers/video/sunxi/sunxi_lcd.c | 1 +
44 .../include/asm/arch-sunxi/gpio.h => include/sunxi_gpio.h | 0
45 20 files changed, 19 insertions(+), 8 deletions(-)
46 rename arch/arm/mach-sunxi/pinmux.c => board/sunxi/pinctrl.c (93%)
47 rename arch/arm/include/asm/arch-sunxi/gpio.h => include/sunxi_gpio.h (100%)
48
49 diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
50 index d5a6d293ce..2904e91ad3 100644
51 --- a/arch/arm/Kconfig
52 +++ b/arch/arm/Kconfig
53 @@ -1106,7 +1106,6 @@ config ARCH_SUNXI
54 select DM_MMC if MMC
55 select DM_SCSI if SCSI
56 select DM_SERIAL
57 - select GPIO_EXTRA_HEADER
58 select OF_BOARD_SETUP
59 select OF_CONTROL
60 select OF_SEPARATE
61 diff --git a/arch/arm/mach-sunxi/Makefile b/arch/arm/mach-sunxi/Makefile
62 index 58f807cb82..671211e932 100644
63 --- a/arch/arm/mach-sunxi/Makefile
64 +++ b/arch/arm/mach-sunxi/Makefile
65 @@ -10,7 +10,6 @@ obj-y += board.o
66 obj-y += clock.o
67 obj-y += cpu_info.o
68 obj-y += dram_helpers.o
69 -obj-y += pinmux.o
70 obj-$(CONFIG_SUN6I_PRCM) += prcm.o
71 obj-$(CONFIG_AXP_PMIC_BUS) += pmic_bus.o
72 obj-$(CONFIG_MACH_SUNIV) += clock_sun6i.o
73 diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
74 index 391a65a549..ec46ab9279 100644
75 --- a/arch/arm/mach-sunxi/board.c
76 +++ b/arch/arm/mach-sunxi/board.c
77 @@ -17,6 +17,7 @@
78 #include <i2c.h>
79 #include <serial.h>
80 #include <spl.h>
81 +#include <sunxi_gpio.h>
82 #include <asm/cache.h>
83 #include <asm/gpio.h>
84 #include <asm/io.h>
85 diff --git a/arch/arm/mach-sunxi/dram_suniv.c b/arch/arm/mach-sunxi/dram_suniv.c
86 index 3aa3ce7627..9e583e1855 100644
87 --- a/arch/arm/mach-sunxi/dram_suniv.c
88 +++ b/arch/arm/mach-sunxi/dram_suniv.c
89 @@ -13,10 +13,10 @@
90 #include <asm/io.h>
91 #include <asm/arch/clock.h>
92 #include <asm/arch/dram.h>
93 -#include <asm/arch/gpio.h>
94 #include <linux/bitops.h>
95 #include <linux/delay.h>
96 #include <hang.h>
97 +#include <sunxi_gpio.h>
98
99 #define SDR_T_CAS (0x2)
100 #define SDR_T_RAS (0x8)
101 diff --git a/arch/arm/mach-sunxi/spl_spi_sunxi.c b/arch/arm/mach-sunxi/spl_spi_sunxi.c
102 index 81159cfee6..c2410dd7bb 100644
103 --- a/arch/arm/mach-sunxi/spl_spi_sunxi.c
104 +++ b/arch/arm/mach-sunxi/spl_spi_sunxi.c
105 @@ -13,6 +13,7 @@
106 #include <linux/bitops.h>
107 #include <linux/delay.h>
108 #include <linux/libfdt.h>
109 +#include <sunxi_gpio.h>
110
111 #ifdef CONFIG_SPL_OS_BOOT
112 #error CONFIG_SPL_OS_BOOT is not supported yet
113 diff --git a/board/sunxi/Makefile b/board/sunxi/Makefile
114 index d96b7897b6..7763b032c8 100644
115 --- a/board/sunxi/Makefile
116 +++ b/board/sunxi/Makefile
117 @@ -7,6 +7,7 @@
118 # (C) Copyright 2000-2003
119 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
120 obj-y += board.o
121 +obj-y += pinctrl.o
122 obj-$(CONFIG_SUN7I_GMAC) += gmac.o
123 obj-$(CONFIG_MACH_SUN4I) += dram_sun4i_auto.o
124 obj-$(CONFIG_MACH_SUN5I) += dram_sun5i_auto.o
125 diff --git a/board/sunxi/board.c b/board/sunxi/board.c
126 index 9900c66ed0..661137f43c 100644
127 --- a/board/sunxi/board.c
128 +++ b/board/sunxi/board.c
129 @@ -38,6 +38,7 @@
130 #include <asm/armv7.h>
131 #endif
132 #include <asm/gpio.h>
133 +#include <sunxi_gpio.h>
134 #include <asm/io.h>
135 #include <u-boot/crc.h>
136 #include <env_internal.h>
137 diff --git a/board/sunxi/chip.c b/board/sunxi/chip.c
138 index cde04bebe9..eeee6319e7 100644
139 --- a/board/sunxi/chip.c
140 +++ b/board/sunxi/chip.c
141 @@ -12,7 +12,7 @@
142 #include <w1-eeprom.h>
143 #include <dm/device-internal.h>
144
145 -#include <asm/arch/gpio.h>
146 +#include <sunxi_gpio.h>
147
148 #include <extension_board.h>
149
150 diff --git a/arch/arm/mach-sunxi/pinmux.c b/board/sunxi/pinctrl.c
151 similarity index 93%
152 rename from arch/arm/mach-sunxi/pinmux.c
153 rename to board/sunxi/pinctrl.c
154 index 91acbf9269..aac37f639b 100644
155 --- a/arch/arm/mach-sunxi/pinmux.c
156 +++ b/board/sunxi/pinctrl.c
157 @@ -3,11 +3,14 @@
158 * (C) Copyright 2007-2011
159 * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
160 * Tom Cubie <tangliang@allwinnertech.com>
161 + *
162 + * Low level GPIO/pin controller access functions, to be shared by non-DM
163 + * SPL code and the DM pinctrl/GPIO drivers.
164 */
165
166 #include <common.h>
167 #include <asm/io.h>
168 -#include <asm/arch/gpio.h>
169 +#include <sunxi_gpio.h>
170
171 void sunxi_gpio_set_cfgbank(void *bank_base, int pin_offset, u32 val)
172 {
173 diff --git a/drivers/gpio/axp_gpio.c b/drivers/gpio/axp_gpio.c
174 index 35585dc8ac..14a99ce4c9 100644
175 --- a/drivers/gpio/axp_gpio.c
176 +++ b/drivers/gpio/axp_gpio.c
177 @@ -14,6 +14,7 @@
178 #include <dm/lists.h>
179 #include <dm/root.h>
180 #include <errno.h>
181 +#include <sunxi_gpio.h>
182
183 static int axp_gpio_set_value(struct udevice *dev, unsigned pin, int val);
184
185 diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
186 index 767996c10f..49a6be6fd0 100644
187 --- a/drivers/gpio/sunxi_gpio.c
188 +++ b/drivers/gpio/sunxi_gpio.c
189 @@ -17,6 +17,7 @@
190 #include <asm/io.h>
191 #include <asm/gpio.h>
192 #include <dt-bindings/gpio/gpio.h>
193 +#include <sunxi_gpio.h>
194
195 #if !CONFIG_IS_ENABLED(DM_GPIO)
196 static int sunxi_gpio_output(u32 pin, u32 val)
197 diff --git a/drivers/i2c/sun6i_p2wi.c b/drivers/i2c/sun6i_p2wi.c
198 index d221323295..b8e07a533c 100644
199 --- a/drivers/i2c/sun6i_p2wi.c
200 +++ b/drivers/i2c/sun6i_p2wi.c
201 @@ -20,10 +20,10 @@
202 #include <errno.h>
203 #include <i2c.h>
204 #include <reset.h>
205 +#include <sunxi_gpio.h>
206 #include <time.h>
207 #include <asm/io.h>
208 #include <asm/arch/cpu.h>
209 -#include <asm/arch/gpio.h>
210 #include <asm/arch/p2wi.h>
211 #include <asm/arch/prcm.h>
212 #include <asm/arch/sys_proto.h>
213 diff --git a/drivers/i2c/sun8i_rsb.c b/drivers/i2c/sun8i_rsb.c
214 index 47fa05b6d1..f36f2c7afa 100644
215 --- a/drivers/i2c/sun8i_rsb.c
216 +++ b/drivers/i2c/sun8i_rsb.c
217 @@ -14,10 +14,10 @@
218 #include <dm.h>
219 #include <errno.h>
220 #include <i2c.h>
221 +#include <sunxi_gpio.h>
222 #include <reset.h>
223 #include <time.h>
224 #include <asm/arch/cpu.h>
225 -#include <asm/arch/gpio.h>
226 #include <asm/arch/prcm.h>
227 #include <asm/arch/rsb.h>
228
229 diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
230 index 23bc7da917..03e33753fc 100644
231 --- a/drivers/mmc/sunxi_mmc.c
232 +++ b/drivers/mmc/sunxi_mmc.c
233 @@ -27,6 +27,7 @@
234 #include <asm/arch/cpu.h>
235 #include <asm/arch/mmc.h>
236 #include <linux/delay.h>
237 +#include <sunxi_gpio.h>
238
239 #ifndef CCM_MMC_CTRL_MODE_SEL_NEW
240 #define CCM_MMC_CTRL_MODE_SEL_NEW 0
241 diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
242 index b0144edcf4..4c52e3fa74 100644
243 --- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
244 +++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
245 @@ -7,6 +7,7 @@
246 #include <dm/pinctrl.h>
247 #include <errno.h>
248 #include <malloc.h>
249 +#include <sunxi_gpio.h>
250
251 #include <asm/gpio.h>
252
253 diff --git a/drivers/video/hitachi_tx18d42vm_lcd.c b/drivers/video/hitachi_tx18d42vm_lcd.c
254 index 87c4d27438..95984fe3d3 100644
255 --- a/drivers/video/hitachi_tx18d42vm_lcd.c
256 +++ b/drivers/video/hitachi_tx18d42vm_lcd.c
257 @@ -10,6 +10,7 @@
258 #include <linux/delay.h>
259
260 #include <asm/gpio.h>
261 +#include <sunxi_gpio.h>
262 #include <errno.h>
263
264 /*
265 diff --git a/drivers/video/ssd2828.c b/drivers/video/ssd2828.c
266 index 4cdcbe7755..948f5e74d0 100644
267 --- a/drivers/video/ssd2828.c
268 +++ b/drivers/video/ssd2828.c
269 @@ -12,7 +12,6 @@
270 #include <common.h>
271 #include <malloc.h>
272 #include <mipi_display.h>
273 -#include <asm/arch/gpio.h>
274 #include <asm/gpio.h>
275 #include <linux/delay.h>
276
277 diff --git a/drivers/video/sunxi/sunxi_display.c b/drivers/video/sunxi/sunxi_display.c
278 index 9110a48482..8da44a1bb6 100644
279 --- a/drivers/video/sunxi/sunxi_display.c
280 +++ b/drivers/video/sunxi/sunxi_display.c
281 @@ -31,6 +31,7 @@
282 #include <malloc.h>
283 #include <video.h>
284 #include <dm/uclass-internal.h>
285 +#include <sunxi_gpio.h>
286 #include "../videomodes.h"
287 #include "../anx9804.h"
288 #include "../hitachi_tx18d42vm_lcd.h"
289 diff --git a/drivers/video/sunxi/sunxi_lcd.c b/drivers/video/sunxi/sunxi_lcd.c
290 index 8b9c3b2bfa..7a01cc343c 100644
291 --- a/drivers/video/sunxi/sunxi_lcd.c
292 +++ b/drivers/video/sunxi/sunxi_lcd.c
293 @@ -17,6 +17,7 @@
294 #include <asm/arch/lcdc.h>
295 #include <asm/global_data.h>
296 #include <asm/gpio.h>
297 +#include <sunxi_gpio.h>
298
299 struct sunxi_lcd_priv {
300 struct display_timing timing;
301 diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/include/sunxi_gpio.h
302 similarity index 100%
303 rename from arch/arm/include/asm/arch-sunxi/gpio.h
304 rename to include/sunxi_gpio.h
305 --
306 2.20.1
307