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