Skip to contentSkip to conversation

HID: Add driver for Retrode2 joypad adapter

PATCH Applied Bastien Nocera 2 participants 2 messages Jun 20, 2017 – Jun 22, 2017 HID

lore
Share & tools
lore
#0 lore raw

PATCH v5 1/1 HID: Add driver for Retrode2 joypad adapter

This driver does 2 things:
- Apply the MULTI_INPUT quirk to create separate joypad device nodes for each one of the 4 connectors.
- Rename the input devices so that their names are different, and allow users to recognise which device corresponds to which physical port, including the SNES (Mario Paint) Mouse.

---

New in v5:
- Rebased
- Mask out SNES mouse's middle button

New in v4:
- Add guard around special Retrode driver, so it still works as it used to if the driver isn't compiled in

New in v3:
- Use devm_kasprintf()
- Return -ENOMEM on failure

New in v2:
- Removed error paths in probe
- Added device to hid_have_special_driver
- Mark N64 ports as using the same device as the SNES joypads

 drivers/hid/Kconfig       |   8 ++++
 drivers/hid/Makefile      |   1 +
 drivers/hid/hid-core.c    |   3 ++
 drivers/hid/hid-ids.h     |   3 ++
 drivers/hid/hid-retrode.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 115 insertions(+)
 create mode 100644 drivers/hid/hid-retrode.c
drivers/hid/Kconfig +8 -0
index 687705c50794..d409435fc0c2 100644
@@ -741,6 +741,14 @@ config HID_PRIMAX
 	Support for Primax devices that are not fully compliant with the
 	HID standard.
 
+config HID_RETRODE
+	tristate "Retrode"
+	depends on USB_HID
+	---help---
+	Support for
+
+	  * Retrode 2 cartridge and controller adapter
+
 config HID_ROCCAT
 	tristate "Roccat device support"
 	depends on USB_HID
drivers/hid/Makefile +1 -0
index fef027bc7fa3..9ac08e7ed887 100644
@@ -81,6 +81,7 @@ hid-picolcd-$(CONFIG_DEBUG_FS)		+= hid-picolcd_debugfs.o
 
 obj-$(CONFIG_HID_PLANTRONICS)	+= hid-plantronics.o
 obj-$(CONFIG_HID_PRIMAX)	+= hid-primax.o
+obj-$(CONFIG_HID_RETRODE)	+= hid-retrode.o
 obj-$(CONFIG_HID_ROCCAT)	+= hid-roccat.o hid-roccat-common.o \
 	hid-roccat-arvo.o hid-roccat-isku.o hid-roccat-kone.o \
 	hid-roccat-koneplus.o hid-roccat-konepure.o hid-roccat-kovaplus.o \
drivers/hid/hid-core.c +3 -0
index 6e040692f1d8..49b9b4e8bfb4 100644
@@ -2151,6 +2151,9 @@ static const struct hid_device_id hid_have_special_driver[] = {
 #if IS_ENABLED(CONFIG_HID_PRODIKEYS)
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) },
 #endif
+#if IS_ENABLED(CONFIG_HID_RETRODE)
+	{ HID_USB_DEVICE(USB_VENDOR_ID_FUTURE_TECHNOLOGY, USB_DEVICE_ID_RETRODE2) },
+#endif
 #if IS_ENABLED(CONFIG_HID_RMI)
 	{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_X1_COVER) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER, USB_DEVICE_ID_RAZER_BLADE_14) },
drivers/hid/hid-ids.h +3 -0
index 8ca1e8ce0af2..eabf33199fb2 100644
@@ -383,6 +383,9 @@
 #define USB_VENDOR_ID_FUTABA            0x0547
 #define USB_DEVICE_ID_LED_DISPLAY       0x7000
 
+#define USB_VENDOR_ID_FUTURE_TECHNOLOGY	0x0403
+#define USB_DEVICE_ID_RETRODE2		0x97c1
+
 #define USB_VENDOR_ID_ESSENTIAL_REALITY	0x0d7f
 #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100
 
drivers/hid/hid-retrode.c new file +100 -0

100 lines not on this page · raw message

Signature · 1 line
2.13.0
maintainer Applied
#1 lore raw
Quoted 6 lines · Bastien Nocera

This driver does 2 things:
- Apply the MULTI_INPUT quirk to create separate joypad device nodes for each one of the 4 connectors.
- Rename the input devices so that their names are different, and allow users to recognise which device corresponds to which physical port, including the SNES (Mario Paint) Mouse.

Applied to for-4.13/retrode.

Signature · 2 lines
Jiri Kosina
SUSE Labs