|
62 | 62 | #define GH_GUITAR_CONTROLLER BIT(14) |
63 | 63 | #define GHL_GUITAR_PS3WIIU BIT(15) |
64 | 64 | #define GHL_GUITAR_PS4 BIT(16) |
65 | | -#define RB4_GUITAR_PS4 BIT(17) |
66 | | -#define RB4_GUITAR_PS5 BIT(18) |
| 65 | +#define RB4_GUITAR_PS4_USB BIT(17) |
| 66 | +#define RB4_GUITAR_PS4_BT BIT(18) |
| 67 | +#define RB4_GUITAR_PS5 BIT(19) |
67 | 68 |
|
68 | 69 | #define SIXAXIS_CONTROLLER (SIXAXIS_CONTROLLER_USB | SIXAXIS_CONTROLLER_BT) |
69 | 70 | #define MOTION_CONTROLLER (MOTION_CONTROLLER_USB | MOTION_CONTROLLER_BT) |
@@ -627,7 +628,6 @@ static int gh_guitar_mapping(struct hid_device *hdev, struct hid_input *hi, |
627 | 628 | static int rb4_guitar_mapping(struct hid_device *hdev, struct hid_input *hi, |
628 | 629 | struct hid_field *field, struct hid_usage *usage, |
629 | 630 | unsigned long **bit, int *max) |
630 | | - |
631 | 631 | { |
632 | 632 | if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) { |
633 | 633 | unsigned int key = usage->hid & HID_USAGE; |
@@ -1041,7 +1041,10 @@ static int sony_raw_event(struct hid_device *hdev, struct hid_report *report, |
1041 | 1041 | } else if ((sc->quirks & NSG_MRXU_REMOTE) && rd[0] == 0x02) { |
1042 | 1042 | nsg_mrxu_parse_report(sc, rd, size); |
1043 | 1043 | return 1; |
1044 | | - } else if ((sc->quirks & RB4_GUITAR_PS4) && rd[0] == 0x01 && size == 64) { |
| 1044 | + } else if ((sc->quirks & RB4_GUITAR_PS4_USB) && rd[0] == 0x01 && size == 64) { |
| 1045 | + rb4_ps4_guitar_parse_report(sc, rd, size); |
| 1046 | + return 1; |
| 1047 | + } else if ((sc->quirks & RB4_GUITAR_PS4_BT) && rd[0] == 0x01 && size == 78) { |
1045 | 1048 | rb4_ps4_guitar_parse_report(sc, rd, size); |
1046 | 1049 | return 1; |
1047 | 1050 | } else if ((sc->quirks & RB4_GUITAR_PS5) && rd[0] == 0x01 && size == 64) { |
@@ -1098,7 +1101,7 @@ static int sony_mapping(struct hid_device *hdev, struct hid_input *hi, |
1098 | 1101 | if (sc->quirks & GH_GUITAR_CONTROLLER) |
1099 | 1102 | return gh_guitar_mapping(hdev, hi, field, usage, bit, max); |
1100 | 1103 |
|
1101 | | - if (sc->quirks & RB4_GUITAR_PS4) |
| 1104 | + if (sc->quirks & (RB4_GUITAR_PS4_USB | RB4_GUITAR_PS4_BT)) |
1102 | 1105 | return rb4_guitar_mapping(hdev, hi, field, usage, bit, max); |
1103 | 1106 |
|
1104 | 1107 | if (sc->quirks & RB4_GUITAR_PS5) |
@@ -2119,8 +2122,6 @@ static int sony_input_configured(struct hid_device *hdev, |
2119 | 2122 |
|
2120 | 2123 | } else if (sc->quirks & MOTION_CONTROLLER) { |
2121 | 2124 | sony_init_output_report(sc, motion_send_output_report); |
2122 | | - } else if (sc->quirks & (RB4_GUITAR_PS4 | RB4_GUITAR_PS5)) { |
2123 | | - sc->input_dev = hidinput->input; |
2124 | 2125 | } |
2125 | 2126 |
|
2126 | 2127 | if (sc->quirks & SONY_LED_SUPPORT) { |
@@ -2148,6 +2149,7 @@ static int sony_input_configured(struct hid_device *hdev, |
2148 | 2149 | goto err_close; |
2149 | 2150 | } |
2150 | 2151 |
|
| 2152 | + sc->input_dev = hidinput->input; |
2151 | 2153 | return 0; |
2152 | 2154 | err_close: |
2153 | 2155 | hid_hw_close(hdev); |
@@ -2378,9 +2380,13 @@ static const struct hid_device_id sony_devices[] = { |
2378 | 2380 | .driver_data = GHL_GUITAR_PS4 | GH_GUITAR_CONTROLLER }, |
2379 | 2381 | /* Rock Band 4 PS4 guitars */ |
2380 | 2382 | { HID_USB_DEVICE(USB_VENDOR_ID_PDP, USB_DEVICE_ID_PDP_PS4_RIFFMASTER), |
2381 | | - .driver_data = RB4_GUITAR_PS4 }, |
| 2383 | + .driver_data = RB4_GUITAR_PS4_USB }, |
2382 | 2384 | { HID_USB_DEVICE(USB_VENDOR_ID_CRKD, USB_DEVICE_ID_CRKD_PS4_GIBSON_SG), |
2383 | | - .driver_data = RB4_GUITAR_PS4 }, |
| 2385 | + .driver_data = RB4_GUITAR_PS4_USB }, |
| 2386 | + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_PDP, USB_DEVICE_ID_PDP_PS4_JAGUAR), |
| 2387 | + .driver_data = RB4_GUITAR_PS4_BT }, |
| 2388 | + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_PS4_STRATOCASTER), |
| 2389 | + .driver_data = RB4_GUITAR_PS4_BT }, |
2384 | 2390 | /* Rock Band 4 PS5 guitars */ |
2385 | 2391 | { HID_USB_DEVICE(USB_VENDOR_ID_PDP, USB_DEVICE_ID_PDP_PS5_RIFFMASTER), |
2386 | 2392 | .driver_data = RB4_GUITAR_PS5 }, |
|
0 commit comments