HID: sony: Prevent duplicate controller connections.
authorFrank Praznik <frank.praznik@oh.rr.com>
Thu, 20 Feb 2014 16:36:03 +0000 (11:36 -0500)
committerJiri Kosina <jkosina@suse.cz>
Mon, 24 Feb 2014 16:38:46 +0000 (17:38 +0100)
commitd2d782fccee4f699a35e2d0cdbb2b19bdaec95a4
treeea947847d645a59d102f487b04fe5e63d209d436
parentac3c9a94094b515ab135886eb4547bb889d5b31a
HID: sony: Prevent duplicate controller connections.

If a Sixaxis or Dualshock 4 controller is connected via USB while already
connected via Bluetooth it will cause duplicate devices to be added to the
input device list.

To prevent this a global list of controllers and their MAC addresses is
maintained and new controllers are checked against this list.  If a duplicate
is found, the probe function will exit with -EEXIST.

On USB the MAC is retrieved via a feature report.  On Bluetooth neither
controller reports the MAC address in a feature report so the MAC is parsed from
the uniq string.  As uniq cannot be guaranteed to be a MAC address in every case
(uHID or the behavior of HIDP changing) a parsing failure will not prevent the
connection.

Signed-off-by: Frank Praznik <frank.praznik@oh.rr.com>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-sony.c