From: Anssi Hannula <dmitry.torokhov@gmail.com>
To: unlisted-recipients:; (no To-header on input)
Cc: linux-kernel@vger.kernel.org, jkosina@suse.cz, akpm@linux-foundation.org
Subject: [PATCH 11/37] Input: xpad - match xbox 360 devices with interface info
Date: Thu, 3 Apr 2008 16:17:52 -0400 [thread overview]
Message-ID: <8a0f83eacc1bb8899094b17483de95ddf2d8fcc6.1208783694.git.dmitry.torokhov@gmail.com> (raw)
In-Reply-To: <cover.1208783694.git.dmitry.torokhov@gmail.com>
Match Xbox 360 controllers using the interface info, i.e. interface
class 255 (Vendor specific), subclass 93 and protocol 1, instead of
specifying the device ids individually. As the class is vendor-specific,
we have to still match against vendor id as well, though.
Signed-off-by: Anssi Hannula <anssi.hannula@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
drivers/input/joystick/xpad.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index 0380597..8804ad3 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -91,6 +91,7 @@
#define XTYPE_XBOX 0
#define XTYPE_XBOX360 1
+#define XTYPE_UNKNOWN 2
static int dpad_to_buttons;
module_param(dpad_to_buttons, bool, S_IRUGO);
@@ -138,7 +139,7 @@ static const struct xpad_device {
{ 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX },
{ 0x045e, 0x028e, "Microsoft X-Box 360 pad", MAP_DPAD_TO_AXES, XTYPE_XBOX360 },
{ 0xffff, 0xffff, "Chinese-made Xbox Controller", MAP_DPAD_TO_AXES, XTYPE_XBOX },
- { 0x0000, 0x0000, "Generic X-Box pad", MAP_DPAD_UNKNOWN, XTYPE_XBOX }
+ { 0x0000, 0x0000, "Generic X-Box pad", MAP_DPAD_UNKNOWN, XTYPE_UNKNOWN }
};
static const signed short xpad_btn[] = {
@@ -173,12 +174,20 @@ static const signed short xpad_abs_pad[] = {
-1 /* terminating entry */
};
-/* Xbox 360 has a vendor-specific (sub)class, so we cannot match it with only
- * USB_INTERFACE_INFO, more to that this device has 4 InterfaceProtocols,
- * but we need only one of them. */
+/* Xbox 360 has a vendor-specific class, so we cannot match it with only
+ * USB_INTERFACE_INFO (also specifically refused by USB subsystem), so we
+ * match against vendor id as well. Also, some Xbox 360 devices have multiple
+ * interface protocols, we only need protocol 1. */
+#define XPAD_XBOX360_VENDOR(vend) \
+ .match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_INT_INFO, \
+ .idVendor = (vend), \
+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC, \
+ .bInterfaceSubClass = 93, \
+ .bInterfaceProtocol = 1
+
static struct usb_device_id xpad_table [] = {
{ USB_INTERFACE_INFO('X', 'B', 0) }, /* X-Box USB-IF not approved class */
- { USB_DEVICE_INTERFACE_PROTOCOL(0x045e, 0x028e, 1) }, /* X-Box 360 controller */
+ { XPAD_XBOX360_VENDOR(0x045e) }, /* Microsoft X-Box 360 controllers */
{ }
};
@@ -645,6 +654,8 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
xpad->xtype = xpad_device[i].xtype;
if (xpad->dpad_mapping == MAP_DPAD_UNKNOWN)
xpad->dpad_mapping = dpad_to_buttons;
+ if (xpad->xtype == XTYPE_UNKNOWN)
+ xpad->xtype = (intf->cur_altsetting->desc.bInterfaceClass == USB_CLASS_VENDOR_SPEC);
xpad->dev = input_dev;
usb_make_path(udev, xpad->phys, sizeof(xpad->phys));
strlcat(xpad->phys, "/input0", sizeof(xpad->phys));
--
1.5.5.rc2.6.gf58d
next prev parent reply other threads:[~2008-04-21 13:27 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-21 13:14 [PATCH 00/37] Input queue for 2.6.26 merge window Dmitry Torokhov
2008-03-10 10:08 ` [PATCH 27/37] Input: aiptek - add support for Genius G-PEN 560 tablet Guryanov Dmitry
2008-03-10 12:40 ` [PATCH 28/37] Input: add Zhen Hua driver Martin Kebert
2008-03-10 12:43 ` [PATCH 29/37] Input: fix ordering in joystick Makefile Jiri Kosina
2008-04-21 13:40 ` Jiri Kosina
2008-04-21 16:20 ` Dmitry Torokhov
2008-04-21 14:22 ` Adrian Bunk
2008-04-21 15:39 ` Dmitry Torokhov
2008-04-21 15:54 ` Adrian Bunk
2008-04-02 4:41 ` [PATCH 01/37] Input: remove private member from input_dev structure Dmitry Torokhov
2008-04-02 4:42 ` [PATCH 02/37] Input: locomokbd - add 'off' button support for Sharp Collie/Poodle Helge Deller
2008-04-02 4:43 ` [PATCH 03/37] Input: ads7846 - simplify support of external vREF (and ads7843) David Brownell
2008-04-02 4:51 ` [PATCH 04/37] Input: add support for WM97xx familty touchscreens Mark Brown
2008-04-02 4:51 ` [PATCH 05/37] Input: WM97xx - add chip driver for WM9705 touchscreen Mark Brown
2008-04-02 4:51 ` [PATCH 06/37] Input: WM97xx - add chip driver for WM9712 touchscreen Mark Brown
2008-04-02 4:51 ` [PATCH 07/37] Input: WM97xx - add chip driver for WM97123 touchscreen Mark Brown
2008-04-02 4:51 ` [PATCH 08/37] Input: WM97xx - add support for streaming mode on Mainstone Mark Brown
2008-04-02 14:02 ` [PATCH 09/37] Input: appletouch - add product IDs for the 4th generation MacBooks Tobias Mueller
2008-04-02 15:22 ` [PATCH 10/37] Input: tosakbd - fix suspend Dmitry Baryshkov
2008-04-03 20:17 ` Anssi Hannula [this message]
2008-04-03 20:18 ` [PATCH 12/37] Input: xpad - fix dpad handling of unknown devices Anssi Hannula
2008-04-03 20:18 ` [PATCH 13/37] Input: xpad - fix inverted Y and RY axes Anssi Hannula
2008-04-03 20:18 ` [PATCH 14/37] Input: xpad - add more xbox 360 controller ids Anssi Hannula
2008-04-03 20:18 ` [PATCH 15/37] Input: xpad - do not report nonexistent buttons for xbox360 Anssi Hannula
2008-04-03 20:18 ` [PATCH 16/37] Input: xpad - enable force feedback on xbox 360 controllers only Anssi Hannula
2008-04-03 20:19 ` [PATCH 17/37] Input: xpad - drop obsolete driver versioning Anssi Hannula
2008-04-03 20:19 ` [PATCH 18/37] Input: xpad - add support for wireless xbox360 controllers Brian Magnuson
2008-04-03 20:19 ` [PATCH 19/37] Input: xpad - don't use GFP_ATOMIC Oliver Neukum
2008-04-04 19:31 ` [PATCH 20/37] Input: usbtouchscreen - don't use DMA on stack Oliver Neukum
2008-04-15 5:30 ` [PATCH 21/37] Input: put ledstate in the keyboard notifier Karl Dahlke
2008-04-15 5:30 ` [PATCH 22/37] Input: add PS/2 serio driver for AVR32 devices Hans-Christian Egtvedt
2008-04-21 13:33 ` Hans-Christian Egtvedt
2008-04-21 15:39 ` Dmitry Torokhov
2008-04-15 5:31 ` [PATCH 23/37] Input: gpio_keys - irq handling cleanup David Brownell
2008-04-15 5:31 ` [PATCH 24/37] Input: omap-keypad - fix build warning David Brownell
2008-04-15 5:31 ` [PATCH 25/37] Input: xpad - set proper buffer length for outgoing requests Michael Gruber
2008-04-15 5:31 ` [PATCH 26/37] Input: wacom - implement suspend and autosuspend Oliver Neukum
2008-04-17 13:24 ` [PATCH 30/37] Input: wm97xx-core - only schedule interrupt handler if not already scheduled Mark Brown
2008-04-17 13:24 ` [PATCH 31/37] Input: wm97xx-core - use IRQF_SAMPLE_RANDOM Mark Brown
2008-04-17 13:24 ` [PATCH 32/37] Input: wm97xx-core - support use as a wakeup source Mark Brown
2008-04-17 13:28 ` [PATCH 33/37] Input: drivers/char/keyboard.c - use time_after Julia Lawall
2008-04-18 4:24 ` [PATCH 34/37] Input: add MODULE_ALIAS() to hotpluggable platform modules Kay Sievers
2008-04-18 4:25 ` [PATCH 35/37] Input: bf54x-keys - add infrastructure for keypad wakeups Michael Hennerich
2008-04-18 4:25 ` [PATCH 36/37] Input: i8042 - fix incorrect usage of strncpy and strncat Roel Kluin
2008-04-18 4:25 ` [PATCH 37/37] Input: mac_hid - add lockdep annotation to emumousebtn Peter Zijlstra
2008-04-21 15:11 ` [PATCH 00/37] Input queue for 2.6.26 merge window Henrique de Moraes Holschuh
2008-04-21 15:44 ` Dmitry Torokhov
2008-04-21 16:58 ` Henrique de Moraes Holschuh
2008-04-26 13:24 ` [build bug] " Ingo Molnar
2008-04-27 4:07 ` Dmitry Torokhov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8a0f83eacc1bb8899094b17483de95ddf2d8fcc6.1208783694.git.dmitry.torokhov@gmail.com \
--to=dmitry.torokhov@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=jkosina@suse.cz \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®