diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2011-12-07 12:15:45 -0500 |
---|---|---|
committer | Jeremy Fitzhardinge <jeremy@goop.org> | 2011-12-09 12:52:07 -0500 |
commit | 8351665195cec6d2b73cce8b66f02d6dde246a8e (patch) | |
tree | 3b31b34dc1737ff40679036d97a3f7d6c49ffa88 /drivers/power/power_supply_core.c | |
parent | 25a0bc2dfc2ea732f40af2dae52426ead66ae76e (diff) |
power_supply: allow a power supply to explicitly point to powered device
If a power supply has a scope of "Device", then allow the power supply
to indicate what device it actually powers. This is represented in the
power supply's sysfs directory as a symlink named "powers", which points to
the sysfs directory of the powered device.
If the device has children, then the sub-devices are also powered by
the same power supply.
Signed-off-by: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Richard Hughes <richard@hughsie.com>
Diffstat (limited to 'drivers/power/power_supply_core.c')
-rw-r--r-- | drivers/power/power_supply_core.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c index 329b46b2327..b10c121244e 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c | |||
@@ -147,6 +147,12 @@ struct power_supply *power_supply_get_by_name(char *name) | |||
147 | } | 147 | } |
148 | EXPORT_SYMBOL_GPL(power_supply_get_by_name); | 148 | EXPORT_SYMBOL_GPL(power_supply_get_by_name); |
149 | 149 | ||
150 | int power_supply_powers(struct power_supply *psy, struct device *dev) | ||
151 | { | ||
152 | return sysfs_create_link_nowarn(&psy->dev->kobj, &dev->kobj, "powers"); | ||
153 | } | ||
154 | EXPORT_SYMBOL_GPL(power_supply_powers); | ||
155 | |||
150 | static void power_supply_dev_release(struct device *dev) | 156 | static void power_supply_dev_release(struct device *dev) |
151 | { | 157 | { |
152 | pr_debug("device: '%s': %s\n", dev_name(dev), __func__); | 158 | pr_debug("device: '%s': %s\n", dev_name(dev), __func__); |
@@ -202,6 +208,7 @@ EXPORT_SYMBOL_GPL(power_supply_register); | |||
202 | void power_supply_unregister(struct power_supply *psy) | 208 | void power_supply_unregister(struct power_supply *psy) |
203 | { | 209 | { |
204 | cancel_work_sync(&psy->changed_work); | 210 | cancel_work_sync(&psy->changed_work); |
211 | sysfs_remove_link(&psy->dev->kobj, "powers"); | ||
205 | power_supply_remove_triggers(psy); | 212 | power_supply_remove_triggers(psy); |
206 | device_unregister(psy->dev); | 213 | device_unregister(psy->dev); |
207 | } | 214 | } |