From patchwork Mon Jun 29 09:09:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?iso-8859-9?q?Naz=FDm_Gediz_AYDINDO=D0MU=DE?= X-Patchwork-Id: 243082 List-Id: U-Boot discussion From: gediz.aydindogmus at genemek.com (=?iso-8859-9?b?TmF6/W0gR2VkaXogQXlk/W5kb/Btdf4=?=) Date: Mon, 29 Jun 2020 12:09:38 +0300 Subject: [PATCH] sunxi: Add support for using UART4 as console on A64 Message-ID: <20200629090938.28982-1-gediz.aydindogmus@genemek.com> 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? --- 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" #else #error Unsupported console port nr. Please fix stdout-path in sunxi-common.h. #endif