diff options
| -rw-r--r-- | drivers/hid/hid-sony.c | 28 |
1 files changed, 4 insertions, 24 deletions
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c index 7c1c56d13122..9abdd77f16c9 100644 --- a/drivers/hid/hid-sony.c +++ b/drivers/hid/hid-sony.c | |||
| @@ -2318,36 +2318,21 @@ static int sony_battery_probe(struct sony_sc *sc, int append_dev_id) | |||
| 2318 | sc->battery_desc.get_property = sony_battery_get_property; | 2318 | sc->battery_desc.get_property = sony_battery_get_property; |
| 2319 | sc->battery_desc.type = POWER_SUPPLY_TYPE_BATTERY; | 2319 | sc->battery_desc.type = POWER_SUPPLY_TYPE_BATTERY; |
| 2320 | sc->battery_desc.use_for_apm = 0; | 2320 | sc->battery_desc.use_for_apm = 0; |
| 2321 | sc->battery_desc.name = kasprintf(GFP_KERNEL, battery_str_fmt, | 2321 | sc->battery_desc.name = devm_kasprintf(&hdev->dev, GFP_KERNEL, |
| 2322 | sc->mac_address, sc->device_id); | 2322 | battery_str_fmt, sc->mac_address, sc->device_id); |
| 2323 | if (!sc->battery_desc.name) | 2323 | if (!sc->battery_desc.name) |
| 2324 | return -ENOMEM; | 2324 | return -ENOMEM; |
| 2325 | 2325 | ||
| 2326 | sc->battery = power_supply_register(&hdev->dev, &sc->battery_desc, | 2326 | sc->battery = devm_power_supply_register(&hdev->dev, &sc->battery_desc, |
| 2327 | &psy_cfg); | 2327 | &psy_cfg); |
| 2328 | if (IS_ERR(sc->battery)) { | 2328 | if (IS_ERR(sc->battery)) { |
| 2329 | ret = PTR_ERR(sc->battery); | 2329 | ret = PTR_ERR(sc->battery); |
| 2330 | hid_err(hdev, "Unable to register battery device\n"); | 2330 | hid_err(hdev, "Unable to register battery device\n"); |
| 2331 | goto err_free; | 2331 | return ret; |
| 2332 | } | 2332 | } |
| 2333 | 2333 | ||
| 2334 | power_supply_powers(sc->battery, &hdev->dev); | 2334 | power_supply_powers(sc->battery, &hdev->dev); |
| 2335 | return 0; | 2335 | return 0; |
| 2336 | |||
| 2337 | err_free: | ||
| 2338 | kfree(sc->battery_desc.name); | ||
| 2339 | sc->battery_desc.name = NULL; | ||
| 2340 | return ret; | ||
| 2341 | } | ||
| 2342 | |||
| 2343 | static void sony_battery_remove(struct sony_sc *sc) | ||
| 2344 | { | ||
| 2345 | if (!sc->battery_desc.name) | ||
| 2346 | return; | ||
| 2347 | |||
| 2348 | power_supply_unregister(sc->battery); | ||
| 2349 | kfree(sc->battery_desc.name); | ||
| 2350 | sc->battery_desc.name = NULL; | ||
| 2351 | } | 2336 | } |
| 2352 | 2337 | ||
| 2353 | /* | 2338 | /* |
| @@ -2805,8 +2790,6 @@ err_stop: | |||
| 2805 | device_remove_file(&sc->hdev->dev, &dev_attr_firmware_version); | 2790 | device_remove_file(&sc->hdev->dev, &dev_attr_firmware_version); |
| 2806 | if (sc->hw_version) | 2791 | if (sc->hw_version) |
| 2807 | device_remove_file(&sc->hdev->dev, &dev_attr_hardware_version); | 2792 | device_remove_file(&sc->hdev->dev, &dev_attr_hardware_version); |
| 2808 | if (sc->quirks & SONY_BATTERY_SUPPORT) | ||
| 2809 | sony_battery_remove(sc); | ||
| 2810 | sony_cancel_work_sync(sc); | 2793 | sony_cancel_work_sync(sc); |
| 2811 | kfree(sc->output_report_dmabuf); | 2794 | kfree(sc->output_report_dmabuf); |
| 2812 | sony_remove_dev_list(sc); | 2795 | sony_remove_dev_list(sc); |
| @@ -2885,9 +2868,6 @@ static void sony_remove(struct hid_device *hdev) | |||
| 2885 | 2868 | ||
| 2886 | hid_hw_close(hdev); | 2869 | hid_hw_close(hdev); |
| 2887 | 2870 | ||
| 2888 | if (sc->quirks & SONY_BATTERY_SUPPORT) | ||
| 2889 | sony_battery_remove(sc); | ||
| 2890 | |||
| 2891 | if (sc->quirks & DUALSHOCK4_CONTROLLER_BT) | 2871 | if (sc->quirks & DUALSHOCK4_CONTROLLER_BT) |
| 2892 | device_remove_file(&sc->hdev->dev, &dev_attr_bt_poll_interval); | 2872 | device_remove_file(&sc->hdev->dev, &dev_attr_bt_poll_interval); |
| 2893 | 2873 | ||
