aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRasmus Villemoes <linux@rasmusvillemoes.dk>2019-10-08 14:03:26 +0200
committerLee Jones <lee.jones@linaro.org>2019-10-14 08:57:45 +0100
commit407feae1cacaa5d00ebe686532a73ad6de747409 (patch)
treeb939ed915f984e0ebdac2a46829010ff642006db
parentbacklight: pwm_bl: Eliminate a 64/32 division (diff)
downloadlinux-dev-407feae1cacaa5d00ebe686532a73ad6de747409.tar.xz
linux-dev-407feae1cacaa5d00ebe686532a73ad6de747409.zip
backlight: pwm_bl: Drop use of int_pow()
For a fixed small exponent of 3, it is more efficient to simply use two explicit multiplications rather than calling the int_pow() library function: Aside from the function call overhead, its implementation using repeated squaring means it ends up doing four 64x64 multiplications. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
-rw-r--r--drivers/video/backlight/pwm_bl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
index 15d84da77ecd..ee85055146dd 100644
--- a/drivers/video/backlight/pwm_bl.c
+++ b/drivers/video/backlight/pwm_bl.c
@@ -180,7 +180,8 @@ static u64 cie1931(unsigned int lightness, unsigned int scale)
if (lightness <= (8 * scale)) {
retval = DIV_ROUND_CLOSEST(lightness * 10, 9033);
} else {
- retval = int_pow((lightness + (16 * scale)) / 116, 3);
+ retval = (lightness + (16 * scale)) / 116;
+ retval *= retval * retval;
retval = DIV_ROUND_CLOSEST_ULL(retval, (scale * scale));
}