git: a931b85a0966 - main - uart: Add uart_cpu_acpi_setup to setup the uart

From: Andrew Turner <andrew_at_FreeBSD.org>
Date: Mon, 18 Mar 2024 16:37:56 UTC
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=a931b85a0966a6efd6b6105b3e4176d2c98340de

commit a931b85a0966a6efd6b6105b3e4176d2c98340de
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2024-03-14 16:43:28 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2024-03-18 16:20:52 +0000

    uart: Add uart_cpu_acpi_setup to setup the uart
    
    In preperation for adding debug port support add a generic function
    to setup the uart from ACPI tables.
    
    Reviewed by:    imp
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D44358
---
 sys/dev/uart/uart_cpu_acpi.c  | 16 +++++++++++-----
 sys/dev/uart/uart_cpu_acpi.h  |  4 ++--
 sys/dev/uart/uart_cpu_arm64.c |  2 +-
 sys/dev/uart/uart_cpu_x86.c   |  2 +-
 4 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/sys/dev/uart/uart_cpu_acpi.c b/sys/dev/uart/uart_cpu_acpi.c
index 09f69e951e81..9c9ffc1e3194 100644
--- a/sys/dev/uart/uart_cpu_acpi.c
+++ b/sys/dev/uart/uart_cpu_acpi.c
@@ -138,7 +138,7 @@ uart_cpu_acpi_init_devinfo(struct uart_devinfo *di, struct uart_class *class,
 	return (0);
 }
 
-int
+static int
 uart_cpu_acpi_spcr(int devtype, struct uart_devinfo *di)
 {
 	vm_paddr_t spcr_physaddr;
@@ -147,10 +147,6 @@ uart_cpu_acpi_spcr(int devtype, struct uart_devinfo *di)
 	struct uart_class *class;
 	int error = ENXIO;
 
-	/* SPCR only tells us about consoles. */
-	if (devtype != UART_DEV_CONSOLE)
-		return (error);
-
 	/* Look for the SPCR table. */
 	spcr_physaddr = acpi_find_table(ACPI_SIG_SPCR);
 	if (spcr_physaddr == 0)
@@ -213,3 +209,13 @@ out:
 	acpi_unmap_table(spcr);
 	return (error);
 }
+
+int
+uart_cpu_acpi_setup(int devtype, struct uart_devinfo *di)
+{
+	switch(devtype) {
+	case UART_DEV_CONSOLE:
+		return (uart_cpu_acpi_spcr(devtype, di));
+	}
+	return (ENXIO);
+}
diff --git a/sys/dev/uart/uart_cpu_acpi.h b/sys/dev/uart/uart_cpu_acpi.h
index 816644eb08ba..94329e1f1349 100644
--- a/sys/dev/uart/uart_cpu_acpi.h
+++ b/sys/dev/uart/uart_cpu_acpi.h
@@ -64,7 +64,7 @@ SET_DECLARE(uart_acpi_class_set, struct acpi_uart_compat_data);
 #define UART_ACPI_CLASS(data)				\
 	DATA_SET(uart_acpi_class_set, data)
 
-/* Try to initialize UART device from SPCR data. */
-int uart_cpu_acpi_spcr(int devtype, struct uart_devinfo *di);
+/* Try to initialize UART device from ACPI tables */
+int uart_cpu_acpi_setup(int devtype, struct uart_devinfo *di);
 
 #endif /* _DEV_UART_CPU_ACPI_H_ */
diff --git a/sys/dev/uart/uart_cpu_arm64.c b/sys/dev/uart/uart_cpu_arm64.c
index 51b195783636..80e67e65697c 100644
--- a/sys/dev/uart/uart_cpu_arm64.c
+++ b/sys/dev/uart/uart_cpu_arm64.c
@@ -125,7 +125,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
 
 #ifdef DEV_ACPI
 	/* Check if SPCR can tell us what console to use. */
-	if (uart_cpu_acpi_spcr(devtype, di) == 0)
+	if (uart_cpu_acpi_setup(devtype, di) == 0)
 		return (0);
 #endif
 #ifdef FDT
diff --git a/sys/dev/uart/uart_cpu_x86.c b/sys/dev/uart/uart_cpu_x86.c
index 63f68245f589..d152d5059786 100644
--- a/sys/dev/uart/uart_cpu_x86.c
+++ b/sys/dev/uart/uart_cpu_x86.c
@@ -70,7 +70,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
 	 * !late_console, we haven't set up our own page tables yet, so we
 	 * can't map ACPI tables to look at them.
 	 */
-	if (late_console && uart_cpu_acpi_spcr(devtype, di) == 0)
+	if (late_console && uart_cpu_acpi_setup(devtype, di) == 0)
 		return (0);
 #endif