diff mbox series

[v2] platform/x86: nvidia-wmi-ec-backlight: Add force module parameter

Message ID 20230217144208.5721-1-hdegoede@redhat.com (mailing list archive)
State Accepted, archived
Headers show
Series [v2] platform/x86: nvidia-wmi-ec-backlight: Add force module parameter | expand

Commit Message

Hans de Goede Feb. 17, 2023, 2:42 p.m. UTC
On some Lenovo Legion models, the backlight might be driven by either
one of nvidia_wmi_ec_backlight or amdgpu_bl0 at different times.

When the Nvidia WMI EC backlight interface reports the backlight is
controlled by the EC, the current backlight handling only registers
nvidia_wmi_ec_backlight (and registers no other backlight interfaces).

This hides (never registers) the amdgpu_bl0 interface, where as prior
to 6.1.4 users would have both nvidia_wmi_ec_backlight and amdgpu_bl0
and could work around things in userspace.

Add a force module parameter which can be used with acpi_backlight=native
to restore the old behavior as a workound (for now) by passing:

"acpi_backlight=native nvidia-wmi-ec-backlight.force=1"

Fixes: 8d0ca287fd8c ("platform/x86: nvidia-wmi-ec-backlight: Use acpi_video_get_backlight_type()")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217026
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
Changes in v2:
- Reword commit message
---
 drivers/platform/x86/nvidia-wmi-ec-backlight.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Daniel Dadap Feb. 17, 2023, 3:37 p.m. UTC | #1
Thanks, Hans. The new commit message sounds more appropriate.

Reviewed-by: Daniel Dadap <ddadap@nvidia.com>

