diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-01-09 20:58:56 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-01-09 20:58:56 -0800 |
commit | 0449fc80aa4f6476f9aba0cd0229025c1f5da35c (patch) | |
tree | 720bb7e9cb925564ba5a9640b2e2496373f7bb6c /driver | |
parent | 15dd91cd63e3d759ea842a1be5dd6d3b649ed077 (diff) | |
download | patches-0449fc80aa4f6476f9aba0cd0229025c1f5da35c.tar.gz |
added input modalias patch
Diffstat (limited to 'driver')
-rw-r--r-- | driver/input-MODALIAS-02.patch | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/driver/input-MODALIAS-02.patch b/driver/input-MODALIAS-02.patch new file mode 100644 index 0000000000000..bfae1f5662509 --- /dev/null +++ b/driver/input-MODALIAS-02.patch @@ -0,0 +1,107 @@ +From kay.sievers@vrfy.org Thu Jan 5 04:22:24 2006 +Date: Thu, 5 Jan 2006 13:19:55 +0100 +From: Kay Sievers <kay.sievers@vrfy.org> +To: Greg KH <greg@kroah.com> +Subject: INPUT: add MODALIAS to the event environment +Message-ID: <20060105121955.GA29894@vrfy.org> +Content-Disposition: inline; filename="input-MODALIAS-02.patch" + +From: Kay Sievers <kay.sievers@suse.de> + +input: add MODALIAS to the event environment + +Signed-off-by: Kay Sievers <kay.sievers@suse.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + drivers/input/input.c | 55 +++++++++++++++++++++++++++++++++----------------- + 1 file changed, 37 insertions(+), 18 deletions(-) + +--- gregkh-2.6.orig/drivers/input/input.c ++++ gregkh-2.6/drivers/input/input.c +@@ -528,40 +528,56 @@ INPUT_DEV_STRING_ATTR_SHOW(name); + INPUT_DEV_STRING_ATTR_SHOW(phys); + INPUT_DEV_STRING_ATTR_SHOW(uniq); + +-static int print_modalias_bits(char *buf, char prefix, unsigned long *arr, ++static int print_modalias_bits(char *buf, int size, char prefix, unsigned long *arr, + unsigned int min, unsigned int max) + { + int len, i; + +- len = sprintf(buf, "%c", prefix); ++ len = snprintf(buf, size, "%c", prefix); + for (i = min; i < max; i++) + if (arr[LONG(i)] & BIT(i)) +- len += sprintf(buf+len, "%X,", i); ++ len += snprintf(buf + len, size - len, "%X,", i); + return len; + } + +-static ssize_t input_dev_show_modalias(struct class_device *dev, char *buf) ++static int print_modalias(char *buf, int size, struct input_dev *id) + { +- struct input_dev *id = to_input_dev(dev); +- ssize_t len = 0; ++ int len; + +- len += sprintf(buf+len, "input:b%04Xv%04Xp%04Xe%04X-", ++ len = snprintf(buf, size, "input:b%04Xv%04Xp%04Xe%04X-", + id->id.bustype, + id->id.vendor, + id->id.product, + id->id.version); + +- len += print_modalias_bits(buf+len, 'e', id->evbit, 0, EV_MAX); +- len += print_modalias_bits(buf+len, 'k', id->keybit, ++ len += print_modalias_bits(buf + len, size - len, 'e', id->evbit, ++ 0, EV_MAX); ++ len += print_modalias_bits(buf + len, size - len, 'k', id->keybit, + KEY_MIN_INTERESTING, KEY_MAX); +- len += print_modalias_bits(buf+len, 'r', id->relbit, 0, REL_MAX); +- len += print_modalias_bits(buf+len, 'a', id->absbit, 0, ABS_MAX); +- len += print_modalias_bits(buf+len, 'm', id->mscbit, 0, MSC_MAX); +- len += print_modalias_bits(buf+len, 'l', id->ledbit, 0, LED_MAX); +- len += print_modalias_bits(buf+len, 's', id->sndbit, 0, SND_MAX); +- len += print_modalias_bits(buf+len, 'f', id->ffbit, 0, FF_MAX); +- len += print_modalias_bits(buf+len, 'w', id->swbit, 0, SW_MAX); +- len += sprintf(buf+len, "\n"); ++ len += print_modalias_bits(buf + len, size - len, 'r', id->relbit, ++ 0, REL_MAX); ++ len += print_modalias_bits(buf + len, size - len, 'a', id->absbit, ++ 0, ABS_MAX); ++ len += print_modalias_bits(buf + len, size - len, 'm', id->mscbit, ++ 0, MSC_MAX); ++ len += print_modalias_bits(buf + len, size - len, 'l', id->ledbit, ++ 0, LED_MAX); ++ len += print_modalias_bits(buf + len, size - len, 's', id->sndbit, ++ 0, SND_MAX); ++ len += print_modalias_bits(buf + len, size - len, 'f', id->ffbit, ++ 0, FF_MAX); ++ len += print_modalias_bits(buf + len, size - len, 'w', id->swbit, ++ 0, SW_MAX); ++ return len; ++} ++ ++static ssize_t input_dev_show_modalias(struct class_device *dev, char *buf) ++{ ++ struct input_dev *id = to_input_dev(dev); ++ ssize_t len; ++ ++ len = print_modalias(buf, PAGE_SIZE, id); ++ len += snprintf(buf + len, PAGE_SIZE-len, "\n"); + return len; + } + static CLASS_DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL); +@@ -728,8 +744,11 @@ static int input_dev_uevent(struct class + if (test_bit(EV_SW, dev->evbit)) + INPUT_ADD_HOTPLUG_BM_VAR("SW=", dev->swbit, SW_MAX); + +- envp[i] = NULL; ++ envp[i++] = buffer + len; ++ len += snprintf(buffer + len, buffer_size - len, "MODALIAS="); ++ len += print_modalias(buffer + len, buffer_size - len, dev) + 1; + ++ envp[i] = NULL; + return 0; + } + |