Skip to content

Commit 150bca5

Browse files
geo-starklag-linaro
authored andcommitted
leds: aw200xx: Improve autodim calculation method
It is highly recommended to leverage the DIV_ROUND_UP() function as a more refined and mathematically precise alternative to employing a coarse division method. Signed-off-by: George Stark <gnstark@salutedevices.com> Signed-off-by: Dmitry Rokosov <ddrokosov@salutedevices.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Link: https://lore.kernel.org/r/20231125200519.1750-9-ddrokosov@salutedevices.com Signed-off-by: Lee Jones <lee@kernel.org>
1 parent 96b43a1 commit 150bca5

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

drivers/leds/leds-aw200xx.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@
8787
#define AW200XX_REG_DIM(x, columns) \
8888
AW200XX_REG(AW200XX_PAGE4, AW200XX_LED2REG(x, columns) * 2)
8989
#define AW200XX_REG_DIM2FADE(x) ((x) + 1)
90+
#define AW200XX_REG_FADE2DIM(fade) \
91+
DIV_ROUND_UP((fade) * AW200XX_DIM_MAX, AW200XX_FADE_MAX)
9092

9193
/*
9294
* Duty ratio of display scan (see p.15 of datasheet for formula):
@@ -195,9 +197,7 @@ static int aw200xx_brightness_set(struct led_classdev *cdev,
195197

196198
dim = led->dim;
197199
if (dim < 0)
198-
dim = max_t(int,
199-
brightness / (AW200XX_FADE_MAX / AW200XX_DIM_MAX),
200-
1);
200+
dim = AW200XX_REG_FADE2DIM(brightness);
201201

202202
ret = regmap_write(chip->regmap, reg, dim);
203203
if (ret)
@@ -462,6 +462,7 @@ static int aw200xx_probe_fw(struct device *dev, struct aw200xx *chip)
462462
led->num = source;
463463
led->chip = chip;
464464
led->cdev.brightness_set_blocking = aw200xx_brightness_set;
465+
led->cdev.max_brightness = AW200XX_FADE_MAX;
465466
led->cdev.groups = dim_groups;
466467
init_data.fwnode = child;
467468

0 commit comments

Comments
 (0)