Signed-off-by: Jules Maselbas <jmaselbas@xxxxxxxx> --- arch/arm/include/asm/debug_ll.h | 2 ++ arch/arm/mach-sunxi/Kconfig | 4 ++++ include/mach/sunxi/debug_ll.h | 35 +++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 include/mach/sunxi/debug_ll.h diff --git a/arch/arm/include/asm/debug_ll.h b/arch/arm/include/asm/debug_ll.h index a1d5161ccf..054d021bab 100644 --- a/arch/arm/include/asm/debug_ll.h +++ b/arch/arm/include/asm/debug_ll.h @@ -50,6 +50,8 @@ #include <mach/uemd/debug_ll.h> #elif defined CONFIG_ARCH_SOCFPGA #include <mach/socfpga/debug_ll.h> +#elif defined CONFIG_ARCH_SUNXI +#include <mach/sunxi/debug_ll.h> #elif defined CONFIG_ARCH_PXA #include <mach/pxa/debug_ll.h> #elif defined CONFIG_ARCH_NOMADIK diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig index 6094f40e2e..61a5ae9ae2 100644 --- a/arch/arm/mach-sunxi/Kconfig +++ b/arch/arm/mach-sunxi/Kconfig @@ -1,3 +1,7 @@ if ARCH_SUNXI +config SUNXI_DEBUG_LL_UART_BASE + hex + default 0x01c28000 + endif diff --git a/include/mach/sunxi/debug_ll.h b/include/mach/sunxi/debug_ll.h new file mode 100644 index 0000000000..99f77ab2e4 --- /dev/null +++ b/include/mach/sunxi/debug_ll.h @@ -0,0 +1,35 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef __MACH_DEBUG_LL_H__ +#define __MACH_DEBUG_LL_H__ + +#include <io.h> + +#define DEBUG_LL_UART_ADDR IOMEM(CONFIG_SUNXI_DEBUG_LL_UART_BASE) + +static inline uint8_t debug_ll_read_reg(int reg) +{ + return readl(DEBUG_LL_UART_ADDR + reg * sizeof(uint32_t)); +} + +static inline void debug_ll_write_reg(int reg, uint8_t val) +{ + writel(val, DEBUG_LL_UART_ADDR + reg * sizeof(uint32_t)); +} + +#include <debug_ll/ns16550.h> + +static inline void debug_ll_init(void) +{ + uint16_t divisor; + + divisor = debug_ll_ns16550_calc_divisor(24 * 1000 * 1000); + debug_ll_ns16550_init(divisor); +} + +static inline void PUTC_LL(int c) +{ + debug_ll_ns16550_putc(c); +} + +#endif -- 2.40.1