Module Name: src Committed By: rin Date: Mon Nov 23 06:21:07 UTC 2020
Modified Files: src/sys/arch/arm/broadcom: bcm283x_platform.c Log Message: Factor out bcm283x_aux_platform_early_putchar() from bcm{2837,2711}_platform_early_putchar(), for which output goes to AUX UART (aka mini UART). No functional changes. To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.42 src/sys/arch/arm/broadcom/bcm283x_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/broadcom/bcm283x_platform.c diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.41 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.42 --- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.41 Mon Sep 28 11:54:23 2020 +++ src/sys/arch/arm/broadcom/bcm283x_platform.c Mon Nov 23 06:21:07 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: bcm283x_platform.c,v 1.41 2020/09/28 11:54:23 jmcneill Exp $ */ +/* $NetBSD: bcm283x_platform.c,v 1.42 2020/11/23 06:21:07 rin Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.41 2020/09/28 11:54:23 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.42 2020/11/23 06:21:07 rin Exp $"); #include "opt_arm_debug.h" #include "opt_bcm283x.h" @@ -1344,6 +1344,20 @@ bcm283x_platform_early_putchar(vaddr_t v continue; } +static void __noasan +bcm283x_aux_platform_early_putchar(vaddr_t va, paddr_t pa, char c) +{ + volatile uint32_t *uartaddr = + cpu_earlydevice_va_p() ? + (volatile uint32_t *)va : + (volatile uint32_t *)pa; + + while ((uartaddr[com_lsr] & LSR_TXRDY) == 0) + continue; + + uartaddr[com_data] = c; +} + void __noasan bcm2835_platform_early_putchar(char c) { @@ -1365,37 +1379,19 @@ bcm2836_platform_early_putchar(char c) void __noasan bcm2837_platform_early_putchar(char c) { -#define AUCONSADDR_PA BCM2836_PERIPHERALS_BUS_TO_PHYS(BCM2835_AUX_UART_BASE) -#define AUCONSADDR_VA BCM2835_IOPHYSTOVIRT(AUCONSADDR_PA) - volatile uint32_t *uartaddr = - cpu_earlydevice_va_p() ? - (volatile uint32_t *)AUCONSADDR_VA : - (volatile uint32_t *)AUCONSADDR_PA; - - while ((uartaddr[com_lsr] & LSR_TXRDY) == 0) - ; + paddr_t pa = BCM2836_PERIPHERALS_BUS_TO_PHYS(BCM2835_AUX_UART_BASE); + vaddr_t va = BCM2835_IOPHYSTOVIRT(pa); - uartaddr[com_data] = c; -#undef AUCONSADDR_VA -#undef AUCONSADDR_PA + bcm283x_aux_platform_early_putchar(va, pa, c); } void __noasan bcm2711_platform_early_putchar(char c) { -#define AUCONSADDR_PA BCM2711_PERIPHERALS_BUS_TO_PHYS(BCM2835_AUX_UART_BASE) -#define AUCONSADDR_VA BCM2711_IOPHYSTOVIRT(AUCONSADDR_PA) - volatile uint32_t *uartaddr = - cpu_earlydevice_va_p() ? - (volatile uint32_t *)AUCONSADDR_VA : - (volatile uint32_t *)AUCONSADDR_PA; + paddr_t pa = BCM2711_PERIPHERALS_BUS_TO_PHYS(BCM2835_AUX_UART_BASE); + vaddr_t va = BCM2711_IOPHYSTOVIRT(pa); - while ((uartaddr[com_lsr] & LSR_TXRDY) == 0) - ; - - uartaddr[com_data] = c; -#undef AUCONSADDR_VA -#undef AUCONSADDR_PA + bcm283x_aux_platform_early_putchar(va, pa, c); } #define BCM283x_REF_FREQ 19200000