Hi,
On 10/14/20 1:21 PM, Ed W wrote:
On 14/10/2020 09:41, Hans de Goede wrote:
So I have a suggested compromise:
Keep the current LED/gpio setup code, but make executing it conditional
on the BIOS version and skip the LED/gpio setup when the new BIOS is
present to avoid having duplicate LED entries, etc. in that case.
I guess this would still break userspace because if I understand things
correctly the new ACPI based setup uses different LED names ? That
seems unfortunate, but I guess that from the kernel pov we can just
blame the BIOS for this, and since we definitely do not want duplicate
LED entries for the same LED, this seems the least bad choice.
Enrico, would that work for you ?
I'm cool with this. Enrico?
I may have some time imminently to have a stab at a new patch. Obviously any help structuring this
would be appreciated - it feels clumsy using the existing detection mechanism, I think whatever I
come up with you should kick back and recommend a new board detection structure, but perhaps we can
shortcut that step with a few comments up front?
I'm afraid I do not have any wisdom to share here. I would use the DMI bios-version
or bios-date strings for the detection, but I guess that is obvious.
Other then I guess I would do a preparation patch restructuring the code so that
the whole conditional part becomes a single if, e.g.:
if (old_bios()) {
ret = register_leds_and_gpio_for_old_bios()
if (ret)
goto error_cleanup;
}
So in a separate preparation commit put all the code which you tried to
remove earlier in a single helper function (feel free to pick a different name).
And then in that prep patch the above would look like this:
ret = register_leds_and_gpio_for_old_bios()
if (ret)
goto error_cleanup;
And a follow-up commit adding the new/old bios detection would
introduce the if.
And do the same for the cleanup parts for module unloading.
I hope this helps...
Regards,
Hans