aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-13 18:21:34 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-13 18:21:34 -0400
commita21c1ea65615f5323575d84508637a9481ca79c6 (patch)
tree669d5bf3171cc42e82cc8396c61f56a48634313c /drivers/hid
parentd700b0567132e894971325fbb452a8db9e781c13 (diff)
parent5939d9dfe4406a49d8688eb827d88abcaf233c42 (diff)
Merge tag 'for-v4.1' of git://git.infradead.org/battery-2.6
Pull power supply and reset changes from Sebastian Reichel: - new API for safe access of power supply function attrs - devres support for power supply (un)registration - new drivers / chips: - generic syscon based poweroff driver - iio & charger driver for da9150 - fuel gauge driver for axp288 - bq27x00: add support for bq27510 - bq2415x: add support for bq24157s - twl4030-madc-battery: convert to iio consumer - misc fixes * tag 'for-v4.1' of git://git.infradead.org/battery-2.6: (66 commits) power: twl4030_madc_battery: Add missing MODULE_ALIAS power: twl4030-madc-battery: Convert to iio consumer. dt: power: Add docs for generic SYSCON poweroff driver. power: reset: Add generic SYSCON register mapped poweroff. power: max17042_battery: add missed blank power: max17042_battery: Use reg type instead of chip type power/reset: at91: big endian fixes for atsama5d3x power_supply: charger-manager: Fix dereferencing of ERR_PTR HID: input: Fix NULL pointer dereference when power_supply_register fails power: constify of_device_id array power/reset/rmobile-reset.c: Fix !HAS_IOMEM build power_supply: 88pm860x_charger: Fix possible NULL pointer dereference and use of initialized variable arm: mach-pxa: Decrement the power supply's device reference counter mfd: ab8500: Decrement the power supply's device reference counter power_supply: bq2415x_charger: Decrement the power supply's device reference counter power_supply: 88pm860x_charger: Decrement the power supply's device reference counter x86/olpc/xo15/sci: Use newly added power_supply_put API x86/olpc/xo1/sci: Use newly added power_supply_put API power_supply: charger-manager: Decrement the power supply's device reference counter power_supply: Increment power supply use counter when obtaining references ...
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/hid-input.c53
-rw-r--r--drivers/hid/hid-sony.c43
-rw-r--r--drivers/hid/hid-wiimote-modules.c41
-rw-r--r--drivers/hid/hid-wiimote.h3
-rw-r--r--drivers/hid/wacom.h8
-rw-r--r--drivers/hid/wacom_sys.c70
6 files changed, 121 insertions, 97 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 052869d0ab78..32c2da49bd5b 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -339,7 +339,7 @@ static int hidinput_get_battery_property(struct power_supply *psy,
339 enum power_supply_property prop, 339 enum power_supply_property prop,
340 union power_supply_propval *val) 340 union power_supply_propval *val)
341{ 341{
342 struct hid_device *dev = container_of(psy, struct hid_device, battery); 342 struct hid_device *dev = power_supply_get_drvdata(psy);
343 int ret = 0; 343 int ret = 0;
344 __u8 *buf; 344 __u8 *buf;
345 345
@@ -397,26 +397,32 @@ static int hidinput_get_battery_property(struct power_supply *psy,
397 397
398static bool hidinput_setup_battery(struct hid_device *dev, unsigned report_type, struct hid_field *field) 398static bool hidinput_setup_battery(struct hid_device *dev, unsigned report_type, struct hid_field *field)
399{ 399{
400 struct power_supply *battery = &dev->battery; 400 struct power_supply_desc *psy_desc = NULL;
401 int ret; 401 struct power_supply_config psy_cfg = { .drv_data = dev, };
402 unsigned quirks; 402 unsigned quirks;
403 s32 min, max; 403 s32 min, max;
404 404
405 if (field->usage->hid != HID_DC_BATTERYSTRENGTH) 405 if (field->usage->hid != HID_DC_BATTERYSTRENGTH)
406 return false; /* no match */ 406 return false; /* no match */
407 407
408 if (battery->name != NULL) 408 if (dev->battery != NULL)
409 goto out; /* already initialized? */ 409 goto out; /* already initialized? */
410 410
411 battery->name = kasprintf(GFP_KERNEL, "hid-%s-battery", dev->uniq); 411 psy_desc = kzalloc(sizeof(*psy_desc), GFP_KERNEL);
412 if (battery->name == NULL) 412 if (psy_desc == NULL)
413 goto out; 413 goto out;
414 414
415 battery->type = POWER_SUPPLY_TYPE_BATTERY; 415 psy_desc->name = kasprintf(GFP_KERNEL, "hid-%s-battery", dev->uniq);
416 battery->properties = hidinput_battery_props; 416 if (psy_desc->name == NULL) {
417 battery->num_properties = ARRAY_SIZE(hidinput_battery_props); 417 kfree(psy_desc);
418 battery->use_for_apm = 0; 418 goto out;
419 battery->get_property = hidinput_get_battery_property; 419 }
420
421 psy_desc->type = POWER_SUPPLY_TYPE_BATTERY;
422 psy_desc->properties = hidinput_battery_props;
423 psy_desc->num_properties = ARRAY_SIZE(hidinput_battery_props);
424 psy_desc->use_for_apm = 0;
425 psy_desc->get_property = hidinput_get_battery_property;
420 426
421 quirks = find_battery_quirk(dev); 427 quirks = find_battery_quirk(dev);
422 428
@@ -439,27 +445,30 @@ static bool hidinput_setup_battery(struct hid_device *dev, unsigned report_type,
439 dev->battery_report_type = report_type; 445 dev->battery_report_type = report_type;
440 dev->battery_report_id = field->report->id; 446 dev->battery_report_id = field->report->id;
441 447
442 ret = power_supply_register(&dev->dev, battery); 448 dev->battery = power_supply_register(&dev->dev, psy_desc, &psy_cfg);
443 if (ret != 0) { 449 if (IS_ERR(dev->battery)) {
444 hid_warn(dev, "can't register power supply: %d\n", ret); 450 hid_warn(dev, "can't register power supply: %ld\n",
445 kfree(battery->name); 451 PTR_ERR(dev->battery));
446 battery->name = NULL; 452 kfree(psy_desc->name);
453 kfree(psy_desc);
454 dev->battery = NULL;
455 } else {
456 power_supply_powers(dev->battery, &dev->dev);
447 } 457 }
448 458
449 power_supply_powers(battery, &dev->dev);
450
451out: 459out:
452 return true; 460 return true;
453} 461}
454 462
455static void hidinput_cleanup_battery(struct hid_device *dev) 463static void hidinput_cleanup_battery(struct hid_device *dev)
456{ 464{
457 if (!dev->battery.name) 465 if (!dev->battery)
458 return; 466 return;
459 467
460 power_supply_unregister(&dev->battery); 468 power_supply_unregister(dev->battery);
461 kfree(dev->battery.name); 469 kfree(dev->battery->desc->name);
462 dev->battery.name = NULL; 470 kfree(dev->battery->desc);
471 dev->battery = NULL;
463} 472}
464#else /* !CONFIG_HID_BATTERY_STRENGTH */ 473#else /* !CONFIG_HID_BATTERY_STRENGTH */
465static bool hidinput_setup_battery(struct hid_device *dev, unsigned report_type, 474static bool hidinput_setup_battery(struct hid_device *dev, unsigned report_type,
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
index 1896c019e302..c906300cf667 100644
--- a/drivers/hid/hid-sony.c
+++ b/drivers/hid/hid-sony.c
@@ -815,7 +815,8 @@ struct sony_sc {
815 struct led_classdev *leds[MAX_LEDS]; 815 struct led_classdev *leds[MAX_LEDS];
816 unsigned long quirks; 816 unsigned long quirks;
817 struct work_struct state_worker; 817 struct work_struct state_worker;
818 struct power_supply battery; 818 struct power_supply *battery;
819 struct power_supply_desc battery_desc;
819 int device_id; 820 int device_id;
820 __u8 *output_report_dmabuf; 821 __u8 *output_report_dmabuf;
821 822
@@ -1660,7 +1661,7 @@ static int sony_battery_get_property(struct power_supply *psy,
1660 enum power_supply_property psp, 1661 enum power_supply_property psp,
1661 union power_supply_propval *val) 1662 union power_supply_propval *val)
1662{ 1663{
1663 struct sony_sc *sc = container_of(psy, struct sony_sc, battery); 1664 struct sony_sc *sc = power_supply_get_drvdata(psy);
1664 unsigned long flags; 1665 unsigned long flags;
1665 int ret = 0; 1666 int ret = 0;
1666 u8 battery_charging, battery_capacity, cable_state; 1667 u8 battery_charging, battery_capacity, cable_state;
@@ -1699,6 +1700,7 @@ static int sony_battery_get_property(struct power_supply *psy,
1699 1700
1700static int sony_battery_probe(struct sony_sc *sc) 1701static int sony_battery_probe(struct sony_sc *sc)
1701{ 1702{
1703 struct power_supply_config psy_cfg = { .drv_data = sc, };
1702 struct hid_device *hdev = sc->hdev; 1704 struct hid_device *hdev = sc->hdev;
1703 int ret; 1705 int ret;
1704 1706
@@ -1708,39 +1710,42 @@ static int sony_battery_probe(struct sony_sc *sc)
1708 */ 1710 */
1709 sc->battery_capacity = 100; 1711 sc->battery_capacity = 100;
1710 1712
1711 sc->battery.properties = sony_battery_props; 1713 sc->battery_desc.properties = sony_battery_props;
1712 sc->battery.num_properties = ARRAY_SIZE(sony_battery_props); 1714 sc->battery_desc.num_properties = ARRAY_SIZE(sony_battery_props);
1713 sc->battery.get_property = sony_battery_get_property; 1715 sc->battery_desc.get_property = sony_battery_get_property;
1714 sc->battery.type = POWER_SUPPLY_TYPE_BATTERY; 1716 sc->battery_desc.type = POWER_SUPPLY_TYPE_BATTERY;
1715 sc->battery.use_for_apm = 0; 1717 sc->battery_desc.use_for_apm = 0;
1716 sc->battery.name = kasprintf(GFP_KERNEL, "sony_controller_battery_%pMR", 1718 sc->battery_desc.name = kasprintf(GFP_KERNEL,
1717 sc->mac_address); 1719 "sony_controller_battery_%pMR",
1718 if (!sc->battery.name) 1720 sc->mac_address);
1721 if (!sc->battery_desc.name)
1719 return -ENOMEM; 1722 return -ENOMEM;
1720 1723
1721 ret = power_supply_register(&hdev->dev, &sc->battery); 1724 sc->battery = power_supply_register(&hdev->dev, &sc->battery_desc,
1722 if (ret) { 1725 &psy_cfg);
1726 if (IS_ERR(sc->battery)) {
1727 ret = PTR_ERR(sc->battery);
1723 hid_err(hdev, "Unable to register battery device\n"); 1728 hid_err(hdev, "Unable to register battery device\n");
1724 goto err_free; 1729 goto err_free;
1725 } 1730 }
1726 1731
1727 power_supply_powers(&sc->battery, &hdev->dev); 1732 power_supply_powers(sc->battery, &hdev->dev);
1728 return 0; 1733 return 0;
1729 1734
1730err_free: 1735err_free:
1731 kfree(sc->battery.name); 1736 kfree(sc->battery_desc.name);
1732 sc->battery.name = NULL; 1737 sc->battery_desc.name = NULL;
1733 return ret; 1738 return ret;
1734} 1739}
1735 1740
1736static void sony_battery_remove(struct sony_sc *sc) 1741static void sony_battery_remove(struct sony_sc *sc)
1737{ 1742{
1738 if (!sc->battery.name) 1743 if (!sc->battery_desc.name)
1739 return; 1744 return;
1740 1745
1741 power_supply_unregister(&sc->battery); 1746 power_supply_unregister(sc->battery);
1742 kfree(sc->battery.name); 1747 kfree(sc->battery_desc.name);
1743 sc->battery.name = NULL; 1748 sc->battery_desc.name = NULL;
1744} 1749}
1745 1750
1746/* 1751/*
diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c
index 6b61f01e01e7..05e23c417d50 100644
--- a/drivers/hid/hid-wiimote-modules.c
+++ b/drivers/hid/hid-wiimote-modules.c
@@ -203,8 +203,7 @@ static int wiimod_battery_get_property(struct power_supply *psy,
203 enum power_supply_property psp, 203 enum power_supply_property psp,
204 union power_supply_propval *val) 204 union power_supply_propval *val)
205{ 205{
206 struct wiimote_data *wdata = container_of(psy, struct wiimote_data, 206 struct wiimote_data *wdata = power_supply_get_drvdata(psy);
207 battery);
208 int ret = 0, state; 207 int ret = 0, state;
209 unsigned long flags; 208 unsigned long flags;
210 209
@@ -238,42 +237,46 @@ static int wiimod_battery_get_property(struct power_supply *psy,
238static int wiimod_battery_probe(const struct wiimod_ops *ops, 237static int wiimod_battery_probe(const struct wiimod_ops *ops,
239 struct wiimote_data *wdata) 238 struct wiimote_data *wdata)
240{ 239{
240 struct power_supply_config psy_cfg = { .drv_data = wdata, };
241 int ret; 241 int ret;
242 242
243 wdata->battery.properties = wiimod_battery_props; 243 wdata->battery_desc.properties = wiimod_battery_props;
244 wdata->battery.num_properties = ARRAY_SIZE(wiimod_battery_props); 244 wdata->battery_desc.num_properties = ARRAY_SIZE(wiimod_battery_props);
245 wdata->battery.get_property = wiimod_battery_get_property; 245 wdata->battery_desc.get_property = wiimod_battery_get_property;
246 wdata->battery.type = POWER_SUPPLY_TYPE_BATTERY; 246 wdata->battery_desc.type = POWER_SUPPLY_TYPE_BATTERY;
247 wdata->battery.use_for_apm = 0; 247 wdata->battery_desc.use_for_apm = 0;
248 wdata->battery.name = kasprintf(GFP_KERNEL, "wiimote_battery_%s", 248 wdata->battery_desc.name = kasprintf(GFP_KERNEL, "wiimote_battery_%s",
249 wdata->hdev->uniq); 249 wdata->hdev->uniq);
250 if (!wdata->battery.name) 250 if (!wdata->battery_desc.name)
251 return -ENOMEM; 251 return -ENOMEM;
252 252
253 ret = power_supply_register(&wdata->hdev->dev, &wdata->battery); 253 wdata->battery = power_supply_register(&wdata->hdev->dev,
254 if (ret) { 254 &wdata->battery_desc,
255 &psy_cfg);
256 if (IS_ERR(wdata->battery)) {
255 hid_err(wdata->hdev, "cannot register battery device\n"); 257 hid_err(wdata->hdev, "cannot register battery device\n");
258 ret = PTR_ERR(wdata->battery);
256 goto err_free; 259 goto err_free;
257 } 260 }
258 261
259 power_supply_powers(&wdata->battery, &wdata->hdev->dev); 262 power_supply_powers(wdata->battery, &wdata->hdev->dev);
260 return 0; 263 return 0;
261 264
262err_free: 265err_free:
263 kfree(wdata->battery.name); 266 kfree(wdata->battery_desc.name);
264 wdata->battery.name = NULL; 267 wdata->battery_desc.name = NULL;
265 return ret; 268 return ret;
266} 269}
267 270
268static void wiimod_battery_remove(const struct wiimod_ops *ops, 271static void wiimod_battery_remove(const struct wiimod_ops *ops,
269 struct wiimote_data *wdata) 272 struct wiimote_data *wdata)
270{ 273{
271 if (!wdata->battery.name) 274 if (!wdata->battery_desc.name)
272 return; 275 return;
273 276
274 power_supply_unregister(&wdata->battery); 277 power_supply_unregister(wdata->battery);
275 kfree(wdata->battery.name); 278 kfree(wdata->battery_desc.name);
276 wdata->battery.name = NULL; 279 wdata->battery_desc.name = NULL;
277} 280}
278 281
279static const struct wiimod_ops wiimod_battery = { 282static const struct wiimod_ops wiimod_battery = {
diff --git a/drivers/hid/hid-wiimote.h b/drivers/hid/hid-wiimote.h
index 10934aa129fb..875694d43e4d 100644
--- a/drivers/hid/hid-wiimote.h
+++ b/drivers/hid/hid-wiimote.h
@@ -147,7 +147,8 @@ struct wiimote_data {
147 struct led_classdev *leds[4]; 147 struct led_classdev *leds[4];
148 struct input_dev *accel; 148 struct input_dev *accel;
149 struct input_dev *ir; 149 struct input_dev *ir;
150 struct power_supply battery; 150 struct power_supply *battery;
151 struct power_supply_desc battery_desc;
151 struct input_dev *mp; 152 struct input_dev *mp;
152 struct timer_list timer; 153 struct timer_list timer;
153 struct wiimote_debug *debug; 154 struct wiimote_debug *debug;
diff --git a/drivers/hid/wacom.h b/drivers/hid/wacom.h
index 7db432809e9e..0d0d0dd89d17 100644
--- a/drivers/hid/wacom.h
+++ b/drivers/hid/wacom.h
@@ -119,8 +119,10 @@ struct wacom {
119 u8 img_lum; /* OLED matrix display brightness */ 119 u8 img_lum; /* OLED matrix display brightness */
120 } led; 120 } led;
121 bool led_initialized; 121 bool led_initialized;
122 struct power_supply battery; 122 struct power_supply *battery;
123 struct power_supply ac; 123 struct power_supply *ac;
124 struct power_supply_desc battery_desc;
125 struct power_supply_desc ac_desc;
124}; 126};
125 127
126static inline void wacom_schedule_work(struct wacom_wac *wacom_wac) 128static inline void wacom_schedule_work(struct wacom_wac *wacom_wac)
@@ -133,7 +135,7 @@ static inline void wacom_notify_battery(struct wacom_wac *wacom_wac)
133{ 135{
134 struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); 136 struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac);
135 137
136 power_supply_changed(&wacom->battery); 138 power_supply_changed(wacom->battery);
137} 139}
138 140
139extern const struct hid_device_id wacom_ids[]; 141extern const struct hid_device_id wacom_ids[];
diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
index f0568a7e6de9..ba9af470bea0 100644
--- a/drivers/hid/wacom_sys.c
+++ b/drivers/hid/wacom_sys.c
@@ -944,7 +944,7 @@ static int wacom_battery_get_property(struct power_supply *psy,
944 enum power_supply_property psp, 944 enum power_supply_property psp,
945 union power_supply_propval *val) 945 union power_supply_propval *val)
946{ 946{
947 struct wacom *wacom = container_of(psy, struct wacom, battery); 947 struct wacom *wacom = power_supply_get_drvdata(psy);
948 int ret = 0; 948 int ret = 0;
949 949
950 switch (psp) { 950 switch (psp) {
@@ -976,7 +976,7 @@ static int wacom_ac_get_property(struct power_supply *psy,
976 enum power_supply_property psp, 976 enum power_supply_property psp,
977 union power_supply_propval *val) 977 union power_supply_propval *val)
978{ 978{
979 struct wacom *wacom = container_of(psy, struct wacom, ac); 979 struct wacom *wacom = power_supply_get_drvdata(psy);
980 int ret = 0; 980 int ret = 0;
981 981
982 switch (psp) { 982 switch (psp) {
@@ -998,42 +998,46 @@ static int wacom_ac_get_property(struct power_supply *psy,
998static int wacom_initialize_battery(struct wacom *wacom) 998static int wacom_initialize_battery(struct wacom *wacom)
999{ 999{
1000 static atomic_t battery_no = ATOMIC_INIT(0); 1000 static atomic_t battery_no = ATOMIC_INIT(0);
1001 int error; 1001 struct power_supply_config psy_cfg = { .drv_data = wacom, };
1002 unsigned long n; 1002 unsigned long n;
1003 1003
1004 if (wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) { 1004 if (wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) {
1005 struct power_supply_desc *bat_desc = &wacom->battery_desc;
1006 struct power_supply_desc *ac_desc = &wacom->ac_desc;
1005 n = atomic_inc_return(&battery_no) - 1; 1007 n = atomic_inc_return(&battery_no) - 1;
1006 1008
1007 wacom->battery.properties = wacom_battery_props; 1009 bat_desc->properties = wacom_battery_props;
1008 wacom->battery.num_properties = ARRAY_SIZE(wacom_battery_props); 1010 bat_desc->num_properties = ARRAY_SIZE(wacom_battery_props);
1009 wacom->battery.get_property = wacom_battery_get_property; 1011 bat_desc->get_property = wacom_battery_get_property;
1010 sprintf(wacom->wacom_wac.bat_name, "wacom_battery_%ld", n); 1012 sprintf(wacom->wacom_wac.bat_name, "wacom_battery_%ld", n);
1011 wacom->battery.name = wacom->wacom_wac.bat_name; 1013 bat_desc->name = wacom->wacom_wac.bat_name;
1012 wacom->battery.type = POWER_SUPPLY_TYPE_BATTERY; 1014 bat_desc->type = POWER_SUPPLY_TYPE_BATTERY;
1013 wacom->battery.use_for_apm = 0; 1015 bat_desc->use_for_apm = 0;
1014 1016
1015 wacom->ac.properties = wacom_ac_props; 1017 ac_desc->properties = wacom_ac_props;
1016 wacom->ac.num_properties = ARRAY_SIZE(wacom_ac_props); 1018 ac_desc->num_properties = ARRAY_SIZE(wacom_ac_props);
1017 wacom->ac.get_property = wacom_ac_get_property; 1019 ac_desc->get_property = wacom_ac_get_property;
1018 sprintf(wacom->wacom_wac.ac_name, "wacom_ac_%ld", n); 1020 sprintf(wacom->wacom_wac.ac_name, "wacom_ac_%ld", n);
1019 wacom->ac.name = wacom->wacom_wac.ac_name; 1021 ac_desc->name = wacom->wacom_wac.ac_name;
1020 wacom->ac.type = POWER_SUPPLY_TYPE_MAINS; 1022 ac_desc->type = POWER_SUPPLY_TYPE_MAINS;
1021 wacom->ac.use_for_apm = 0; 1023 ac_desc->use_for_apm = 0;
1022 1024
1023 error = power_supply_register(&wacom->hdev->dev, 1025 wacom->battery = power_supply_register(&wacom->hdev->dev,
1024 &wacom->battery); 1026 &wacom->battery_desc, &psy_cfg);
1025 if (error) 1027 if (IS_ERR(wacom->battery))
1026 return error; 1028 return PTR_ERR(wacom->battery);
1027 1029
1028 power_supply_powers(&wacom->battery, &wacom->hdev->dev); 1030 power_supply_powers(wacom->battery, &wacom->hdev->dev);
1029 1031
1030 error = power_supply_register(&wacom->hdev->dev, &wacom->ac); 1032 wacom->ac = power_supply_register(&wacom->hdev->dev,
1031 if (error) { 1033 &wacom->ac_desc,
1032 power_supply_unregister(&wacom->battery); 1034 &psy_cfg);
1033 return error; 1035 if (IS_ERR(wacom->ac)) {
1036 power_supply_unregister(wacom->battery);
1037 return PTR_ERR(wacom->ac);
1034 } 1038 }
1035 1039
1036 power_supply_powers(&wacom->ac, &wacom->hdev->dev); 1040 power_supply_powers(wacom->ac, &wacom->hdev->dev);
1037 } 1041 }
1038 1042
1039 return 0; 1043 return 0;
@@ -1042,11 +1046,11 @@ static int wacom_initialize_battery(struct wacom *wacom)
1042static void wacom_destroy_battery(struct wacom *wacom) 1046static void wacom_destroy_battery(struct wacom *wacom)
1043{ 1047{
1044 if ((wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) && 1048 if ((wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) &&
1045 wacom->battery.dev) { 1049 wacom->battery) {
1046 power_supply_unregister(&wacom->battery); 1050 power_supply_unregister(wacom->battery);
1047 wacom->battery.dev = NULL; 1051 wacom->battery = NULL;
1048 power_supply_unregister(&wacom->ac); 1052 power_supply_unregister(wacom->ac);
1049 wacom->ac.dev = NULL; 1053 wacom->ac = NULL;
1050 } 1054 }
1051} 1055}
1052 1056