Hi Linus, On Tue, Jul 13, 2021 at 05:27:05PM +0200, Linus Walleij wrote: > The kernel already has a static inline for linear interpolation > so use that instead of rolling our own. > > Signed-off-by: Linus Walleij > --- Thanks, I queued the whole series. -- Sebastian > drivers/power/supply/ab8500_btemp.c | 6 ++++-- > drivers/power/supply/ab8500_fg.c | 14 +++++++------- > 2 files changed, 11 insertions(+), 9 deletions(-) > > diff --git a/drivers/power/supply/ab8500_btemp.c b/drivers/power/supply/ab8500_btemp.c > index dbdcff32f353..24958b935d39 100644 > --- a/drivers/power/supply/ab8500_btemp.c > +++ b/drivers/power/supply/ab8500_btemp.c > @@ -27,6 +27,7 @@ > #include > #include > #include > +#include > > #include "ab8500-bm.h" > > @@ -437,8 +438,9 @@ static int ab8500_btemp_res_to_temp(struct ab8500_btemp *di, > i++; > } > > - return tbl[i].temp + ((tbl[i + 1].temp - tbl[i].temp) * > - (res - tbl[i].resist)) / (tbl[i + 1].resist - tbl[i].resist); > + return fixp_linear_interpolate(tbl[i].resist, tbl[i].temp, > + tbl[i + 1].resist, tbl[i + 1].temp, > + res); > } > > /** > diff --git a/drivers/power/supply/ab8500_fg.c b/drivers/power/supply/ab8500_fg.c > index 3d45ed0157c6..bdbf3f13bee0 100644 > --- a/drivers/power/supply/ab8500_fg.c > +++ b/drivers/power/supply/ab8500_fg.c > @@ -34,6 +34,7 @@ > #include > #include > #include > +#include > > #include "ab8500-bm.h" > > @@ -56,9 +57,6 @@ > /* FG constants */ > #define BATT_OVV 0x01 > > -#define interpolate(x, x1, y1, x2, y2) \ > - ((y1) + ((((y2) - (y1)) * ((x) - (x1))) / ((x2) - (x1)))); > - > /** > * struct ab8500_fg_interrupts - ab8500 fg interrupts > * @name: name of the interrupt > @@ -868,11 +866,12 @@ static int ab8500_fg_volt_to_capacity(struct ab8500_fg *di, int voltage) > } > > if ((i > 0) && (i < tbl_size)) { > - cap = interpolate(voltage, > + cap = fixp_linear_interpolate( > tbl[i].voltage, > tbl[i].capacity * 10, > tbl[i-1].voltage, > - tbl[i-1].capacity * 10); > + tbl[i-1].capacity * 10, > + voltage); > } else if (i == 0) { > cap = 1000; > } else { > @@ -920,11 +919,12 @@ static int ab8500_fg_battery_resistance(struct ab8500_fg *di) > } > > if ((i > 0) && (i < tbl_size)) { > - resist = interpolate(di->bat_temp / 10, > + resist = fixp_linear_interpolate( > tbl[i].temp, > tbl[i].resist, > tbl[i-1].temp, > - tbl[i-1].resist); > + tbl[i-1].resist, > + di->bat_temp / 10); > } else if (i == 0) { > resist = tbl[0].resist; > } else { > -- > 2.31.1 >