Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74500cc8 authored by Scott Moreau's avatar Scott Moreau Committed by Jiri Kosina
Browse files

HID: sony: Add nyko core controller support



This adds rumble and LED support for nyko core controllers
using the sino lite chip vendor:1345 product:3008, for PS3.

Setting operational mode and output reports are the same as
sixaxis but the input report has a different format since the
PS3 accepts HID usb devices. For it to work, an exception is
needed to skip overriding the report descriptor and use the
original one.

Signed-off-by: default avatarScott Moreau <oreaus@gmail.com>
Acked-by: default avatarAntonio Ospite <ao2@ao2.it>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 19f4c2ba
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2003,6 +2003,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGP_MOUSE) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_SINO_LITE, USB_DEVICE_ID_SINO_LITE_CONTROLLER) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_STEELSERIES, USB_DEVICE_ID_STEELSERIES_SRWS1) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_THINGM, USB_DEVICE_ID_BLINK1) },
+3 −0
Original line number Diff line number Diff line
@@ -872,6 +872,9 @@
#define USB_DEVICE_ID_SONY_BUZZ_CONTROLLER		0x0002
#define USB_DEVICE_ID_SONY_WIRELESS_BUZZ_CONTROLLER	0x1000

#define USB_VENDOR_ID_SINO_LITE			0x1345
#define USB_DEVICE_ID_SINO_LITE_CONTROLLER	0x3008

#define USB_VENDOR_ID_SOUNDGRAPH	0x15c2
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST	0x0034
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST	0x0046
+7 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@
#define MOTION_CONTROLLER_BT      BIT(8)
#define NAVIGATION_CONTROLLER_USB BIT(9)
#define NAVIGATION_CONTROLLER_BT  BIT(10)
#define SINO_LITE_CONTROLLER      BIT(11)

#define SIXAXIS_CONTROLLER (SIXAXIS_CONTROLLER_USB | SIXAXIS_CONTROLLER_BT)
#define MOTION_CONTROLLER (MOTION_CONTROLLER_USB | MOTION_CONTROLLER_BT)
@@ -1118,6 +1119,9 @@ static __u8 *sony_report_fixup(struct hid_device *hdev, __u8 *rdesc,
{
	struct sony_sc *sc = hid_get_drvdata(hdev);

	if (sc->quirks & SINO_LITE_CONTROLLER)
		return rdesc;

	/*
	 * Some Sony RF receivers wrongly declare the mouse pointer as a
	 * a constant non-data variable.
@@ -2523,6 +2527,9 @@ static const struct hid_device_id sony_devices[] = {
		.driver_data = DUALSHOCK4_CONTROLLER_USB },
	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS4_CONTROLLER),
		.driver_data = DUALSHOCK4_CONTROLLER_BT },
	/* Nyko Core Controller for PS3 */
	{ HID_USB_DEVICE(USB_VENDOR_ID_SINO_LITE, USB_DEVICE_ID_SINO_LITE_CONTROLLER),
		.driver_data = SIXAXIS_CONTROLLER_USB | SINO_LITE_CONTROLLER },
	{ }
};
MODULE_DEVICE_TABLE(hid, sony_devices);