Support for AMDI0022 UART

From: Maximilian Luz
Date: Fri Apr 23 2021 - 15:57:21 EST


Hi all,

I received a report from a Surface Laptop 4 which has a UART that is
identified as AMDI0022 in ACPI [1] and that does not seem to be
supported by the kernel yet.

From what I can tell via ACPI, this is similar to the AMDI0020 [2] UART
that's already supported by the kernel (well, both are devices with two
MMIO regions and an interrupt as far as I can tell...). So it's possible
that all that's needed is adding it to the respective device ID lists
[3, 4]. Unfortunately, I a) don't have a device to test this myself, b)
haven't found any more details on that online, and c) don't want to tell
others to test this without knowing a bit more about that (potentially
writing random stuff to some unknown MMIO region that I don't know
anything about doesn't sound as safe to me as I'd like).

Does anyone here have some pointers on what it'd take to support this,
or any contacts at AMD that could provide more insight?

Regards
Max

[1]: AMDI0022 in ACPI (Surface Laptop 4)
https://github.com/linux-surface/acpidumps/blob/2e24c80d4c7a99a9295aa0b1b2e5e92df93378b4/surface_laptop_4_amd/dsdt.dsl#L1432

[2]: AMDI0020 in ACPI (Surface Laptop 3)
https://github.com/linux-surface/acpidumps/blob/62972f0d806cef45ca01341e3cfbabc04c6dd583/surface_laptop_3_15/dsdt.dsl#L1806

[3]: ID list for 8250_dw
https://elixir.bootlin.com/linux/v5.12-rc8/source/drivers/tty/serial/8250/8250_dw.c#L715

[4]: ID list for acpi_apd
https://elixir.bootlin.com/linux/v5.12-rc8/source/drivers/acpi/acpi_apd.c#L228