Input: move input_device_id to mod_devicetable.h
authorDmitry Torokhov <dtor_core@ameritech.net>
Wed, 26 Apr 2006 04:14:19 +0000 (00:14 -0400)
committerDmitry Torokhov <dtor_core@ameritech.net>
Wed, 26 Apr 2006 04:14:19 +0000 (00:14 -0400)
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/input.c
include/linux/input.h
include/linux/mod_devicetable.h
scripts/mod/file2alias.c

index a935abeffffc4618bb7f99f429b09e81f1ce4609..591c70d80cd8fa90ff9ca6d1d1a250af7d7a8e82 100644 (file)
@@ -286,19 +286,19 @@ static struct input_device_id *input_match_device(struct input_device_id *id, st
        for (; id->flags || id->driver_info; id++) {
 
                if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
-                       if (id->id.bustype != dev->id.bustype)
+                       if (id->bustype != dev->id.bustype)
                                continue;
 
                if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
-                       if (id->id.vendor != dev->id.vendor)
+                       if (id->vendor != dev->id.vendor)
                                continue;
 
                if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
-                       if (id->id.product != dev->id.product)
+                       if (id->product != dev->id.product)
                                continue;
 
                if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
-                       if (id->id.version != dev->id.version)
+                       if (id->version != dev->id.version)
                                continue;
 
                MATCH_BIT(evbit,  EV_MAX);
index 16c19d710a4dcce2d6b666a9e10920f6c042b876..8298b4bf5a07231e81743322b95f79821a5dba33 100644 (file)
@@ -12,8 +12,6 @@
 #ifdef __KERNEL__
 #include <linux/time.h>
 #include <linux/list.h>
-#include <linux/device.h>
-#include <linux/mod_devicetable.h>
 #else
 #include <sys/time.h>
 #include <sys/ioctl.h>
@@ -577,15 +575,15 @@ struct input_absinfo {
  * Switch events
  */
 
-#define SW_0           0x00
-#define SW_1           0x01
-#define SW_2           0x02
-#define SW_3           0x03
-#define SW_4           0x04
-#define SW_5           0x05
-#define SW_6           0x06
-#define SW_7           0x07
-#define SW_MAX         0x0f
+#define SW_0                   0x00
+#define SW_1                   0x01
+#define SW_2                   0x02
+#define SW_3                   0x03
+#define SW_4                   0x04
+#define SW_5                   0x05
+#define SW_6                   0x06
+#define SW_7                   0x07
+#define SW_MAX                 0x0f
 
 /*
  * Misc events
@@ -805,52 +803,16 @@ struct ff_effect {
 
 #define FF_MAX         0x7f
 
-struct input_device_id {
-
-       kernel_ulong_t flags;
-
-       struct input_id id;
-
-       kernel_ulong_t evbit[EV_MAX/BITS_PER_LONG+1];
-       kernel_ulong_t keybit[KEY_MAX/BITS_PER_LONG+1];
-       kernel_ulong_t relbit[REL_MAX/BITS_PER_LONG+1];
-       kernel_ulong_t absbit[ABS_MAX/BITS_PER_LONG+1];
-       kernel_ulong_t mscbit[MSC_MAX/BITS_PER_LONG+1];
-       kernel_ulong_t ledbit[LED_MAX/BITS_PER_LONG+1];
-       kernel_ulong_t sndbit[SND_MAX/BITS_PER_LONG+1];
-       kernel_ulong_t ffbit[FF_MAX/BITS_PER_LONG+1];
-       kernel_ulong_t swbit[SW_MAX/BITS_PER_LONG+1];
-
-       kernel_ulong_t driver_info;
-};
-
-/*
- * Structure for hotplug & device<->driver matching.
- */
-
-#define INPUT_DEVICE_ID_MATCH_BUS      1
-#define INPUT_DEVICE_ID_MATCH_VENDOR   2
-#define INPUT_DEVICE_ID_MATCH_PRODUCT  4
-#define INPUT_DEVICE_ID_MATCH_VERSION  8
-
-#define INPUT_DEVICE_ID_MATCH_EVBIT    0x010
-#define INPUT_DEVICE_ID_MATCH_KEYBIT   0x020
-#define INPUT_DEVICE_ID_MATCH_RELBIT   0x040
-#define INPUT_DEVICE_ID_MATCH_ABSBIT   0x080
-#define INPUT_DEVICE_ID_MATCH_MSCIT    0x100
-#define INPUT_DEVICE_ID_MATCH_LEDBIT   0x200
-#define INPUT_DEVICE_ID_MATCH_SNDBIT   0x400
-#define INPUT_DEVICE_ID_MATCH_FFBIT    0x800
-#define INPUT_DEVICE_ID_MATCH_SWBIT    0x1000
-
 #ifdef __KERNEL__
 
 /*
  * In-kernel definitions.
  */
 
+#include <linux/device.h>
 #include <linux/fs.h>
 #include <linux/timer.h>
+#include <linux/mod_devicetable.h>
 
 #define NBITS(x) (((x)/BITS_PER_LONG)+1)
 #define BIT(x) (1UL<<((x)%BITS_PER_LONG))
@@ -951,9 +913,49 @@ struct input_dev {
 };
 #define to_input_dev(d) container_of(d, struct input_dev, cdev)
 
-#define INPUT_DEVICE_ID_MATCH_DEVICE\
+/*
+ * Verify that we are in sync with input_device_id mod_devicetable.h #defines
+ */
+
+#if EV_MAX != INPUT_DEVICE_ID_EV_MAX
+#error "EV_MAX and INPUT_DEVICE_ID_EV_MAX do not match"
+#endif
+
+#if KEY_MAX != INPUT_DEVICE_ID_KEY_MAX
+#error "KEY_MAX and INPUT_DEVICE_ID_KEY_MAX do not match"
+#endif
+
+#if REL_MAX != INPUT_DEVICE_ID_REL_MAX
+#error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match"
+#endif
+
+#if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX
+#error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match"
+#endif
+
+#if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX
+#error "MSC_MAX and INPUT_DEVICE_ID_MSC_MAX do not match"
+#endif
+
+#if LED_MAX != INPUT_DEVICE_ID_LED_MAX
+#error "LED_MAX and INPUT_DEVICE_ID_LED_MAX do not match"
+#endif
+
+#if SND_MAX != INPUT_DEVICE_ID_SND_MAX
+#error "SND_MAX and INPUT_DEVICE_ID_SND_MAX do not match"
+#endif
+
+#if FF_MAX != INPUT_DEVICE_ID_FF_MAX
+#error "FF_MAX and INPUT_DEVICE_ID_FF_MAX do not match"
+#endif
+
+#if SW_MAX != INPUT_DEVICE_ID_SW_MAX
+#error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match"
+#endif
+
+#define INPUT_DEVICE_ID_MATCH_DEVICE \
        (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
-#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\
+#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
        (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
 
 struct input_handle;
index 7b08c11ec4cc15a4eb829fa0062d18f4ac87a99c..f6977708585cab80c7840db5920ae1c512578e3a 100644 (file)
@@ -249,4 +249,52 @@ struct i2c_device_id {
        __u16 id;
 };
 
+/* Input */
+#define INPUT_DEVICE_ID_EV_MAX         0x1f
+#define INPUT_DEVICE_ID_KEY_MAX                0x1ff
+#define INPUT_DEVICE_ID_REL_MAX                0x0f
+#define INPUT_DEVICE_ID_ABS_MAX                0x3f
+#define INPUT_DEVICE_ID_MSC_MAX                0x07
+#define INPUT_DEVICE_ID_LED_MAX                0x0f
+#define INPUT_DEVICE_ID_SND_MAX                0x07
+#define INPUT_DEVICE_ID_FF_MAX         0x7f
+#define INPUT_DEVICE_ID_SW_MAX         0x0f
+
+#define INPUT_DEVICE_ID_MATCH_BUS      1
+#define INPUT_DEVICE_ID_MATCH_VENDOR   2
+#define INPUT_DEVICE_ID_MATCH_PRODUCT  4
+#define INPUT_DEVICE_ID_MATCH_VERSION  8
+
+#define INPUT_DEVICE_ID_MATCH_EVBIT    0x0010
+#define INPUT_DEVICE_ID_MATCH_KEYBIT   0x0020
+#define INPUT_DEVICE_ID_MATCH_RELBIT   0x0040
+#define INPUT_DEVICE_ID_MATCH_ABSBIT   0x0080
+#define INPUT_DEVICE_ID_MATCH_MSCIT    0x0100
+#define INPUT_DEVICE_ID_MATCH_LEDBIT   0x0200
+#define INPUT_DEVICE_ID_MATCH_SNDBIT   0x0400
+#define INPUT_DEVICE_ID_MATCH_FFBIT    0x0800
+#define INPUT_DEVICE_ID_MATCH_SWBIT    0x1000
+
+struct input_device_id {
+
+       kernel_ulong_t flags;
+
+       __u16 bustype;
+       __u16 vendor;
+       __u16 product;
+       __u16 version;
+
+       kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
+       kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
+       kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
+       kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
+       kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
+       kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
+       kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
+       kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
+       kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
+
+       kernel_ulong_t driver_info;
+};
+
 #endif /* LINUX_MOD_DEVICETABLE_H */
index 84e21201f3c09fc7524208ff23ec24568341135f..37f67c23e11b277bc9b999cf0e1df6bb6e9859c6 100644 (file)
@@ -374,10 +374,10 @@ static void do_input(char *alias,
                     kernel_ulong_t *arr, unsigned int min, unsigned int max)
 {
        unsigned int i;
-       for (i = min; i < max; i++) {
-               if (arr[i/BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
-                       sprintf(alias+strlen(alias), "%X,*", i);
-       }
+
+       for (i = min; i < max; i++)
+               if (arr[i / BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
+                       sprintf(alias + strlen(alias), "%X,*", i);
 }
 
 /* input:b0v0p0e0-eXkXrXaXmXlXsXfXwX where X is comma-separated %02X. */
@@ -386,39 +386,37 @@ static int do_input_entry(const char *filename, struct input_device_id *id,
 {
        sprintf(alias, "input:");
 
-       ADD(alias, "b", id->flags&INPUT_DEVICE_ID_MATCH_BUS, id->id.bustype);
-       ADD(alias, "v", id->flags&INPUT_DEVICE_ID_MATCH_VENDOR, id->id.vendor);
-       ADD(alias, "p", id->flags&INPUT_DEVICE_ID_MATCH_PRODUCT,
-           id->id.product);
-       ADD(alias, "e", id->flags&INPUT_DEVICE_ID_MATCH_VERSION,
-           id->id.version);
+       ADD(alias, "b", id->flags & INPUT_DEVICE_ID_MATCH_BUS, id->bustype);
+       ADD(alias, "v", id->flags & INPUT_DEVICE_ID_MATCH_VENDOR, id->vendor);
+       ADD(alias, "p", id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT, id->product);
+       ADD(alias, "e", id->flags & INPUT_DEVICE_ID_MATCH_VERSION, id->version);
 
        sprintf(alias + strlen(alias), "-e*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_EVBIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_EVBIT)
                do_input(alias, id->evbit, 0, EV_MAX);
        sprintf(alias + strlen(alias), "k*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_KEYBIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_KEYBIT)
                do_input(alias, id->keybit, KEY_MIN_INTERESTING, KEY_MAX);
        sprintf(alias + strlen(alias), "r*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_RELBIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_RELBIT)
                do_input(alias, id->relbit, 0, REL_MAX);
        sprintf(alias + strlen(alias), "a*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_ABSBIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_ABSBIT)
                do_input(alias, id->absbit, 0, ABS_MAX);
        sprintf(alias + strlen(alias), "m*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_MSCIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_MSCIT)
                do_input(alias, id->mscbit, 0, MSC_MAX);
        sprintf(alias + strlen(alias), "l*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_LEDBIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_LEDBIT)
                do_input(alias, id->ledbit, 0, LED_MAX);
        sprintf(alias + strlen(alias), "s*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_SNDBIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_SNDBIT)
                do_input(alias, id->sndbit, 0, SND_MAX);
        sprintf(alias + strlen(alias), "f*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_FFBIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_FFBIT)
                do_input(alias, id->ffbit, 0, FF_MAX);
        sprintf(alias + strlen(alias), "w*");
-       if (id->flags&INPUT_DEVICE_ID_MATCH_SWBIT)
+       if (id->flags & INPUT_DEVICE_ID_MATCH_SWBIT)
                do_input(alias, id->swbit, 0, SW_MAX);
        return 1;
 }