Re: Support for AMDI0022 UART
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: 2021-04-30 12:37:10
Also in:
lkml
On 4/24/21 12:25 PM, Andy Shevchenko wrote:
On Fri, Apr 23, 2021 at 10:58 PM Maximilian Luz [off-list ref] wrote:quoted
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).To me they look completely the same. Depending on the device which is connected to the UART, I would suggest just to add an ID and see if it makes it work.
Thanks! We've tried that now and we do have some progress, meaning that the serial device seems to work as expected (we have some basic communication working). The driver that we want to load (drivers/platform/surface/aggregator/) still doesn't quite load yet, but that now seems to be due to a missing GPIO driver for an AMDI0031 device. There's again an AMDI0030 in drivers/pinctrl/pinctrl-amd.c, but this time the definitions do seem a bit different (compare [5, 6]), specifically there are now two memory regions (altough the combined size is still the same). I'll try to have a look around and maybe ping the linux-gpio list if I don't find anything else. I'll post some patches once we've got the driver loading properly and can run some more tests. Regards, Max [5]: AMDI0030 on Surface Laptop 3 https://github.com/linux-surface/acpidumps/blob/4da0148744164cea0c924dab92f45842fde03177/surface_laptop_3_amd/dsdt.dsl#L1767-L1802 [6]: AMDI0031 on Surface Laptop 4 https://github.com/linux-surface/acpidumps/blob/4da0148744164cea0c924dab92f45842fde03177/surface_laptop_4_amd/dsdt.dsl#L1404-L1428