Messages in this thread | | | Date | Wed, 27 Aug 2008 01:10:19 +0400 | From | Anton Vorontsov <> | Subject | Re: [PATCH] power-supply: Add function to return system-wide power state |
| |
On Tue, Aug 26, 2008 at 09:33:27PM +0100, Matthew Garrett wrote: > Something like this?
Yup, except that I forgot 'inline' in my example. ;-) I'll add it before applying, thanks!
> diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c > index cb1ccb4..6a687da 100644 > --- a/drivers/power/power_supply_core.c > +++ b/drivers/power/power_supply_core.c > @@ -87,6 +87,31 @@ int power_supply_am_i_supplied(struct power_supply *psy) > return error; > } > > +static int __power_supply_is_system_supplied(struct device *dev, void *data) > +{ > + union power_supply_propval ret = {0,}; > + struct power_supply *psy = dev_get_drvdata(dev); > + > + if (psy->type != POWER_SUPPLY_TYPE_BATTERY) { > + if (psy->get_property(psy, > + POWER_SUPPLY_PROP_ONLINE, &ret)) > + return 0; > + if (ret.intval) > + return ret.intval; > + } > + return 0; > +} > + > +int power_supply_is_system_supplied() > +{ > + int error; > + > + error = class_for_each_device(power_supply_class, NULL, NULL, > + __power_supply_is_system_supplied); > + > + return error; > +} > + > int power_supply_register(struct device *parent, struct power_supply *psy) > { > int rc = 0; > @@ -148,6 +173,7 @@ static void __exit power_supply_class_exit(void) > > EXPORT_SYMBOL_GPL(power_supply_changed); > EXPORT_SYMBOL_GPL(power_supply_am_i_supplied); > +EXPORT_SYMBOL_GPL(power_supply_is_system_supplied); > EXPORT_SYMBOL_GPL(power_supply_register); > EXPORT_SYMBOL_GPL(power_supply_unregister); > > diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h > index ea96ead..304df22 100644 > --- a/include/linux/power_supply.h > +++ b/include/linux/power_supply.h > @@ -164,11 +164,16 @@ struct power_supply_info { > > extern void power_supply_changed(struct power_supply *psy); > extern int power_supply_am_i_supplied(struct power_supply *psy); > - > extern int power_supply_register(struct device *parent, > struct power_supply *psy); > extern void power_supply_unregister(struct power_supply *psy); > > +#ifdef CONFIG_POWER_SUPPLY > +extern int power_supply_is_system_supplied(void); > +#else > +static int power_supply_is_system_supplied(void) { return -ENOSYS; } > +#endif > + > /* For APM emulation, think legacy userspace. */ > extern struct class *power_supply_class;
-- Anton Vorontsov email: cbouatmailru@gmail.com irc://irc.freenode.net/bd2
| |