--- /dev/null
+From 868613f1c0ccf7b832f38b48b18cca31cdeb3d26 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Nic=20Soud=C3=A9e?= <nsoudee@gmail.com>
+Date: Thu, 6 Dec 2018 11:59:25 -0500
+Subject: HID: quirks: fix RetroUSB.com devices
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Nic Soudée <nsoudee@gmail.com>
+
+commit 868613f1c0ccf7b832f38b48b18cca31cdeb3d26 upstream.
+
+SNES RetroPort and RetroPad register only 4 gamepad buttons
+when they should register all 8 buttons. This is described here:
+
+https://ask.fedoraproject.org/en/question/128102
+
+This is happening because of:
+
+Commit 190d7f02ce8e ("HID: input: do not increment usages when
+ duplicate is found")
+
+Here, I add the quirk HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE
+(created for backward compatibility with the change in 190d7f02ce8e)
+for the two products.
+
+Tested with both RetroPort and RetroPad.
+
+Cc: stable@vger.kernel.org # v4.18+
+
+Signed-off-by: Nic Soudée <nsoudee@gmail.com>
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hid/hid-ids.h | 4 ++++
+ drivers/hid/hid-quirks.c | 2 ++
+ 2 files changed, 6 insertions(+)
+
+--- a/drivers/hid/hid-ids.h
++++ b/drivers/hid/hid-ids.h
+@@ -934,6 +934,10 @@
+ #define USB_VENDOR_ID_REALTEK 0x0bda
+ #define USB_DEVICE_ID_REALTEK_READER 0x0152
+
++#define USB_VENDOR_ID_RETROUSB 0xf000
++#define USB_DEVICE_ID_RETROUSB_SNES_RETROPAD 0x0003
++#define USB_DEVICE_ID_RETROUSB_SNES_RETROPORT 0x00f1
++
+ #define USB_VENDOR_ID_ROCCAT 0x1e7d
+ #define USB_DEVICE_ID_ROCCAT_ARVO 0x30d4
+ #define USB_DEVICE_ID_ROCCAT_ISKU 0x319c
+--- a/drivers/hid/hid-quirks.c
++++ b/drivers/hid/hid-quirks.c
+@@ -136,6 +136,8 @@ static const struct hid_device_id hid_qu
+ { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3003), HID_QUIRK_NOGET },
+ { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008), HID_QUIRK_NOGET },
+ { HID_USB_DEVICE(USB_VENDOR_ID_REALTEK, USB_DEVICE_ID_REALTEK_READER), HID_QUIRK_NO_INIT_REPORTS },
++ { HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETROPAD), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
++ { HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETROPORT), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
+ { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD), HID_QUIRK_BADPAD },
+ { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD2), HID_QUIRK_NO_INIT_REPORTS },
+ { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD), HID_QUIRK_NO_INIT_REPORTS },