diff options
author | Ognjen Galic <smclt30p@gmail.com> | 2018-02-07 09:58:27 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2018-02-21 17:27:13 -0500 |
commit | 285995d15d3b1725d021a8a274e55f2ce30ccfa0 (patch) | |
tree | 1aefa04c3ce461968403105edc9e7f5bada19475 | |
parent | fa93854f7a7ed63d054405bf3779247d5300edd3 (diff) |
power: add to_power_supply macro to the API
This patch adds the to_power_supply macro to upcast
a device to a power_supply struct.
This is needed because the same piece of code using
container_of is used in various other places, so we
abstract away such low-level operations via a macro.
Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Ognjen Galic <smclt30p@gmail.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/power/supply/ds2780_battery.c | 5 | ||||
-rw-r--r-- | drivers/power/supply/ds2781_battery.c | 5 | ||||
-rw-r--r-- | drivers/power/supply/power_supply_core.c | 2 | ||||
-rw-r--r-- | include/linux/power_supply.h | 2 |
4 files changed, 3 insertions, 11 deletions
diff --git a/drivers/power/supply/ds2780_battery.c b/drivers/power/supply/ds2780_battery.c index e5d81b493c45..370e9109342b 100644 --- a/drivers/power/supply/ds2780_battery.c +++ b/drivers/power/supply/ds2780_battery.c | |||
@@ -56,11 +56,6 @@ to_ds2780_device_info(struct power_supply *psy) | |||
56 | return power_supply_get_drvdata(psy); | 56 | return power_supply_get_drvdata(psy); |
57 | } | 57 | } |
58 | 58 | ||
59 | static inline struct power_supply *to_power_supply(struct device *dev) | ||
60 | { | ||
61 | return dev_get_drvdata(dev); | ||
62 | } | ||
63 | |||
64 | static inline int ds2780_battery_io(struct ds2780_device_info *dev_info, | 59 | static inline int ds2780_battery_io(struct ds2780_device_info *dev_info, |
65 | char *buf, int addr, size_t count, int io) | 60 | char *buf, int addr, size_t count, int io) |
66 | { | 61 | { |
diff --git a/drivers/power/supply/ds2781_battery.c b/drivers/power/supply/ds2781_battery.c index efe83ef8670c..d1b5a19aae7c 100644 --- a/drivers/power/supply/ds2781_battery.c +++ b/drivers/power/supply/ds2781_battery.c | |||
@@ -54,11 +54,6 @@ to_ds2781_device_info(struct power_supply *psy) | |||
54 | return power_supply_get_drvdata(psy); | 54 | return power_supply_get_drvdata(psy); |
55 | } | 55 | } |
56 | 56 | ||
57 | static inline struct power_supply *to_power_supply(struct device *dev) | ||
58 | { | ||
59 | return dev_get_drvdata(dev); | ||
60 | } | ||
61 | |||
62 | static inline int ds2781_battery_io(struct ds2781_device_info *dev_info, | 57 | static inline int ds2781_battery_io(struct ds2781_device_info *dev_info, |
63 | char *buf, int addr, size_t count, int io) | 58 | char *buf, int addr, size_t count, int io) |
64 | { | 59 | { |
diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c index 82f998ab5a52..feac7b066e6c 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c | |||
@@ -668,7 +668,7 @@ EXPORT_SYMBOL_GPL(power_supply_powers); | |||
668 | 668 | ||
669 | static void power_supply_dev_release(struct device *dev) | 669 | static void power_supply_dev_release(struct device *dev) |
670 | { | 670 | { |
671 | struct power_supply *psy = container_of(dev, struct power_supply, dev); | 671 | struct power_supply *psy = to_power_supply(dev); |
672 | dev_dbg(dev, "%s\n", __func__); | 672 | dev_dbg(dev, "%s\n", __func__); |
673 | kfree(psy); | 673 | kfree(psy); |
674 | } | 674 | } |
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index 79e90b3d3288..f0139b460a72 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h | |||
@@ -371,6 +371,8 @@ devm_power_supply_register_no_ws(struct device *parent, | |||
371 | extern void power_supply_unregister(struct power_supply *psy); | 371 | extern void power_supply_unregister(struct power_supply *psy); |
372 | extern int power_supply_powers(struct power_supply *psy, struct device *dev); | 372 | extern int power_supply_powers(struct power_supply *psy, struct device *dev); |
373 | 373 | ||
374 | #define to_power_supply(device) container_of(device, struct power_supply, dev) | ||
375 | |||
374 | extern void *power_supply_get_drvdata(struct power_supply *psy); | 376 | extern void *power_supply_get_drvdata(struct power_supply *psy); |
375 | /* For APM emulation, think legacy userspace. */ | 377 | /* For APM emulation, think legacy userspace. */ |
376 | extern struct class *power_supply_class; | 378 | extern struct class *power_supply_class; |