On Fri, Feb 17, 2023 at 03:42:08PM +0100, Hans de Goede wrote:
> On some Lenovo Legion models, the backlight might be driven by either
> one of nvidia_wmi_ec_backlight or amdgpu_bl0 at different times.
> 
> When the Nvidia WMI EC backlight interface reports the backlight is
> controlled by the EC, the current backlight handling only registers
> nvidia_wmi_ec_backlight (and registers no other backlight interfaces).
> 
> This hides (never registers) the amdgpu_bl0 interface, where as prior
> to 6.1.4 users would have both nvidia_wmi_ec_backlight and amdgpu_bl0
> and could work around things in userspace.
> 
> Add a force module parameter which can be used with acpi_backlight=native
> to restore the old behavior as a workound (for now) by passing:
> 
> "acpi_backlight=native nvidia-wmi-ec-backlight.force=1"
> 
> Fixes: 8d0ca287fd8c ("platform/x86: nvidia-wmi-ec-backlight: Use acpi_video_get_backlight_type()")
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=217026
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
> Changes in v2:
> - Reword commit message
> ---
>  drivers/platform/x86/nvidia-wmi-ec-backlight.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/x86/nvidia-wmi-ec-backlight.c b/drivers/platform/x86/nvidia-wmi-ec-backlight.c
> index baccdf658538..1b572c90c76e 100644
> --- a/drivers/platform/x86/nvidia-wmi-ec-backlight.c
> +++ b/drivers/platform/x86/nvidia-wmi-ec-backlight.c
> @@ -12,6 +12,10 @@
>  #include <linux/wmi.h>
>  #include <acpi/video.h>
>  
> +static bool force;
> +module_param(force, bool, 0444);
> +MODULE_PARM_DESC(force, "Force loading (disable acpi_backlight=xxx checks");
> +
>  /**
>   * wmi_brightness_notify() - helper function for calling WMI-wrapped ACPI method
>   * @w:    Pointer to the struct wmi_device identified by %WMI_BRIGHTNESS_GUID
> @@ -91,7 +95,7 @@ static int nvidia_wmi_ec_backlight_probe(struct wmi_device *wdev, const void *ct
>  	int ret;
>  
>  	/* drivers/acpi/video_detect.c also checks that SOURCE == EC */
> -	if (acpi_video_get_backlight_type() != acpi_backlight_nvidia_wmi_ec)
> +	if (!force && acpi_video_get_backlight_type() != acpi_backlight_nvidia_wmi_ec)
>  		return -ENODEV;
>  
>  	/*
> -- 
> 2.39.1
>
Hans de Goede Feb. 18, 2023, 10:47 a.m. UTC | #2
Hi,

On 2/17/23 16:37, Daniel Dadap wrote:
> Thanks, Hans. The new commit message sounds more appropriate.
> 
> Reviewed-by: Daniel Dadap <ddadap@nvidia.com>

Thanks. I have pushed this to pdx86/for-next now so that it
will go to Linus during the merge-window and on to the
stable kernel series from there.

Regards,

Hans




> 
> On Fri, Feb 17, 2023 at 03:42:08PM +0100, Hans de Goede wrote:
>> On some Lenovo Legion models, the backlight might be driven by either
>> one of nvidia_wmi_ec_backlight or amdgpu_bl0 at different times.
>>
>> When the Nvidia WMI EC backlight interface reports the backlight is
>> controlled by the EC, the current backlight handling only registers
>> nvidia_wmi_ec_backlight (and registers no other backlight interfaces).
>>
>> This hides (never registers) the amdgpu_bl0 interface, where as prior
>> to 6.1.4 users would have both nvidia_wmi_ec_backlight and amdgpu_bl0
>> and could work around things in userspace.
>>
>> Add a force module parameter which can be used with acpi_backlight=native
>> to restore the old behavior as a workound (for now) by passing:
>>
>> "acpi_backlight=native nvidia-wmi-ec-backlight.force=1"
>>
>> Fixes: 8d0ca287fd8c ("platform/x86: nvidia-wmi-ec-backlight: Use acpi_video_get_backlight_type()")
>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=217026
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>> Changes in v2:
>> - Reword commit message
>> ---
>>  drivers/platform/x86/nvidia-wmi-ec-backlight.c | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/platform/x86/nvidia-wmi-ec-backlight.c b/drivers/platform/x86/nvidia-wmi-ec-backlight.c
>> index baccdf658538..1b572c90c76e 100644
>> --- a/drivers/platform/x86/nvidia-wmi-ec-backlight.c
>> +++ b/drivers/platform/x86/nvidia-wmi-ec-backlight.c
>> @@ -12,6 +12,10 @@
>>  #include <linux/wmi.h>
>>  #include <acpi/video.h>
>>  
>> +static bool force;
>> +module_param(force, bool, 0444);
>> +MODULE_PARM_DESC(force, "Force loading (disable acpi_backlight=xxx checks");
>> +
>>  /**
>>   * wmi_brightness_notify() - helper function for calling WMI-wrapped ACPI method
>>   * @w:    Pointer to the struct wmi_device identified by %WMI_BRIGHTNESS_GUID
>> @@ -91,7 +95,7 @@ static int nvidia_wmi_ec_backlight_probe(struct wmi_device *wdev, const void *ct
>>  	int ret;
>>  
>>  	/* drivers/acpi/video_detect.c also checks that SOURCE == EC */
>> -	if (acpi_video_get_backlight_type() != acpi_backlight_nvidia_wmi_ec)
>> +	if (!force && acpi_video_get_backlight_type() != acpi_backlight_nvidia_wmi_ec)
>>  		return -ENODEV;
>>  
>>  	/*
>> -- 
>> 2.39.1
>>
>
diff mbox series

Patch

diff --git a/drivers/platform/x86/nvidia-wmi-ec-backlight.c b/drivers/platform/x86/nvidia-wmi-ec-backlight.c
index baccdf658538..1b572c90c76e 100644
--- a/drivers/platform/x86/nvidia-wmi-ec-backlight.c
+++ b/drivers/platform/x86/nvidia-wmi-ec-backlight.c
@@ -12,6 +12,10 @@ 
 #include <linux/wmi.h>
 #include <acpi/video.h>
 
+static bool force;
+module_param(force, bool, 0444);
+MODULE_PARM_DESC(force, "Force loading (disable acpi_backlight=xxx checks");
+
 /**
  * wmi_brightness_notify() - helper function for calling WMI-wrapped ACPI method
  * @w:    Pointer to the struct wmi_device identified by %WMI_BRIGHTNESS_GUID
@@ -91,7 +95,7 @@  static int nvidia_wmi_ec_backlight_probe(struct wmi_device *wdev, const void *ct
 	int ret;
 
 	/* drivers/acpi/video_detect.c also checks that SOURCE == EC */
-	if (acpi_video_get_backlight_type() != acpi_backlight_nvidia_wmi_ec)
+	if (!force && acpi_video_get_backlight_type() != acpi_backlight_nvidia_wmi_ec)
 		return -ENODEV;
 
 	/*