diff options
author | Daniel Mack <daniel@caiaq.de> | 2009-07-23 14:35:53 -0400 |
---|---|---|
committer | Anton Vorontsov <cbouatmailru@gmail.com> | 2009-07-30 09:49:15 -0400 |
commit | e5f5ccb646bc6009572b5c23201b5e81638ff150 (patch) | |
tree | e0f132871a46d76b98cdaa505f80a2f0e500ff6b /drivers | |
parent | ff3417e7effe57cc002a8882a48bcb8e1a7e7267 (diff) |
power_supply: get_by_name and set_charged functionality
This adds a function that indicates that a battery is fully charged.
It also includes functions to get a power_supply device from the class
of registered devices by name reference. These can be used to find a
specific battery to call power_supply_set_battery_charged() on.
Some battery drivers might need this information to calibrate
themselves.
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Cc: Ian Molton <spyro@f2s.com>
Cc: Anton Vorontsov <cbou@mail.ru>
Cc: Matt Reimer <mreimer@vpop.net>
Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/power/power_supply_core.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c index 12cd6e36ff1d..cce75b40b435 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c | |||
@@ -116,6 +116,34 @@ int power_supply_is_system_supplied(void) | |||
116 | } | 116 | } |
117 | EXPORT_SYMBOL_GPL(power_supply_is_system_supplied); | 117 | EXPORT_SYMBOL_GPL(power_supply_is_system_supplied); |
118 | 118 | ||
119 | int power_supply_set_battery_charged(struct power_supply *psy) | ||
120 | { | ||
121 | if (psy->type == POWER_SUPPLY_TYPE_BATTERY && psy->set_charged) { | ||
122 | psy->set_charged(psy); | ||
123 | return 0; | ||
124 | } | ||
125 | |||
126 | return -EINVAL; | ||
127 | } | ||
128 | EXPORT_SYMBOL_GPL(power_supply_set_battery_charged); | ||
129 | |||
130 | static int power_supply_match_device_by_name(struct device *dev, void *data) | ||
131 | { | ||
132 | const char *name = data; | ||
133 | struct power_supply *psy = dev_get_drvdata(dev); | ||
134 | |||
135 | return strcmp(psy->name, name) == 0; | ||
136 | } | ||
137 | |||
138 | struct power_supply *power_supply_get_by_name(char *name) | ||
139 | { | ||
140 | struct device *dev = class_find_device(power_supply_class, NULL, name, | ||
141 | power_supply_match_device_by_name); | ||
142 | |||
143 | return dev ? dev_get_drvdata(dev) : NULL; | ||
144 | } | ||
145 | EXPORT_SYMBOL_GPL(power_supply_get_by_name); | ||
146 | |||
119 | int power_supply_register(struct device *parent, struct power_supply *psy) | 147 | int power_supply_register(struct device *parent, struct power_supply *psy) |
120 | { | 148 | { |
121 | int rc = 0; | 149 | int rc = 0; |