aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOgnjen Galic <smclt30p@gmail.com>2018-02-07 09:58:27 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2018-02-21 17:27:13 -0500
commit285995d15d3b1725d021a8a274e55f2ce30ccfa0 (patch)
tree1aefa04c3ce461968403105edc9e7f5bada19475
parentfa93854f7a7ed63d054405bf3779247d5300edd3 (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.c5
-rw-r--r--drivers/power/supply/ds2781_battery.c5
-rw-r--r--drivers/power/supply/power_supply_core.c2
-rw-r--r--include/linux/power_supply.h2
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
59static inline struct power_supply *to_power_supply(struct device *dev)
60{
61 return dev_get_drvdata(dev);
62}
63
64static inline int ds2780_battery_io(struct ds2780_device_info *dev_info, 59static 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
57static inline struct power_supply *to_power_supply(struct device *dev)
58{
59 return dev_get_drvdata(dev);
60}
61
62static inline int ds2781_battery_io(struct ds2781_device_info *dev_info, 57static 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
669static void power_supply_dev_release(struct device *dev) 669static 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,
371extern void power_supply_unregister(struct power_supply *psy); 371extern void power_supply_unregister(struct power_supply *psy);
372extern int power_supply_powers(struct power_supply *psy, struct device *dev); 372extern 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
374extern void *power_supply_get_drvdata(struct power_supply *psy); 376extern void *power_supply_get_drvdata(struct power_supply *psy);
375/* For APM emulation, think legacy userspace. */ 377/* For APM emulation, think legacy userspace. */
376extern struct class *power_supply_class; 378extern struct class *power_supply_class;