[PATCH 2/2] ARM: bcm: Support BCM6846 debug UART

William Zhang william.zhang at broadcom.com
Wed Sep 18 18:26:21 PDT 2024


Hi Linus,

On 09/17/2024 12:18 PM, Linus Walleij wrote:
> The debug UART on the BCM6846 is in a different place than
> on the other BCM platforms.
>
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> ---
>   arch/arm/Kconfig.debug            | 12 +++++++++---
>   arch/arm/mach-bcm/Makefile        |  1 +
>   arch/arm/mach-bcm/board_bcm6846.c | 34 ++++++++++++++++++++++++++++++++++
>   3 files changed, 44 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index 7f47b4f335c3..86989257b968 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -242,6 +242,10 @@ choice
>               depends on ARCH_BCM_5301X || ARCH_BCM_NSP
>               select DEBUG_UART_8250
>
> +     config DEBUG_BCM6846
> +             bool "Kernel low-level debugging on BCM6846 UART0"
> +             depends on ARCH_BCMBCA
> +
>       config DEBUG_BCM_HR2
>               bool "Kernel low-level debugging on Hurricane 2 UART2"
>               depends on ARCH_BCM_HR2
> @@ -1526,7 +1530,7 @@ config DEBUG_LL_INCLUDE
>       default "debug/vf.S" if DEBUG_VF_UART
>       default "debug/vt8500.S" if DEBUG_VT8500_UART0
>       default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1
> -     default "debug/bcm63xx.S" if DEBUG_BCM63XX_UART
> +     default "debug/bcm63xx.S" if DEBUG_BCM63XX_UART || DEBUG_BCM6846
>       default "debug/digicolor.S" if DEBUG_DIGICOLOR_UA0
>       default "debug/brcmstb.S" if DEBUG_BRCMSTB_UART
>       default "mach/debug-macro.S"
> @@ -1640,6 +1644,7 @@ config DEBUG_UART_PHYS
>       default 0xfe531000 if DEBUG_STIH41X_SBC_ASC1
>       default 0xfed32000 if DEBUG_STIH41X_ASC2
>       default 0xff690000 if DEBUG_RK32_UART2
> +     default 0xff800640 if DEBUG_BCM6846
>       default 0xffc02000 if DEBUG_SOCFPGA_UART0
>       default 0xffc02100 if DEBUG_SOCFPGA_ARRIA10_UART1
>       default 0xffc03000 if DEBUG_SOCFPGA_CYCLONE5_UART1
> @@ -1664,7 +1669,7 @@ config DEBUG_UART_PHYS
>               DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
>               DEBUG_RMOBILE_SCIFA4 || \
>               DEBUG_S3C64XX_UART || \
> -             DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \
> +             DEBUG_BCM63XX_UART || DEBUG_BCM6846 || DEBUG_ASM9260_UART || \
>               DEBUG_DIGICOLOR_UA0 || \
>               DEBUG_AT91_UART || DEBUG_STM32_UART || \
>               DEBUG_STIH41X_ASC2 || DEBUG_STIH41X_SBC_ASC1 || \
> @@ -1734,6 +1739,7 @@ config DEBUG_UART_VIRT
>       default 0xfe018000 if DEBUG_MMP_UART3
>       default 0xfe100000 if DEBUG_IMX23_UART || DEBUG_IMX28_UART
>       default 0xfe300000 if DEBUG_BCM_KONA_UART
> +     default 0xfe300640 if DEBUG_BCM6846
>       default 0xfeb00000 if DEBUG_HI3620_UART || DEBUG_HIX5HD2_UART
>       default 0xfeb24000 if DEBUG_RK3X_UART0
>       default 0xfeb26000 if DEBUG_RK3X_UART1
> @@ -1765,7 +1771,7 @@ config DEBUG_UART_VIRT
>               DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
>               DEBUG_QCOM_UARTDM || \
>               DEBUG_S3C64XX_UART || \
> -             DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \
> +             DEBUG_BCM63XX_UART || DEBUG_BCM6846 || DEBUG_ASM9260_UART || \
>               DEBUG_DIGICOLOR_UA0 || \
>               DEBUG_AT91_UART || DEBUG_STM32_UART || \
>               DEBUG_STIH41X_ASC2 || DEBUG_STIH41X_SBC_ASC1 || \
> diff --git a/arch/arm/mach-bcm/Makefile b/arch/arm/mach-bcm/Makefile
> index 2e523f29ec3b..22699a7e18ec 100644
> --- a/arch/arm/mach-bcm/Makefile
> +++ b/arch/arm/mach-bcm/Makefile
> @@ -58,5 +58,6 @@ endif
>
>   # BCMBCA
>   ifeq ($(CONFIG_ARCH_BCMBCA),y)
> +obj-y                                += board_bcm6846.o
>   obj-$(CONFIG_SMP)           += bcm63xx_smp.o bcm63xx_pmb.o
>   endif
> diff --git a/arch/arm/mach-bcm/board_bcm6846.c b/arch/arm/mach-bcm/board_bcm6846.c
> new file mode 100644
> index 000000000000..7a086c7a1e71
> --- /dev/null
> +++ b/arch/arm/mach-bcm/board_bcm6846.c
This code will be the same for all the bcmbca A7 chips. And more
importantly, Broadcom's goal is to use
multi_v7 common config for all A7 chips without introducing any
machine or board specific implementation.
Is it possible this can be done through common code? It looks like the
only difference is the UART address.

> @@ -0,0 +1,34 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +// Copyright (C) 2024 Linus Walleij <linus.walleij at linaro.org>
> +
> +#include <asm/mach/arch.h>
> +#include <asm/mach/map.h>
> +
> +#ifdef CONFIG_DEBUG_BCM6846
> +/* This is needed for LL-debug/earlyprintk/debug-macro.S */
> +static struct map_desc bcm6846_io_desc[] __initdata = {
> +     {
> +             .virtual = CONFIG_DEBUG_UART_VIRT,
> +             .pfn = __phys_to_pfn(CONFIG_DEBUG_UART_PHYS),
> +             .length = SZ_4K,
> +             .type = MT_DEVICE,
> +     },
> +};
> +
> +static void __init bcm6846_map_io(void)
> +{
> +     iotable_init(bcm6846_io_desc, ARRAY_SIZE(bcm6846_io_desc));
> +}
> +#else
> +#define bcm6846_map_io NULL
> +#endif
> +
> +static const char * const bcm6846_dt_compat[] = {
> +     "brcm,bcm6846",
> +     NULL,
> +};
> +
> +DT_MACHINE_START(BCM6846_DT, "BCM6846 Application Processor")
> +     .map_io = bcm6846_map_io,
> +     .dt_compat = bcm6846_dt_compat,
> +MACHINE_END
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4212 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20240918/1bd652cb/attachment.p7s>


More information about the linux-arm-kernel mailing list