Hi,

I have noticed that all USB input devices use the exact same
sequence to initialize input_id from usb device. Would anyone
object to the patch below?

The patch is RFC only since it is on top of some local changes
and may not apply to other trees...
 
-- 
Dmitry

Input: introduce usb_to_input_id() to uniformly produce
       struct input_id for USB input devices.

Signed-off-by: Dmitry Torokhov <[EMAIL PROTECTED]>
---

 drivers/usb/input/acecad.c      |    7 +++----
 drivers/usb/input/aiptek.c      |    7 +++----
 drivers/usb/input/ati_remote.c  |    7 +++----
 drivers/usb/input/hid-input.c   |    6 ++----
 drivers/usb/input/itmtouch.c    |    7 +++----
 drivers/usb/input/kbtab.c       |    7 +++----
 drivers/usb/input/mtouchusb.c   |    7 +++----
 drivers/usb/input/powermate.c   |    7 +++----
 drivers/usb/input/touchkitusb.c |    6 ++----
 drivers/usb/input/usb-input.h   |   25 +++++++++++++++++++++++++
 drivers/usb/input/usbkbd.c      |    7 +++----
 drivers/usb/input/usbmouse.c    |    7 +++----
 drivers/usb/input/wacom.c       |    7 +++----
 drivers/usb/input/xpad.c        |    7 +++----
 14 files changed, 62 insertions(+), 52 deletions(-)

Index: work/drivers/usb/input/acecad.c
===================================================================
--- work.orig/drivers/usb/input/acecad.c
+++ work/drivers/usb/input/acecad.c
@@ -32,6 +32,8 @@
 #include <linux/init.h>
 #include <linux/usb.h>
 
+#include "usb-input.h"
+
 /*
  * Version Information
  */
