power: supply: core: Parse battery chemistry/technology
This extends the struct power_supply_battery_info with a "technology" field makes the core DT parser optionally obtain this from the device tree. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
b171cb623c
commit
4eef766b7d
@ -571,6 +571,7 @@ int power_supply_get_battery_info(struct power_supply *psy,
|
||||
int err, len, index;
|
||||
const __be32 *list;
|
||||
|
||||
info->technology = POWER_SUPPLY_TECHNOLOGY_UNKNOWN;
|
||||
info->energy_full_design_uwh = -EINVAL;
|
||||
info->charge_full_design_uah = -EINVAL;
|
||||
info->voltage_min_design_uv = -EINVAL;
|
||||
@ -618,6 +619,25 @@ int power_supply_get_battery_info(struct power_supply *psy,
|
||||
* Documentation/power/power_supply_class.rst.
|
||||
*/
|
||||
|
||||
err = of_property_read_string(battery_np, "device-chemistry", &value);
|
||||
if (!err) {
|
||||
if (!strcmp("nickel-cadmium", value))
|
||||
info->technology = POWER_SUPPLY_TECHNOLOGY_NiCd;
|
||||
else if (!strcmp("nickel-metal-hydride", value))
|
||||
info->technology = POWER_SUPPLY_TECHNOLOGY_NiMH;
|
||||
else if (!strcmp("lithium-ion", value))
|
||||
/* Imprecise lithium-ion type */
|
||||
info->technology = POWER_SUPPLY_TECHNOLOGY_LION;
|
||||
else if (!strcmp("lithium-ion-polymer", value))
|
||||
info->technology = POWER_SUPPLY_TECHNOLOGY_LIPO;
|
||||
else if (!strcmp("lithium-ion-iron-phosphate", value))
|
||||
info->technology = POWER_SUPPLY_TECHNOLOGY_LiFe;
|
||||
else if (!strcmp("lithium-ion-manganese-oxide", value))
|
||||
info->technology = POWER_SUPPLY_TECHNOLOGY_LiMn;
|
||||
else
|
||||
dev_warn(&psy->dev, "%s unknown battery type\n", value);
|
||||
}
|
||||
|
||||
of_property_read_u32(battery_np, "energy-full-design-microwatt-hours",
|
||||
&info->energy_full_design_uwh);
|
||||
of_property_read_u32(battery_np, "charge-full-design-microamp-hours",
|
||||
|
@ -352,6 +352,7 @@ struct power_supply_resistance_temp_table {
|
||||
*/
|
||||
|
||||
struct power_supply_battery_info {
|
||||
unsigned int technology; /* from the enum above */
|
||||
int energy_full_design_uwh; /* microWatt-hours */
|
||||
int charge_full_design_uah; /* microAmp-hours */
|
||||
int voltage_min_design_uv; /* microVolts */
|
||||
|
Loading…
x
Reference in New Issue
Block a user