diff options
author | Matthew Garrett <mjg59@srcf.ucam.org> | 2008-08-26 16:09:59 -0400 |
---|---|---|
committer | Anton Vorontsov <cbouatmailru@gmail.com> | 2008-08-31 18:42:54 -0400 |
commit | 942ed161944b3476639916cf544e6975b29c985a (patch) | |
tree | a05e3bd0d6b59de318f3bfc5557502c13dde1bc4 /drivers/power | |
parent | e82374fd1a804e197fc2a54c3930e70c5d300abc (diff) |
power_supply: Add function to return system-wide power state
Certain drivers benefit from knowing whether the system is on ac or
battery, for instance when determining which backlight registers to
read. This adds a simple call to determine whether there's an online
power supply other than any batteries.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/power_supply_core.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c index cb1ccb472921..f44f5b608f6a 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c | |||
@@ -87,6 +87,30 @@ int power_supply_am_i_supplied(struct power_supply *psy) | |||
87 | return error; | 87 | return error; |
88 | } | 88 | } |
89 | 89 | ||
90 | static int __power_supply_is_system_supplied(struct device *dev, void *data) | ||
91 | { | ||
92 | union power_supply_propval ret = {0,}; | ||
93 | struct power_supply *psy = dev_get_drvdata(dev); | ||
94 | |||
95 | if (psy->type != POWER_SUPPLY_TYPE_BATTERY) { | ||
96 | if (psy->get_property(psy, POWER_SUPPLY_PROP_ONLINE, &ret)) | ||
97 | return 0; | ||
98 | if (ret.intval) | ||
99 | return ret.intval; | ||
100 | } | ||
101 | return 0; | ||
102 | } | ||
103 | |||
104 | int power_supply_is_system_supplied(void) | ||
105 | { | ||
106 | int error; | ||
107 | |||
108 | error = class_for_each_device(power_supply_class, NULL, NULL, | ||
109 | __power_supply_is_system_supplied); | ||
110 | |||
111 | return error; | ||
112 | } | ||
113 | |||
90 | int power_supply_register(struct device *parent, struct power_supply *psy) | 114 | int power_supply_register(struct device *parent, struct power_supply *psy) |
91 | { | 115 | { |
92 | int rc = 0; | 116 | int rc = 0; |
@@ -148,6 +172,7 @@ static void __exit power_supply_class_exit(void) | |||
148 | 172 | ||
149 | EXPORT_SYMBOL_GPL(power_supply_changed); | 173 | EXPORT_SYMBOL_GPL(power_supply_changed); |
150 | EXPORT_SYMBOL_GPL(power_supply_am_i_supplied); | 174 | EXPORT_SYMBOL_GPL(power_supply_am_i_supplied); |
175 | EXPORT_SYMBOL_GPL(power_supply_is_system_supplied); | ||
151 | EXPORT_SYMBOL_GPL(power_supply_register); | 176 | EXPORT_SYMBOL_GPL(power_supply_register); |
152 | EXPORT_SYMBOL_GPL(power_supply_unregister); | 177 | EXPORT_SYMBOL_GPL(power_supply_unregister); |
153 | 178 | ||