mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 00:51:35 +00:00
power: supply: cpcap-battery: Move coulomb counter units per lsb to ddata
We can simplify cpcap_battery_cc_raw_div() a bit by moving the units per lsb to ddata. Cc: Merlijn Wajer <merlijn@wizzup.org> Signed-off-by: Tony Lindgren <tony@atomide.com> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
5688ea0492
commit
458f5c8cda
1 changed files with 14 additions and 14 deletions
|
@ -111,6 +111,7 @@ struct cpcap_battery_ddata {
|
||||||
struct power_supply *psy;
|
struct power_supply *psy;
|
||||||
struct cpcap_battery_config config;
|
struct cpcap_battery_config config;
|
||||||
struct cpcap_battery_state_data state[CPCAP_BATTERY_STATE_NR];
|
struct cpcap_battery_state_data state[CPCAP_BATTERY_STATE_NR];
|
||||||
|
u32 cc_lsb; /* μAms per LSB */
|
||||||
atomic_t active;
|
atomic_t active;
|
||||||
int status;
|
int status;
|
||||||
u16 vendor;
|
u16 vendor;
|
||||||
|
@ -220,32 +221,19 @@ static int cpcap_battery_cc_raw_div(struct cpcap_battery_ddata *ddata,
|
||||||
s64 acc;
|
s64 acc;
|
||||||
u64 tmp;
|
u64 tmp;
|
||||||
int avg_current;
|
int avg_current;
|
||||||
u32 cc_lsb;
|
|
||||||
|
|
||||||
if (!divider)
|
if (!divider)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
switch (ddata->vendor) {
|
|
||||||
case CPCAP_VENDOR_ST:
|
|
||||||
cc_lsb = 95374; /* μAms per LSB */
|
|
||||||
break;
|
|
||||||
case CPCAP_VENDOR_TI:
|
|
||||||
cc_lsb = 91501; /* μAms per LSB */
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
acc = accumulator;
|
acc = accumulator;
|
||||||
acc = acc - ((s64)sample * offset);
|
acc = acc - ((s64)sample * offset);
|
||||||
cc_lsb = (cc_lsb * ddata->config.cd_factor) / 1000;
|
|
||||||
|
|
||||||
if (acc >= 0)
|
if (acc >= 0)
|
||||||
tmp = acc;
|
tmp = acc;
|
||||||
else
|
else
|
||||||
tmp = acc * -1;
|
tmp = acc * -1;
|
||||||
|
|
||||||
tmp = tmp * cc_lsb;
|
tmp = tmp * ddata->cc_lsb;
|
||||||
do_div(tmp, divider);
|
do_div(tmp, divider);
|
||||||
avg_current = tmp;
|
avg_current = tmp;
|
||||||
|
|
||||||
|
@ -812,6 +800,18 @@ static int cpcap_battery_probe(struct platform_device *pdev)
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
|
switch (ddata->vendor) {
|
||||||
|
case CPCAP_VENDOR_ST:
|
||||||
|
ddata->cc_lsb = 95374; /* μAms per LSB */
|
||||||
|
break;
|
||||||
|
case CPCAP_VENDOR_TI:
|
||||||
|
ddata->cc_lsb = 91501; /* μAms per LSB */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
ddata->cc_lsb = (ddata->cc_lsb * ddata->config.cd_factor) / 1000;
|
||||||
|
|
||||||
platform_set_drvdata(pdev, ddata);
|
platform_set_drvdata(pdev, ddata);
|
||||||
|
|
||||||
error = regmap_update_bits(ddata->reg, CPCAP_REG_CCM,
|
error = regmap_update_bits(ddata->reg, CPCAP_REG_CCM,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue