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
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
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.
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.
23 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
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%)
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
55 select DM_SCSI if SCSI
57 - select GPIO_EXTRA_HEADER
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
68 obj-y += dram_helpers.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
81 +#include <sunxi_gpio.h>
82 #include <asm/cache.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
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>
97 +#include <sunxi_gpio.h>
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
106 #include <linux/bitops.h>
107 #include <linux/delay.h>
108 #include <linux/libfdt.h>
109 +#include <sunxi_gpio.h>
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
118 # (C) Copyright 2000-2003
119 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
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
130 #include <asm/armv7.h>
132 #include <asm/gpio.h>
133 +#include <sunxi_gpio.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
142 #include <w1-eeprom.h>
143 #include <dm/device-internal.h>
145 -#include <asm/arch/gpio.h>
146 +#include <sunxi_gpio.h>
148 #include <extension_board.h>
150 diff --git a/arch/arm/mach-sunxi/pinmux.c b/board/sunxi/pinctrl.c
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
158 * (C) Copyright 2007-2011
159 * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
160 * Tom Cubie <tangliang@allwinnertech.com>
162 + * Low level GPIO/pin controller access functions, to be shared by non-DM
163 + * SPL code and the DM pinctrl/GPIO drivers.
168 -#include <asm/arch/gpio.h>
169 +#include <sunxi_gpio.h>
171 void sunxi_gpio_set_cfgbank(void *bank_base, int pin_offset, u32 val)
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
178 #include <dm/lists.h>
181 +#include <sunxi_gpio.h>
183 static int axp_gpio_set_value(struct udevice *dev, unsigned pin, int val);
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
191 #include <asm/gpio.h>
192 #include <dt-bindings/gpio/gpio.h>
193 +#include <sunxi_gpio.h>
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
205 +#include <sunxi_gpio.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
221 +#include <sunxi_gpio.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>
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
234 #include <asm/arch/cpu.h>
235 #include <asm/arch/mmc.h>
236 #include <linux/delay.h>
237 +#include <sunxi_gpio.h>
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
246 #include <dm/pinctrl.h>
249 +#include <sunxi_gpio.h>
251 #include <asm/gpio.h>
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
258 #include <linux/delay.h>
260 #include <asm/gpio.h>
261 +#include <sunxi_gpio.h>
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
272 #include <mipi_display.h>
273 -#include <asm/arch/gpio.h>
274 #include <asm/gpio.h>
275 #include <linux/delay.h>
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
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
294 #include <asm/arch/lcdc.h>
295 #include <asm/global_data.h>
296 #include <asm/gpio.h>
297 +#include <sunxi_gpio.h>
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