Re: [PATCH 1/2] power_supply: get_by_name and set_chargedfunctionality

From: Daniel Mack
Date: Wed Jul 29 2009 - 06:37:18 EST


On Wed, Jul 29, 2009 at 11:29:48AM +0100, Ian molton wrote:
> Looks ok. the only comment I have right now is that the comment doesnt
> quite match the patch - it suggests that the patch doesnt include the
> power_supply_set_battery_charged() function, when it does in fact.

The subject mentions it, and the body references it again. Hmm. Anyway.
Want me to resend? Or could the commiter add another sentence to point
that out? I think that would be Anton, as he agreed to pick all the
other patches I recently sent in.

Thanks,
Daniel


>> On Thu, Jul 23, 2009 at 08:35:53PM +0200, Daniel Mack wrote:
>>> This adds a function to get a power_supply device from the class of
>>> registered devices by name reference. It can be used to find a specific
>>> battery to call power_supply_set_battery_charged() on.
>>>
>>> Some battery drivers might need that information to calibrate
>>> themselves.
>>>
>>> Signed-off-by: Daniel Mack <daniel@xxxxxxxx>
>>> Cc: Ian Molton <spyro@xxxxxxx>
>>> Cc: Anton Vorontsov <cbou@xxxxxxx>
>>> Cc: Matt Reimer <mreimer@xxxxxxxx>
>>> ---
>>> drivers/power/power_supply_core.c | 28 ++++++++++++++++++++++++++++
>>> include/linux/power_supply.h | 3 +++
>>> 2 files changed, 31 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
>>> index 58f10ac..ddb4800 100644
>>> --- a/drivers/power/power_supply_core.c
>>> +++ b/drivers/power/power_supply_core.c
>>> @@ -117,6 +117,34 @@ int power_supply_is_system_supplied(void)
>>> }
>>> EXPORT_SYMBOL_GPL(power_supply_is_system_supplied);
>>> +int power_supply_set_battery_charged(struct power_supply *psy)
>>> +{
>>> + if (psy->type == POWER_SUPPLY_TYPE_BATTERY && psy->set_charged) {
>>> + psy->set_charged(psy);
>>> + return 0;
>>> + }
>>> +
>>> + return -EINVAL;
>>> +}
>>> +EXPORT_SYMBOL_GPL(power_supply_set_battery_charged);
>>> +
>>> +static int power_supply_match_device_by_name(struct device *dev, void *data)
>>> +{
>>> + const char *name = data;
>>> + struct power_supply *psy = dev_get_drvdata(dev);
>>> +
>>> + return strcmp(psy->name, name) == 0;
>>> +}
>>> +
>>> +struct power_supply *power_supply_get_by_name(char *name)
>>> +{
>>> + struct device *dev = class_find_device(power_supply_class, NULL, name,
>>> + power_supply_match_device_by_name);
>>> +
>>> + return dev ? dev_get_drvdata(dev) : NULL;
>>> +}
>>> +EXPORT_SYMBOL_GPL(power_supply_get_by_name);
>>> +
>>> int power_supply_register(struct device *parent, struct power_supply *psy)
>>> {
>>> int rc = 0;
>>> diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
>>> index 594c494..49f3296 100644
>>> --- a/include/linux/power_supply.h
>>> +++ b/include/linux/power_supply.h
>>> @@ -126,6 +126,7 @@ struct power_supply {
>>> enum power_supply_property psp,
>>> union power_supply_propval *val);
>>> void (*external_power_changed)(struct power_supply *psy);
>>> + void (*set_charged)(struct power_supply *psy);
>>> /* For APM emulation, think legacy userspace. */
>>> int use_for_apm;
>>> @@ -165,8 +166,10 @@ struct power_supply_info {
>>> int use_for_apm;
>>> };
>>> +extern struct power_supply *power_supply_get_by_name(char *name);
>>> extern void power_supply_changed(struct power_supply *psy);
>>> extern int power_supply_am_i_supplied(struct power_supply *psy);
>>> +extern int power_supply_set_battery_charged(struct power_supply *psy);
>>> #if defined(CONFIG_POWER_SUPPLY) ||
>>> defined(CONFIG_POWER_SUPPLY_MODULE)
>>> extern int power_supply_is_system_supplied(void);
>>> --
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/