* [PATCH 0/3] sunxi: Cleanup to prepare for DM_GPIO/DM_PINCTRL
@ 2021-09-11 21:50 Samuel Holland
2021-09-11 21:50 ` [PATCH 1/3] sunxi: Clean up inclusions of asm/arch/gpio.h Samuel Holland
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Samuel Holland @ 2021-09-11 21:50 UTC (permalink / raw)
To: u-boot, Jagan Teki, Andre Przywara; +Cc: Samuel Holland
I have a patch series in progresss to migrate sunxi to a DM_PINCTRL
driver and convert the remaining legacy GPIO users (outside of SPL).
This is one of several small independent sets of preparatory patches
I will be sending in order to minimize the size of the main series
(which has >100 patches at this point).
Samuel Holland (3):
sunxi: Clean up inclusions of asm/arch/gpio.h
sunxi: gpio: Remove name_to_gpio macro
sunxi: gpio: Remove bank-specific size macros
arch/arm/include/asm/arch-sunxi/gpio.h | 15 ++-------------
arch/arm/mach-sunxi/board.c | 1 -
arch/arm/mach-sunxi/clock.c | 1 -
arch/arm/mach-sunxi/clock_sun4i.c | 1 -
board/sunxi/board.c | 1 -
board/sunxi/gmac.c | 1 -
drivers/gpio/axp_gpio.c | 1 -
drivers/gpio/sunxi_gpio.c | 3 ---
drivers/mmc/sunxi_mmc.c | 3 +--
drivers/net/sun8i_emac.c | 5 +----
drivers/power/axp809.c | 1 -
drivers/power/axp818.c | 1 -
drivers/spi/spi-sunxi.c | 2 +-
drivers/usb/musb-new/sunxi.c | 2 --
drivers/video/Kconfig | 10 +++++-----
drivers/video/hitachi_tx18d42vm_lcd.c | 6 +++---
drivers/video/sunxi/sunxi_display.c | 11 +++++------
drivers/video/sunxi/sunxi_lcd.c | 1 -
18 files changed, 18 insertions(+), 48 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] sunxi: Clean up inclusions of asm/arch/gpio.h
2021-09-11 21:50 [PATCH 0/3] sunxi: Cleanup to prepare for DM_GPIO/DM_PINCTRL Samuel Holland
@ 2021-09-11 21:50 ` Samuel Holland
2021-09-13 23:53 ` Andre Przywara
2021-09-11 21:50 ` [PATCH 2/3] sunxi: gpio: Remove name_to_gpio macro Samuel Holland
2021-09-11 21:50 ` [PATCH 3/3] sunxi: gpio: Remove bank-specific size macros Samuel Holland
2 siblings, 1 reply; 7+ messages in thread
From: Samuel Holland @ 2021-09-11 21:50 UTC (permalink / raw)
To: u-boot, Jagan Teki, Andre Przywara; +Cc: Samuel Holland
As part of migrating to DM_GPIO and DM_PINCTRL, eventually we will
remove the asm/arch/gpio.h header. In preparation, clean up the various
files that include it.
Some files did not contain any GPIO code at all, so this header was
completely unused.
A few files contained only legacy platform-specific GPIO code for
setting up pin muxes. They were left unchanged, as that code will be
completely removed by the DM_PINCTRL migration.
The remaining files contain some combination of DM_GPIO and legacy GPIO
code. For those, switch to including asm/gpio.h (if it wasn't included
already). Right now, this header provides both sets of functions,
because ARCH_SUNXI selects GPIO_EXTRA_HEADER. This will still be the
right header to include once the DM_GPIO migration is complete and
GPIO_EXTRA_HEADER is no longer needed.
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
arch/arm/mach-sunxi/board.c | 1 -
arch/arm/mach-sunxi/clock.c | 1 -
arch/arm/mach-sunxi/clock_sun4i.c | 1 -
board/sunxi/board.c | 1 -
board/sunxi/gmac.c | 1 -
drivers/gpio/axp_gpio.c | 1 -
drivers/gpio/sunxi_gpio.c | 1 -
drivers/mmc/sunxi_mmc.c | 3 +--
drivers/net/sun8i_emac.c | 5 +----
drivers/power/axp809.c | 1 -
drivers/power/axp818.c | 1 -
drivers/usb/musb-new/sunxi.c | 2 --
drivers/video/sunxi/sunxi_display.c | 1 -
drivers/video/sunxi/sunxi_lcd.c | 1 -
14 files changed, 2 insertions(+), 19 deletions(-)
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index d9b04f75fc4..373cb56db49 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -21,7 +21,6 @@
#include <asm/gpio.h>
#include <asm/io.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/spl.h>
#include <asm/arch/sys_proto.h>
#include <asm/arch/timer.h>
diff --git a/arch/arm/mach-sunxi/clock.c b/arch/arm/mach-sunxi/clock.c
index f591affebf7..de7e8752988 100644
--- a/arch/arm/mach-sunxi/clock.c
+++ b/arch/arm/mach-sunxi/clock.c
@@ -10,7 +10,6 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/prcm.h>
#include <asm/arch/gtbus.h>
#include <asm/arch/sys_proto.h>
diff --git a/arch/arm/mach-sunxi/clock_sun4i.c b/arch/arm/mach-sunxi/clock_sun4i.c
index 57ee018eaa2..471609764d2 100644
--- a/arch/arm/mach-sunxi/clock_sun4i.c
+++ b/arch/arm/mach-sunxi/clock_sun4i.c
@@ -12,7 +12,6 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/sys_proto.h>
#ifdef CONFIG_SPL_BUILD
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 2b7d655678d..dcd7f0b4375 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -25,7 +25,6 @@
#include <asm/arch/cpu.h>
#include <asm/arch/display.h>
#include <asm/arch/dram.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/mmc.h>
#include <asm/arch/prcm.h>
#include <asm/arch/spl.h>
diff --git a/board/sunxi/gmac.c b/board/sunxi/gmac.c
index d8fdf7728e0..1fa54ed72de 100644
--- a/board/sunxi/gmac.c
+++ b/board/sunxi/gmac.c
@@ -4,7 +4,6 @@
#include <asm/gpio.h>
#include <asm/io.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
void eth_init_board(void)
{
diff --git a/drivers/gpio/axp_gpio.c b/drivers/gpio/axp_gpio.c
index 73058cf40b4..35585dc8ac9 100644
--- a/drivers/gpio/axp_gpio.c
+++ b/drivers/gpio/axp_gpio.c
@@ -6,7 +6,6 @@
*/
#include <common.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/pmic_bus.h>
#include <asm/gpio.h>
#include <axp_pmic.h>
diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
index 24cb604e3e3..7ce3ef73b46 100644
--- a/drivers/gpio/sunxi_gpio.c
+++ b/drivers/gpio/sunxi_gpio.c
@@ -14,7 +14,6 @@
#include <errno.h>
#include <fdtdec.h>
#include <malloc.h>
-#include <asm/arch/gpio.h>
#include <asm/io.h>
#include <asm/gpio.h>
#include <dm/device-internal.h>
diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
index 178b8cf106d..c62b5f5a6f9 100644
--- a/drivers/mmc/sunxi_mmc.c
+++ b/drivers/mmc/sunxi_mmc.c
@@ -15,12 +15,11 @@
#include <mmc.h>
#include <clk.h>
#include <reset.h>
+#include <asm/gpio.h>
#include <asm/io.h>
#include <asm/arch/clock.h>
#include <asm/arch/cpu.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/mmc.h>
-#include <asm-generic/gpio.h>
#include <linux/delay.h>
#ifndef CCM_MMC_CTRL_MODE_SEL_NEW
diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
index d7553fe1634..46786d9f764 100644
--- a/drivers/net/sun8i_emac.c
+++ b/drivers/net/sun8i_emac.c
@@ -14,9 +14,9 @@
#include <log.h>
#include <asm/cache.h>
#include <asm/global_data.h>
+#include <asm/gpio.h>
#include <asm/io.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
#include <common.h>
#include <clk.h>
#include <dm.h>
@@ -31,9 +31,6 @@
#include <reset.h>
#include <dt-bindings/pinctrl/sun4i-a10.h>
#include <wait_bit.h>
-#if CONFIG_IS_ENABLED(DM_GPIO)
-#include <asm-generic/gpio.h>
-#endif
#define MDIO_CMD_MII_BUSY BIT(0)
#define MDIO_CMD_MII_WRITE BIT(1)
diff --git a/drivers/power/axp809.c b/drivers/power/axp809.c
index 6323492b66d..0396502cdb5 100644
--- a/drivers/power/axp809.c
+++ b/drivers/power/axp809.c
@@ -13,7 +13,6 @@
#include <common.h>
#include <command.h>
#include <errno.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/pmic_bus.h>
#include <axp_pmic.h>
diff --git a/drivers/power/axp818.c b/drivers/power/axp818.c
index 0531707c8aa..2dc736467bb 100644
--- a/drivers/power/axp818.c
+++ b/drivers/power/axp818.c
@@ -13,7 +13,6 @@
#include <common.h>
#include <command.h>
#include <errno.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/pmic_bus.h>
#include <axp_pmic.h>
diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c
index fea4105f3d1..7e62e3fe6ea 100644
--- a/drivers/usb/musb-new/sunxi.c
+++ b/drivers/usb/musb-new/sunxi.c
@@ -25,8 +25,6 @@
#include <reset.h>
#include <asm/arch/cpu.h>
#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
-#include <asm-generic/gpio.h>
#include <dm/device_compat.h>
#include <dm/lists.h>
#include <dm/root.h>
diff --git a/drivers/video/sunxi/sunxi_display.c b/drivers/video/sunxi/sunxi_display.c
index 4361a58cd7e..128888f7af1 100644
--- a/drivers/video/sunxi/sunxi_display.c
+++ b/drivers/video/sunxi/sunxi_display.c
@@ -17,7 +17,6 @@
#include <asm/arch/clock.h>
#include <asm/arch/display.h>
-#include <asm/arch/gpio.h>
#include <asm/arch/lcdc.h>
#include <asm/arch/pwm.h>
#include <asm/arch/tve.h>
diff --git a/drivers/video/sunxi/sunxi_lcd.c b/drivers/video/sunxi/sunxi_lcd.c
index 7a9eba1ed42..8b9c3b2bfa9 100644
--- a/drivers/video/sunxi/sunxi_lcd.c
+++ b/drivers/video/sunxi/sunxi_lcd.c
@@ -15,7 +15,6 @@
#include <asm/io.h>
#include <asm/arch/clock.h>
#include <asm/arch/lcdc.h>
-#include <asm/arch/gpio.h>
#include <asm/global_data.h>
#include <asm/gpio.h>
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] sunxi: gpio: Remove name_to_gpio macro
2021-09-11 21:50 [PATCH 0/3] sunxi: Cleanup to prepare for DM_GPIO/DM_PINCTRL Samuel Holland
2021-09-11 21:50 ` [PATCH 1/3] sunxi: Clean up inclusions of asm/arch/gpio.h Samuel Holland
@ 2021-09-11 21:50 ` Samuel Holland
2021-09-13 23:53 ` Andre Przywara
2021-09-11 21:50 ` [PATCH 3/3] sunxi: gpio: Remove bank-specific size macros Samuel Holland
2 siblings, 1 reply; 7+ messages in thread
From: Samuel Holland @ 2021-09-11 21:50 UTC (permalink / raw)
To: u-boot, Jagan Teki, Andre Przywara; +Cc: Samuel Holland
This clarifies which callers must be updated to complete the DM_GPIO
conversion.
The only remaining caller of name_to_gpio in generic code is inside the
!DM_GPIO block in cmd/gpio.c. DM_GPIO is always selected on sunxi, so
that code cannot be reached. And after this commit, there are only two
remaining implementations of name_to_gpio.
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
arch/arm/include/asm/arch-sunxi/gpio.h | 1 -
drivers/spi/spi-sunxi.c | 2 +-
drivers/video/Kconfig | 10 +++++-----
drivers/video/hitachi_tx18d42vm_lcd.c | 6 +++---
drivers/video/sunxi/sunxi_display.c | 10 +++++-----
5 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
index 2969a530ae1..c93c051a19f 100644
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
@@ -244,7 +244,6 @@ int sunxi_gpio_set_drv(u32 pin, u32 val);
int sunxi_gpio_set_pull(u32 pin, u32 val);
int sunxi_name_to_gpio_bank(const char *name);
int sunxi_name_to_gpio(const char *name);
-#define name_to_gpio(name) sunxi_name_to_gpio(name)
#if !defined CONFIG_SPL_BUILD && defined CONFIG_AXP_GPIO
int axp_gpio_init(void);
diff --git a/drivers/spi/spi-sunxi.c b/drivers/spi/spi-sunxi.c
index 4ca5d3a93ac..bc2f544e863 100644
--- a/drivers/spi/spi-sunxi.c
+++ b/drivers/spi/spi-sunxi.c
@@ -245,7 +245,7 @@ static int sun4i_spi_parse_pins(struct udevice *dev)
break;
}
- pin = name_to_gpio(pin_name);
+ pin = sunxi_name_to_gpio(pin_name);
if (pin < 0)
break;
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index b1f8a9c1e62..b0c52a500df 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -452,7 +452,7 @@ config VIDEO_LCD_SSD2828_RESET
default ""
---help---
The reset pin of SSD2828 chip. This takes a string in the format
- understood by 'name_to_gpio' function, e.g. PH1 for pin 1 of port H.
+ understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
config VIDEO_LCD_TDO_TL070WSH30
bool "TDO TL070WSH30 DSI LCD panel support"
@@ -477,7 +477,7 @@ config VIDEO_LCD_SPI_CS
This is one of the SPI communication pins, involved in setting up a
working LCD configuration. The exact role of SPI may differ for
different hardware setups. The option takes a string in the format
- understood by 'name_to_gpio' function, e.g. PH1 for pin 1 of port H.
+ understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
config VIDEO_LCD_SPI_SCLK
string "SPI SCLK pin for LCD related config job"
@@ -487,7 +487,7 @@ config VIDEO_LCD_SPI_SCLK
This is one of the SPI communication pins, involved in setting up a
working LCD configuration. The exact role of SPI may differ for
different hardware setups. The option takes a string in the format
- understood by 'name_to_gpio' function, e.g. PH1 for pin 1 of port H.
+ understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
config VIDEO_LCD_SPI_MOSI
string "SPI MOSI pin for LCD related config job"
@@ -497,7 +497,7 @@ config VIDEO_LCD_SPI_MOSI
This is one of the SPI communication pins, involved in setting up a
working LCD configuration. The exact role of SPI may differ for
different hardware setups. The option takes a string in the format
- understood by 'name_to_gpio' function, e.g. PH1 for pin 1 of port H.
+ understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
config VIDEO_LCD_SPI_MISO
string "SPI MISO pin for LCD related config job (optional)"
@@ -509,7 +509,7 @@ config VIDEO_LCD_SPI_MISO
different hardware setups. If wired up, this pin may provide additional
useful functionality. Such as bi-directional communication with the
hardware and LCD panel id retrieval (if the panel can report it). The
- option takes a string in the format understood by 'name_to_gpio'
+ option takes a string in the format understood by 'sunxi_name_to_gpio'
function, e.g. PH1 for pin 1 of port H.
source "drivers/video/meson/Kconfig"
diff --git a/drivers/video/hitachi_tx18d42vm_lcd.c b/drivers/video/hitachi_tx18d42vm_lcd.c
index c6c8df6a96e..87c4d27438a 100644
--- a/drivers/video/hitachi_tx18d42vm_lcd.c
+++ b/drivers/video/hitachi_tx18d42vm_lcd.c
@@ -49,9 +49,9 @@ int hitachi_tx18d42vm_init(void)
};
int i, cs, clk, mosi, ret = 0;
- cs = name_to_gpio(CONFIG_VIDEO_LCD_SPI_CS);
- clk = name_to_gpio(CONFIG_VIDEO_LCD_SPI_SCLK);
- mosi = name_to_gpio(CONFIG_VIDEO_LCD_SPI_MOSI);
+ cs = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_CS);
+ clk = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_SCLK);
+ mosi = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_MOSI);
if (cs == -1 || clk == -1 || mosi == 1) {
printf("Error tx18d42vm spi gpio config is invalid\n");
diff --git a/drivers/video/sunxi/sunxi_display.c b/drivers/video/sunxi/sunxi_display.c
index 128888f7af1..da3e8988296 100644
--- a/drivers/video/sunxi/sunxi_display.c
+++ b/drivers/video/sunxi/sunxi_display.c
@@ -871,11 +871,11 @@ static void sunxi_vga_external_dac_enable(void)
static int sunxi_ssd2828_init(const struct ctfb_res_modes *mode)
{
struct ssd2828_config cfg = {
- .csx_pin = name_to_gpio(CONFIG_VIDEO_LCD_SPI_CS),
- .sck_pin = name_to_gpio(CONFIG_VIDEO_LCD_SPI_SCLK),
- .sdi_pin = name_to_gpio(CONFIG_VIDEO_LCD_SPI_MOSI),
- .sdo_pin = name_to_gpio(CONFIG_VIDEO_LCD_SPI_MISO),
- .reset_pin = name_to_gpio(CONFIG_VIDEO_LCD_SSD2828_RESET),
+ .csx_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_CS),
+ .sck_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_SCLK),
+ .sdi_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_MOSI),
+ .sdo_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_MISO),
+ .reset_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SSD2828_RESET),
.ssd2828_tx_clk_khz = CONFIG_VIDEO_LCD_SSD2828_TX_CLK * 1000,
.ssd2828_color_depth = 24,
#ifdef CONFIG_VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] sunxi: gpio: Remove bank-specific size macros
2021-09-11 21:50 [PATCH 0/3] sunxi: Cleanup to prepare for DM_GPIO/DM_PINCTRL Samuel Holland
2021-09-11 21:50 ` [PATCH 1/3] sunxi: Clean up inclusions of asm/arch/gpio.h Samuel Holland
2021-09-11 21:50 ` [PATCH 2/3] sunxi: gpio: Remove name_to_gpio macro Samuel Holland
@ 2021-09-11 21:50 ` Samuel Holland
2021-09-13 23:53 ` Andre Przywara
2 siblings, 1 reply; 7+ messages in thread
From: Samuel Holland @ 2021-09-11 21:50 UTC (permalink / raw)
To: u-boot, Jagan Teki, Andre Przywara; +Cc: Samuel Holland
Since the beginning, all banks have had space for 32 pins, even when
not all pins were implemented. Let's use a single constant for the GPIO
bank size here, like the GPIO driver is already doing.
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
arch/arm/include/asm/arch-sunxi/gpio.h | 14 ++------------
drivers/gpio/sunxi_gpio.c | 2 --
2 files changed, 2 insertions(+), 14 deletions(-)
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
index c93c051a19f..cd5e85988b1 100644
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
@@ -93,20 +93,10 @@ struct sunxi_gpio_reg {
#define GPIO_PULL_OFFSET(pin) ((((pin) & 0x1f) & 0xf) << 1)
/* GPIO bank sizes */
-#define SUNXI_GPIO_A_NR 32
-#define SUNXI_GPIO_B_NR 32
-#define SUNXI_GPIO_C_NR 32
-#define SUNXI_GPIO_D_NR 32
-#define SUNXI_GPIO_E_NR 32
-#define SUNXI_GPIO_F_NR 32
-#define SUNXI_GPIO_G_NR 32
-#define SUNXI_GPIO_H_NR 32
-#define SUNXI_GPIO_I_NR 32
-#define SUNXI_GPIO_L_NR 32
-#define SUNXI_GPIO_M_NR 32
+#define SUNXI_GPIOS_PER_BANK 32
#define SUNXI_GPIO_NEXT(__gpio) \
- ((__gpio##_START) + (__gpio##_NR) + 0)
+ ((__gpio##_START) + SUNXI_GPIOS_PER_BANK)
enum sunxi_gpio_number {
SUNXI_GPIO_A_START = 0,
diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
index 7ce3ef73b46..ed26eb011f4 100644
--- a/drivers/gpio/sunxi_gpio.c
+++ b/drivers/gpio/sunxi_gpio.c
@@ -19,8 +19,6 @@
#include <dm/device-internal.h>
#include <dt-bindings/gpio/gpio.h>
-#define SUNXI_GPIOS_PER_BANK SUNXI_GPIO_A_NR
-
struct sunxi_gpio_plat {
struct sunxi_gpio *regs;
const char *bank_name; /* Name of bank, e.g. "B" */
--
2.31.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] sunxi: Clean up inclusions of asm/arch/gpio.h
2021-09-11 21:50 ` [PATCH 1/3] sunxi: Clean up inclusions of asm/arch/gpio.h Samuel Holland
@ 2021-09-13 23:53 ` Andre Przywara
0 siblings, 0 replies; 7+ messages in thread
From: Andre Przywara @ 2021-09-13 23:53 UTC (permalink / raw)
To: Samuel Holland; +Cc: u-boot, Jagan Teki
On Sat, 11 Sep 2021 16:50:47 -0500
Samuel Holland <samuel@sholland.org> wrote:
> As part of migrating to DM_GPIO and DM_PINCTRL, eventually we will
> remove the asm/arch/gpio.h header. In preparation, clean up the various
> files that include it.
>
> Some files did not contain any GPIO code at all, so this header was
> completely unused.
>
> A few files contained only legacy platform-specific GPIO code for
> setting up pin muxes. They were left unchanged, as that code will be
> completely removed by the DM_PINCTRL migration.
>
> The remaining files contain some combination of DM_GPIO and legacy GPIO
> code. For those, switch to including asm/gpio.h (if it wasn't included
> already). Right now, this header provides both sets of functions,
> because ARCH_SUNXI selects GPIO_EXTRA_HEADER. This will still be the
> right header to include once the DM_GPIO migration is complete and
> GPIO_EXTRA_HEADER is no longer needed.
Nice cleanup, and it survived a buildman sunxi (all 158 boards).
> Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Cheers,
Andre
> ---
>
> arch/arm/mach-sunxi/board.c | 1 -
> arch/arm/mach-sunxi/clock.c | 1 -
> arch/arm/mach-sunxi/clock_sun4i.c | 1 -
> board/sunxi/board.c | 1 -
> board/sunxi/gmac.c | 1 -
> drivers/gpio/axp_gpio.c | 1 -
> drivers/gpio/sunxi_gpio.c | 1 -
> drivers/mmc/sunxi_mmc.c | 3 +--
> drivers/net/sun8i_emac.c | 5 +----
> drivers/power/axp809.c | 1 -
> drivers/power/axp818.c | 1 -
> drivers/usb/musb-new/sunxi.c | 2 --
> drivers/video/sunxi/sunxi_display.c | 1 -
> drivers/video/sunxi/sunxi_lcd.c | 1 -
> 14 files changed, 2 insertions(+), 19 deletions(-)
>
> diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
> index d9b04f75fc4..373cb56db49 100644
> --- a/arch/arm/mach-sunxi/board.c
> +++ b/arch/arm/mach-sunxi/board.c
> @@ -21,7 +21,6 @@
> #include <asm/gpio.h>
> #include <asm/io.h>
> #include <asm/arch/clock.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/spl.h>
> #include <asm/arch/sys_proto.h>
> #include <asm/arch/timer.h>
> diff --git a/arch/arm/mach-sunxi/clock.c b/arch/arm/mach-sunxi/clock.c
> index f591affebf7..de7e8752988 100644
> --- a/arch/arm/mach-sunxi/clock.c
> +++ b/arch/arm/mach-sunxi/clock.c
> @@ -10,7 +10,6 @@
> #include <common.h>
> #include <asm/io.h>
> #include <asm/arch/clock.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/prcm.h>
> #include <asm/arch/gtbus.h>
> #include <asm/arch/sys_proto.h>
> diff --git a/arch/arm/mach-sunxi/clock_sun4i.c b/arch/arm/mach-sunxi/clock_sun4i.c
> index 57ee018eaa2..471609764d2 100644
> --- a/arch/arm/mach-sunxi/clock_sun4i.c
> +++ b/arch/arm/mach-sunxi/clock_sun4i.c
> @@ -12,7 +12,6 @@
> #include <common.h>
> #include <asm/io.h>
> #include <asm/arch/clock.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/sys_proto.h>
>
> #ifdef CONFIG_SPL_BUILD
> diff --git a/board/sunxi/board.c b/board/sunxi/board.c
> index 2b7d655678d..dcd7f0b4375 100644
> --- a/board/sunxi/board.c
> +++ b/board/sunxi/board.c
> @@ -25,7 +25,6 @@
> #include <asm/arch/cpu.h>
> #include <asm/arch/display.h>
> #include <asm/arch/dram.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/mmc.h>
> #include <asm/arch/prcm.h>
> #include <asm/arch/spl.h>
> diff --git a/board/sunxi/gmac.c b/board/sunxi/gmac.c
> index d8fdf7728e0..1fa54ed72de 100644
> --- a/board/sunxi/gmac.c
> +++ b/board/sunxi/gmac.c
> @@ -4,7 +4,6 @@
> #include <asm/gpio.h>
> #include <asm/io.h>
> #include <asm/arch/clock.h>
> -#include <asm/arch/gpio.h>
>
> void eth_init_board(void)
> {
> diff --git a/drivers/gpio/axp_gpio.c b/drivers/gpio/axp_gpio.c
> index 73058cf40b4..35585dc8ac9 100644
> --- a/drivers/gpio/axp_gpio.c
> +++ b/drivers/gpio/axp_gpio.c
> @@ -6,7 +6,6 @@
> */
>
> #include <common.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/pmic_bus.h>
> #include <asm/gpio.h>
> #include <axp_pmic.h>
> diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
> index 24cb604e3e3..7ce3ef73b46 100644
> --- a/drivers/gpio/sunxi_gpio.c
> +++ b/drivers/gpio/sunxi_gpio.c
> @@ -14,7 +14,6 @@
> #include <errno.h>
> #include <fdtdec.h>
> #include <malloc.h>
> -#include <asm/arch/gpio.h>
> #include <asm/io.h>
> #include <asm/gpio.h>
> #include <dm/device-internal.h>
> diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
> index 178b8cf106d..c62b5f5a6f9 100644
> --- a/drivers/mmc/sunxi_mmc.c
> +++ b/drivers/mmc/sunxi_mmc.c
> @@ -15,12 +15,11 @@
> #include <mmc.h>
> #include <clk.h>
> #include <reset.h>
> +#include <asm/gpio.h>
> #include <asm/io.h>
> #include <asm/arch/clock.h>
> #include <asm/arch/cpu.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/mmc.h>
> -#include <asm-generic/gpio.h>
> #include <linux/delay.h>
>
> #ifndef CCM_MMC_CTRL_MODE_SEL_NEW
> diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c
> index d7553fe1634..46786d9f764 100644
> --- a/drivers/net/sun8i_emac.c
> +++ b/drivers/net/sun8i_emac.c
> @@ -14,9 +14,9 @@
> #include <log.h>
> #include <asm/cache.h>
> #include <asm/global_data.h>
> +#include <asm/gpio.h>
> #include <asm/io.h>
> #include <asm/arch/clock.h>
> -#include <asm/arch/gpio.h>
> #include <common.h>
> #include <clk.h>
> #include <dm.h>
> @@ -31,9 +31,6 @@
> #include <reset.h>
> #include <dt-bindings/pinctrl/sun4i-a10.h>
> #include <wait_bit.h>
> -#if CONFIG_IS_ENABLED(DM_GPIO)
> -#include <asm-generic/gpio.h>
> -#endif
>
> #define MDIO_CMD_MII_BUSY BIT(0)
> #define MDIO_CMD_MII_WRITE BIT(1)
> diff --git a/drivers/power/axp809.c b/drivers/power/axp809.c
> index 6323492b66d..0396502cdb5 100644
> --- a/drivers/power/axp809.c
> +++ b/drivers/power/axp809.c
> @@ -13,7 +13,6 @@
> #include <common.h>
> #include <command.h>
> #include <errno.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/pmic_bus.h>
> #include <axp_pmic.h>
>
> diff --git a/drivers/power/axp818.c b/drivers/power/axp818.c
> index 0531707c8aa..2dc736467bb 100644
> --- a/drivers/power/axp818.c
> +++ b/drivers/power/axp818.c
> @@ -13,7 +13,6 @@
> #include <common.h>
> #include <command.h>
> #include <errno.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/pmic_bus.h>
> #include <axp_pmic.h>
>
> diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c
> index fea4105f3d1..7e62e3fe6ea 100644
> --- a/drivers/usb/musb-new/sunxi.c
> +++ b/drivers/usb/musb-new/sunxi.c
> @@ -25,8 +25,6 @@
> #include <reset.h>
> #include <asm/arch/cpu.h>
> #include <asm/arch/clock.h>
> -#include <asm/arch/gpio.h>
> -#include <asm-generic/gpio.h>
> #include <dm/device_compat.h>
> #include <dm/lists.h>
> #include <dm/root.h>
> diff --git a/drivers/video/sunxi/sunxi_display.c b/drivers/video/sunxi/sunxi_display.c
> index 4361a58cd7e..128888f7af1 100644
> --- a/drivers/video/sunxi/sunxi_display.c
> +++ b/drivers/video/sunxi/sunxi_display.c
> @@ -17,7 +17,6 @@
>
> #include <asm/arch/clock.h>
> #include <asm/arch/display.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/lcdc.h>
> #include <asm/arch/pwm.h>
> #include <asm/arch/tve.h>
> diff --git a/drivers/video/sunxi/sunxi_lcd.c b/drivers/video/sunxi/sunxi_lcd.c
> index 7a9eba1ed42..8b9c3b2bfa9 100644
> --- a/drivers/video/sunxi/sunxi_lcd.c
> +++ b/drivers/video/sunxi/sunxi_lcd.c
> @@ -15,7 +15,6 @@
> #include <asm/io.h>
> #include <asm/arch/clock.h>
> #include <asm/arch/lcdc.h>
> -#include <asm/arch/gpio.h>
> #include <asm/global_data.h>
> #include <asm/gpio.h>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] sunxi: gpio: Remove name_to_gpio macro
2021-09-11 21:50 ` [PATCH 2/3] sunxi: gpio: Remove name_to_gpio macro Samuel Holland
@ 2021-09-13 23:53 ` Andre Przywara
0 siblings, 0 replies; 7+ messages in thread
From: Andre Przywara @ 2021-09-13 23:53 UTC (permalink / raw)
To: Samuel Holland; +Cc: u-boot, Jagan Teki
On Sat, 11 Sep 2021 16:50:48 -0500
Samuel Holland <samuel@sholland.org> wrote:
> This clarifies which callers must be updated to complete the DM_GPIO
> conversion.
>
> The only remaining caller of name_to_gpio in generic code is inside the
> !DM_GPIO block in cmd/gpio.c. DM_GPIO is always selected on sunxi, so
> that code cannot be reached. And after this commit, there are only two
> remaining implementations of name_to_gpio.
>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
Compile tested on all sunxi boards.
Acked-by: Andre Przywara <andre.przywara@arm.com>
Cheers,
Andre
> ---
>
> arch/arm/include/asm/arch-sunxi/gpio.h | 1 -
> drivers/spi/spi-sunxi.c | 2 +-
> drivers/video/Kconfig | 10 +++++-----
> drivers/video/hitachi_tx18d42vm_lcd.c | 6 +++---
> drivers/video/sunxi/sunxi_display.c | 10 +++++-----
> 5 files changed, 14 insertions(+), 15 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
> index 2969a530ae1..c93c051a19f 100644
> --- a/arch/arm/include/asm/arch-sunxi/gpio.h
> +++ b/arch/arm/include/asm/arch-sunxi/gpio.h
> @@ -244,7 +244,6 @@ int sunxi_gpio_set_drv(u32 pin, u32 val);
> int sunxi_gpio_set_pull(u32 pin, u32 val);
> int sunxi_name_to_gpio_bank(const char *name);
> int sunxi_name_to_gpio(const char *name);
> -#define name_to_gpio(name) sunxi_name_to_gpio(name)
>
> #if !defined CONFIG_SPL_BUILD && defined CONFIG_AXP_GPIO
> int axp_gpio_init(void);
> diff --git a/drivers/spi/spi-sunxi.c b/drivers/spi/spi-sunxi.c
> index 4ca5d3a93ac..bc2f544e863 100644
> --- a/drivers/spi/spi-sunxi.c
> +++ b/drivers/spi/spi-sunxi.c
> @@ -245,7 +245,7 @@ static int sun4i_spi_parse_pins(struct udevice *dev)
> break;
> }
>
> - pin = name_to_gpio(pin_name);
> + pin = sunxi_name_to_gpio(pin_name);
> if (pin < 0)
> break;
>
> diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
> index b1f8a9c1e62..b0c52a500df 100644
> --- a/drivers/video/Kconfig
> +++ b/drivers/video/Kconfig
> @@ -452,7 +452,7 @@ config VIDEO_LCD_SSD2828_RESET
> default ""
> ---help---
> The reset pin of SSD2828 chip. This takes a string in the format
> - understood by 'name_to_gpio' function, e.g. PH1 for pin 1 of port H.
> + understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
>
> config VIDEO_LCD_TDO_TL070WSH30
> bool "TDO TL070WSH30 DSI LCD panel support"
> @@ -477,7 +477,7 @@ config VIDEO_LCD_SPI_CS
> This is one of the SPI communication pins, involved in setting up a
> working LCD configuration. The exact role of SPI may differ for
> different hardware setups. The option takes a string in the format
> - understood by 'name_to_gpio' function, e.g. PH1 for pin 1 of port H.
> + understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
>
> config VIDEO_LCD_SPI_SCLK
> string "SPI SCLK pin for LCD related config job"
> @@ -487,7 +487,7 @@ config VIDEO_LCD_SPI_SCLK
> This is one of the SPI communication pins, involved in setting up a
> working LCD configuration. The exact role of SPI may differ for
> different hardware setups. The option takes a string in the format
> - understood by 'name_to_gpio' function, e.g. PH1 for pin 1 of port H.
> + understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
>
> config VIDEO_LCD_SPI_MOSI
> string "SPI MOSI pin for LCD related config job"
> @@ -497,7 +497,7 @@ config VIDEO_LCD_SPI_MOSI
> This is one of the SPI communication pins, involved in setting up a
> working LCD configuration. The exact role of SPI may differ for
> different hardware setups. The option takes a string in the format
> - understood by 'name_to_gpio' function, e.g. PH1 for pin 1 of port H.
> + understood by 'sunxi_name_to_gpio' function, e.g. PH1 for pin 1 of port H.
>
> config VIDEO_LCD_SPI_MISO
> string "SPI MISO pin for LCD related config job (optional)"
> @@ -509,7 +509,7 @@ config VIDEO_LCD_SPI_MISO
> different hardware setups. If wired up, this pin may provide additional
> useful functionality. Such as bi-directional communication with the
> hardware and LCD panel id retrieval (if the panel can report it). The
> - option takes a string in the format understood by 'name_to_gpio'
> + option takes a string in the format understood by 'sunxi_name_to_gpio'
> function, e.g. PH1 for pin 1 of port H.
>
> source "drivers/video/meson/Kconfig"
> diff --git a/drivers/video/hitachi_tx18d42vm_lcd.c b/drivers/video/hitachi_tx18d42vm_lcd.c
> index c6c8df6a96e..87c4d27438a 100644
> --- a/drivers/video/hitachi_tx18d42vm_lcd.c
> +++ b/drivers/video/hitachi_tx18d42vm_lcd.c
> @@ -49,9 +49,9 @@ int hitachi_tx18d42vm_init(void)
> };
> int i, cs, clk, mosi, ret = 0;
>
> - cs = name_to_gpio(CONFIG_VIDEO_LCD_SPI_CS);
> - clk = name_to_gpio(CONFIG_VIDEO_LCD_SPI_SCLK);
> - mosi = name_to_gpio(CONFIG_VIDEO_LCD_SPI_MOSI);
> + cs = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_CS);
> + clk = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_SCLK);
> + mosi = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_MOSI);
>
> if (cs == -1 || clk == -1 || mosi == 1) {
> printf("Error tx18d42vm spi gpio config is invalid\n");
> diff --git a/drivers/video/sunxi/sunxi_display.c b/drivers/video/sunxi/sunxi_display.c
> index 128888f7af1..da3e8988296 100644
> --- a/drivers/video/sunxi/sunxi_display.c
> +++ b/drivers/video/sunxi/sunxi_display.c
> @@ -871,11 +871,11 @@ static void sunxi_vga_external_dac_enable(void)
> static int sunxi_ssd2828_init(const struct ctfb_res_modes *mode)
> {
> struct ssd2828_config cfg = {
> - .csx_pin = name_to_gpio(CONFIG_VIDEO_LCD_SPI_CS),
> - .sck_pin = name_to_gpio(CONFIG_VIDEO_LCD_SPI_SCLK),
> - .sdi_pin = name_to_gpio(CONFIG_VIDEO_LCD_SPI_MOSI),
> - .sdo_pin = name_to_gpio(CONFIG_VIDEO_LCD_SPI_MISO),
> - .reset_pin = name_to_gpio(CONFIG_VIDEO_LCD_SSD2828_RESET),
> + .csx_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_CS),
> + .sck_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_SCLK),
> + .sdi_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_MOSI),
> + .sdo_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SPI_MISO),
> + .reset_pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_SSD2828_RESET),
> .ssd2828_tx_clk_khz = CONFIG_VIDEO_LCD_SSD2828_TX_CLK * 1000,
> .ssd2828_color_depth = 24,
> #ifdef CONFIG_VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] sunxi: gpio: Remove bank-specific size macros
2021-09-11 21:50 ` [PATCH 3/3] sunxi: gpio: Remove bank-specific size macros Samuel Holland
@ 2021-09-13 23:53 ` Andre Przywara
0 siblings, 0 replies; 7+ messages in thread
From: Andre Przywara @ 2021-09-13 23:53 UTC (permalink / raw)
To: Samuel Holland; +Cc: u-boot, Jagan Teki
On Sat, 11 Sep 2021 16:50:49 -0500
Samuel Holland <samuel@sholland.org> wrote:
> Since the beginning, all banks have had space for 32 pins, even when
> not all pins were implemented. Let's use a single constant for the GPIO
> bank size here, like the GPIO driver is already doing.
Yeah, I always found some code in there a bit over the top, thanks for
cleaning this up.
> Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Cheers,
Andre
> ---
>
> arch/arm/include/asm/arch-sunxi/gpio.h | 14 ++------------
> drivers/gpio/sunxi_gpio.c | 2 --
> 2 files changed, 2 insertions(+), 14 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
> index c93c051a19f..cd5e85988b1 100644
> --- a/arch/arm/include/asm/arch-sunxi/gpio.h
> +++ b/arch/arm/include/asm/arch-sunxi/gpio.h
> @@ -93,20 +93,10 @@ struct sunxi_gpio_reg {
> #define GPIO_PULL_OFFSET(pin) ((((pin) & 0x1f) & 0xf) << 1)
>
> /* GPIO bank sizes */
> -#define SUNXI_GPIO_A_NR 32
> -#define SUNXI_GPIO_B_NR 32
> -#define SUNXI_GPIO_C_NR 32
> -#define SUNXI_GPIO_D_NR 32
> -#define SUNXI_GPIO_E_NR 32
> -#define SUNXI_GPIO_F_NR 32
> -#define SUNXI_GPIO_G_NR 32
> -#define SUNXI_GPIO_H_NR 32
> -#define SUNXI_GPIO_I_NR 32
> -#define SUNXI_GPIO_L_NR 32
> -#define SUNXI_GPIO_M_NR 32
> +#define SUNXI_GPIOS_PER_BANK 32
>
> #define SUNXI_GPIO_NEXT(__gpio) \
> - ((__gpio##_START) + (__gpio##_NR) + 0)
> + ((__gpio##_START) + SUNXI_GPIOS_PER_BANK)
>
> enum sunxi_gpio_number {
> SUNXI_GPIO_A_START = 0,
> diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
> index 7ce3ef73b46..ed26eb011f4 100644
> --- a/drivers/gpio/sunxi_gpio.c
> +++ b/drivers/gpio/sunxi_gpio.c
> @@ -19,8 +19,6 @@
> #include <dm/device-internal.h>
> #include <dt-bindings/gpio/gpio.h>
>
> -#define SUNXI_GPIOS_PER_BANK SUNXI_GPIO_A_NR
> -
> struct sunxi_gpio_plat {
> struct sunxi_gpio *regs;
> const char *bank_name; /* Name of bank, e.g. "B" */
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-09-13 23:53 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-11 21:50 [PATCH 0/3] sunxi: Cleanup to prepare for DM_GPIO/DM_PINCTRL Samuel Holland
2021-09-11 21:50 ` [PATCH 1/3] sunxi: Clean up inclusions of asm/arch/gpio.h Samuel Holland
2021-09-13 23:53 ` Andre Przywara
2021-09-11 21:50 ` [PATCH 2/3] sunxi: gpio: Remove name_to_gpio macro Samuel Holland
2021-09-13 23:53 ` Andre Przywara
2021-09-11 21:50 ` [PATCH 3/3] sunxi: gpio: Remove bank-specific size macros Samuel Holland
2021-09-13 23:53 ` Andre Przywara
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.