Index: sys/dev/uart/uart_cpu_arm64.c =================================================================== --- sys/dev/uart/uart_cpu_arm64.c +++ sys/dev/uart/uart_cpu_arm64.c @@ -149,9 +149,23 @@ *classp = cd->cd_class; *rclk = 0; - *shiftp = 2; *iowidthp = spcr->SerialPort.BitWidth / 8; + switch (spcr->InterfaceType) { + case ACPI_DBG2_ARM_PL011: + case ACPI_DBG2_ARM_SBSA_32BIT: + case ACPI_DBG2_ARM_SBSA_GENERIC: + *shiftp = 2; + break; + case ACPI_DBG2_16550_COMPATIBLE: + case ACPI_DBG2_16550_SUBSET: + *shiftp = 0; + break; + default: + printf("uart_cpu_acpi_probe: unknown InterfaceType %d", + spcr->InterfaceType); + } + out: acpi_unmap_table(spcr); return (err);