aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hid/hid-sony.c28
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
2337err_free:
2338 kfree(sc->battery_desc.name);
2339 sc->battery_desc.name = NULL;
2340 return ret;
2341}
2342
2343static 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