Re: [PATCH v2 1/2] platform/x86: uniwill-laptop: Fix brightness notify for 3 level keyboards

Armin Wolf <[email protected]>
Newsgroups org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Am 06.08.26 um 01:04 schrieb Werner Sembach:

> The devices with 3 brightness level keyboards send
> UNIWILL_OSD_KB_LED_LEVEL0, UNIWILL_OSD_KB_LED_LEVEL2, and
> UNIWILL_OSD_KB_LED_LEVEL4 and not UNIWILL_OSD_KB_LED_LEVEL0,
> UNIWILL_OSD_KB_LED_LEVEL1, and UNIWILL_OSD_KB_LED_LEVEL2.
>
> This patch maps the events correctly to brightness levels 0, 1, and 2.
>
> Signed-off-by: Werner Sembach <[email protected]>
> ---
> V1->V2: Use the events as source of truth for brightness_hw_changed value
>          again to avoid a race condition as Armin had pointed out.
>
>   drivers/platform/x86/uniwill/uniwill-acpi.c | 12 ++++++++++++
>   1 file changed, 12 insertions(+)
>
> diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform/x86/uniwill/uniwill-acpi.c
> index 7a2eeaec4c961..5c5bb6d104494 100644
> --- a/drivers/platform/x86/uniwill/uniwill-acpi.c
> +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c
> @@ -1631,6 +1631,18 @@ static int uniwill_notify_kbd_led(struct uniwill_data *data, int brightness)
>   	struct led_classdev *led_cdev;
>   	int ret;
>   
> +	/*
> +	 * The devices with 3 brightness level keyboards send
> +	 * UNIWILL_OSD_KB_LED_LEVEL0, UNIWILL_OSD_KB_LED_LEVEL2, and
> +	 * UNIWILL_OSD_KB_LED_LEVEL4 which need to be mapped to 0, 1, and 2.
> +	 */
> +	if (data->kbd_led_max_brightness == 2) {
> +		if (brightness == 2)
> +			brightness = 1;
> +		else if (brightness == 4)
> +			brightness = 2;

Please return -EINVAL should brightness be 1 or 3 (by using a switch statement). With this being addressed:

Reviewed-by: Armin Wolf <[email protected]>

> +	}
> +
>   	if (data->kbd_led_single_color)
>   		led_cdev = &data->kbd_led_cdev;
>   	else
>
> base-commit: 1b04f556e8428a3865a95627ab7a0acb5d9b93a5
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.