The patch titled revert gregkh-driver-input-device has been removed from the -mm tree. Its filename is revert-gregkh-driver-input-device.patch This patch was dropped because of ongoing build fiasco. So now my main test box won't boot. ------------------------------------------------------ Subject: revert gregkh-driver-input-device From: Andrew Morton <akpm@xxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/hwmon/hdaps.c | 2 drivers/input/evdev.c | 12 ++ drivers/input/input.c | 111 +++++++++++---------------- drivers/input/joydev.c | 12 ++ drivers/input/keyboard/atkbd.c | 2 drivers/input/misc/pcspkr.c | 2 drivers/input/misc/wistron_btns.c | 2 drivers/input/mouse/psmouse-base.c | 2 drivers/input/mousedev.c | 18 ++-- drivers/input/tsdev.c | 12 ++ drivers/usb/input/acecad.c | 2 drivers/usb/input/aiptek.c | 2 drivers/usb/input/appletouch.c | 2 drivers/usb/input/ati_remote.c | 2 drivers/usb/input/ati_remote2.c | 2 drivers/usb/input/hid-input.c | 2 drivers/usb/input/itmtouch.c | 2 drivers/usb/input/kbtab.c | 2 drivers/usb/input/keyspan_remote.c | 2 drivers/usb/input/mtouchusb.c | 2 drivers/usb/input/powermate.c | 2 drivers/usb/input/touchkitusb.c | 2 drivers/usb/input/usbkbd.c | 2 drivers/usb/input/usbmouse.c | 2 drivers/usb/input/usbtouchscreen.c | 2 drivers/usb/input/xpad.c | 2 drivers/usb/input/yealink.c | 2 include/linux/input.h | 9 +- 28 files changed, 114 insertions(+), 104 deletions(-) diff -puN drivers/hwmon/hdaps.c~revert-gregkh-driver-input-device drivers/hwmon/hdaps.c --- a/drivers/hwmon/hdaps.c~revert-gregkh-driver-input-device +++ a/drivers/hwmon/hdaps.c @@ -580,7 +580,7 @@ static int __init hdaps_init(void) /* initialize the input class */ hdaps_idev->name = "hdaps"; - hdaps_idev->d.parent = &pdev->dev; + hdaps_idev->cdev.dev = &pdev->dev; hdaps_idev->evbit[0] = BIT(EV_ABS); input_set_abs_params(hdaps_idev, ABS_X, -256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT); diff -puN drivers/input/evdev.c~revert-gregkh-driver-input-device drivers/input/evdev.c --- a/drivers/input/evdev.c~revert-gregkh-driver-input-device +++ a/drivers/input/evdev.c @@ -622,6 +622,7 @@ static struct file_operations evdev_fops static struct input_handle *evdev_connect(struct input_handler *handler, struct input_dev *dev, struct input_device_id *id) { struct evdev *evdev; + struct class_device *cdev; int minor; for (minor = 0; minor < EVDEV_MINORS && evdev_table[minor]; minor++); @@ -646,9 +647,13 @@ static struct input_handle *evdev_connec evdev_table[minor] = evdev; - device_create(&input_class, &dev->d, + cdev = class_device_create(&input_class, &dev->cdev, MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + minor), - evdev->name); + dev->cdev.dev, evdev->name); + + /* temporary symlink to keep userspace happy */ + sysfs_create_link(&input_class.subsys.kset.kobj, &cdev->kobj, + evdev->name); return &evdev->handle; } @@ -658,7 +663,8 @@ static void evdev_disconnect(struct inpu struct evdev *evdev = handle->private; struct evdev_list *list; - device_destroy(&input_class, + sysfs_remove_link(&input_class.subsys.kset.kobj, evdev->name); + class_device_destroy(&input_class, MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + evdev->minor)); evdev->exist = 0; diff -puN drivers/input/input.c~revert-gregkh-driver-input-device drivers/input/input.c --- a/drivers/input/input.c~revert-gregkh-driver-input-device +++ a/drivers/input/input.c @@ -426,7 +426,7 @@ static void input_seq_print_bitmap(struc static int input_devices_seq_show(struct seq_file *seq, void *v) { struct input_dev *dev = container_of(v, struct input_dev, node); - const char *path = kobject_get_path(&dev->d.kobj, GFP_KERNEL); + const char *path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL); struct input_handle *handle; seq_printf(seq, "I: Bus=%04x Vendor=%04x Product=%04x Version=%04x\n", @@ -581,9 +581,7 @@ static inline void input_proc_exit(void) #endif #define INPUT_DEV_STRING_ATTR_SHOW(name) \ -static ssize_t input_dev_show_##name(struct device *dev, \ - struct device_attribute *attr, \ - char *buf) \ +static ssize_t input_dev_show_##name(struct class_device *dev, char *buf) \ { \ struct input_dev *input_dev = to_input_dev(dev); \ int retval; \ @@ -599,7 +597,7 @@ static ssize_t input_dev_show_##name(str \ return retval; \ } \ -static DEVICE_ATTR(name, S_IRUGO, input_dev_show_##name, NULL); +static CLASS_DEVICE_ATTR(name, S_IRUGO, input_dev_show_##name, NULL); INPUT_DEV_STRING_ATTR_SHOW(name); INPUT_DEV_STRING_ATTR_SHOW(phys); @@ -653,9 +651,7 @@ static int input_print_modalias(char *bu return len; } -static ssize_t input_dev_show_modalias(struct device *dev, - struct device_attribute *attr, - char *buf) +static ssize_t input_dev_show_modalias(struct class_device *dev, char *buf) { struct input_dev *id = to_input_dev(dev); ssize_t len; @@ -664,13 +660,13 @@ static ssize_t input_dev_show_modalias(s return min_t(int, len, PAGE_SIZE); } -static DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL); +static CLASS_DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL); static struct attribute *input_dev_attrs[] = { - &dev_attr_name.attr, - &dev_attr_phys.attr, - &dev_attr_uniq.attr, - &dev_attr_modalias.attr, + &class_device_attr_name.attr, + &class_device_attr_phys.attr, + &class_device_attr_uniq.attr, + &class_device_attr_modalias.attr, NULL }; @@ -679,14 +675,12 @@ static struct attribute_group input_dev_ }; #define INPUT_DEV_ID_ATTR(name) \ -static ssize_t input_dev_show_id_##name(struct device *dev, \ - struct device_attribute *attr, \ - char *buf) \ +static ssize_t input_dev_show_id_##name(struct class_device *dev, char *buf) \ { \ struct input_dev *input_dev = to_input_dev(dev); \ return scnprintf(buf, PAGE_SIZE, "%04x\n", input_dev->id.name); \ } \ -static DEVICE_ATTR(name, S_IRUGO, input_dev_show_id_##name, NULL); +static CLASS_DEVICE_ATTR(name, S_IRUGO, input_dev_show_id_##name, NULL); INPUT_DEV_ID_ATTR(bustype); INPUT_DEV_ID_ATTR(vendor); @@ -694,10 +688,10 @@ INPUT_DEV_ID_ATTR(product); INPUT_DEV_ID_ATTR(version); static struct attribute *input_dev_id_attrs[] = { - &dev_attr_bustype.attr, - &dev_attr_vendor.attr, - &dev_attr_product.attr, - &dev_attr_version.attr, + &class_device_attr_bustype.attr, + &class_device_attr_vendor.attr, + &class_device_attr_product.attr, + &class_device_attr_version.attr, NULL }; @@ -727,16 +721,14 @@ static int input_print_bitmap(char *buf, } #define INPUT_DEV_CAP_ATTR(ev, bm) \ -static ssize_t input_dev_show_cap_##bm(struct device *dev, \ - struct device_attribute *attr, \ - char *buf) \ +static ssize_t input_dev_show_cap_##bm(struct class_device *dev, char *buf) \ { \ struct input_dev *input_dev = to_input_dev(dev); \ int len = input_print_bitmap(buf, PAGE_SIZE, \ input_dev->bm##bit, ev##_MAX, 1); \ return min_t(int, len, PAGE_SIZE); \ } \ -static DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL); +static CLASS_DEVICE_ATTR(bm, S_IRUGO, input_dev_show_cap_##bm, NULL); INPUT_DEV_CAP_ATTR(EV, ev); INPUT_DEV_CAP_ATTR(KEY, key); @@ -749,15 +741,15 @@ INPUT_DEV_CAP_ATTR(FF, ff); INPUT_DEV_CAP_ATTR(SW, sw); static struct attribute *input_dev_caps_attrs[] = { - &dev_attr_ev.attr, - &dev_attr_key.attr, - &dev_attr_rel.attr, - &dev_attr_abs.attr, - &dev_attr_msc.attr, - &dev_attr_led.attr, - &dev_attr_snd.attr, - &dev_attr_ff.attr, - &dev_attr_sw.attr, + &class_device_attr_ev.attr, + &class_device_attr_key.attr, + &class_device_attr_rel.attr, + &class_device_attr_abs.attr, + &class_device_attr_msc.attr, + &class_device_attr_led.attr, + &class_device_attr_snd.attr, + &class_device_attr_ff.attr, + &class_device_attr_sw.attr, NULL }; @@ -766,9 +758,9 @@ static struct attribute_group input_dev_ .attrs = input_dev_caps_attrs, }; -static void input_dev_release(struct device *d) +static void input_dev_release(struct class_device *class_dev) { - struct input_dev *dev = to_input_dev(d); + struct input_dev *dev = to_input_dev(class_dev); kfree(dev); module_put(THIS_MODULE); @@ -853,23 +845,16 @@ static int input_add_uevent_modalias_var return err; \ } while (0) -static int input_dev_uevent(struct device *d, char **envp, +static int input_dev_uevent(struct class_device *cdev, char **envp, int num_envp, char *buffer, int buffer_size) { - struct input_dev *dev; + struct input_dev *dev = to_input_dev(cdev); int i = 0; int len = 0; - /* input is a single class, this is only valid for input_dev's */ - if (strncmp("input", kobject_name(&d->kobj), 5) != 0) - return 0; - - dev = to_input_dev(d); - INPUT_ADD_HOTPLUG_VAR("PRODUCT=%x/%x/%x/%x", dev->id.bustype, dev->id.vendor, dev->id.product, dev->id.version); - if (dev->name) INPUT_ADD_HOTPLUG_VAR("NAME=\"%s\"", dev->name); if (dev->phys) @@ -903,8 +888,8 @@ static int input_dev_uevent(struct devic struct class input_class = { .name = "input", - .dev_release = input_dev_release, - .dev_uevent = input_dev_uevent, + .release = input_dev_release, + .uevent = input_dev_uevent, }; EXPORT_SYMBOL_GPL(input_class); @@ -915,8 +900,8 @@ struct input_dev *input_allocate_device( dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL); if (dev) { dev->dynalloc = 1; - device_initialize(&dev->d); - dev->d.class = &input_class; + dev->cdev.class = &input_class; + class_device_initialize(&dev->cdev); mutex_init(&dev->mutex); INIT_LIST_HEAD(&dev->h_list); INIT_LIST_HEAD(&dev->node); @@ -973,29 +958,29 @@ int input_register_device(struct input_d INIT_LIST_HEAD(&dev->h_list); list_add_tail(&dev->node, &input_dev_list); - dev->d.class = &input_class; - snprintf(dev->d.bus_id, sizeof(dev->d.bus_id), + dev->cdev.class = &input_class; + snprintf(dev->cdev.class_id, sizeof(dev->cdev.class_id), "input%ld", (unsigned long) atomic_inc_return(&input_no) - 1); - error = device_add(&dev->d); + error = class_device_add(&dev->cdev); if (error) return error; - error = sysfs_create_group(&dev->d.kobj, &input_dev_attr_group); + error = sysfs_create_group(&dev->cdev.kobj, &input_dev_attr_group); if (error) goto fail1; - error = sysfs_create_group(&dev->d.kobj, &input_dev_id_attr_group); + error = sysfs_create_group(&dev->cdev.kobj, &input_dev_id_attr_group); if (error) goto fail2; - error = sysfs_create_group(&dev->d.kobj, &input_dev_caps_attr_group); + error = sysfs_create_group(&dev->cdev.kobj, &input_dev_caps_attr_group); if (error) goto fail3; __module_get(THIS_MODULE); - path = kobject_get_path(&dev->d.kobj, GFP_KERNEL); + path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL); printk(KERN_INFO "input: %s as %s\n", dev->name ? dev->name : "Unspecified device", path ? path : "N/A"); kfree(path); @@ -1013,9 +998,9 @@ int input_register_device(struct input_d return 0; - fail3: sysfs_remove_group(&dev->d.kobj, &input_dev_id_attr_group); - fail2: sysfs_remove_group(&dev->d.kobj, &input_dev_attr_group); - fail1: device_del(&dev->d); + fail3: sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group); + fail2: sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group); + fail1: class_device_del(&dev->cdev); return error; } EXPORT_SYMBOL(input_register_device); @@ -1038,15 +1023,15 @@ void input_unregister_device(struct inpu list_del_init(&dev->node); - sysfs_remove_group(&dev->d.kobj, &input_dev_caps_attr_group); - sysfs_remove_group(&dev->d.kobj, &input_dev_id_attr_group); - sysfs_remove_group(&dev->d.kobj, &input_dev_attr_group); + sysfs_remove_group(&dev->cdev.kobj, &input_dev_caps_attr_group); + sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group); + sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group); mutex_lock(&dev->mutex); dev->name = dev->phys = dev->uniq = NULL; mutex_unlock(&dev->mutex); - device_unregister(&dev->d); + class_device_unregister(&dev->cdev); input_wakeup_procfs_readers(); } diff -puN drivers/input/joydev.c~revert-gregkh-driver-input-device drivers/input/joydev.c --- a/drivers/input/joydev.c~revert-gregkh-driver-input-device +++ a/drivers/input/joydev.c @@ -468,6 +468,7 @@ static struct file_operations joydev_fop static struct input_handle *joydev_connect(struct input_handler *handler, struct input_dev *dev, struct input_device_id *id) { struct joydev *joydev; + struct class_device *cdev; int i, j, t, minor; for (minor = 0; minor < JOYDEV_MINORS && joydev_table[minor]; minor++); @@ -532,9 +533,13 @@ static struct input_handle *joydev_conne joydev_table[minor] = joydev; - device_create(&input_class, &dev->d, + cdev = class_device_create(&input_class, &dev->cdev, MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor), - joydev->name); + dev->cdev.dev, joydev->name); + + /* temporary symlink to keep userspace happy */ + sysfs_create_link(&input_class.subsys.kset.kobj, &cdev->kobj, + joydev->name); return &joydev->handle; } @@ -544,7 +549,8 @@ static void joydev_disconnect(struct inp struct joydev *joydev = handle->private; struct joydev_list *list; - device_destroy(&input_class, MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + joydev->minor)); + sysfs_remove_link(&input_class.subsys.kset.kobj, joydev->name); + class_device_destroy(&input_class, MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + joydev->minor)); joydev->exist = 0; if (joydev->open) { diff -puN drivers/input/keyboard/atkbd.c~revert-gregkh-driver-input-device drivers/input/keyboard/atkbd.c --- a/drivers/input/keyboard/atkbd.c~revert-gregkh-driver-input-device +++ a/drivers/input/keyboard/atkbd.c @@ -865,7 +865,7 @@ static void atkbd_set_device_attrs(struc input_dev->id.version = atkbd->id; input_dev->event = atkbd_event; input_dev->private = atkbd; - input_dev->d.parent = &atkbd->ps2dev.serio->dev; + input_dev->cdev.dev = &atkbd->ps2dev.serio->dev; input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP) | BIT(EV_MSC); diff -puN drivers/input/misc/pcspkr.c~revert-gregkh-driver-input-device drivers/input/misc/pcspkr.c --- a/drivers/input/misc/pcspkr.c~revert-gregkh-driver-input-device +++ a/drivers/input/misc/pcspkr.c @@ -78,7 +78,7 @@ static int __devinit pcspkr_probe(struct pcspkr_dev->id.vendor = 0x001f; pcspkr_dev->id.product = 0x0001; pcspkr_dev->id.version = 0x0100; - pcspkr_dev->d.parent = &dev->dev; + pcspkr_dev->cdev.dev = &dev->dev; pcspkr_dev->evbit[0] = BIT(EV_SND); pcspkr_dev->sndbit[0] = BIT(SND_BELL) | BIT(SND_TONE); diff -puN drivers/input/misc/wistron_btns.c~revert-gregkh-driver-input-device drivers/input/misc/wistron_btns.c --- a/drivers/input/misc/wistron_btns.c~revert-gregkh-driver-input-device +++ a/drivers/input/misc/wistron_btns.c @@ -447,7 +447,7 @@ static int __devinit setup_input_dev(voi input_dev->name = "Wistron laptop buttons"; input_dev->phys = "wistron/input0"; input_dev->id.bustype = BUS_HOST; - input_dev->d.parent = &wistron_device->dev; + input_dev->cdev.dev = &wistron_device->dev; for (key = keymap; key->type != KE_END; key++) { if (key->type == KE_KEY) { diff -puN drivers/input/mouse/psmouse-base.c~revert-gregkh-driver-input-device drivers/input/mouse/psmouse-base.c --- a/drivers/input/mouse/psmouse-base.c~revert-gregkh-driver-input-device +++ a/drivers/input/mouse/psmouse-base.c @@ -1036,7 +1036,7 @@ static int psmouse_switch_protocol(struc struct input_dev *input_dev = psmouse->dev; input_dev->private = psmouse; - input_dev->d.parent = &psmouse->ps2dev.serio->dev; + input_dev->cdev.dev = &psmouse->ps2dev.serio->dev; input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REL); input_dev->keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_MIDDLE) | BIT(BTN_RIGHT); diff -puN drivers/input/mousedev.c~revert-gregkh-driver-input-device drivers/input/mousedev.c --- a/drivers/input/mousedev.c~revert-gregkh-driver-input-device +++ a/drivers/input/mousedev.c @@ -627,6 +627,7 @@ static struct file_operations mousedev_f static struct input_handle *mousedev_connect(struct input_handler *handler, struct input_dev *dev, struct input_device_id *id) { struct mousedev *mousedev; + struct class_device *cdev; int minor = 0; for (minor = 0; minor < MOUSEDEV_MINORS && mousedev_table[minor]; minor++); @@ -654,9 +655,13 @@ static struct input_handle *mousedev_con mousedev_table[minor] = mousedev; - device_create(&input_class, &dev->d, + cdev = class_device_create(&input_class, &dev->cdev, MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + minor), - mousedev->name); + dev->cdev.dev, mousedev->name); + + /* temporary symlink to keep userspace happy */ + sysfs_create_link(&input_class.subsys.kset.kobj, &cdev->kobj, + mousedev->name); return &mousedev->handle; } @@ -666,7 +671,8 @@ static void mousedev_disconnect(struct i struct mousedev *mousedev = handle->private; struct mousedev_list *list; - device_destroy(&input_class, + sysfs_remove_link(&input_class.subsys.kset.kobj, mousedev->name); + class_device_destroy(&input_class, MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + mousedev->minor)); mousedev->exist = 0; @@ -740,8 +746,8 @@ static int __init mousedev_init(void) mousedev_mix.exist = 1; mousedev_mix.minor = MOUSEDEV_MIX; - device_create(&input_class, NULL, - MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX), "mice"); + class_device_create(&input_class, NULL, + MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX), NULL, "mice"); #ifdef CONFIG_INPUT_MOUSEDEV_PSAUX if (!(psaux_registered = !misc_register(&psaux_mouse))) @@ -759,7 +765,7 @@ static void __exit mousedev_exit(void) if (psaux_registered) misc_deregister(&psaux_mouse); #endif - device_destroy(&input_class, + class_device_destroy(&input_class, MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX)); input_unregister_handler(&mousedev_handler); } diff -puN drivers/input/tsdev.c~revert-gregkh-driver-input-device drivers/input/tsdev.c --- a/drivers/input/tsdev.c~revert-gregkh-driver-input-device +++ a/drivers/input/tsdev.c @@ -373,6 +373,7 @@ static struct input_handle *tsdev_connec struct input_device_id *id) { struct tsdev *tsdev; + struct class_device *cdev; int minor, delta; for (minor = 0; minor < TSDEV_MINORS / 2 && tsdev_table[minor]; minor++); @@ -412,9 +413,13 @@ static struct input_handle *tsdev_connec tsdev_table[minor] = tsdev; - device_create(&input_class, &dev->d, + cdev = class_device_create(&input_class, &dev->cdev, MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + minor), - tsdev->name); + dev->cdev.dev, tsdev->name); + + /* temporary symlink to keep userspace happy */ + sysfs_create_link(&input_class.subsys.kset.kobj, &cdev->kobj, + tsdev->name); return &tsdev->handle; } @@ -424,7 +429,8 @@ static void tsdev_disconnect(struct inpu struct tsdev *tsdev = handle->private; struct tsdev_list *list; - device_destroy(&input_class, + sysfs_remove_link(&input_class.subsys.kset.kobj, tsdev->name); + class_device_destroy(&input_class, MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + tsdev->minor)); tsdev->exist = 0; diff -puN drivers/usb/input/acecad.c~revert-gregkh-driver-input-device drivers/usb/input/acecad.c --- a/drivers/usb/input/acecad.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/acecad.c @@ -181,7 +181,7 @@ static int usb_acecad_probe(struct usb_i input_dev->name = acecad->name; input_dev->phys = acecad->phys; usb_to_input_id(dev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = acecad; input_dev->open = usb_acecad_open; diff -puN drivers/usb/input/aiptek.c~revert-gregkh-driver-input-device drivers/usb/input/aiptek.c --- a/drivers/usb/input/aiptek.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/aiptek.c @@ -2055,7 +2055,7 @@ aiptek_probe(struct usb_interface *intf, inputdev->name = "Aiptek"; inputdev->phys = aiptek->features.usbPath; usb_to_input_id(usbdev, &inputdev->id); - inputdev->d.parent = &intf->dev; + inputdev->cdev.dev = &intf->dev; inputdev->private = aiptek; inputdev->open = aiptek_open; inputdev->close = aiptek_close; diff -puN drivers/usb/input/appletouch.c~revert-gregkh-driver-input-device drivers/usb/input/appletouch.c --- a/drivers/usb/input/appletouch.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/appletouch.c @@ -529,7 +529,7 @@ static int atp_probe(struct usb_interfac input_dev->name = "appletouch"; input_dev->phys = dev->phys; usb_to_input_id(dev->udev, &input_dev->id); - input_dev->d.parent = &iface->dev; + input_dev->cdev.dev = &iface->dev; input_dev->private = dev; input_dev->open = atp_open; diff -puN drivers/usb/input/ati_remote.c~revert-gregkh-driver-input-device drivers/usb/input/ati_remote.c --- a/drivers/usb/input/ati_remote.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/ati_remote.c @@ -669,7 +669,7 @@ static void ati_remote_input_init(struct idev->phys = ati_remote->phys; usb_to_input_id(ati_remote->udev, &idev->id); - idev->d.parent = &ati_remote->udev->dev; + idev->cdev.dev = &ati_remote->udev->dev; } static int ati_remote_initialize(struct ati_remote *ati_remote) diff -puN drivers/usb/input/ati_remote2.c~revert-gregkh-driver-input-device drivers/usb/input/ati_remote2.c --- a/drivers/usb/input/ati_remote2.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/ati_remote2.c @@ -332,7 +332,7 @@ static int ati_remote2_input_init(struct idev->phys = ar2->phys; usb_to_input_id(ar2->udev, &idev->id); - idev->d.parent = &ar2->udev->dev; + idev->cdev.dev = &ar2->udev->dev; i = input_register_device(idev); if (i) diff -puN drivers/usb/input/hid-input.c~revert-gregkh-driver-input-device drivers/usb/input/hid-input.c --- a/drivers/usb/input/hid-input.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/hid-input.c @@ -826,7 +826,7 @@ int hidinput_connect(struct hid_device * input_dev->phys = hid->phys; input_dev->uniq = hid->uniq; usb_to_input_id(dev, &input_dev->id); - input_dev->d.parent = &hid->intf->dev; + input_dev->cdev.dev = &hid->intf->dev; hidinput->input = input_dev; list_add_tail(&hidinput->list, &hid->inputs); diff -puN drivers/usb/input/itmtouch.c~revert-gregkh-driver-input-device drivers/usb/input/itmtouch.c --- a/drivers/usb/input/itmtouch.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/itmtouch.c @@ -184,7 +184,7 @@ static int itmtouch_probe(struct usb_int input_dev->name = itmtouch->name; input_dev->phys = itmtouch->phys; usb_to_input_id(udev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = itmtouch; input_dev->open = itmtouch_open; diff -puN drivers/usb/input/kbtab.c~revert-gregkh-driver-input-device drivers/usb/input/kbtab.c --- a/drivers/usb/input/kbtab.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/kbtab.c @@ -145,7 +145,7 @@ static int kbtab_probe(struct usb_interf input_dev->name = "KB Gear Tablet"; input_dev->phys = kbtab->phys; usb_to_input_id(dev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = kbtab; input_dev->open = kbtab_open; diff -puN drivers/usb/input/keyspan_remote.c~revert-gregkh-driver-input-device drivers/usb/input/keyspan_remote.c --- a/drivers/usb/input/keyspan_remote.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/keyspan_remote.c @@ -497,7 +497,7 @@ static int keyspan_probe(struct usb_inte input_dev->name = remote->name; input_dev->phys = remote->phys; usb_to_input_id(udev, &input_dev->id); - input_dev->d.parent = &interface->dev; + input_dev->cdev.dev = &interface->dev; input_dev->evbit[0] = BIT(EV_KEY); /* We will only report KEY events. */ for (i = 0; i < ARRAY_SIZE(keyspan_key_table); i++) diff -puN drivers/usb/input/mtouchusb.c~revert-gregkh-driver-input-device drivers/usb/input/mtouchusb.c --- a/drivers/usb/input/mtouchusb.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/mtouchusb.c @@ -234,7 +234,7 @@ static int mtouchusb_probe(struct usb_in input_dev->name = mtouch->name; input_dev->phys = mtouch->phys; usb_to_input_id(udev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = mtouch; input_dev->open = mtouchusb_open; diff -puN drivers/usb/input/powermate.c~revert-gregkh-driver-input-device drivers/usb/input/powermate.c --- a/drivers/usb/input/powermate.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/powermate.c @@ -362,7 +362,7 @@ static int powermate_probe(struct usb_in input_dev->phys = pm->phys; usb_to_input_id(udev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = pm; input_dev->event = powermate_input_event; diff -puN drivers/usb/input/touchkitusb.c~revert-gregkh-driver-input-device drivers/usb/input/touchkitusb.c --- a/drivers/usb/input/touchkitusb.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/touchkitusb.c @@ -317,7 +317,7 @@ static int touchkit_probe(struct usb_int input_dev->name = touchkit->name; input_dev->phys = touchkit->phys; usb_to_input_id(udev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = touchkit; input_dev->open = touchkit_open; input_dev->close = touchkit_close; diff -puN drivers/usb/input/usbkbd.c~revert-gregkh-driver-input-device drivers/usb/input/usbkbd.c --- a/drivers/usb/input/usbkbd.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/usbkbd.c @@ -278,7 +278,7 @@ static int usb_kbd_probe(struct usb_inte input_dev->name = kbd->name; input_dev->phys = kbd->phys; usb_to_input_id(dev, &input_dev->id); - input_dev->d.parent = &iface->dev; + input_dev->cdev.dev = &iface->dev; input_dev->private = kbd; input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_LED) | BIT(EV_REP); diff -puN drivers/usb/input/usbmouse.c~revert-gregkh-driver-input-device drivers/usb/input/usbmouse.c --- a/drivers/usb/input/usbmouse.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/usbmouse.c @@ -173,7 +173,7 @@ static int usb_mouse_probe(struct usb_in input_dev->name = mouse->name; input_dev->phys = mouse->phys; usb_to_input_id(dev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REL); input_dev->keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE); diff -puN drivers/usb/input/usbtouchscreen.c~revert-gregkh-driver-input-device drivers/usb/input/usbtouchscreen.c --- a/drivers/usb/input/usbtouchscreen.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/usbtouchscreen.c @@ -508,7 +508,7 @@ static int usbtouch_probe(struct usb_int input_dev->name = usbtouch->name; input_dev->phys = usbtouch->phys; usb_to_input_id(udev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = usbtouch; input_dev->open = usbtouch_open; input_dev->close = usbtouch_close; diff -puN drivers/usb/input/xpad.c~revert-gregkh-driver-input-device drivers/usb/input/xpad.c --- a/drivers/usb/input/xpad.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/xpad.c @@ -244,7 +244,7 @@ static int xpad_probe(struct usb_interfa input_dev->name = xpad_device[i].name; input_dev->phys = xpad->phys; usb_to_input_id(udev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = xpad; input_dev->open = xpad_open; input_dev->close = xpad_close; diff -puN drivers/usb/input/yealink.c~revert-gregkh-driver-input-device drivers/usb/input/yealink.c --- a/drivers/usb/input/yealink.c~revert-gregkh-driver-input-device +++ a/drivers/usb/input/yealink.c @@ -940,7 +940,7 @@ static int usb_probe(struct usb_interfac input_dev->name = nfo->name; input_dev->phys = yld->phys; usb_to_input_id(udev, &input_dev->id); - input_dev->d.parent = &intf->dev; + input_dev->cdev.dev = &intf->dev; input_dev->private = yld; input_dev->open = input_open; diff -puN include/linux/input.h~revert-gregkh-driver-input-device include/linux/input.h --- a/include/linux/input.h~revert-gregkh-driver-input-device +++ a/include/linux/input.h @@ -903,14 +903,15 @@ struct input_dev { struct mutex mutex; /* serializes open and close operations */ unsigned int users; - struct device d; + struct class_device cdev; + struct device *dev; /* will be removed soon */ int dynalloc; /* temporarily */ struct list_head h_list; struct list_head node; }; -#define to_input_dev(dev) container_of(dev, struct input_dev, d) +#define to_input_dev(d) container_of(d, struct input_dev, cdev) /* * Verify that we are in sync with input_device_id mod_devicetable.h #defines @@ -1029,12 +1030,12 @@ void input_free_device(struct input_dev static inline struct input_dev *input_get_device(struct input_dev *dev) { - return to_input_dev(get_device(&dev->d)); + return to_input_dev(class_device_get(&dev->cdev)); } static inline void input_put_device(struct input_dev *dev) { - put_device(&dev->d); + class_device_put(&dev->cdev); } int input_register_device(struct input_dev *); _ Patches currently in -mm which might be from akpm@xxxxxxxx are origin.patch knfsd-have-ext2-reject-file-handles-with-bad-inode-numbers-early.patch knfsd-make-ext3-reject-filehandles-referring-to-invalid-inode-numbers.patch hvc_console-suspend-fix.patch git-acpi.patch acpi-asus-s3-resume-fix.patch sony_apci-resume.patch git-alsa.patch kauditd_thread-warning-fix.patch git-block.patch git-block-hack.patch revert-gregkh-driver-input-device.patch revert-gregkh-driver-fb-device.patch drivers-base-check-errors.patch scsi-device_reprobe-can-fail.patch git-drm.patch git-dvb.patch git-dvb-fixup.patch git-gfs2.patch git-ia64.patch git-ieee1394-fixup.patch git-input.patch git-intelfb-fixup.patch git-kbuild.patch git-libata-all.patch 1-of-2-jmicron-driver-fix.patch via-pata-controller-xfer-fixes-fix.patch git-magic-fixup.patch git-netdev-all.patch drivers-net-ns83820c-add-paramter-to-disable-auto.patch git-net.patch git-net-fixup.patch git-nfs-fixup.patch revert-allow-file-systems-to-manually-d_move-inside-of-rename.patch git-ocfs2.patch git-pcmcia-fixup.patch git-powerpc.patch tickle-nmi-watchdog-on-serial-output-fix.patch serial-fix-uart_bug_txen-test.patch pcie-check-and-return-bus_register-errors-fix.patch git-scsi-misc.patch git-scsi-misc-fixup.patch revert-scsi-improve-inquiry-printing.patch git-scsi-misc-nlmsg_multicast-fix.patch git-block-vs-git-sas.patch git-scsi-target-fixup.patch git-scsi-target-vs-git-block.patch revert-gregkh-usb-usbcore-remove-usb_suspend_root_hub.patch gregkh-usb-usb-storage-add-rio-karma-eject-support-fix.patch fix-gregkh-usb-usbcore-add-autosuspend-autoresume-infrastructure.patch git-watchdog.patch revert-x86_64-mm-i386-remove-lock-section.patch revert-x86_64-mm-detect-cfi.patch fix-x86_64-mm-i386-backtrace-ebp-fallback.patch fix-x86_64-mm-i386-pda-smp-processorid.patch fix-x86_64-mm-spinlock-cleanup.patch xfs-rename-uio_read.patch adix-tree-rcu-lockless-readside-update-tidy.patch mm-tracking-shared-dirty-pages-checks.patch mm-tracking-shared-dirty-pages-wimp.patch convert-i386-numa-kva-space-to-bootmem-tidy.patch reduce-max_nr_zones-make-display-of-highmem-counters-conditional-on-config_highmem-tidy.patch reduce-max_nr_zones-use-enum-to-define-zones-reformat-and-comment-cleanup.patch reduce-max_nr_zones-use-enum-to-define-zones-reformat-and-comment-fix.patch reduce-max_nr_zones-remove-display-of-counters-for-unconfigured-zones-s390-fix.patch out-of-memory-notifier-tidy.patch mm-swap-write-failure-fixup-fix.patch slab-optimize-kmalloc_node-the-same-way-as-kmalloc-fix.patch slab-fix-lockdep-warnings-fix-2.patch have-x86-use-add_active_range-and-free_area_init_nodes-fix.patch zone_reclaim-dynamic-slab-reclaim-tidy.patch vm-add-per-zone-writeout-counter.patch convert-s390-page-handling-macros-to-functions-fix.patch slab-fix-kmalloc_node-applying-memory-policies-if-nodeid-==-numa_node_id-fix.patch gfp_thisnode-for-the-slab-allocator-v2-fix.patch get-rid-of-zone_table-fix.patch acx1xx-wireless-driver.patch tiacx-pci-build-fix.patch tiacx-ia64-fix.patch tiacx-build-fix.patch binfmt_elf-consistently-use-loff_t.patch nommu-set-bdi-capabilities-for-dev-mem-and-dev-kmem-tidy.patch nommu-move-the-fallback-arch_vma_name-to-a-sensible-place-fix.patch convert-i386-summit-subarch-to-use-srat-info-for-apicid_to_node-calls-tidy.patch i386-adds-smp_call_function_single-fix.patch swsusp-write-timer.patch swsusp-write-speedup.patch swsusp-read-timer.patch swsusp-read-speedup.patch swsusp-read-speedup-fix.patch swsusp-read-speedup-cleanup.patch swsusp-read-speedup-cleanup-2.patch swsusp-read-speedup-fix-fix-2.patch deprecate-smbfs-in-favour-of-cifs.patch edac-new-opteron-athlon64-memory-controller-driver-tidy.patch inode_diet-replace-inodeugeneric_ip-with-inodei_private-gfs-fix.patch x86-microcode-microcode-driver-cleanup-tidy.patch x86-microcode-add-sysfs-and-hotplug-support-fix.patch eisa-bus-modalias-attributes-support-1-fix-git-kbuild-fix.patch add-address_space_operationsbatch_write-fix.patch alloc_fdtable-cleanup.patch sysctl-allow-proc-sys-without-sys_sysctl-fix.patch add-probe_kernel_address.patch x86-use-probe_kernel_address-in-handle_bug.patch blockdevc-check-errors.patch let-warn_on-warn_on_once-return-the-condition-fix.patch let-warn_on-warn_on_once-return-the-condition-fix-2.patch omap-add-watchdog-driver-support-tweaks.patch move-valid_dma_direction-from-x86_64-to-generic-code-fix.patch single-bit-flip-detector-tidy.patch fix-unserialized-task-files-changing-fix.patch tty-make-termios_sem-a-mutex-fix.patch solaris-emulation-incorrect-tty-locking-fix.patch solaris-emulation-incorrect-tty-locking-fix-2.patch cpuset-top_cpuset-tracks-hotplug-changes-to-node_online_map-fix.patch remove-sound-oss-copying.patch maximum-latency-tracking-infrastructure-tidy.patch fs-nameic-replace-multiple-current-fs-by-shortcut-variable-tidy.patch call-mm-page-writebackcset_ratelimit-when-new-pages-tidy.patch sys-modules-patch-allow-full-length-section-names.patch expand_fdtable-remove-pointless-unlocklock.patch implement-a-general-integer-log2-facility-in-the-kernel-safety.patch alter-roundup_pow_of_two-so-that-it-can-make-use-of-ilog2-on-a-constant-fix.patch ntp-move-all-the-ntp-related-code-to-ntpc-fix.patch reiserfs-on-demand-bitmap-loading.patch streamline-generic_file_-interfaces-and-filemap-gfs-fix.patch add-vector-aio-support-fix.patch csa-basic-accounting-over-taskstats-fix.patch fs-cache-make-kafs-use-fs-cache-fix.patch fs-cache-make-kafs-use-fs-cache-vs-streamline-generic_file_-interfaces-and-filemap.patch nfs-use-local-caching-12-fix.patch stack-overflow-safe-kdump-crash_use_safe_smp_processor_id-fix.patch generic-ioremap_page_range-x86_64-conversion-fix.patch vfs-make-filldir_t-and-struct-kstat-deal-in-64-bit-inode-numbers-alpha-fix.patch some-cleanup-in-the-pipe-code-tidy.patch support-piping-into-commands-in-proc-sys-kernel-core_pattern-fix.patch move-pidmap-to-pspaceh-fix.patch kprobes-handle-symbol-resolution-when-modulesymbol-is-specified-tidy.patch isdn-work-around-excessive-udelay.patch knfsd-add-a-callback-for-when-last-rpc-thread-finishes-tidy.patch knfsd-add-a-callback-for-when-last-rpc-thread-finishes-fix.patch knfsd-separate-out-some-parts-of-nfsd_svc-which-start-nfs-servers-tweaks.patch knfsd-define-new-nfsdfs-file-portlist-contains-list-of-ports-tidy.patch knfsd-define-new-nfsdfs-file-portlist-contains-list-of-ports-fix.patch knfsd-drop-serv-option-to-svc_recv-and-svc_process-nfs-callback-fix-nfs-callback-fix.patch knfsd-move-tempsock-aging-to-a-timer-tidy.patch sched-remove-unnecessary-sched-group-allocations-fix.patch swap_prefetch-vs-zoned-counters.patch ecryptfs-mmap-operations.patch ecryptfs-alpha-build-fix.patch ecryptfs-more-elegant-aes-key-size-manipulation.patch ecryptfs-get_sb_dev-fix.patch make-kmem_cache_destroy-return-void-ecryptfs.patch ecryptfs-versioning-fixes-tidy.patch namespaces-add-nsproxy.patch namespaces-utsname-switch-to-using-uts-namespaces.patch namespaces-utsname-switch-to-using-uts-namespaces-klibc-bit-sparc.patch namespaces-utsname-use-init_utsname-when-appropriate.patch namespaces-utsname-implement-utsname-namespaces.patch namespaces-utsname-sysctl-hack.patch ipc-namespace-core.patch readahead-sysctl-parameters-fix.patch make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch make-kmem_cache_destroy-return-void-reiser4.patch reiser4-hardirq-include-fix.patch reiser4-run-truncate_inode_pages-in-reiser4_delete_inode.patch reiser4-get_sb_dev-fix.patch reiser4-vs-zoned-allocator.patch reiser4-rename-generic_sounding_globalspatch-fix.patch hpt3xx-rework-rate-filtering-tidy.patch genirq-convert-the-i386-architecture-to-irq-chips.patch genirq-x86_64-irq-reenable-migrating-irqs-to-other-cpus.patch genirq-msi-simplify-msi-enable-and-disable.patch genirq-ia64-irq-dynamic-irq-support.patch genirq-msi-only-build-msi-apicc-on-ia64-fix.patch genirq-i386-irq-remove-the-msi-assumption-that-irq-==-vector.patch genirq-x86_64-irq-make-vector_irq-per-cpu-fix.patch genirq-x86_64-irq-make-vector_irq-per-cpu-warning-fix.patch add-hypertransport-capability-defines-fix.patch initial-generic-hypertransport-interrupt-support-Kconfig-fix.patch srcu-report-out-of-memory-errors-fixlet.patch isdn-debug-build-fix.patch isdn-more-pr_debug-fixes.patch nr_blockdev_pages-in_interrupt-warning.patch device-suspend-debug.patch slab-leaks3-default-y.patch x86-kmap_atomic-debugging.patch restore-rogue-readahead-printk.patch input_register_device-debug.patch put_bh-debug.patch acpi_format_exception-debug.patch jmicron-warning-fix.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html