Skip to content

Known issues with Linux

pcengines-apuv2 driver is broken (as of May 2, 2022)

pcengines-apuv2 was added in Linux 5.1 already supporting both APU2 and APU3, Linux 5.5 extended the driver to support APU4 as well.

There are two ways for registering APU-specific devices used by the kernel: pcengines-apuv2 driver and parsing of ACPI tables. The former way targets APUs specifically and has to be updated for each new version of the board, while the latter one is driven by generic ACPI tables and can work with an APU as long as the firmware it's running provides suitable ACPI data.

pcengines-apuv2 in turn depends on leds-gpio and gpio_keys_polled. As per this issue, gpio-keys-polled has trouble querying description of a GPIO provided by pcengines-apuv2 driver:

kernel: gpio-keys-polled gpio-keys-polled: unable to claim gpio 0, err=-517

leds-gpio driver on the other hand works fine with inputs from ACPI data and from pcengines-apuv2, because it's capable of querying GPIO data by index.

Potential fix

There are 3 commits from the author of pcengines-apuv2 here, in his fork of the kernel.

input: keyboard: gpio-keys-polled: skip oftree code when CONFIG_OF disabled commit is not a functional change. The other two were submitted for review and input: keyboard: gpio-keys-polled: use input name from pdata if available was committed, but it's not enough to fix the issue.

The last commit is supposed to make gpio_keys_polled work the same as leds-gpio, but it wasn't upstreamed because a more generic approach was supposed to be proposed. Apparently, more generic approach didn't make it either leaving pcengines-apuv2 broken to this day.

Workaround

Until situation with gpio-keys-polled or pcengines-apuv2 improves, it's recommended to blacklist pcengines-apuv2 module as a workaround for this issue and rely on parsing of ACPI data.