Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: xpad - add multiple supported devices

This is based on multiple commits at https://github.com/paroj/xpad
that had bouncing email addresses and were not signed off.

Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
Link: https://lore.kernel.org/r/20250123175404.23254-1-rojtberg@gmail.com
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Pavel Rojtberg and committed by
Dmitry Torokhov
3492321e 36e093c8

+19 -1
+19 -1
drivers/input/joystick/xpad.c
··· 140 140 { 0x044f, 0x0f00, "Thrustmaster Wheel", 0, XTYPE_XBOX }, 141 141 { 0x044f, 0x0f03, "Thrustmaster Wheel", 0, XTYPE_XBOX }, 142 142 { 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", 0, XTYPE_XBOX }, 143 + { 0x044f, 0xd01e, "ThrustMaster, Inc. ESWAP X 2 ELDEN RING EDITION", 0, XTYPE_XBOXONE }, 143 144 { 0x044f, 0x0f10, "Thrustmaster Modena GT Wheel", 0, XTYPE_XBOX }, 144 145 { 0x044f, 0xb326, "Thrustmaster Gamepad GP XID", 0, XTYPE_XBOX360 }, 145 146 { 0x045e, 0x0202, "Microsoft X-Box pad v1 (US)", 0, XTYPE_XBOX }, ··· 178 177 { 0x06a3, 0x0200, "Saitek Racing Wheel", 0, XTYPE_XBOX }, 179 178 { 0x06a3, 0x0201, "Saitek Adrenalin", 0, XTYPE_XBOX }, 180 179 { 0x06a3, 0xf51a, "Saitek P3600", 0, XTYPE_XBOX360 }, 180 + { 0x0738, 0x4503, "Mad Catz Racing Wheel", 0, XTYPE_XBOXONE }, 181 181 { 0x0738, 0x4506, "Mad Catz 4506 Wireless Controller", 0, XTYPE_XBOX }, 182 182 { 0x0738, 0x4516, "Mad Catz Control Pad", 0, XTYPE_XBOX }, 183 183 { 0x0738, 0x4520, "Mad Catz Control Pad Pro", 0, XTYPE_XBOX }, ··· 240 238 { 0x0e6f, 0x0146, "Rock Candy Wired Controller for Xbox One", 0, XTYPE_XBOXONE }, 241 239 { 0x0e6f, 0x0147, "PDP Marvel Xbox One Controller", 0, XTYPE_XBOXONE }, 242 240 { 0x0e6f, 0x015c, "PDP Xbox One Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, 241 + { 0x0e6f, 0x015d, "PDP Mirror's Edge Official Wired Controller for Xbox One", XTYPE_XBOXONE }, 243 242 { 0x0e6f, 0x0161, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, 244 243 { 0x0e6f, 0x0162, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, 245 244 { 0x0e6f, 0x0163, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, ··· 279 276 { 0x0f0d, 0x0078, "Hori Real Arcade Pro V Kai Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, 280 277 { 0x0f0d, 0x00c5, "Hori Fighting Commander ONE", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, 281 278 { 0x0f0d, 0x00dc, "HORIPAD FPS for Nintendo Switch", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, 279 + { 0x0f0d, 0x0151, "Hori Racing Wheel Overdrive for Xbox Series X", 0, XTYPE_XBOXONE }, 280 + { 0x0f0d, 0x0152, "Hori Racing Wheel Overdrive for Xbox Series X", 0, XTYPE_XBOXONE }, 282 281 { 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX }, 283 282 { 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX }, 284 283 { 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX }, 285 284 { 0x102c, 0xff0c, "Joytech Wireless Advanced Controller", 0, XTYPE_XBOX }, 286 285 { 0x1038, 0x1430, "SteelSeries Stratus Duo", 0, XTYPE_XBOX360 }, 287 286 { 0x1038, 0x1431, "SteelSeries Stratus Duo", 0, XTYPE_XBOX360 }, 287 + { 0x10f5, 0x7005, "Turtle Beach Recon Controller", 0, XTYPE_XBOXONE }, 288 288 { 0x11c9, 0x55f0, "Nacon GC-100XF", 0, XTYPE_XBOX360 }, 289 289 { 0x11ff, 0x0511, "PXN V900", 0, XTYPE_XBOX360 }, 290 290 { 0x1209, 0x2882, "Ardwiino Controller", 0, XTYPE_XBOX360 }, ··· 372 366 { 0x24c6, 0x5510, "Hori Fighting Commander ONE (Xbox 360/PC Mode)", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, 373 367 { 0x24c6, 0x551a, "PowerA FUSION Pro Controller", 0, XTYPE_XBOXONE }, 374 368 { 0x24c6, 0x561a, "PowerA FUSION Controller", 0, XTYPE_XBOXONE }, 369 + { 0x24c6, 0x581a, "ThrustMaster XB1 Classic Controller", 0, XTYPE_XBOXONE }, 375 370 { 0x24c6, 0x5b00, "ThrustMaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 }, 376 371 { 0x24c6, 0x5b02, "Thrustmaster, Inc. GPX Controller", 0, XTYPE_XBOX360 }, 377 372 { 0x24c6, 0x5b03, "Thrustmaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 }, ··· 383 376 { 0x294b, 0x3404, "Snakebyte GAMEPAD RGB X", 0, XTYPE_XBOXONE }, 384 377 { 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE }, 385 378 { 0x2dc8, 0x3106, "8BitDo Ultimate Wireless / Pro 2 Wired Controller", 0, XTYPE_XBOX360 }, 386 - { 0x2dc8, 0x6001, "8BitDo SN30 Pro", 0, XTYPE_XBOX360 }, 379 + { 0x2dc8, 0x3109, "8BitDo Ultimate Wireless Bluetooth", 0, XTYPE_XBOX360 }, 387 380 { 0x2dc8, 0x310a, "8BitDo Ultimate 2C Wireless Controller", 0, XTYPE_XBOX360 }, 381 + { 0x2dc8, 0x6001, "8BitDo SN30 Pro", 0, XTYPE_XBOX360 }, 388 382 { 0x2e24, 0x0652, "Hyperkin Duke X-Box One pad", 0, XTYPE_XBOXONE }, 389 383 { 0x2e24, 0x1688, "Hyperkin X91 X-Box One pad", 0, XTYPE_XBOXONE }, 384 + { 0x2e95, 0x0504, "SCUF Gaming Controller", MAP_SELECT_BUTTON, XTYPE_XBOXONE }, 390 385 { 0x31e3, 0x1100, "Wooting One", 0, XTYPE_XBOX360 }, 391 386 { 0x31e3, 0x1200, "Wooting Two", 0, XTYPE_XBOX360 }, 392 387 { 0x31e3, 0x1210, "Wooting Lekker", 0, XTYPE_XBOX360 }, ··· 396 387 { 0x31e3, 0x1230, "Wooting Two HE (ARM)", 0, XTYPE_XBOX360 }, 397 388 { 0x31e3, 0x1300, "Wooting 60HE (AVR)", 0, XTYPE_XBOX360 }, 398 389 { 0x31e3, 0x1310, "Wooting 60HE (ARM)", 0, XTYPE_XBOX360 }, 390 + { 0x3285, 0x0603, "Nacon Pro Compact controller for Xbox", 0, XTYPE_XBOXONE }, 399 391 { 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 }, 392 + { 0x3285, 0x0614, "Nacon Pro Compact", 0, XTYPE_XBOXONE }, 400 393 { 0x3285, 0x0646, "Nacon Pro Compact", 0, XTYPE_XBOXONE }, 394 + { 0x3285, 0x0662, "Nacon Revolution5 Pro", 0, XTYPE_XBOX360 }, 401 395 { 0x3285, 0x0663, "Nacon Evol-X", 0, XTYPE_XBOXONE }, 402 396 { 0x3537, 0x1004, "GameSir T4 Kaleid", 0, XTYPE_XBOX360 }, 403 397 { 0x3537, 0x1010, "GameSir G7 SE", 0, XTYPE_XBOXONE }, 404 398 { 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX }, 399 + { 0x413d, 0x2104, "Black Shark Green Ghost Gamepad", 0, XTYPE_XBOX360 }, 405 400 { 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX }, 406 401 { 0x0000, 0x0000, "Generic X-Box pad", 0, XTYPE_UNKNOWN } 407 402 }; ··· 504 491 XPAD_XBOX360_VENDOR(0x03f0), /* HP HyperX Xbox 360 controllers */ 505 492 XPAD_XBOXONE_VENDOR(0x03f0), /* HP HyperX Xbox One controllers */ 506 493 XPAD_XBOX360_VENDOR(0x044f), /* Thrustmaster Xbox 360 controllers */ 494 + XPAD_XBOXONE_VENDOR(0x044f), /* Thrustmaster Xbox One controllers */ 507 495 XPAD_XBOX360_VENDOR(0x045e), /* Microsoft Xbox 360 controllers */ 508 496 XPAD_XBOXONE_VENDOR(0x045e), /* Microsoft Xbox One controllers */ 509 497 XPAD_XBOX360_VENDOR(0x046d), /* Logitech Xbox 360-style controllers */ ··· 551 537 XPAD_XBOXONE_VENDOR(0x2dc8), /* 8BitDo Controllers */ 552 538 XPAD_XBOXONE_VENDOR(0x2e24), /* Hyperkin Controllers */ 553 539 XPAD_XBOX360_VENDOR(0x2f24), /* GameSir Controllers */ 540 + XPAD_XBOXONE_VENDOR(0x2e95), /* SCUF Gaming Controller */ 554 541 XPAD_XBOX360_VENDOR(0x31e3), /* Wooting Keyboards */ 555 542 XPAD_XBOX360_VENDOR(0x3285), /* Nacon GC-100 */ 556 543 XPAD_XBOXONE_VENDOR(0x3285), /* Nacon Evol-X */ 557 544 XPAD_XBOX360_VENDOR(0x3537), /* GameSir Controllers */ 558 545 XPAD_XBOXONE_VENDOR(0x3537), /* GameSir Controllers */ 546 + XPAD_XBOX360_VENDOR(0x413d), /* Black Shark Green Ghost Controller */ 559 547 { } 560 548 }; 561 549 ··· 710 694 XBOXONE_INIT_PKT(0x045e, 0x0b00, xboxone_s_init), 711 695 XBOXONE_INIT_PKT(0x045e, 0x0b00, extra_input_packet_init), 712 696 XBOXONE_INIT_PKT(0x0e6f, 0x0000, xboxone_pdp_led_on), 697 + XBOXONE_INIT_PKT(0x20d6, 0xa01a, xboxone_pdp_led_on), 713 698 XBOXONE_INIT_PKT(0x0e6f, 0x0000, xboxone_pdp_auth), 699 + XBOXONE_INIT_PKT(0x20d6, 0xa01a, xboxone_pdp_auth), 714 700 XBOXONE_INIT_PKT(0x24c6, 0x541a, xboxone_rumblebegin_init), 715 701 XBOXONE_INIT_PKT(0x24c6, 0x542a, xboxone_rumblebegin_init), 716 702 XBOXONE_INIT_PKT(0x24c6, 0x543a, xboxone_rumblebegin_init),