On Mon, Jan 23, 2023 at 12:38 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > Some apple laptop models have an ACPI device with a HID of APP000B > and that device has an IO resource (so it does not describe the new > unsupported MMIO based gmux type), but there actually is no gmux > in the laptop at all. > > The gmux_probe() function of the actual apple-gmux driver has code > to detect this, this code has been factored out into a new > apple_gmux_detect() helper in apple-gmux.h. > > Use this new function to fix acpi_video_get_backlight_type() wrongly > returning apple_gmux as type on these new laptops. > > Fixes: 21245df307cb ("ACPI: video: Add Apple GMUX brightness control detection") > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> Please feel free to add Acked-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> to this one and route it through platform/x86, thanks! > --- > drivers/acpi/video_detect.c | 24 +++--------------------- > 1 file changed, 3 insertions(+), 21 deletions(-) > > diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c > index 64eab35037c3..a8c02608dde4 100644 > --- a/drivers/acpi/video_detect.c > +++ b/drivers/acpi/video_detect.c > @@ -110,26 +110,6 @@ static bool nvidia_wmi_ec_supported(void) > } > #endif > > -static bool apple_gmux_backlight_present(void) > -{ > - struct acpi_device *adev; > - struct device *dev; > - > - adev = acpi_dev_get_first_match_dev(GMUX_ACPI_HID, NULL, -1); > - if (!adev) > - return false; > - > - dev = acpi_get_first_physical_node(adev); > - if (!dev) > - return false; > - > - /* > - * drivers/platform/x86/apple-gmux.c only supports old style > - * Apple GMUX with an IO-resource. > - */ > - return pnp_get_resource(to_pnp_dev(dev), IORESOURCE_IO, 0) != NULL; > -} > - > /* Force to use vendor driver when the ACPI device is known to be > * buggy */ > static int video_detect_force_vendor(const struct dmi_system_id *d) > @@ -791,6 +771,7 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) > { > static DEFINE_MUTEX(init_mutex); > static bool nvidia_wmi_ec_present; > + static bool apple_gmux_present; > static bool native_available; > static bool init_done; > static long video_caps; > @@ -804,6 +785,7 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) > ACPI_UINT32_MAX, find_video, NULL, > &video_caps, NULL); > nvidia_wmi_ec_present = nvidia_wmi_ec_supported(); > + apple_gmux_present = apple_gmux_detect(NULL, NULL); > init_done = true; > } > if (native) > @@ -825,7 +807,7 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) > if (nvidia_wmi_ec_present) > return acpi_backlight_nvidia_wmi_ec; > > - if (apple_gmux_backlight_present()) > + if (apple_gmux_present) > return acpi_backlight_apple_gmux; > > /* Use ACPI video if available, except when native should be preferred. */ > -- > 2.39.0 >