diff options
| -rw-r--r-- | drivers/input/input.c | 3 | ||||
| -rw-r--r-- | include/linux/input.h | 4 | ||||
| -rw-r--r-- | include/linux/mod_devicetable.h | 3 | ||||
| -rw-r--r-- | scripts/mod/devicetable-offsets.c | 1 | ||||
| -rw-r--r-- | scripts/mod/file2alias.c | 6 |
5 files changed, 15 insertions, 2 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c index 02e6ea7955fe..762bfb9487dc 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c | |||
| @@ -960,7 +960,8 @@ bool input_match_device_id(const struct input_dev *dev, | |||
| 960 | !bitmap_subset(id->ledbit, dev->ledbit, LED_MAX) || | 960 | !bitmap_subset(id->ledbit, dev->ledbit, LED_MAX) || |
| 961 | !bitmap_subset(id->sndbit, dev->sndbit, SND_MAX) || | 961 | !bitmap_subset(id->sndbit, dev->sndbit, SND_MAX) || |
| 962 | !bitmap_subset(id->ffbit, dev->ffbit, FF_MAX) || | 962 | !bitmap_subset(id->ffbit, dev->ffbit, FF_MAX) || |
| 963 | !bitmap_subset(id->swbit, dev->swbit, SW_MAX)) { | 963 | !bitmap_subset(id->swbit, dev->swbit, SW_MAX) || |
| 964 | !bitmap_subset(id->propbit, dev->propbit, INPUT_PROP_MAX)) { | ||
| 964 | return false; | 965 | return false; |
| 965 | } | 966 | } |
| 966 | 967 | ||
diff --git a/include/linux/input.h b/include/linux/input.h index 2a44650e449d..7c7516eb7d76 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
| @@ -234,6 +234,10 @@ struct input_dev { | |||
| 234 | #error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match" | 234 | #error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match" |
| 235 | #endif | 235 | #endif |
| 236 | 236 | ||
| 237 | #if INPUT_PROP_MAX != INPUT_DEVICE_ID_PROP_MAX | ||
| 238 | #error "INPUT_PROP_MAX and INPUT_DEVICE_ID_PROP_MAX do not match" | ||
| 239 | #endif | ||
| 240 | |||
| 237 | #define INPUT_DEVICE_ID_MATCH_DEVICE \ | 241 | #define INPUT_DEVICE_ID_MATCH_DEVICE \ |
| 238 | (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) | 242 | (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) |
| 239 | #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \ | 243 | #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \ |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 3f74ef2281e8..72f0b7f19c59 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
| @@ -293,6 +293,7 @@ struct pcmcia_device_id { | |||
| 293 | #define INPUT_DEVICE_ID_SND_MAX 0x07 | 293 | #define INPUT_DEVICE_ID_SND_MAX 0x07 |
| 294 | #define INPUT_DEVICE_ID_FF_MAX 0x7f | 294 | #define INPUT_DEVICE_ID_FF_MAX 0x7f |
| 295 | #define INPUT_DEVICE_ID_SW_MAX 0x0f | 295 | #define INPUT_DEVICE_ID_SW_MAX 0x0f |
| 296 | #define INPUT_DEVICE_ID_PROP_MAX 0x1f | ||
| 296 | 297 | ||
| 297 | #define INPUT_DEVICE_ID_MATCH_BUS 1 | 298 | #define INPUT_DEVICE_ID_MATCH_BUS 1 |
| 298 | #define INPUT_DEVICE_ID_MATCH_VENDOR 2 | 299 | #define INPUT_DEVICE_ID_MATCH_VENDOR 2 |
| @@ -308,6 +309,7 @@ struct pcmcia_device_id { | |||
| 308 | #define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400 | 309 | #define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400 |
| 309 | #define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800 | 310 | #define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800 |
| 310 | #define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 | 311 | #define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 |
| 312 | #define INPUT_DEVICE_ID_MATCH_PROPBIT 0x2000 | ||
| 311 | 313 | ||
| 312 | struct input_device_id { | 314 | struct input_device_id { |
| 313 | 315 | ||
| @@ -327,6 +329,7 @@ struct input_device_id { | |||
| 327 | kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1]; | 329 | kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1]; |
| 328 | kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1]; | 330 | kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1]; |
| 329 | kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1]; | 331 | kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1]; |
| 332 | kernel_ulong_t propbit[INPUT_DEVICE_ID_PROP_MAX / BITS_PER_LONG + 1]; | ||
| 330 | 333 | ||
| 331 | kernel_ulong_t driver_info; | 334 | kernel_ulong_t driver_info; |
| 332 | }; | 335 | }; |
diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c index e4d90e50f6fe..812657ab5aa3 100644 --- a/scripts/mod/devicetable-offsets.c +++ b/scripts/mod/devicetable-offsets.c | |||
| @@ -105,6 +105,7 @@ int main(void) | |||
| 105 | DEVID_FIELD(input_device_id, sndbit); | 105 | DEVID_FIELD(input_device_id, sndbit); |
| 106 | DEVID_FIELD(input_device_id, ffbit); | 106 | DEVID_FIELD(input_device_id, ffbit); |
| 107 | DEVID_FIELD(input_device_id, swbit); | 107 | DEVID_FIELD(input_device_id, swbit); |
| 108 | DEVID_FIELD(input_device_id, propbit); | ||
| 108 | 109 | ||
| 109 | DEVID(eisa_device_id); | 110 | DEVID(eisa_device_id); |
| 110 | DEVID_FIELD(eisa_device_id, sig); | 111 | DEVID_FIELD(eisa_device_id, sig); |
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 29d6699d5a06..bc25898f6df0 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c | |||
| @@ -761,7 +761,7 @@ static void do_input(char *alias, | |||
| 761 | sprintf(alias + strlen(alias), "%X,*", i); | 761 | sprintf(alias + strlen(alias), "%X,*", i); |
| 762 | } | 762 | } |
| 763 | 763 | ||
| 764 | /* input:b0v0p0e0-eXkXrXaXmXlXsXfXwX where X is comma-separated %02X. */ | 764 | /* input:b0v0p0e0-eXkXrXaXmXlXsXfXwXprX where X is comma-separated %02X. */ |
| 765 | static int do_input_entry(const char *filename, void *symval, | 765 | static int do_input_entry(const char *filename, void *symval, |
| 766 | char *alias) | 766 | char *alias) |
| 767 | { | 767 | { |
| @@ -779,6 +779,7 @@ static int do_input_entry(const char *filename, void *symval, | |||
| 779 | DEF_FIELD_ADDR(symval, input_device_id, sndbit); | 779 | DEF_FIELD_ADDR(symval, input_device_id, sndbit); |
| 780 | DEF_FIELD_ADDR(symval, input_device_id, ffbit); | 780 | DEF_FIELD_ADDR(symval, input_device_id, ffbit); |
| 781 | DEF_FIELD_ADDR(symval, input_device_id, swbit); | 781 | DEF_FIELD_ADDR(symval, input_device_id, swbit); |
| 782 | DEF_FIELD_ADDR(symval, input_device_id, propbit); | ||
| 782 | 783 | ||
| 783 | sprintf(alias, "input:"); | 784 | sprintf(alias, "input:"); |
| 784 | 785 | ||
| @@ -816,6 +817,9 @@ static int do_input_entry(const char *filename, void *symval, | |||
| 816 | sprintf(alias + strlen(alias), "w*"); | 817 | sprintf(alias + strlen(alias), "w*"); |
| 817 | if (flags & INPUT_DEVICE_ID_MATCH_SWBIT) | 818 | if (flags & INPUT_DEVICE_ID_MATCH_SWBIT) |
| 818 | do_input(alias, *swbit, 0, INPUT_DEVICE_ID_SW_MAX); | 819 | do_input(alias, *swbit, 0, INPUT_DEVICE_ID_SW_MAX); |
| 820 | sprintf(alias + strlen(alias), "pr*"); | ||
| 821 | if (flags & INPUT_DEVICE_ID_MATCH_PROPBIT) | ||
| 822 | do_input(alias, *propbit, 0, INPUT_DEVICE_ID_PROP_MAX); | ||
| 819 | return 1; | 823 | return 1; |
| 820 | } | 824 | } |
| 821 | ADD_TO_DEVTABLE("input", input_device_id, do_input_entry); | 825 | ADD_TO_DEVTABLE("input", input_device_id, do_input_entry); |
