On 10/25/2022 15:25, Hans de Goede wrote:
Hi Matthew,
On 10/25/22 21:32, Matthew Garrett wrote:
On Tue, Oct 25, 2022 at 08:50:54PM +0200, Hans de Goede wrote:
That is a valid point, but keep in mind that this is only used on ACPI
platforms and then only on devices with a builtin LCD panel and then
only by GPU drivers which actually call acpi_video_get_backlight_type(),
so e.g. not by all the ARM specific display drivers.
So I believe that Chromebooks quite likely are the only devices with
this issue.
My laptop is, uh, weird, but it falls into this category.
I think for this to work correctly you need to have
the infrastructure be aware of whether or not a vendor interface exists,
which means having to handle cleanup if a vendor-specific module gets
loaded later.
Getting rid of the whole ping-ponging of which backlight drivers
get loaded during boot was actually one of the goals of the rework
which landed in 6.1 this actually allowed us to remove some quirks
because some hw/firmware did not like us changing our mind and
switching backlight interfaces after first poking another one.
So we definitely don't want to go back to the ping-pong thing.
Defaulting to native but then having a vendor driver be able to disable
native drivers seems easiest? It shouldn't be a regression over the
previous state of affairs since both drivers were being loaded already.
Part of the reason for the ACPI backlight detect refactor is
because of a planned new backlight uAPI where the brightness
control becomes a property on the drm connector object, for a
RFC including the rationale behind this planned uAPI change see:
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fdri-devel%2Fb61d3eeb-6213-afac-2e70-7b9791c86d2e%40redhat.com%2F&data=05%7C01%7Cmario.limonciello%40amd.com%7C6380e44c87e447eedc3f08dab6c7180a%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638023263541559113%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=K4oMmVl51kT9V%2B4GAdx%2FS7tXWHPKyFe5WXZzC3CPeOU%3D&reserved=0
These plans require that there is only 1 backlight device
registered (per panel).
Having the native driver come and then go and be replaced
with the vendor driver would also be quite inconvenient
for these planned changes.
As such I would rather find a solution for your "weird"
laptop so that acpi_video_get_backlight_type() just always
returns vendor there.
What exactly is this "weird" laptop? Is it something running coreboot
that doesn't "normally" ship with coreboot perhaps?
If that's the category it falls in, I think what we really need is
something to land in coreboot source for indicating how it should behave
and then also a change in the kernel to react to that.
That's a similar approach to what was used fore the chromebook laptops
that run coreboot.
Note that drivers/acpi/video_detect.c already has a DMI
quirk tables for models where the heuristics from
acpi_video_get_backlight_type() don't work. In general
we (mostly me) try to make it so that the heuristics
work on most models, to avoid needing to add every model
under the sun to the DMI quirk table, but if your laptop
is somehow special then adding a DMI quirk for it should
be fine ?
Can you perhaps explain a bit in what way your laptop
is weird ?
Note that technically if the native backlight does not work,
then the GPU driver really should not even try to register
it. But sometimes the video-bios-tables claim the backlight
pwm input is attached to the GPU while it is not and things
have evolved in such a way that the DMI quirks for that
live in acpi/video_detect.c rather then in the GPU driver.
Regards,
Hans