Re: [PATCH] platform/x86: apple-gmux: Add acpi_video_get_backlight_type() check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 3/7/23 12:38, Hans de Goede wrote:
> Make apple-gmux backlight registration honor the acpi_backlight=...
> kernel commandline option which is used to select the backlight
> control method on x86/ACPI devices.
> 
> Reported-and-tested-by: Aditya Garg <gargaditya08@xxxxxxxx>
> Link: https://lore.kernel.org/platform-driver-x86/BM1PR01MB0931B467250831916F7C55B3B8A59@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>

I've added this to my review-hans (soon to be for-next) branch now.

Regards,

Hans


> ---
>  drivers/platform/x86/apple-gmux.c | 59 +++++++++++++++++--------------
>  1 file changed, 33 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/platform/x86/apple-gmux.c b/drivers/platform/x86/apple-gmux.c
> index 757fd71c900f..787cf2a7e268 100644
> --- a/drivers/platform/x86/apple-gmux.c
> +++ b/drivers/platform/x86/apple-gmux.c
> @@ -23,6 +23,7 @@
>  #include <linux/pci.h>
>  #include <linux/vga_switcheroo.h>
>  #include <linux/debugfs.h>
> +#include <acpi/video.h>
>  #include <asm/io.h>
>  
>  /**
> @@ -783,6 +784,7 @@ static int gmux_probe(struct pnp_dev *pnp, const struct pnp_device_id *id)
>  	struct backlight_properties props;
>  	struct backlight_device *bdev;
>  	u8 ver_major, ver_minor, ver_release;
> +	bool register_bdev = true;
>  	int ret = -ENXIO;
>  	acpi_status status;
>  	unsigned long long gpe;
> @@ -859,33 +861,38 @@ static int gmux_probe(struct pnp_dev *pnp, const struct pnp_device_id *id)
>  	props.type = BACKLIGHT_PLATFORM;
>  	props.max_brightness = gmux_read32(gmux_data, GMUX_PORT_MAX_BRIGHTNESS);
>  
> -	/*
> -	 * Currently it's assumed that the maximum brightness is less than
> -	 * 2^24 for compatibility with old gmux versions. Cap the max
> -	 * brightness at this value, but print a warning if the hardware
> -	 * reports something higher so that it can be fixed.
> -	 */
> -	if (WARN_ON(props.max_brightness > GMUX_MAX_BRIGHTNESS))
> -		props.max_brightness = GMUX_MAX_BRIGHTNESS;
> -
> -	bdev = backlight_device_register("gmux_backlight", &pnp->dev,
> -					 gmux_data, &gmux_bl_ops, &props);
> -	if (IS_ERR(bdev)) {
> -		ret = PTR_ERR(bdev);
> -		goto err_unmap;
> -	}
> -
> -	gmux_data->bdev = bdev;
> -	bdev->props.brightness = gmux_get_brightness(bdev);
> -	backlight_update_status(bdev);
> +#if IS_REACHABLE(CONFIG_ACPI_VIDEO)
> +	register_bdev = acpi_video_get_backlight_type() == acpi_backlight_apple_gmux;
> +#endif
> +	if (register_bdev) {
> +		/*
> +		 * Currently it's assumed that the maximum brightness is less than
> +		 * 2^24 for compatibility with old gmux versions. Cap the max
> +		 * brightness at this value, but print a warning if the hardware
> +		 * reports something higher so that it can be fixed.
> +		 */
> +		if (WARN_ON(props.max_brightness > GMUX_MAX_BRIGHTNESS))
> +			props.max_brightness = GMUX_MAX_BRIGHTNESS;
> +
> +		bdev = backlight_device_register("gmux_backlight", &pnp->dev,
> +						 gmux_data, &gmux_bl_ops, &props);
> +		if (IS_ERR(bdev)) {
> +			ret = PTR_ERR(bdev);
> +			goto err_unmap;
> +		}
>  
> -	/*
> -	 * The backlight situation on Macs is complicated. If the gmux is
> -	 * present it's the best choice, because it always works for
> -	 * backlight control and supports more levels than other options.
> -	 * Disable the other backlight choices.
> -	 */
> -	apple_bl_unregister();
> +		gmux_data->bdev = bdev;
> +		bdev->props.brightness = gmux_get_brightness(bdev);
> +		backlight_update_status(bdev);
> +
> +		/*
> +		 * The backlight situation on Macs is complicated. If the gmux is
> +		 * present it's the best choice, because it always works for
> +		 * backlight control and supports more levels than other options.
> +		 * Disable the other backlight choices.
> +		 */
> +		apple_bl_unregister();
> +	}
>  
>  	gmux_data->power_state = VGA_SWITCHEROO_ON;
>  




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux