diff --git a/sys/dev/uart/uart_cpu_arm64.c b/sys/dev/uart/uart_cpu_arm64.c --- a/sys/dev/uart/uart_cpu_arm64.c +++ b/sys/dev/uart/uart_cpu_arm64.c @@ -79,33 +79,17 @@ return ((pmap_kextract(b1->bsh) == pmap_kextract(b2->bsh)) ? 1 : 0); } -int -uart_cpu_getdev(int devtype, struct uart_devinfo *di) +#ifdef FDT +static int +uart_cpu_fdt_setup(struct uart_class *class, int devtype, struct uart_devinfo *di) { - struct uart_class *class; bus_space_handle_t bsh; bus_space_tag_t bst; u_int rclk, shift, iowidth; int br, err; - /* Allow overriding the FDT using the environment. */ - class = &uart_ns8250_class; - err = uart_getenv(devtype, di, class); - if (err == 0) - return (0); - -#ifdef DEV_ACPI - /* Check if SPCR can tell us what console to use. */ - if (uart_cpu_acpi_spcr(devtype, di) == 0) - return (0); -#endif - err = ENXIO; -#ifdef FDT - if (err != 0) { - err = uart_cpu_fdt_probe(&class, &bst, &bsh, &br, &rclk, - &shift, &iowidth, devtype); - } -#endif + err = uart_cpu_fdt_probe(&class, &bst, &bsh, &br, &rclk, + &shift, &iowidth, devtype); if (err != 0) return (err); @@ -128,3 +112,29 @@ return (0); } +#endif + +int +uart_cpu_getdev(int devtype, struct uart_devinfo *di) +{ + struct uart_class *class; + int err; + + /* Allow overriding ACPI/FDT using the environment. */ + class = &uart_ns8250_class; + err = uart_getenv(devtype, di, class); + if (err == 0) + return (0); + +#ifdef DEV_ACPI + /* Check if SPCR can tell us what console to use. */ + if (uart_cpu_acpi_spcr(devtype, di) == 0) + return (0); +#endif +#ifdef FDT + if (uart_cpu_fdt_setup(class, devtype, di) == 0) + return (0); +#endif + + return (ENXIO); +}