[PATCH] mach-snapdragon: formalize APQ8016 debug UART init
Sam Day
me at samcday.com
Sun Jun 7 07:21:02 CEST 2026
Hey Stephan,
On Thursday, 4 June 2026 at 12:25 AM, Stephan Gerhold <stephan.gerhold at linaro.org> wrote:
> On Wed, Jun 03, 2026 at 08:56:21AM +1000, Sam Day via B4 Relay wrote:
> > From: Sam Day <me at samcday.com>
> >
> > The dragonboard410c (and likely other SB-off devices) can run U-Boot
> > early enough in the boot chain such that UART clock isn't started, and
> > pins aren't configured.
> >
> > APQ8016 has two UART peripherals, each with its own clock and TLMM pins.
> >
> > Two new debug-apq8016-uartN.config fragments are provided. Each
> > configures the appropriate UARTDM aperture. The newly introduced
> > DEBUG_UART_APQ8016 Kconfig symbol pulls in MSM debug UART, and enables a
> > board-level debug_uart_init function to start the right clock and mux
> > the right TX pin.
> >
> > Signed-off-by: Sam Day <me at samcday.com>
> > ---
> > arch/arm/mach-snapdragon/Kconfig | 9 +++++++
> > arch/arm/mach-snapdragon/Makefile | 1 +
> > arch/arm/mach-snapdragon/debug-uart-apq8016.c | 37 +++++++++++++++++++++++++++
> > board/qualcomm/debug-apq8016-uart1.config | 4 +++
> > board/qualcomm/debug-apq8016-uart2.config | 4 +++
> > drivers/serial/Kconfig | 1 +
> > drivers/serial/serial_msm.c | 10 --------
> > 7 files changed, 56 insertions(+), 10 deletions(-)
> >
> > diff --git a/arch/arm/mach-snapdragon/Kconfig b/arch/arm/mach-snapdragon/Kconfig
> > index d3de8693b5a..43e6fd1bc42 100644
> > --- a/arch/arm/mach-snapdragon/Kconfig
> > +++ b/arch/arm/mach-snapdragon/Kconfig
> > @@ -1,5 +1,14 @@
> > if ARCH_SNAPDRAGON
> >
> > +config DEBUG_UART_APQ8016
> > + bool "APQ8016 early debug initialization"
> > + select CLK_QCOM_APQ8016
> > + select CONFIG_DEBUG_UART_MSM
> > + select DEBUG_UART_BOARD_INIT
> > + help
> > + Ensures BLSP UART clocks+pins are setup. Useful when U-Boot is running from
> > + aboot (such as on the dragonboard410c).
> > +
> > config SYS_SOC
> > default "snapdragon"
> >
> > diff --git a/arch/arm/mach-snapdragon/Makefile b/arch/arm/mach-snapdragon/Makefile
> > index 343e825c6fd..824bb4d5daf 100644
> > --- a/arch/arm/mach-snapdragon/Makefile
> > +++ b/arch/arm/mach-snapdragon/Makefile
> > @@ -5,3 +5,4 @@
> > obj-y += board.o
> > obj-$(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) += capsule_update.o
> > obj-$(CONFIG_OF_LIVE) += of_fixup.o
> > +obj-$(CONFIG_DEBUG_UART_APQ8016) += debug-uart-apq8016.o
> > diff --git a/arch/arm/mach-snapdragon/debug-uart-apq8016.c b/arch/arm/mach-snapdragon/debug-uart-apq8016.c
> > new file mode 100644
> > index 00000000000..2de9d99bed5
> > --- /dev/null
> > +++ b/arch/arm/mach-snapdragon/debug-uart-apq8016.c
> > @@ -0,0 +1,37 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * SoC-specific debug UART initialization (clocks/pins) lives here
> > + */
> > +
> > +#include <asm/io.h>
> > +#include <dt-bindings/clock/qcom,gcc-msm8916.h>
> > +
> > +extern int apq8016_clk_init_uart(phys_addr_t gcc_base, unsigned long id);
> > +
> > +#define APQ8016_GCC_BASE ((phys_addr_t)0x01800000)
> > +
> > +#define APQ8016_TLMM_BASE ((phys_addr_t)0x01000000)
> > +#define APQ8016_TLMM_FUNC_BLSP_UART (2 << 2)
> > +#define APQ8016_TLMM_DRV_8MA (3 << 6)
> > +#define APQ8016_TLMM_GPIO_ENABLE BIT(9)
> > +#define APQ8016_GPIO_CFG(gpio) (APQ8016_TLMM_BASE + (phys_addr_t)(gpio) * 0x1000)
> > +#define APQ8016_DEBUG_UART_PINCFG (APQ8016_TLMM_FUNC_BLSP_UART | \
> > + APQ8016_TLMM_DRV_8MA | \
> > + APQ8016_TLMM_GPIO_ENABLE)
>
> APQ8016_TLMM_GPIO_ENABLE is actually GPIO_OE ("output enable").
Noted, thanks. It'll be renamed in v2.
> I guess
> it makes sense to set this for a TX pin, but I think this is typically
> not set for special-function pins like BLSP_UART. LK doesn't set it
> AFAICT.
Hmm, am I looking at the wrong thing then?
https://github.com/msm8916-mainline/lk2nd/blob/main/platform/msm8916/gpio.c
AFAICT, gpio_config_uart_dm calls gpio_tlmm_config with the exceptionally
confusing GPIO_DISABLE constant (which is defined as "1").
Cheers,
-Sam
>
> Thanks,
> Stephan
>
More information about the U-Boot
mailing list