HID: Add driver for Retrode2 joypad adapter
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
@@ -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
@@ -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
@@ -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
@@ -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
Quoted 6 lines · Bastien Nocera
This driver does 2 things:
- Apply theMULTI_INPUTquirk 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