[PATCH] sunxi: support boot console on uart1 for sun8i

From: Tobias Schramm t.schramm@manjaro.org
This commit adds support for using uart1 as boot console on sun8i.
Signed-off-by: Tobias Schramm t.schramm@manjaro.org --- arch/arm/include/asm/arch-sunxi/gpio.h | 1 + arch/arm/mach-sunxi/board.c | 4 ++++ include/configs/sunxi-common.h | 2 ++ 3 files changed, 7 insertions(+)
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h index de77bf638e..2969a530ae 100644 --- a/arch/arm/include/asm/arch-sunxi/gpio.h +++ b/arch/arm/include/asm/arch-sunxi/gpio.h @@ -190,6 +190,7 @@ enum sunxi_gpio_number { #define SUN5I_GPG_SDC1 2 #define SUN6I_GPG_SDC1 2 #define SUN8I_GPG_SDC1 2 +#define SUN8I_GPG_UART1 2 #define SUN6I_GPG_TWI3 2 #define SUN5I_GPG_UART1 4
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c index ae6bc656d9..febec0ae03 100644 --- a/arch/arm/mach-sunxi/board.c +++ b/arch/arm/mach-sunxi/board.c @@ -144,6 +144,10 @@ static int gpio_init(void) sunxi_gpio_set_cfgpin(SUNXI_GPL(2), SUN8I_GPL_R_UART); sunxi_gpio_set_cfgpin(SUNXI_GPL(3), SUN8I_GPL_R_UART); sunxi_gpio_set_pull(SUNXI_GPL(3), SUNXI_GPIO_PULL_UP); +#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN8I) + sunxi_gpio_set_cfgpin(SUNXI_GPG(6), SUN8I_GPG_UART1); + sunxi_gpio_set_cfgpin(SUNXI_GPG(7), SUN8I_GPG_UART1); + sunxi_gpio_set_pull(SUNXI_GPL(7), SUNXI_GPIO_PULL_UP); #else #error Unsupported console port number. Please fix pin mux settings in board.c #endif diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h index 000f386470..19f0026888 100644 --- a/include/configs/sunxi-common.h +++ b/include/configs/sunxi-common.h @@ -251,6 +251,8 @@ extern int soft_i2c_gpio_scl; #define OF_STDOUT_PATH "/soc@01c00000/serial@01c28800:115200" #elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_MACH_SUN8I) #define OF_STDOUT_PATH "/soc@01c00000/serial@01f02800:115200" +#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN8I) +#define OF_STDOUT_PATH "/soc@01c00000/serial@01c28400:115200" #else #error Unsupported console port nr. Please fix stdout-path in sunxi-common.h. #endif

On Fri, 12 Feb 2021 15:08:23 +0100 Tobias Schramm tobleminer@gmail.com wrote:
Hi Tobias,
From: Tobias Schramm t.schramm@manjaro.org
This commit adds support for using uart1 as boot console on sun8i.
Which particular SoC or board is this triggered by?
From the SoCs listed as belonging to the MACH_SUN8I "family", I don't see the R40 and V3s having UART1 muxed on PortG, only A23, A33, H3, H5, and A83T have. So can you restrict the conditions?
...
Signed-off-by: Tobias Schramm t.schramm@manjaro.org
arch/arm/include/asm/arch-sunxi/gpio.h | 1 + arch/arm/mach-sunxi/board.c | 4 ++++ include/configs/sunxi-common.h | 2 ++ 3 files changed, 7 insertions(+)
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h index de77bf638e..2969a530ae 100644 --- a/arch/arm/include/asm/arch-sunxi/gpio.h +++ b/arch/arm/include/asm/arch-sunxi/gpio.h @@ -190,6 +190,7 @@ enum sunxi_gpio_number { #define SUN5I_GPG_SDC1 2 #define SUN6I_GPG_SDC1 2 #define SUN8I_GPG_SDC1 2 +#define SUN8I_GPG_UART1 2 #define SUN6I_GPG_TWI3 2 #define SUN5I_GPG_UART1 4
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c index ae6bc656d9..febec0ae03 100644 --- a/arch/arm/mach-sunxi/board.c +++ b/arch/arm/mach-sunxi/board.c @@ -144,6 +144,10 @@ static int gpio_init(void) sunxi_gpio_set_cfgpin(SUNXI_GPL(2), SUN8I_GPL_R_UART); sunxi_gpio_set_cfgpin(SUNXI_GPL(3), SUN8I_GPL_R_UART); sunxi_gpio_set_pull(SUNXI_GPL(3), SUNXI_GPIO_PULL_UP); +#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN8I)
- sunxi_gpio_set_cfgpin(SUNXI_GPG(6), SUN8I_GPG_UART1);
- sunxi_gpio_set_cfgpin(SUNXI_GPG(7), SUN8I_GPG_UART1);
- sunxi_gpio_set_pull(SUNXI_GPL(7), SUNXI_GPIO_PULL_UP);
This should be SUNXI_GPG(7).
#else #error Unsupported console port number. Please fix pin mux settings in board.c #endif diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h index 000f386470..19f0026888 100644 --- a/include/configs/sunxi-common.h +++ b/include/configs/sunxi-common.h @@ -251,6 +251,8 @@ extern int soft_i2c_gpio_scl; #define OF_STDOUT_PATH "/soc@01c00000/serial@01c28800:115200" #elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_MACH_SUN8I) #define OF_STDOUT_PATH "/soc@01c00000/serial@01f02800:115200" +#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN8I) +#define OF_STDOUT_PATH "/soc@01c00000/serial@01c28400:115200"
The leading zeroes in there make me suspicious that this has been broken for a while. And also it looks like all(?) board DTs have a stdout-path property already anyway. So I'd recommend to leave this out, I will probably send a patch to remove this altogether.
Cheers, Andre
#else #error Unsupported console port nr. Please fix stdout-path in sunxi-common.h. #endif

Hi Andre,
Which particular SoC or board is this triggered by?
I'm currently using a board with a Sochip S3 SoC, where the boot console is on uart1.
From the SoCs listed as belonging to the MACH_SUN8I "family", I don't see the R40 and V3s having UART1 muxed on PortG, only A23, A33, H3, H5, and A83T have. So can you restrict the conditions?
I can - at least in the commit description. Unfortunately there is no real distinction between V3s and S3 in u-boot. I could of course define a new "S3" SoC variant and add it to the ifdef for the uart iomux. Would you prefer me to do that?
[...]
So I'd recommend to leave this out, I will probably send a patch to remove this altogether.
Ok. I'll leave that out in v2 then.
Thanks,
Tobias

On Sat, 13 Feb 2021 19:45:45 +0100 Tobias Schramm t.schramm@manjaro.org wrote:
Hi,
Which particular SoC or board is this triggered by?
I'm currently using a board with a Sochip S3 SoC, where the boot console is on uart1.
From the SoCs listed as belonging to the MACH_SUN8I "family", I don't see the R40 and V3s having UART1 muxed on PortG, only A23, A33, H3, H5, and A83T have. So can you restrict the conditions?
I can - at least in the commit description. Unfortunately there is no real distinction between V3s and S3 in u-boot. I could of course define a new "S3" SoC variant and add it to the ifdef for the uart iomux. Would you prefer me to do that?
Ah, looking closer it seems that a V3s don't route out those pins, but is still using the same die as the S3.
So for the sake of this patch we can assume that the V3s has those pins as well.
I would say, use: (defined(CONFIG_MACH_SUN8I) && !defined(CONFIG_MACH_SUN8I_R40))
Cheers, Andre.
[...]
So I'd recommend to leave this out, I will probably send a patch to remove this altogether.
Ok. I'll leave that out in v2 then.
Thanks,
Tobias
participants (3)
-
Andre Przywara
-
Tobias Schramm
-
Tobias Schramm