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;
|
int err, len, index;
|
||||||
const __be32 *list;
|
const __be32 *list;
|
||||||
|
|
||||||
|
info->technology = POWER_SUPPLY_TECHNOLOGY_UNKNOWN;
|
||||||
info->energy_full_design_uwh = -EINVAL;
|
info->energy_full_design_uwh = -EINVAL;
|
||||||
info->charge_full_design_uah = -EINVAL;
|
info->charge_full_design_uah = -EINVAL;
|
||||||
info->voltage_min_design_uv = -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.
|
* 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",
|
of_property_read_u32(battery_np, "energy-full-design-microwatt-hours",
|
||||||
&info->energy_full_design_uwh);
|
&info->energy_full_design_uwh);
|
||||||
of_property_read_u32(battery_np, "charge-full-design-microamp-hours",
|
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 {
|
struct power_supply_battery_info {
|
||||||
|
unsigned int technology; /* from the enum above */
|
||||||
int energy_full_design_uwh; /* microWatt-hours */
|
int energy_full_design_uwh; /* microWatt-hours */
|
||||||
int charge_full_design_uah; /* microAmp-hours */
|
int charge_full_design_uah; /* microAmp-hours */
|
||||||
int voltage_min_design_uv; /* microVolts */
|
int voltage_min_design_uv; /* microVolts */
|
||||||
|
Loading…
Reference in New Issue
Block a user