Skip to content

Commit

Permalink
HID: wiimote: use unique battery names
Browse files Browse the repository at this point in the history
Battery device names must be unique, otherwise registration fails if
multiple Wii Remotes are connected.

This breaks the sysfs API, but there is no known application that uses the
Wii Remote battery that I know of so we should go ahead and apply this.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
  • Loading branch information
David Herrmann authored and Jiri Kosina committed Apr 4, 2013
1 parent f896604 commit 001dac8
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion drivers/hid/hid-wiimote-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1160,6 +1160,7 @@ static void wiimote_destroy(struct wiimote_data *wdata)
wiimote_leds_destroy(wdata);

power_supply_unregister(&wdata->battery);
kfree(wdata->battery.name);
input_unregister_device(wdata->accel);
input_unregister_device(wdata->ir);
input_unregister_device(wdata->input);
Expand Down Expand Up @@ -1216,9 +1217,14 @@ static int wiimote_hid_probe(struct hid_device *hdev,
wdata->battery.properties = wiimote_battery_props;
wdata->battery.num_properties = ARRAY_SIZE(wiimote_battery_props);
wdata->battery.get_property = wiimote_battery_get_property;
wdata->battery.name = "wiimote_battery";
wdata->battery.type = POWER_SUPPLY_TYPE_BATTERY;
wdata->battery.use_for_apm = 0;
wdata->battery.name = kasprintf(GFP_KERNEL, "wiimote_battery_%s",
wdata->hdev->uniq);
if (!wdata->battery.name) {
ret = -ENOMEM;
goto err_battery_name;
}

ret = power_supply_register(&wdata->hdev->dev, &wdata->battery);
if (ret) {
Expand Down Expand Up @@ -1254,6 +1260,8 @@ static int wiimote_hid_probe(struct hid_device *hdev,
return ret;

err_battery:
kfree(wdata->battery.name);
err_battery_name:
input_unregister_device(wdata->input);
wdata->input = NULL;
err_input:
Expand Down

0 comments on commit 001dac8

Please sign in to comment.