[PATCH 03/15] HID: hid-oxp: retain fractional brightness when reading RGB status

From: Andrei Aldea

Date: Wed Sep 09 2026 - 23:23:33 EST


Multiply the hardware brightness level by the LED brightness range before
dividing by four. Dividing first reported every intermediate hardware
level as zero instead of 25, 50 or 75 percent.

Fixes: 84910c459d65 ("HID: hid-oxp: Add OneXPlayer configuration driver")
Assisted-by: LLM
Reviewed-by: Derek J. Clark <derekjohn.clark@xxxxxxxxx>
Signed-off-by: Andrei Aldea <andrei1998@xxxxxxxxx>
---
drivers/hid/hid-oxp.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/hid/hid-oxp.c b/drivers/hid/hid-oxp.c
index 0c895bd..86a559c 100644
--- a/drivers/hid/hid-oxp.c
+++ b/drivers/hid/hid-oxp.c
@@ -334,8 +334,8 @@ static int oxp_hid_raw_event_gen_1(struct hid_device *hdev,
drvdata.rgb_en = rgb_rep->enabled == 0 ? OXP_FEAT_DISABLED :
OXP_FEAT_ENABLED;
drvdata.rgb_brightness = rgb_rep->brightness;
- led_mc->led_cdev.brightness = rgb_rep->brightness / 4 *
- led_mc->led_cdev.max_brightness;
+ led_mc->led_cdev.brightness = rgb_rep->brightness *
+ led_mc->led_cdev.max_brightness / 4;
/* If monocolor had less than 100% brightness on the previous boot,
* there will be no reliable way to determine the real intensity.
* Since intensity scaling is used with a hardware brightness set at max,
@@ -423,8 +423,8 @@ static int oxp_hid_raw_event_gen_2(struct hid_device *hdev,
drvdata.rgb_en = rgb_rep->enabled == 0 ? OXP_FEAT_DISABLED :
OXP_FEAT_ENABLED;
drvdata.rgb_brightness = rgb_rep->brightness;
- led_mc->led_cdev.brightness = rgb_rep->brightness / 4 *
- led_mc->led_cdev.max_brightness;
+ led_mc->led_cdev.brightness = rgb_rep->brightness *
+ led_mc->led_cdev.max_brightness / 4;
/* If monocolor had less than 100% brightness on the previous boot,
* there will be no reliable way to determine the real intensity.
* Since intensity scaling is used with a hardware brightness set at max,