The patch titled Subject: lib/math: move int_pow() from pwm_bl.c for wider use has been added to the -mm tree. Its filename is lib-math-move-int_pow-from-pwm_blc-for-wider-use.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/lib-math-move-int_pow-from-pwm_blc-for-wider-use.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/lib-math-move-int_pow-from-pwm_blc-for-wider-use.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Subject: lib/math: move int_pow() from pwm_bl.c for wider use The integer exponentiation is used in few places and might be used in the future by other call sites. Move it to wider use. Link: http://lkml.kernel.org/r/20190323172531.80025-2-andriy.shevchenko@xxxxxxxxxxxxxxx Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Cc: Daniel Thompson <daniel.thompson@xxxxxxxxxx> Cc: Lee Jones <lee.jones@xxxxxxxxxx> Cc: Ray Jui <rjui@xxxxxxxxxxxx> Cc: Thierry Reding <thierry.reding@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/video/backlight/pwm_bl.c | 15 ------------- include/linux/kernel.h | 1 lib/math/Makefile | 2 - lib/math/int_pow.c | 32 +++++++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 16 deletions(-) --- a/drivers/video/backlight/pwm_bl.c~lib-math-move-int_pow-from-pwm_blc-for-wider-use +++ a/drivers/video/backlight/pwm_bl.c @@ -155,21 +155,6 @@ static const struct backlight_ops pwm_ba #ifdef CONFIG_OF #define PWM_LUMINANCE_SCALE 10000 /* luminance scale */ -/* An integer based power function */ -static u64 int_pow(u64 base, int exp) -{ - u64 result = 1; - - while (exp) { - if (exp & 1) - result *= base; - exp >>= 1; - base *= base; - } - - return result; -} - /* * CIE lightness to PWM conversion. * --- a/include/linux/kernel.h~lib-math-move-int_pow-from-pwm_blc-for-wider-use +++ a/include/linux/kernel.h @@ -494,6 +494,7 @@ extern int __kernel_text_address(unsigne extern int kernel_text_address(unsigned long addr); extern int func_ptr_is_kernel_text(void *ptr); +u64 int_pow(u64 base, unsigned int exp); unsigned long int_sqrt(unsigned long); #if BITS_PER_LONG < 64 --- /dev/null +++ a/lib/math/int_pow.c @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * An integer based power function + * + * Derived from drivers/video/backlight/pwm_bl.c + */ + +#include <linux/export.h> +#include <linux/kernel.h> +#include <linux/types.h> + +/** + * int_pow - computes the exponentiation of the given base and exponent + * @base: base which will be raised to the given power + * @exp: power to be raised to + * + * Computes: pow(base, exp), i.e. @base raised to the @exp power + */ +u64 int_pow(u64 base, unsigned int exp) +{ + u64 result = 1; + + while (exp) { + if (exp & 1) + result *= base; + exp >>= 1; + base *= base; + } + + return result; +} +EXPORT_SYMBOL_GPL(int_pow); --- a/lib/math/Makefile~lib-math-move-int_pow-from-pwm_blc-for-wider-use +++ a/lib/math/Makefile @@ -1,4 +1,4 @@ -obj-y += div64.o gcd.o lcm.o int_sqrt.o reciprocal_div.o +obj-y += div64.o gcd.o lcm.o int_pow.o int_sqrt.o reciprocal_div.o obj-$(CONFIG_CORDIC) += cordic.o obj-$(CONFIG_PRIME_NUMBERS) += prime_numbers.o _ Patches currently in -mm which might be from andriy.shevchenko@xxxxxxxxxxxxxxx are lib-move-mathematic-helpers-to-separate-folder.patch lib-math-move-int_pow-from-pwm_blc-for-wider-use.patch