[PATCH] sunxi: Add support for using UART4 as console on A64
Maxime Ripard
maxime at cerno.tech
Mon Jun 29 17:27:19 CEST 2020
Hi,
On Mon, Jun 29, 2020 at 12:09:38PM +0300, Nazım Gediz Aydındoğmuş wrote:
> A64 has UART4 but it was in conflict with R_UART of older SoCs (e.g. A23).
>
> This commit adds necessary definitions and checks to use UART4 port on A64.
>
> Signed-off-by: Nazım Gediz Aydındoğmuş <gediz.aydindogmus at genemek.com>
> ---
>
> arch/arm/include/asm/arch-sunxi/gpio.h | 1 +
> arch/arm/mach-sunxi/board.c | 4 ++++
> arch/arm/mach-sunxi/clock_sun6i.c | 3 ++-
> include/configs/sunxi-common.h | 6 ++++++
> 4 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
> index a646ea6a3c..1407aff25f 100644
> --- a/arch/arm/include/asm/arch-sunxi/gpio.h
> +++ b/arch/arm/include/asm/arch-sunxi/gpio.h
> @@ -176,6 +176,7 @@ enum sunxi_gpio_number {
> #define SUNXI_GPD_LCD0 2
> #define SUNXI_GPD_LVDS0 3
> #define SUNXI_GPD_PWM 2
> +#define SUN50I_GPD_UART4 3
>
> #define SUN5I_GPE_SDC2 3
> #define SUN8I_GPE_TWI2 3
> diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
> index f40fccd8f8..7d95b7dd29 100644
> --- a/arch/arm/mach-sunxi/board.c
> +++ b/arch/arm/mach-sunxi/board.c
> @@ -140,6 +140,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 == 5 && defined(CONFIG_MACH_SUN50I)
> + sunxi_gpio_set_cfgpin(SUNXI_GPD(2), SUN50I_GPD_UART4);
> + sunxi_gpio_set_cfgpin(SUNXI_GPD(3), SUN50I_GPD_UART4);
> + sunxi_gpio_set_pull(SUNXI_GPD(3), SUNXI_GPIO_PULL_UP);
> #else
> #error Unsupported console port number. Please fix pin mux settings in board.c
> #endif
> diff --git a/arch/arm/mach-sunxi/clock_sun6i.c b/arch/arm/mach-sunxi/clock_sun6i.c
> index 8e84062bd7..4bb2d66b1e 100644
> --- a/arch/arm/mach-sunxi/clock_sun6i.c
> +++ b/arch/arm/mach-sunxi/clock_sun6i.c
> @@ -83,7 +83,8 @@ void clock_init_sec(void)
>
> void clock_init_uart(void)
> {
> -#if CONFIG_CONS_INDEX < 5
> +#if CONFIG_CONS_INDEX < 5 || \
> + defined(CONFIG_MACH_SUN50I) && CONFIG_CONS_INDEX < 6
> struct sunxi_ccm_reg *const ccm =
> (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
>
> diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
> index 5b0bec0561..f7a97b3dec 100644
> --- a/include/configs/sunxi-common.h
> +++ b/include/configs/sunxi-common.h
> @@ -45,8 +45,12 @@
> # define CONFIG_SYS_NS16550_COM2 SUNXI_UART1_BASE
> # define CONFIG_SYS_NS16550_COM3 SUNXI_UART2_BASE
> # define CONFIG_SYS_NS16550_COM4 SUNXI_UART3_BASE
> +#if defined(CONFIG_MACH_SUN50I)
> +# define CONFIG_SYS_NS16550_COM5 SUNXI_UART4_BASE
> +#else
> # define CONFIG_SYS_NS16550_COM5 SUNXI_R_UART_BASE
> #endif
> +#endif
>
> /* CPU */
> #define COUNTER_FREQUENCY 24000000
> @@ -248,6 +252,8 @@ extern int soft_i2c_gpio_scl;
> #define OF_STDOUT_PATH "/soc at 01c00000/serial at 01c28800:115200"
> #elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_MACH_SUN8I)
> #define OF_STDOUT_PATH "/soc at 01c00000/serial at 01f02800:115200"
> +#elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_MACH_SUN50I)
> +#define OF_STDOUT_PATH "/soc at 01c00000/serial at 01c29000:115200"
The soc node doesn't have a unit-address on the A64
Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200629/800cfc76/attachment.sig>
More information about the U-Boot
mailing list