On 11.05.23 01:37, Jules Maselbas wrote: > --- > 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 e28f04c354..2580a9e56a 100644 > --- a/arch/arm/mach-sunxi/Kconfig > +++ b/arch/arm/mach-sunxi/Kconfig > @@ -9,6 +9,10 @@ config SUNXI_RVBAR_IOMAP > default 0x017000a0 if ARCH_SUN50I_A64 > # default 0x09010040 if ARCH_SUN50I_H5 > > +config SUNXI_DEBUG_LL_UART_BASE > + hex > + default 0x01c28000 > + > menuconfig SUNXI_MULTI_BOARDS > bool "Allwinner boards" > select HAVE_PBL_MULTI_IMAGES > diff --git a/include/mach/sunxi/debug_ll.h b/include/mach/sunxi/debug_ll.h > new file mode 100644 > index 0000000000..64c65a5917 > --- /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 CONFIG_SUNXI_DEBUG_LL_UART_BASE > + > +static inline uint8_t debug_ll_read_reg(int reg) > +{ > + return readl(IOMEM(DEBUG_LL_UART_ADDR) + reg * sizeof(uint32_t)); > +} > + > +static inline void debug_ll_write_reg(int reg, uint8_t val) > +{ > + writel(val, IOMEM(DEBUG_LL_UART_ADDR) + reg * sizeof(uint32_t)); > +} > + > +#include <debug_ll/ns16550.h> > + > +static inline void debug_ll_init(void) > +{ > + uint16_t divisor; Call sunxi_uart_setup here? > + > + 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 -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |