Page MenuHomeFreeBSD

uart_dev_ns8250: Switch ACPI UART subtype for Marvell SoCs
ClosedPublic

Authored by mw on May 21 2021, 3:43 PM.
Tags
Referenced Files
F82210054: D30386.diff
Fri, Apr 26, 1:20 PM
Unknown Object (File)
Mar 19 2024, 11:02 AM
Unknown Object (File)
Mar 7 2024, 11:32 PM
Unknown Object (File)
Feb 20 2024, 9:42 PM
Unknown Object (File)
Feb 19 2024, 11:22 PM
Unknown Object (File)
Dec 31 2023, 7:28 PM
Unknown Object (File)
Dec 20 2023, 2:18 AM
Unknown Object (File)
Dec 12 2023, 11:50 AM
Subscribers

Details

Summary

DBG2 ACPI table description [1] specifies three subtypes
related to 16550 UART:
0x0 - 16550 compatible
0x1 - 16550 subset
0x12 - 16550 compatible with parameters defined in Generic Address Structure (GAS)

It turned out however, that the Windows OS treats 0x0 subtype as
legacy x86 UART with 8-bit access. ARM SoCs can use types 0x1 (16550 with
fixed mmio32 access) or 0x12 (16550 with fully respected GAS contents).

Switch Marvell SoCs ACPI UART subtype to 0x1 - thanks to that the same firmware
can run properly with UART output in FreeBSD, Windows 10, Linux and ESXI
hypervisor. Tests showed the older firmware versions that use 0x0
UART subtype in SPCR table continue to display output properly.

[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/acpi-debug-port-table

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

mw requested review of this revision.May 21 2021, 3:43 PM
mw created this revision.
This revision was not accepted when it landed; it landed in state Needs Review.Jun 2 2021, 8:05 AM
This revision was automatically updated to reflect the committed changes.