@@ -212,10 +214,7 @@ static int usb_acecad_probe(struct usb_i
 
        acecad->dev.name = acecad->name;
        acecad->dev.phys = acecad->phys;
-       acecad->dev.id.bustype = BUS_USB;
-       acecad->dev.id.vendor = le16_to_cpu(dev->descriptor.idVendor);
-       acecad->dev.id.product = le16_to_cpu(dev->descriptor.idProduct);
-       acecad->dev.id.version = le16_to_cpu(dev->descriptor.bcdDevice);
+       usb_to_input_id(dev, &acecad->dev.id);
        acecad->dev.dev = &intf->dev;
 
        usb_fill_int_urb(acecad->irq, dev, pipe,
Index: work/drivers/usb/input/aiptek.c
===================================================================
--- work.orig/drivers/usb/input/aiptek.c
+++ work/drivers/usb/input/aiptek.c
@@ -81,6 +81,8 @@
 #include <asm/uaccess.h>
 #include <asm/unaligned.h>
 
+#include "usb-input.h"
+
 /*
  * Version Information
  */
@@ -2125,10 +2127,7 @@ aiptek_probe(struct usb_interface *intf,
        aiptek->inputdev.absflat[ABS_WHEEL] = 0;
        aiptek->inputdev.name = "Aiptek";
        aiptek->inputdev.phys = aiptek->features.usbPath;
-       aiptek->inputdev.id.bustype = BUS_USB;
-       aiptek->inputdev.id.vendor = le16_to_cpu(usbdev->descriptor.idVendor);
-       aiptek->inputdev.id.product = le16_to_cpu(usbdev->descriptor.idProduct);
-       aiptek->inputdev.id.version = le16_to_cpu(usbdev->descriptor.bcdDevice);
+       usb_to_input_id(usbdev, &aiptek->inputdev.id);
        aiptek->inputdev.dev = &intf->dev;
 
        aiptek->usbdev = usbdev;
Index: work/drivers/usb/input/usb-input.h
===================================================================
--- /dev/null
+++ work/drivers/usb/input/usb-input.h
@@ -0,0 +1,25 @@
+#ifndef __USB_INPUT_H
+#define __USB_INPUT_H
+
+/*
+ * Copyright (C) 2005 Dmitry Torokhov
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by
+ * the Free Software Foundation.
+ */
+
+#include <linux/usb.h>
+#include <linux/input.h>
+#include <asm/byteorder.h>
+
+static inline void
+usb_to_input_id(const struct usb_device *dev, struct input_id *id)
+{
+       id->bustype = BUS_USB;
+       id->vendor = le16_to_cpu(dev->descriptor.idVendor);
+       id->product = le16_to_cpu(dev->descriptor.idProduct);
+       id->version = le16_to_cpu(dev->descriptor.bcdDevice);
+}
+
+#endif
Index: work/drivers/usb/input/usbkbd.c
===================================================================
--- work.orig/drivers/usb/input/usbkbd.c
+++ work/drivers/usb/input/usbkbd.c
@@ -33,6 +33,8 @@
 #include <linux/init.h>
 #include <linux/usb.h>
 
+#include "usb-input.h"
+
 /*
  * Version Information
  */
@@ -288,10 +290,7 @@ static int usb_kbd_probe(struct usb_inte
 
        kbd->dev.name = kbd->name;
        kbd->dev.phys = kbd->phys;
-       kbd->dev.id.bustype = BUS_USB;
-       kbd->dev.id.vendor = le16_to_cpu(dev->descriptor.idVendor);
-       kbd->dev.id.product = le16_to_cpu(dev->descriptor.idProduct);
-       kbd->dev.id.version = le16_to_cpu(dev->descriptor.bcdDevice);
+       usb_to_input_id(dev, &kbd->dev.id);
        kbd->dev.dev = &iface->dev;
 
        if (dev->manufacturer)
Index: work/drivers/usb/input/usbmouse.c
===================================================================
--- work.orig/drivers/usb/input/usbmouse.c
+++ work/drivers/usb/input/usbmouse.c
@@ -33,6 +33,8 @@
 #include <linux/init.h>
 #include <linux/usb.h>
 
+#include "usb-input.h"
+
 /*
  * Version Information
  */
@@ -171,10 +173,7 @@ static int usb_mouse_probe(struct usb_in
 
        mouse->dev.name = mouse->name;
        mouse->dev.phys = mouse->phys;
-       mouse->dev.id.bustype = BUS_USB;
-       mouse->dev.id.vendor = le16_to_cpu(dev->descriptor.idVendor);
-       mouse->dev.id.product = le16_to_cpu(dev->descriptor.idProduct);
-       mouse->dev.id.version = le16_to_cpu(dev->descriptor.bcdDevice);
+       usb_to_input_id(dev, &mouse->dev.id);
        mouse->dev.dev = &intf->dev;
 
        if (dev->manufacturer)
Index: work/drivers/usb/input/wacom.c
===================================================================
--- work.orig/drivers/usb/input/wacom.c
+++ work/drivers/usb/input/wacom.c
@@ -72,6 +72,8 @@
 #include <asm/unaligned.h>
 #include <asm/byteorder.h>
 
+#include "usb-input.h"
+
 /*
  * Version Information
  */
@@ -823,10 +825,7 @@ static int wacom_probe(struct usb_interf
 
        wacom->dev.name = wacom->features->name;
        wacom->dev.phys = wacom->phys;
-       wacom->dev.id.bustype = BUS_USB;
-       wacom->dev.id.vendor = le16_to_cpu(dev->descriptor.idVendor);
-       wacom->dev.id.product = le16_to_cpu(dev->descriptor.idProduct);
-       wacom->dev.id.version = le16_to_cpu(dev->descriptor.bcdDevice);
+       usb_to_input_id(dev, &wacom->dev.id);
        wacom->dev.dev = &intf->dev;
        wacom->usbdev = dev;
 
Index: work/drivers/usb/input/ati_remote.c
===================================================================
--- work.orig/drivers/usb/input/ati_remote.c
+++ work/drivers/usb/input/ati_remote.c
@@ -96,6 +96,8 @@
 #include <linux/usb.h>
 #include <linux/wait.h>
 
+#include "usb-input.h"
+
 /*
  * Module and Version Information, Module Parameters
  */
@@ -635,10 +637,7 @@ static void ati_remote_input_init(struct
        idev->name = ati_remote->name;
        idev->phys = ati_remote->phys;
 
-       idev->id.bustype = BUS_USB;
-       idev->id.vendor = le16_to_cpu(ati_remote->udev->descriptor.idVendor);
-       idev->id.product = le16_to_cpu(ati_remote->udev->descriptor.idProduct);
-       idev->id.version = le16_to_cpu(ati_remote->udev->descriptor.bcdDevice);
+       usb_to_input_id(ati_remote->udev, &idev->id);
 }
 
 static int ati_remote_initialize(struct ati_remote *ati_remote)
Index: work/drivers/usb/input/hid-input.c
===================================================================
--- work.orig/drivers/usb/input/hid-input.c
+++ work/drivers/usb/input/hid-input.c
@@ -34,6 +34,7 @@
 
 #undef DEBUG
 
+#include "usb-input.h"
 #include "hid.h"
 
 #define unk    KEY_UNKNOWN
@@ -581,10 +582,7 @@ int hidinput_connect(struct hid_device *
                                hidinput->input.name = hid->name;
                                hidinput->input.phys = hid->phys;
                                hidinput->input.uniq = hid->uniq;
-                               hidinput->input.id.bustype = BUS_USB;
-                               hidinput->input.id.vendor = 
le16_to_cpu(dev->descriptor.idVendor);
-                               hidinput->input.id.product = 
le16_to_cpu(dev->descriptor.idProduct);
-                               hidinput->input.id.version = 
le16_to_cpu(dev->descriptor.bcdDevice);
+                               usb_to_input_id(dev, &hidinput->input.id);
                                hidinput->input.dev = &hid->intf->dev;
                        }
 
Index: work/drivers/usb/input/itmtouch.c
===================================================================
--- work.orig/drivers/usb/input/itmtouch.c
+++ work/drivers/usb/input/itmtouch.c
@@ -54,6 +54,8 @@
 #include <linux/init.h>
 #include <linux/usb.h>
 
+#include "usb-input.h"
+
 /* only an 8 byte buffer necessary for a single packet */
 #define ITM_BUFSIZE                    8
 #define PATH_SIZE                      64
@@ -184,10 +186,7 @@ static int itmtouch_probe(struct usb_int
 
        itmtouch->inputdev.name = itmtouch->name;
        itmtouch->inputdev.phys = itmtouch->phys;
-       itmtouch->inputdev.id.bustype = BUS_USB;
-       itmtouch->inputdev.id.vendor = udev->descriptor.idVendor;
-       itmtouch->inputdev.id.product = udev->descriptor.idProduct;
-       itmtouch->inputdev.id.version = udev->descriptor.bcdDevice;
+       usb_to_input_id(udev, &itmtouch->inputdev.id);
        itmtouch->inputdev.dev = &intf->dev;
 
        if (!strlen(itmtouch->name))
Index: work/drivers/usb/input/kbtab.c
===================================================================
--- work.orig/drivers/usb/input/kbtab.c
+++ work/drivers/usb/input/kbtab.c
@@ -7,6 +7,8 @@
 #include <asm/unaligned.h>
 #include <asm/byteorder.h>
 
+#include "usb-input.h"
+
 /*
  * Version Information
  * v0.0.1 - Original, extremely basic version, 2.4.xx only
@@ -167,10 +169,7 @@ static int kbtab_probe(struct usb_interf
 
        kbtab->dev.name = "KB Gear Tablet";
        kbtab->dev.phys = kbtab->phys;
-       kbtab->dev.id.bustype = BUS_USB;
-       kbtab->dev.id.vendor = le16_to_cpu(dev->descriptor.idVendor);
-       kbtab->dev.id.product = le16_to_cpu(dev->descriptor.idProduct);
-       kbtab->dev.id.version = le16_to_cpu(dev->descriptor.bcdDevice);
+       usb_to_input_id(dev, &kbtab->dev.id);
        kbtab->dev.dev = &intf->dev;
        kbtab->usbdev = dev;
 
Index: work/drivers/usb/input/mtouchusb.c
===================================================================
--- work.orig/drivers/usb/input/mtouchusb.c
+++ work/drivers/usb/input/mtouchusb.c
@@ -54,6 +54,8 @@
 #include <linux/init.h>
 #include <linux/usb.h>
 
+#include "usb-input.h"
+
 #define MTOUCHUSB_MIN_XC                0x0
 #define MTOUCHUSB_MAX_RAW_XC            0x4000
 #define MTOUCHUSB_MAX_CALIB_XC          0xffff
@@ -232,10 +234,7 @@ static int mtouchusb_probe(struct usb_in
 
        mtouch->input.name = mtouch->name;
        mtouch->input.phys = mtouch->phys;
-       mtouch->input.id.bustype = BUS_USB;
-       mtouch->input.id.vendor = le16_to_cpu(udev->descriptor.idVendor);
-       mtouch->input.id.product = le16_to_cpu(udev->descriptor.idProduct);
-       mtouch->input.id.version = le16_to_cpu(udev->descriptor.bcdDevice);
+       usb_to_input_id(udev, &mtouch->input.id);
        mtouch->input.dev = &intf->dev;
 
        mtouch->input.evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
Index: work/drivers/usb/input/powermate.c
===================================================================
--- work.orig/drivers/usb/input/powermate.c
+++ work/drivers/usb/input/powermate.c
@@ -36,6 +36,8 @@
 #include <linux/spinlock.h>
 #include <linux/usb.h>
 
+#include "usb-input.h"
+
 #define POWERMATE_VENDOR       0x077d  /* Griffin Technology, Inc. */
 #define POWERMATE_PRODUCT_NEW  0x0410  /* Griffin PowerMate */
 #define POWERMATE_PRODUCT_OLD  0x04AA  /* Griffin soundKnob */
@@ -389,10 +391,7 @@ static int powermate_probe(struct usb_in
        pm->input.keybit[LONG(BTN_0)] = BIT(BTN_0);
        pm->input.relbit[LONG(REL_DIAL)] = BIT(REL_DIAL);
        pm->input.mscbit[LONG(MSC_PULSELED)] = BIT(MSC_PULSELED);
-       pm->input.id.bustype = BUS_USB;
-       pm->input.id.vendor = le16_to_cpu(udev->descriptor.idVendor);
-       pm->input.id.product = le16_to_cpu(udev->descriptor.idProduct);
-       pm->input.id.version = le16_to_cpu(udev->descriptor.bcdDevice);
+       usb_to_input_id(udev, &pm->input.id);
        pm->input.event = powermate_input_event;
        pm->input.dev = &intf->dev;
        pm->input.phys = pm->phys;
Index: work/drivers/usb/input/touchkitusb.c
===================================================================
--- work.orig/drivers/usb/input/touchkitusb.c
+++ work/drivers/usb/input/touchkitusb.c
@@ -36,6 +36,7 @@
 #endif
 #include <linux/usb.h>
 
+#include "usb-input.h"
 
 #define TOUCHKIT_MIN_XC                        0x0
 #define TOUCHKIT_MAX_XC                        0x07ff
@@ -202,10 +203,7 @@ static int touchkit_probe(struct usb_int
 
        touchkit->input.name = touchkit->name;
        touchkit->input.phys = touchkit->phys;
-       touchkit->input.id.bustype = BUS_USB;
-       touchkit->input.id.vendor = le16_to_cpu(udev->descriptor.idVendor);
-       touchkit->input.id.product = le16_to_cpu(udev->descriptor.idProduct);
-       touchkit->input.id.version = le16_to_cpu(udev->descriptor.bcdDevice);
+       usb_to_input_id(udev, &touchkit->input.id);
        touchkit->input.dev = &intf->dev;
 
        touchkit->input.evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
Index: work/drivers/usb/input/xpad.c
===================================================================
--- work.orig/drivers/usb/input/xpad.c
+++ work/drivers/usb/input/xpad.c
@@ -63,6 +63,8 @@
 #include <linux/smp_lock.h>
 #include <linux/usb.h>
 
+#include "usb-input.h"
+
 #define DRIVER_VERSION "v0.0.5"
 #define DRIVER_AUTHOR "Marko Friedemann <[EMAIL PROTECTED]>"
 #define DRIVER_DESC "X-Box pad driver"
@@ -256,10 +258,7 @@ static int xpad_probe(struct usb_interfa
 
        xpad->udev = udev;
 
-       xpad->dev.id.bustype = BUS_USB;
-       xpad->dev.id.vendor = le16_to_cpu(udev->descriptor.idVendor);
-       xpad->dev.id.product = le16_to_cpu(udev->descriptor.idProduct);
-       xpad->dev.id.version = le16_to_cpu(udev->descriptor.bcdDevice);
+       usb_to_input_id(udev, &xpad->dev.id);
        xpad->dev.dev = &intf->dev;
        xpad->dev.private = xpad;
        xpad->dev.name = xpad_device[i].name;


-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to