diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-05 20:31:53 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-05 20:31:53 -0700 |
commit | 720460da39aa61e2e5e368b916e6c6252e3306b4 (patch) | |
tree | 626df8930b77ec5f4ff99b2deebc3ad1cb1f6551 /pending | |
parent | 71734cb366f41335c67d82f3cd4cb333f43d92a8 (diff) | |
download | patches-720460da39aa61e2e5e368b916e6c6252e3306b4.tar.gz |
more moving around
Diffstat (limited to 'pending')
-rw-r--r-- | pending/acpi-fixup-typo-in-acpi_device_remove.patch | 31 | ||||
-rw-r--r-- | pending/driver-core-use-dev_get_drvdata-accessors.patch | 1992 | ||||
-rw-r--r-- | pending/usb-gotemp.patch | 349 |
3 files changed, 2372 insertions, 0 deletions
diff --git a/pending/acpi-fixup-typo-in-acpi_device_remove.patch b/pending/acpi-fixup-typo-in-acpi_device_remove.patch new file mode 100644 index 00000000000000..1ea76cf8209333 --- /dev/null +++ b/pending/acpi-fixup-typo-in-acpi_device_remove.patch @@ -0,0 +1,31 @@ +From kernel-bounces+gregkh=suse.de@suse.de Thu Sep 11 02:14:13 2008 +From: Hannes Reinecke <hare@suse.de> +Date: Wed, 10 Sep 2008 14:16:09 +0200 +Subject: acpi: Fixup typo in acpi_device_remove() +To: kernel@suse.de +Message-ID: <20080910121610.33FA818C734@pentland.suse.de> + + + +The driver data is stored in the acpi device, not the driver +core device. + +Signed-off-by: Hannes Reinecke <hare@suse.de> +Cc: Kay Sievers <kay.sievers@vrfy.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/acpi/scan.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/acpi/scan.c ++++ b/drivers/acpi/scan.c +@@ -384,7 +384,7 @@ static int acpi_device_remove(struct dev + acpi_drv->ops.remove(acpi_dev, acpi_dev->removal_type); + } + acpi_dev->driver = NULL; +- acpi_driver_data(dev) = NULL; ++ acpi_driver_data(acpi_dev) = NULL; + + put_device(dev); + return 0; diff --git a/pending/driver-core-use-dev_get_drvdata-accessors.patch b/pending/driver-core-use-dev_get_drvdata-accessors.patch new file mode 100644 index 00000000000000..88471e5b81057d --- /dev/null +++ b/pending/driver-core-use-dev_get_drvdata-accessors.patch @@ -0,0 +1,1992 @@ +From kernel-bounces+gregkh=suse.de@suse.de Thu Sep 11 01:54:40 2008 +From: Hannes Reinecke <hare@suse.de> +Date: Wed, 10 Sep 2008 14:16:04 +0200 +Subject: Driver core: Use dev_get_drvdata() accessors +To: kernel@suse.de +Message-ID: <20080910121604.E47B318C734@pentland.suse.de> + +Deprecated direct access to the ->driver_data field and +use accessors throughout. + +Signed-off-by: Hannes Reinecke <hare@suse.de> +Cc: Kay Sievers <kay.sievers@vrfy.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/block/xen-blkfront.c | 14 ++++---- + drivers/eisa/pci_eisa.c | 2 - + drivers/eisa/virtual_root.c | 2 - + drivers/ide/legacy/ide_platform.c | 2 - + drivers/input/xen-kbdfront.c | 8 ++-- + drivers/media/video/pvrusb2/pvrusb2-sysfs.c | 22 ++++++------- + drivers/mfd/htc-pasic3.c | 8 ++-- + drivers/net/3c509.c | 42 +++++++++++++++++-------- + drivers/net/depca.c | 17 +++++++--- + drivers/net/hp100.c | 4 +- + drivers/net/ne3210.c | 4 +- + drivers/net/tulip/de4x5.c | 7 ++-- + drivers/net/wireless/atmel_cs.c | 2 - + drivers/net/wireless/ipw2100.c | 8 ++-- + drivers/net/wireless/ipw2200.c | 46 +++++++++++++-------------- + drivers/net/wireless/iwlwifi/iwl3945-base.c | 22 ++++++------- + drivers/net/xen-netfront.c | 10 ++--- + drivers/pcmcia/ds.c | 8 ++-- + drivers/s390/block/dasd_devmap.c | 6 +-- + drivers/s390/char/con3215.c | 16 ++++----- + drivers/s390/char/raw3270.c | 16 ++++----- + drivers/s390/char/tape_34xx.c | 4 +- + drivers/s390/char/tape_core.c | 20 +++++------ + drivers/s390/char/vmlogrdr.c | 12 +++---- + drivers/s390/char/vmur.c | 10 ++--- + drivers/s390/net/claw.c | 40 +++++++++++------------ + drivers/s390/net/lcs.c | 23 +++++++------ + drivers/s390/net/netiucv.c | 47 ++++++++++++++-------------- + drivers/scsi/aha1740.c | 3 + + drivers/scsi/ibmvscsi/ibmvstgt.c | 2 - + drivers/scsi/libsrp.c | 2 - + drivers/thermal/thermal_sys.c | 4 +- + drivers/video/xen-fbfront.c | 8 ++-- + include/linux/eisa.h | 4 +- + 34 files changed, 236 insertions(+), 209 deletions(-) + +--- a/drivers/block/xen-blkfront.c ++++ b/drivers/block/xen-blkfront.c +@@ -756,12 +756,12 @@ static int blkfront_probe(struct xenbus_ + + /* Front end dir is a number, which is used as the id. */ + info->handle = simple_strtoul(strrchr(dev->nodename, '/')+1, NULL, 0); +- dev->dev.driver_data = info; ++ dev_set_drvdata(&dev->dev, info); + + err = talk_to_backend(dev, info); + if (err) { + kfree(info); +- dev->dev.driver_data = NULL; ++ dev_set_drvdata(&dev->dev, NULL); + return err; + } + +@@ -846,7 +846,7 @@ static int blkif_recover(struct blkfront + */ + static int blkfront_resume(struct xenbus_device *dev) + { +- struct blkfront_info *info = dev->dev.driver_data; ++ struct blkfront_info *info = dev_get_drvdata(&dev->dev); + int err; + + dev_dbg(&dev->dev, "blkfront_resume: %s\n", dev->nodename); +@@ -925,7 +925,7 @@ static void blkfront_connect(struct blkf + */ + static void blkfront_closing(struct xenbus_device *dev) + { +- struct blkfront_info *info = dev->dev.driver_data; ++ struct blkfront_info *info = dev_get_drvdata(&dev->dev); + unsigned long flags; + + dev_dbg(&dev->dev, "blkfront_closing: %s removed\n", dev->nodename); +@@ -960,7 +960,7 @@ static void blkfront_closing(struct xenb + static void backend_changed(struct xenbus_device *dev, + enum xenbus_state backend_state) + { +- struct blkfront_info *info = dev->dev.driver_data; ++ struct blkfront_info *info = dev_get_drvdata(&dev->dev); + struct block_device *bd; + + dev_dbg(&dev->dev, "blkfront:backend_changed.\n"); +@@ -996,7 +996,7 @@ static void backend_changed(struct xenbu + + static int blkfront_remove(struct xenbus_device *dev) + { +- struct blkfront_info *info = dev->dev.driver_data; ++ struct blkfront_info *info = dev_get_drvdata(&dev->dev); + + dev_dbg(&dev->dev, "blkfront_remove: %s removed\n", dev->nodename); + +@@ -1009,7 +1009,7 @@ static int blkfront_remove(struct xenbus + + static int blkfront_is_ready(struct xenbus_device *dev) + { +- struct blkfront_info *info = dev->dev.driver_data; ++ struct blkfront_info *info = dev_get_drvdata(&dev->dev); + + return info->is_ready; + } +--- a/drivers/eisa/pci_eisa.c ++++ b/drivers/eisa/pci_eisa.c +@@ -31,11 +31,11 @@ static int __init pci_eisa_init(struct p + } + + pci_eisa_root.dev = &pdev->dev; +- pci_eisa_root.dev->driver_data = &pci_eisa_root; + pci_eisa_root.res = pdev->bus->resource[0]; + pci_eisa_root.bus_base_addr = pdev->bus->resource[0]->start; + pci_eisa_root.slots = EISA_MAX_SLOTS; + pci_eisa_root.dma_mask = pdev->dma_mask; ++ dev_set_drvdata(pci_eisa_root.dev, &pci_eisa_root); + + if (eisa_root_register (&pci_eisa_root)) { + printk (KERN_ERR "pci_eisa : Could not register EISA root\n"); +--- a/drivers/eisa/virtual_root.c ++++ b/drivers/eisa/virtual_root.c +@@ -57,7 +57,7 @@ static int __init virtual_eisa_root_init + + eisa_bus_root.force_probe = force_probe; + +- eisa_root_dev.dev.driver_data = &eisa_bus_root; ++ platform_set_drvdata(&eisa_root_dev, &eisa_bus_root); + + if (eisa_root_register (&eisa_bus_root)) { + /* A real bridge may have been registered before +--- a/drivers/ide/legacy/ide_platform.c ++++ b/drivers/ide/legacy/ide_platform.c +@@ -113,7 +113,7 @@ out: + + static int __devexit plat_ide_remove(struct platform_device *pdev) + { +- struct ide_host *host = pdev->dev.driver_data; ++ struct ide_host *host = platform_get_drvdata(pdev); + + ide_host_remove(host); + +--- a/drivers/input/xen-kbdfront.c ++++ b/drivers/input/xen-kbdfront.c +@@ -114,7 +114,7 @@ static int __devinit xenkbd_probe(struct + xenbus_dev_fatal(dev, -ENOMEM, "allocating info structure"); + return -ENOMEM; + } +- dev->dev.driver_data = info; ++ dev_set_drvdata(&dev->dev, info); + info->xbdev = dev; + info->irq = -1; + snprintf(info->phys, sizeof(info->phys), "xenbus/%s", dev->nodename); +@@ -186,7 +186,7 @@ static int __devinit xenkbd_probe(struct + + static int xenkbd_resume(struct xenbus_device *dev) + { +- struct xenkbd_info *info = dev->dev.driver_data; ++ struct xenkbd_info *info = dev_get_drvdata(&dev->dev); + + xenkbd_disconnect_backend(info); + memset(info->page, 0, PAGE_SIZE); +@@ -195,7 +195,7 @@ static int xenkbd_resume(struct xenbus_d + + static int xenkbd_remove(struct xenbus_device *dev) + { +- struct xenkbd_info *info = dev->dev.driver_data; ++ struct xenkbd_info *info = dev_get_drvdata(&dev->dev); + + xenkbd_disconnect_backend(info); + if (info->kbd) +@@ -266,7 +266,7 @@ static void xenkbd_disconnect_backend(st + static void xenkbd_backend_changed(struct xenbus_device *dev, + enum xenbus_state backend_state) + { +- struct xenkbd_info *info = dev->dev.driver_data; ++ struct xenkbd_info *info = dev_get_drvdata(&dev->dev); + int ret, val; + + switch (backend_state) { +--- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c ++++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c +@@ -537,7 +537,7 @@ static void class_dev_destroy(struct pvr + &sfp->attr_unit_number); + } + pvr2_sysfs_trace("Destroying class_dev id=%p",sfp->class_dev); +- sfp->class_dev->driver_data = NULL; ++ dev_set_drvdata(sfp->class_dev, NULL); + device_unregister(sfp->class_dev); + sfp->class_dev = NULL; + } +@@ -547,7 +547,7 @@ static ssize_t v4l_minor_number_show(str + struct device_attribute *attr, char *buf) + { + struct pvr2_sysfs *sfp; +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + return scnprintf(buf,PAGE_SIZE,"%d\n", + pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw, +@@ -559,7 +559,7 @@ static ssize_t bus_info_show(struct devi + struct device_attribute *attr, char *buf) + { + struct pvr2_sysfs *sfp; +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + return scnprintf(buf,PAGE_SIZE,"%s\n", + pvr2_hdw_get_bus_info(sfp->channel.hdw)); +@@ -570,7 +570,7 @@ static ssize_t hdw_name_show(struct devi + struct device_attribute *attr, char *buf) + { + struct pvr2_sysfs *sfp; +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + return scnprintf(buf,PAGE_SIZE,"%s\n", + pvr2_hdw_get_type(sfp->channel.hdw)); +@@ -581,7 +581,7 @@ static ssize_t hdw_desc_show(struct devi + struct device_attribute *attr, char *buf) + { + struct pvr2_sysfs *sfp; +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + return scnprintf(buf,PAGE_SIZE,"%s\n", + pvr2_hdw_get_desc(sfp->channel.hdw)); +@@ -593,7 +593,7 @@ static ssize_t v4l_radio_minor_number_sh + char *buf) + { + struct pvr2_sysfs *sfp; +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + return scnprintf(buf,PAGE_SIZE,"%d\n", + pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw, +@@ -605,7 +605,7 @@ static ssize_t unit_number_show(struct d + struct device_attribute *attr, char *buf) + { + struct pvr2_sysfs *sfp; +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + return scnprintf(buf,PAGE_SIZE,"%d\n", + pvr2_hdw_get_unit_number(sfp->channel.hdw)); +@@ -641,7 +641,7 @@ static void class_dev_create(struct pvr2 + class_dev->parent = &usb_dev->dev; + + sfp->class_dev = class_dev; +- class_dev->driver_data = sfp; ++ dev_set_drvdata(class_dev,sfp); + ret = device_register(class_dev); + if (ret) { + pvr2_trace(PVR2_TRACE_ERROR_LEGS, +@@ -798,7 +798,7 @@ static ssize_t debuginfo_show(struct dev + struct device_attribute *attr, char *buf) + { + struct pvr2_sysfs *sfp; +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + pvr2_hdw_trigger_module_log(sfp->channel.hdw); + return pvr2_debugifc_print_info(sfp->channel.hdw,buf,PAGE_SIZE); +@@ -809,7 +809,7 @@ static ssize_t debugcmd_show(struct devi + struct device_attribute *attr, char *buf) + { + struct pvr2_sysfs *sfp; +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + return pvr2_debugifc_print_status(sfp->channel.hdw,buf,PAGE_SIZE); + } +@@ -822,7 +822,7 @@ static ssize_t debugcmd_store(struct dev + struct pvr2_sysfs *sfp; + int ret; + +- sfp = (struct pvr2_sysfs *)class_dev->driver_data; ++ sfp = dev_get_drvdata(class_dev); + if (!sfp) return -EINVAL; + + ret = pvr2_debugifc_docmd(sfp->channel.hdw,buf,count); +--- a/drivers/mfd/htc-pasic3.c ++++ b/drivers/mfd/htc-pasic3.c +@@ -36,7 +36,7 @@ struct pasic3_data { + */ + void pasic3_write_register(struct device *dev, u32 reg, u8 val) + { +- struct pasic3_data *asic = dev->driver_data; ++ struct pasic3_data *asic = dev_get_drvdata(dev); + int bus_shift = asic->bus_shift; + void __iomem *addr = asic->mapping + (REG_ADDR << bus_shift); + void __iomem *data = asic->mapping + (REG_DATA << bus_shift); +@@ -51,7 +51,7 @@ EXPORT_SYMBOL(pasic3_write_register); /* + */ + u8 pasic3_read_register(struct device *dev, u32 reg) + { +- struct pasic3_data *asic = dev->driver_data; ++ struct pasic3_data *asic = dev_get_drvdata(dev); + int bus_shift = asic->bus_shift; + void __iomem *addr = asic->mapping + (REG_ADDR << bus_shift); + void __iomem *data = asic->mapping + (REG_DATA << bus_shift); +@@ -68,7 +68,7 @@ EXPORT_SYMBOL(pasic3_read_register); /* + static int led_device_add(struct device *pasic3_dev, + const struct pasic3_leds_machinfo *pdata) + { +- struct pasic3_data *asic = pasic3_dev->driver_data; ++ struct pasic3_data *asic = dev_get_drvdata(pasic3_dev); + struct platform_device *pdev; + int ret; + +@@ -135,7 +135,7 @@ static struct ds1wm_platform_data ds1wm_ + static int ds1wm_device_add(struct platform_device *pasic3_pdev, int bus_shift) + { + struct device *pasic3_dev = &pasic3_pdev->dev; +- struct pasic3_data *asic = pasic3_dev->driver_data; ++ struct pasic3_data *asic = dev_get_drvdata(pasic3_dev); + struct platform_device *pdev; + int ret; + +--- a/drivers/net/3c509.c ++++ b/drivers/net/3c509.c +@@ -188,6 +188,8 @@ static int nopnp; + + static int __init el3_common_init(struct net_device *dev); + static void el3_common_remove(struct net_device *dev); ++static int el3_common_suspend(struct net_device *dev); ++static int el3_common_resume(struct net_device *dev); + static ushort id_read_eeprom(int index); + static ushort read_eeprom(int ioaddr, int index); + static int el3_open(struct net_device *dev); +@@ -346,7 +348,7 @@ static int __devinit el3_isa_match(struc + static int __devexit el3_isa_remove(struct device *pdev, + unsigned int ndev) + { +- el3_device_remove(pdev); ++ el3_common_remove(dev_get_drvdata(pdev)); + dev_set_drvdata(pdev, NULL); + return 0; + } +@@ -356,7 +358,7 @@ static int el3_isa_suspend(struct device + pm_message_t state) + { + current_tag = 0; +- return el3_suspend(dev, state); ++ return el3_common_suspend(dev_get_drvdata(dev)); + } + + static int el3_isa_resume(struct device *dev, unsigned int n) +@@ -378,7 +380,7 @@ static int el3_isa_resume(struct device + return 1; + /* Free the interrupt so that some other card can use it. */ + outw(0x0f00, ioaddr + WN0_IRQ); +- return el3_resume(dev); ++ return el3_common_resume(ndev); + } + #endif + +@@ -456,12 +458,12 @@ static void __devexit el3_pnp_remove(str + #ifdef CONFIG_PM + static int el3_pnp_suspend(struct pnp_dev *pdev, pm_message_t state) + { +- return el3_suspend(&pdev->dev, state); ++ return el3_common_suspend(pnp_get_drvdata(pdev)); + } + + static int el3_pnp_resume(struct pnp_dev *pdev) + { +- return el3_resume(&pdev->dev); ++ return el3_common_resume(pnp_get_drvdata(pdev)); + } + #endif + +@@ -647,11 +649,11 @@ static int __init el3_mca_probe(struct d + netdev_boot_setup_check(dev); + + el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_MCA); +- device->driver_data = dev; ++ dev_set_drvdata(device, dev); + err = el3_common_init(dev); + + if (err) { +- device->driver_data = NULL; ++ dev_set_drvdata(device, NULL); + free_netdev(dev); + return -ENOMEM; + } +@@ -1439,14 +1441,12 @@ el3_up(struct net_device *dev) + #ifdef CONFIG_PM + + static int +-el3_suspend(struct device *pdev, pm_message_t state) ++el3_common_suspend(struct net_device *dev) + { + unsigned long flags; +- struct net_device *dev; + struct el3_private *lp; + int ioaddr; + +- dev = pdev->driver_data; + lp = netdev_priv(dev); + ioaddr = dev->base_addr; + +@@ -1463,14 +1463,21 @@ el3_suspend(struct device *pdev, pm_mess + } + + static int +-el3_resume(struct device *pdev) ++el3_suspend(struct device *pdev, pm_message_t state) + { +- unsigned long flags; + struct net_device *dev; ++ ++ dev = dev_get_drvdata(pdev); ++ return el3_common_suspend(dev); ++} ++ ++static int ++el3_common_resume(struct net_device *dev) ++{ ++ unsigned long flags; + struct el3_private *lp; + int ioaddr; + +- dev = pdev->driver_data; + lp = netdev_priv(dev); + ioaddr = dev->base_addr; + +@@ -1486,6 +1493,15 @@ el3_resume(struct device *pdev) + return 0; + } + ++static int ++el3_resume(struct device *pdev) ++{ ++ struct net_device *dev; ++ ++ dev = dev_get_drvdata(pdev); ++ return el3_common_resume(dev); ++} ++ + #endif /* CONFIG_PM */ + + module_param(debug,int, 0); +--- a/drivers/net/depca.c ++++ b/drivers/net/depca.c +@@ -398,10 +398,11 @@ static struct mca_driver depca_mca_drive + #endif + + static int depca_isa_probe (struct platform_device *); ++static int depca_common_remove(struct net_device *dev); + + static int __devexit depca_isa_remove(struct platform_device *pdev) + { +- return depca_device_remove(&pdev->dev); ++ return depca_common_remove(dev_get_drvdata(&pdev->dev)); + } + + static struct platform_driver depca_isa_driver = { +@@ -804,7 +805,7 @@ static int __init depca_hw_init (struct + + dev->mem_start = 0; + +- device->driver_data = dev; ++ dev_set_drvdata(device, dev); + SET_NETDEV_DEV (dev, device); + + status = register_netdev(dev); +@@ -1598,13 +1599,11 @@ static int __init depca_eisa_probe (stru + } + #endif + +-static int __devexit depca_device_remove (struct device *device) ++static int __devexit depca_common_remove (struct net_device *dev) + { +- struct net_device *dev; + struct depca_private *lp; + int bus; + +- dev = device->driver_data; + lp = dev->priv; + + unregister_netdev (dev); +@@ -1617,6 +1616,14 @@ static int __devexit depca_device_remove + return 0; + } + ++static int __devexit depca_device_remove (struct device *device) ++{ ++ struct net_device *dev; ++ ++ dev = dev_get_drvdata(device); ++ return depca_common_remove(dev); ++} ++ + /* + ** Look for a particular board name in the on-board Remote Diagnostics + ** and Boot (readb) ROM. This will also give us a clue to the network RAM +--- a/drivers/net/hp100.c ++++ b/drivers/net/hp100.c +@@ -2851,7 +2851,7 @@ static int __init hp100_eisa_probe (stru + printk("hp100: %s: EISA adapter found at 0x%x\n", dev->name, + dev->base_addr); + #endif +- gendev->driver_data = dev; ++ dev_set_drvdata(gendev, dev); + return 0; + out1: + free_netdev(dev); +@@ -2860,7 +2860,7 @@ static int __init hp100_eisa_probe (stru + + static int __devexit hp100_eisa_remove (struct device *gendev) + { +- struct net_device *dev = gendev->driver_data; ++ struct net_device *dev = dev_get_drvdata(gendev); + cleanup_dev(dev); + return 0; + } +--- a/drivers/net/ne3210.c ++++ b/drivers/net/ne3210.c +@@ -108,7 +108,7 @@ static int __init ne3210_eisa_probe (str + } + + SET_NETDEV_DEV(dev, device); +- device->driver_data = dev; ++ dev_set_drvdata(device, dev); + ioaddr = edev->base_addr; + + if (!request_region(ioaddr, NE3210_IO_EXTENT, DRV_NAME)) { +@@ -231,7 +231,7 @@ static int __init ne3210_eisa_probe (str + + static int __devexit ne3210_eisa_remove (struct device *device) + { +- struct net_device *dev = device->driver_data; ++ struct net_device *dev = dev_get_drvdata(device); + unsigned long ioaddr = to_eisa_device (device)->base_addr; + + unregister_netdev (dev); +--- a/drivers/net/tulip/de4x5.c ++++ b/drivers/net/tulip/de4x5.c +@@ -1087,7 +1087,7 @@ de4x5_hw_init(struct net_device *dev, u_ + int i, status=0; + DECLARE_MAC_BUF(mac); + +- gendev->driver_data = dev; ++ dev_set_drvdata(gendev, dev); + + /* Ensure we're not sleeping */ + if (lp->bus == EISA) { +@@ -2089,13 +2089,14 @@ static int __devexit de4x5_eisa_remove ( + struct net_device *dev; + u_long iobase; + +- dev = device->driver_data; ++ dev = dev_get_drvdata(device); + iobase = dev->base_addr; + + unregister_netdev (dev); + free_netdev (dev); + release_region (iobase + DE4X5_EISA_IO_PORTS, DE4X5_EISA_TOTAL_SIZE); + release_region (iobase, DE4X5_EISA_TOTAL_SIZE); ++ dev_set_drvdata(device, NULL); + + return 0; + } +@@ -2333,7 +2334,7 @@ static void __devexit de4x5_pci_remove ( + struct net_device *dev; + u_long iobase; + +- dev = pdev->dev.driver_data; ++ dev = dev_get_drvdata(&pdev->dev); + iobase = dev->base_addr; + + unregister_netdev (dev); +--- a/drivers/net/wireless/atmel_cs.c ++++ b/drivers/net/wireless/atmel_cs.c +@@ -279,7 +279,7 @@ static int atmel_config(struct pcmcia_de + struct pcmcia_device_id *did; + + dev = link->priv; +- did = handle_to_dev(link).driver_data; ++ did = dev_get_drvdata(&handle_to_dev(link)); + + DEBUG(0, "atmel_config(0x%p)\n", link); + +--- a/drivers/net/wireless/ipw2100.c ++++ b/drivers/net/wireless/ipw2100.c +@@ -3477,7 +3477,7 @@ static DEVICE_ATTR(pci, S_IRUGO, show_pc + static ssize_t show_cfg(struct device *d, struct device_attribute *attr, + char *buf) + { +- struct ipw2100_priv *p = d->driver_data; ++ struct ipw2100_priv *p = dev_get_drvdata(d); + return sprintf(buf, "0x%08x\n", (int)p->config); + } + +@@ -3486,7 +3486,7 @@ static DEVICE_ATTR(cfg, S_IRUGO, show_cf + static ssize_t show_status(struct device *d, struct device_attribute *attr, + char *buf) + { +- struct ipw2100_priv *p = d->driver_data; ++ struct ipw2100_priv *p = dev_get_drvdata(d); + return sprintf(buf, "0x%08x\n", (int)p->status); + } + +@@ -3495,7 +3495,7 @@ static DEVICE_ATTR(status, S_IRUGO, show + static ssize_t show_capability(struct device *d, struct device_attribute *attr, + char *buf) + { +- struct ipw2100_priv *p = d->driver_data; ++ struct ipw2100_priv *p = dev_get_drvdata(d); + return sprintf(buf, "0x%08x\n", (int)p->capability); + } + +@@ -4214,7 +4214,7 @@ static ssize_t show_rf_kill(struct devic + 1 - SW based RF kill active (sysfs) + 2 - HW based RF kill active + 3 - Both HW and SW baed RF kill active */ +- struct ipw2100_priv *priv = (struct ipw2100_priv *)d->driver_data; ++ struct ipw2100_priv *priv = dev_get_drvdata(d); + int val = ((priv->status & STATUS_RF_KILL_SW) ? 0x1 : 0x0) | + (rf_kill_active(priv) ? 0x2 : 0x0); + return sprintf(buf, "%i\n", val); +--- a/drivers/net/wireless/ipw2200.c ++++ b/drivers/net/wireless/ipw2200.c +@@ -1513,7 +1513,7 @@ static DEVICE_ATTR(led, S_IWUSR | S_IRUG + static ssize_t show_status(struct device *d, + struct device_attribute *attr, char *buf) + { +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + return sprintf(buf, "0x%08x\n", (int)p->status); + } + +@@ -1522,7 +1522,7 @@ static DEVICE_ATTR(status, S_IRUGO, show + static ssize_t show_cfg(struct device *d, struct device_attribute *attr, + char *buf) + { +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + return sprintf(buf, "0x%08x\n", (int)p->config); + } + +@@ -1531,7 +1531,7 @@ static DEVICE_ATTR(cfg, S_IRUGO, show_cf + static ssize_t show_nic_type(struct device *d, + struct device_attribute *attr, char *buf) + { +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + return sprintf(buf, "TYPE: %d\n", priv->nic_type); + } + +@@ -1541,7 +1541,7 @@ static ssize_t show_ucode_version(struct + struct device_attribute *attr, char *buf) + { + u32 len = sizeof(u32), tmp = 0; +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + + if (ipw_get_ordinal(p, IPW_ORD_STAT_UCODE_VERSION, &tmp, &len)) + return 0; +@@ -1555,7 +1555,7 @@ static ssize_t show_rtc(struct device *d + char *buf) + { + u32 len = sizeof(u32), tmp = 0; +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + + if (ipw_get_ordinal(p, IPW_ORD_STAT_RTC, &tmp, &len)) + return 0; +@@ -1572,14 +1572,14 @@ static DEVICE_ATTR(rtc, S_IWUSR | S_IRUG + static ssize_t show_eeprom_delay(struct device *d, + struct device_attribute *attr, char *buf) + { +- int n = ((struct ipw_priv *)d->driver_data)->eeprom_delay; ++ int n = ((struct ipw_priv *)dev_get_drvdata(d))->eeprom_delay; + return sprintf(buf, "%i\n", n); + } + static ssize_t store_eeprom_delay(struct device *d, + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + sscanf(buf, "%i", &p->eeprom_delay); + return strnlen(buf, count); + } +@@ -1591,7 +1591,7 @@ static ssize_t show_command_event_reg(st + struct device_attribute *attr, char *buf) + { + u32 reg = 0; +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + + reg = ipw_read_reg32(p, IPW_INTERNAL_CMD_EVENT); + return sprintf(buf, "0x%08x\n", reg); +@@ -1601,7 +1601,7 @@ static ssize_t store_command_event_reg(s + const char *buf, size_t count) + { + u32 reg; +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + + sscanf(buf, "%x", ®); + ipw_write_reg32(p, IPW_INTERNAL_CMD_EVENT, reg); +@@ -1615,7 +1615,7 @@ static ssize_t show_mem_gpio_reg(struct + struct device_attribute *attr, char *buf) + { + u32 reg = 0; +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + + reg = ipw_read_reg32(p, 0x301100); + return sprintf(buf, "0x%08x\n", reg); +@@ -1625,7 +1625,7 @@ static ssize_t store_mem_gpio_reg(struct + const char *buf, size_t count) + { + u32 reg; +- struct ipw_priv *p = d->driver_data; ++ struct ipw_priv *p = dev_get_drvdata(d); + + sscanf(buf, "%x", ®); + ipw_write_reg32(p, 0x301100, reg); +@@ -1639,7 +1639,7 @@ static ssize_t show_indirect_dword(struc + struct device_attribute *attr, char *buf) + { + u32 reg = 0; +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + + if (priv->status & STATUS_INDIRECT_DWORD) + reg = ipw_read_reg32(priv, priv->indirect_dword); +@@ -1652,7 +1652,7 @@ static ssize_t store_indirect_dword(stru + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + + sscanf(buf, "%x", &priv->indirect_dword); + priv->status |= STATUS_INDIRECT_DWORD; +@@ -1666,7 +1666,7 @@ static ssize_t show_indirect_byte(struct + struct device_attribute *attr, char *buf) + { + u8 reg = 0; +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + + if (priv->status & STATUS_INDIRECT_BYTE) + reg = ipw_read_reg8(priv, priv->indirect_byte); +@@ -1679,7 +1679,7 @@ static ssize_t store_indirect_byte(struc + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + + sscanf(buf, "%x", &priv->indirect_byte); + priv->status |= STATUS_INDIRECT_BYTE; +@@ -1693,7 +1693,7 @@ static ssize_t show_direct_dword(struct + struct device_attribute *attr, char *buf) + { + u32 reg = 0; +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + + if (priv->status & STATUS_DIRECT_DWORD) + reg = ipw_read32(priv, priv->direct_dword); +@@ -1706,7 +1706,7 @@ static ssize_t store_direct_dword(struct + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + + sscanf(buf, "%x", &priv->direct_dword); + priv->status |= STATUS_DIRECT_DWORD; +@@ -1733,7 +1733,7 @@ static ssize_t show_rf_kill(struct devic + 1 - SW based RF kill active (sysfs) + 2 - HW based RF kill active + 3 - Both HW and SW baed RF kill active */ +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + int val = ((priv->status & STATUS_RF_KILL_SW) ? 0x1 : 0x0) | + (rf_kill_active(priv) ? 0x2 : 0x0); + return sprintf(buf, "%i\n", val); +@@ -1777,7 +1777,7 @@ static int ipw_radio_kill_sw(struct ipw_ + static ssize_t store_rf_kill(struct device *d, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct ipw_priv *priv = d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + + ipw_radio_kill_sw(priv, buf[0] == '1'); + +@@ -1789,7 +1789,7 @@ static DEVICE_ATTR(rf_kill, S_IWUSR | S_ + static ssize_t show_speed_scan(struct device *d, struct device_attribute *attr, + char *buf) + { +- struct ipw_priv *priv = (struct ipw_priv *)d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + int pos = 0, len = 0; + if (priv->config & CFG_SPEED_SCAN) { + while (priv->speed_scan[pos] != 0) +@@ -1804,7 +1804,7 @@ static ssize_t show_speed_scan(struct de + static ssize_t store_speed_scan(struct device *d, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct ipw_priv *priv = (struct ipw_priv *)d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + int channel, pos = 0; + const char *p = buf; + +@@ -1843,14 +1843,14 @@ static DEVICE_ATTR(speed_scan, S_IWUSR | + static ssize_t show_net_stats(struct device *d, struct device_attribute *attr, + char *buf) + { +- struct ipw_priv *priv = (struct ipw_priv *)d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + return sprintf(buf, "%c\n", (priv->config & CFG_NET_STATS) ? '1' : '0'); + } + + static ssize_t store_net_stats(struct device *d, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct ipw_priv *priv = (struct ipw_priv *)d->driver_data; ++ struct ipw_priv *priv = dev_get_drvdata(d); + if (buf[0] == '1') + priv->config |= CFG_NET_STATS; + else +--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c ++++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c +@@ -7360,7 +7360,7 @@ static DRIVER_ATTR(debug_level, S_IWUSR + static ssize_t show_temperature(struct device *d, + struct device_attribute *attr, char *buf) + { +- struct iwl3945_priv *priv = (struct iwl3945_priv *)d->driver_data; ++ struct iwl3945_priv *priv = dev_get_drvdata(d); + + if (!iwl3945_is_alive(priv)) + return -EAGAIN; +@@ -7373,7 +7373,7 @@ static DEVICE_ATTR(temperature, S_IRUGO, + static ssize_t show_tx_power(struct device *d, + struct device_attribute *attr, char *buf) + { +- struct iwl3945_priv *priv = (struct iwl3945_priv *)d->driver_data; ++ struct iwl3945_priv *priv = dev_get_drvdata(d); + return sprintf(buf, "%d\n", priv->user_txpower_limit); + } + +@@ -7381,7 +7381,7 @@ static ssize_t store_tx_power(struct dev + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct iwl3945_priv *priv = (struct iwl3945_priv *)d->driver_data; ++ struct iwl3945_priv *priv = dev_get_drvdata(d); + char *p = (char *)buf; + u32 val; + +@@ -7400,7 +7400,7 @@ static DEVICE_ATTR(tx_power, S_IWUSR | S + static ssize_t show_flags(struct device *d, + struct device_attribute *attr, char *buf) + { +- struct iwl3945_priv *priv = (struct iwl3945_priv *)d->driver_data; ++ struct iwl3945_priv *priv = dev_get_drvdata(d); + + return sprintf(buf, "0x%04X\n", priv->active_rxon.flags); + } +@@ -7409,7 +7409,7 @@ static ssize_t store_flags(struct device + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct iwl3945_priv *priv = (struct iwl3945_priv *)d->driver_data; ++ struct iwl3945_priv *priv = dev_get_drvdata(d); + u32 flags = simple_strtoul(buf, NULL, 0); + + mutex_lock(&priv->mutex); +@@ -7434,7 +7434,7 @@ static DEVICE_ATTR(flags, S_IWUSR | S_IR + static ssize_t show_filter_flags(struct device *d, + struct device_attribute *attr, char *buf) + { +- struct iwl3945_priv *priv = (struct iwl3945_priv *)d->driver_data; ++ struct iwl3945_priv *priv = dev_get_drvdata(d); + + return sprintf(buf, "0x%04X\n", + le32_to_cpu(priv->active_rxon.filter_flags)); +@@ -7444,7 +7444,7 @@ static ssize_t store_filter_flags(struct + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct iwl3945_priv *priv = (struct iwl3945_priv *)d->driver_data; ++ struct iwl3945_priv *priv = dev_get_drvdata(d); + u32 filter_flags = simple_strtoul(buf, NULL, 0); + + mutex_lock(&priv->mutex); +@@ -7742,7 +7742,7 @@ static DEVICE_ATTR(antenna, S_IWUSR | S_ + static ssize_t show_status(struct device *d, + struct device_attribute *attr, char *buf) + { +- struct iwl3945_priv *priv = (struct iwl3945_priv *)d->driver_data; ++ struct iwl3945_priv *priv = dev_get_drvdata(d); + if (!iwl3945_is_alive(priv)) + return -EAGAIN; + return sprintf(buf, "0x%08x\n", (int)priv->status); +@@ -7757,7 +7757,7 @@ static ssize_t dump_error_log(struct dev + char *p = (char *)buf; + + if (p[0] == '1') +- iwl3945_dump_nic_error_log((struct iwl3945_priv *)d->driver_data); ++ iwl3945_dump_nic_error_log(dev_get_drvdata(d)); + + return strnlen(buf, count); + } +@@ -7771,7 +7771,7 @@ static ssize_t dump_event_log(struct dev + char *p = (char *)buf; + + if (p[0] == '1') +- iwl3945_dump_nic_event_log((struct iwl3945_priv *)d->driver_data); ++ iwl3945_dump_nic_event_log(dev_get_drvdata(d)); + + return strnlen(buf, count); + } +@@ -7868,7 +7868,7 @@ static int iwl3945_pci_probe(struct pci_ + int err = 0; + struct iwl3945_priv *priv; + struct ieee80211_hw *hw; +- struct iwl_3945_cfg *cfg = (struct iwl_3945_cfg *)(ent->driver_data); ++ struct iwl_3945_cfg *cfg = dev_get_drvdata(ent); + unsigned long flags; + DECLARE_MAC_BUF(mac); + +--- a/drivers/net/xen-netfront.c ++++ b/drivers/net/xen-netfront.c +@@ -1206,7 +1206,7 @@ static int __devinit netfront_probe(stru + } + + info = netdev_priv(netdev); +- dev->dev.driver_data = info; ++ dev_set_drvdata(&dev->dev, info); + + err = register_netdev(info->netdev); + if (err) { +@@ -1227,7 +1227,7 @@ static int __devinit netfront_probe(stru + + fail: + free_netdev(netdev); +- dev->dev.driver_data = NULL; ++ dev_set_drvdata(&dev->dev, NULL); + return err; + } + +@@ -1269,7 +1269,7 @@ static void xennet_disconnect_backend(st + */ + static int netfront_resume(struct xenbus_device *dev) + { +- struct netfront_info *info = dev->dev.driver_data; ++ struct netfront_info *info = dev_get_drvdata(&dev->dev); + + dev_dbg(&dev->dev, "%s\n", dev->nodename); + +@@ -1594,7 +1594,7 @@ static int xennet_connect(struct net_dev + static void backend_changed(struct xenbus_device *dev, + enum xenbus_state backend_state) + { +- struct netfront_info *np = dev->dev.driver_data; ++ struct netfront_info *np = dev_get_drvdata(&dev->dev); + struct net_device *netdev = np->netdev; + + dev_dbg(&dev->dev, "%s\n", xenbus_strstate(backend_state)); +@@ -1768,7 +1768,7 @@ static struct xenbus_device_id netfront_ + + static int __devexit xennet_remove(struct xenbus_device *dev) + { +- struct netfront_info *info = dev->dev.driver_data; ++ struct netfront_info *info = dev_get_drvdata(&dev->dev); + + dev_dbg(&dev->dev, "%s\n", dev->nodename); + +--- a/drivers/pcmcia/ds.c ++++ b/drivers/pcmcia/ds.c +@@ -394,7 +394,7 @@ static int pcmcia_device_probe(struct de + p_drv = to_pcmcia_drv(dev->driver); + s = p_dev->socket; + +- /* The PCMCIA code passes the match data in via dev->driver_data ++ /* The PCMCIA code passes the match data in via driver data + * which is an ugly hack. Once the driver probe is called it may + * and often will overwrite the match data so we must save it first + * +@@ -404,7 +404,7 @@ static int pcmcia_device_probe(struct de + * call which will then check whether there are two + * pseudo devices, and if not, add the second one. + */ +- did = p_dev->dev.driver_data; ++ did = dev_get_drvdata(&p_dev->dev); + + ds_dev_dbg(1, dev, "trying to bind to %s\n", p_drv->drv.name); + +@@ -499,7 +499,7 @@ static int pcmcia_device_remove(struct d + * pseudo multi-function card, we need to unbind + * all devices + */ +- did = p_dev->dev.driver_data; ++ did = dev_get_drvdata(dev); + if (did && (did->match_flags & PCMCIA_DEV_ID_MATCH_DEVICE_NO) && + (p_dev->socket->device_count != 0) && + (p_dev->device_no == 0)) +@@ -987,7 +987,7 @@ static inline int pcmcia_devmatch(struct + return 0; + } + +- dev->dev.driver_data = (void *) did; ++ dev_set_drvdata(&dev->dev, did); + + return 1; + } +--- a/drivers/s390/block/dasd_devmap.c ++++ b/drivers/s390/block/dasd_devmap.c +@@ -561,7 +561,7 @@ dasd_create_device(struct ccw_device *cd + } + + spin_lock_irqsave(get_ccwdev_lock(cdev), flags); +- cdev->dev.driver_data = device; ++ dev_set_drvdata(&cdev->dev, device); + spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags); + + return device; +@@ -597,7 +597,7 @@ dasd_delete_device(struct dasd_device *d + + /* Disconnect dasd_device structure from ccw_device structure. */ + spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); +- device->cdev->dev.driver_data = NULL; ++ dev_set_drvdata(&device->cdev->dev, NULL); + spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); + + /* +@@ -638,7 +638,7 @@ dasd_put_device_wake(struct dasd_device + struct dasd_device * + dasd_device_from_cdev_locked(struct ccw_device *cdev) + { +- struct dasd_device *device = cdev->dev.driver_data; ++ struct dasd_device *device = dev_get_drvdata(&cdev->dev); + + if (!device) + return ERR_PTR(-ENODEV); +--- a/drivers/s390/char/con3215.c ++++ b/drivers/s390/char/con3215.c +@@ -368,7 +368,7 @@ raw3215_irq(struct ccw_device *cdev, uns + int cstat, dstat; + int count; + +- raw = cdev->dev.driver_data; ++ raw = dev_get_drvdata(&cdev->dev); + req = (struct raw3215_req *) intparm; + cstat = irb->scsw.cmd.cstat; + dstat = irb->scsw.cmd.dstat; +@@ -635,7 +635,7 @@ raw3215_probe (struct ccw_device *cdev) + int line; + + /* Console is special. */ +- if (raw3215[0] && (cdev->dev.driver_data == raw3215[0])) ++ if (raw3215[0] && (dev_get_drvdata(&cdev->dev) == raw3215[0])) + return 0; + raw = kmalloc(sizeof(struct raw3215_info) + + RAW3215_INBUF_SIZE, GFP_KERNEL|GFP_DMA); +@@ -669,7 +669,7 @@ raw3215_probe (struct ccw_device *cdev) + } + init_waitqueue_head(&raw->empty_wait); + +- cdev->dev.driver_data = raw; ++ dev_set_drvdata(&cdev->dev, raw); + cdev->handler = raw3215_irq; + + return 0; +@@ -681,9 +681,9 @@ raw3215_remove (struct ccw_device *cdev) + struct raw3215_info *raw; + + ccw_device_set_offline(cdev); +- raw = cdev->dev.driver_data; ++ raw = dev_get_drvdata(&cdev->dev); + if (raw) { +- cdev->dev.driver_data = NULL; ++ dev_set_drvdata(&cdev->dev, NULL); + kfree(raw->buffer); + kfree(raw); + } +@@ -694,7 +694,7 @@ raw3215_set_online (struct ccw_device *c + { + struct raw3215_info *raw; + +- raw = cdev->dev.driver_data; ++ raw = dev_get_drvdata(&cdev->dev); + if (!raw) + return -ENODEV; + +@@ -706,7 +706,7 @@ raw3215_set_offline (struct ccw_device * + { + struct raw3215_info *raw; + +- raw = cdev->dev.driver_data; ++ raw = dev_get_drvdata(&cdev->dev); + if (!raw) + return -ENODEV; + +@@ -848,7 +848,7 @@ con3215_init(void) + raw->buffer = (char *) alloc_bootmem_low(RAW3215_BUFFER_SIZE); + raw->inbuf = (char *) alloc_bootmem_low(RAW3215_INBUF_SIZE); + raw->cdev = cdev; +- cdev->dev.driver_data = raw; ++ dev_set_drvdata(&cdev->dev, raw); + cdev->handler = raw3215_irq; + + raw->flags |= RAW3215_FIXED; +--- a/drivers/s390/char/raw3270.c ++++ b/drivers/s390/char/raw3270.c +@@ -355,7 +355,7 @@ raw3270_irq (struct ccw_device *cdev, un + struct raw3270_request *rq; + int rc; + +- rp = (struct raw3270 *) cdev->dev.driver_data; ++ rp = dev_get_drvdata(&cdev->dev); + if (!rp) + return; + rq = (struct raw3270_request *) intparm; +@@ -828,7 +828,7 @@ raw3270_setup_device(struct ccw_device * + if (rp->minor == -1) + return -EUSERS; + rp->cdev = cdev; +- cdev->dev.driver_data = rp; ++ dev_set_drvdata(&cdev->dev, rp); + cdev->handler = raw3270_irq; + return 0; + } +@@ -1105,7 +1105,7 @@ raw3270_delete_device(struct raw3270 *rp + /* Disconnect from ccw_device. */ + cdev = rp->cdev; + rp->cdev = NULL; +- cdev->dev.driver_data = NULL; ++ dev_set_drvdata(&cdev->dev, NULL); + cdev->handler = NULL; + + /* Put ccw_device structure. */ +@@ -1129,7 +1129,7 @@ static ssize_t + raw3270_model_show(struct device *dev, struct device_attribute *attr, char *buf) + { + return snprintf(buf, PAGE_SIZE, "%i\n", +- ((struct raw3270 *) dev->driver_data)->model); ++ ((struct raw3270 *) dev_get_drvdata(dev))->model); + } + static DEVICE_ATTR(model, 0444, raw3270_model_show, NULL); + +@@ -1137,7 +1137,7 @@ static ssize_t + raw3270_rows_show(struct device *dev, struct device_attribute *attr, char *buf) + { + return snprintf(buf, PAGE_SIZE, "%i\n", +- ((struct raw3270 *) dev->driver_data)->rows); ++ ((struct raw3270 *) dev_get_drvdata(dev))->rows); + } + static DEVICE_ATTR(rows, 0444, raw3270_rows_show, NULL); + +@@ -1145,7 +1145,7 @@ static ssize_t + raw3270_columns_show(struct device *dev, struct device_attribute *attr, char *buf) + { + return snprintf(buf, PAGE_SIZE, "%i\n", +- ((struct raw3270 *) dev->driver_data)->cols); ++ ((struct raw3270 *) dev_get_drvdata(dev))->cols); + } + static DEVICE_ATTR(columns, 0444, raw3270_columns_show, NULL); + +@@ -1282,7 +1282,7 @@ raw3270_remove (struct ccw_device *cdev) + struct raw3270_view *v; + struct raw3270_notifier *np; + +- rp = cdev->dev.driver_data; ++ rp = dev_get_drvdata(&cdev->dev); + /* + * _remove is the opposite of _probe; it's probe that + * should set up rp. raw3270_remove gets entered for +@@ -1330,7 +1330,7 @@ raw3270_set_offline (struct ccw_device * + { + struct raw3270 *rp; + +- rp = cdev->dev.driver_data; ++ rp = dev_get_drvdata(&cdev->dev); + if (test_bit(RAW3270_FLAGS_CONSOLE, &rp->flags)) + return -EBUSY; + raw3270_remove(cdev); +--- a/drivers/s390/char/tape_34xx.c ++++ b/drivers/s390/char/tape_34xx.c +@@ -1310,7 +1310,7 @@ static int + tape_34xx_online(struct ccw_device *cdev) + { + return tape_generic_online( +- cdev->dev.driver_data, ++ dev_get_drvdata(&cdev->dev), + &tape_discipline_34xx + ); + } +@@ -1318,7 +1318,7 @@ tape_34xx_online(struct ccw_device *cdev + static int + tape_34xx_offline(struct ccw_device *cdev) + { +- return tape_generic_offline(cdev->dev.driver_data); ++ return tape_generic_offline(dev_get_drvdata(&cdev->dev)); + } + + static struct ccw_driver tape_34xx_driver = { +--- a/drivers/s390/char/tape_core.c ++++ b/drivers/s390/char/tape_core.c +@@ -92,7 +92,7 @@ tape_medium_state_show(struct device *de + { + struct tape_device *tdev; + +- tdev = (struct tape_device *) dev->driver_data; ++ tdev = dev_get_drvdata(dev); + return scnprintf(buf, PAGE_SIZE, "%i\n", tdev->medium_state); + } + +@@ -104,7 +104,7 @@ tape_first_minor_show(struct device *dev + { + struct tape_device *tdev; + +- tdev = (struct tape_device *) dev->driver_data; ++ tdev = dev_get_drvdata(dev); + return scnprintf(buf, PAGE_SIZE, "%i\n", tdev->first_minor); + } + +@@ -116,7 +116,7 @@ tape_state_show(struct device *dev, stru + { + struct tape_device *tdev; + +- tdev = (struct tape_device *) dev->driver_data; ++ tdev = dev_get_drvdata(dev); + return scnprintf(buf, PAGE_SIZE, "%s\n", (tdev->first_minor < 0) ? + "OFFLINE" : tape_state_verbose[tdev->tape_state]); + } +@@ -130,7 +130,7 @@ tape_operation_show(struct device *dev, + struct tape_device *tdev; + ssize_t rc; + +- tdev = (struct tape_device *) dev->driver_data; ++ tdev = dev_get_drvdata(dev); + if (tdev->first_minor < 0) + return scnprintf(buf, PAGE_SIZE, "N/A\n"); + +@@ -156,7 +156,7 @@ tape_blocksize_show(struct device *dev, + { + struct tape_device *tdev; + +- tdev = (struct tape_device *) dev->driver_data; ++ tdev = dev_get_drvdata(dev); + + return scnprintf(buf, PAGE_SIZE, "%i\n", tdev->char_data.block_size); + } +@@ -542,7 +542,7 @@ tape_generic_probe(struct ccw_device *cd + dev_name(&cdev->dev)); + return ret; + } +- cdev->dev.driver_data = device; ++ dev_set_drvdata(&cdev->dev, device); + cdev->handler = __tape_do_irq; + device->cdev = cdev; + ccw_device_get_id(cdev, &dev_id); +@@ -582,7 +582,7 @@ tape_generic_remove(struct ccw_device *c + { + struct tape_device * device; + +- device = cdev->dev.driver_data; ++ device = dev_get_drvdata(&cdev->dev); + if (!device) { + PRINT_ERR("No device pointer in tape_generic_remove!\n"); + return; +@@ -625,9 +625,9 @@ tape_generic_remove(struct ccw_device *c + tape_cleanup_device(device); + } + +- if (cdev->dev.driver_data != NULL) { ++ if (dev_get_drvdata(&cdev->dev) != NULL) { + sysfs_remove_group(&cdev->dev.kobj, &tape_attr_group); +- cdev->dev.driver_data = tape_put_device(cdev->dev.driver_data); ++ dev_set_drvdata(&cdev->dev, tape_put_device(dev_get_drvdata(&cdev->dev))); + } + } + +@@ -1049,7 +1049,7 @@ __tape_do_irq (struct ccw_device *cdev, + struct tape_request *request; + int rc; + +- device = (struct tape_device *) cdev->dev.driver_data; ++ device = dev_get_drvdata(&cdev->dev); + if (device == NULL) { + PRINT_ERR("could not get device structure for %s " + "in interrupt\n", dev_name(&cdev->dev)); +--- a/drivers/s390/char/vmlogrdr.c ++++ b/drivers/s390/char/vmlogrdr.c +@@ -503,7 +503,7 @@ static ssize_t vmlogrdr_autopurge_store( + struct device_attribute *attr, + const char * buf, size_t count) + { +- struct vmlogrdr_priv_t *priv = dev->driver_data; ++ struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev); + ssize_t ret = count; + + switch (buf[0]) { +@@ -524,7 +524,7 @@ static ssize_t vmlogrdr_autopurge_show(s + struct device_attribute *attr, + char *buf) + { +- struct vmlogrdr_priv_t *priv = dev->driver_data; ++ struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev); + return sprintf(buf, "%u\n", priv->autopurge); + } + +@@ -540,7 +540,7 @@ static ssize_t vmlogrdr_purge_store(stru + + char cp_command[80]; + char cp_response[80]; +- struct vmlogrdr_priv_t *priv = dev->driver_data; ++ struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev); + + if (buf[0] != '1') + return -EINVAL; +@@ -577,7 +577,7 @@ static ssize_t vmlogrdr_autorecording_st + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct vmlogrdr_priv_t *priv = dev->driver_data; ++ struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev); + ssize_t ret = count; + + switch (buf[0]) { +@@ -598,7 +598,7 @@ static ssize_t vmlogrdr_autorecording_sh + struct device_attribute *attr, + char *buf) + { +- struct vmlogrdr_priv_t *priv = dev->driver_data; ++ struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev); + return sprintf(buf, "%u\n", priv->autorecording); + } + +@@ -611,7 +611,7 @@ static ssize_t vmlogrdr_recording_store( + struct device_attribute *attr, + const char * buf, size_t count) + { +- struct vmlogrdr_priv_t *priv = dev->driver_data; ++ struct vmlogrdr_priv_t *priv = dev_get_drvdata(dev); + ssize_t ret; + + switch (buf[0]) { +--- a/drivers/s390/char/vmur.c ++++ b/drivers/s390/char/vmur.c +@@ -128,7 +128,7 @@ static struct urdev *urdev_get_from_cdev + unsigned long flags; + + spin_lock_irqsave(get_ccwdev_lock(cdev), flags); +- urd = cdev->dev.driver_data; ++ urd = dev_get_drvdata(&cdev->dev); + if (urd) + urdev_get(urd); + spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags); +@@ -285,7 +285,7 @@ static void ur_int_handler(struct ccw_de + TRACE("ur_int_handler: unsolicited interrupt\n"); + return; + } +- urd = cdev->dev.driver_data; ++ urd = dev_get_drvdata(&cdev->dev); + BUG_ON(!urd); + /* On special conditions irb is an error pointer */ + if (IS_ERR(irb)) +@@ -831,7 +831,7 @@ static int ur_probe(struct ccw_device *c + goto fail_remove_attr; + } + spin_lock_irq(get_ccwdev_lock(cdev)); +- cdev->dev.driver_data = urd; ++ dev_set_drvdata(&cdev->dev, urd); + spin_unlock_irq(get_ccwdev_lock(cdev)); + + mutex_unlock(&vmur_mutex); +@@ -971,8 +971,8 @@ static void ur_remove(struct ccw_device + ur_remove_attributes(&cdev->dev); + + spin_lock_irqsave(get_ccwdev_lock(cdev), flags); +- urdev_put(cdev->dev.driver_data); +- cdev->dev.driver_data = NULL; ++ urdev_put(dev_get_drvdata(&cdev->dev)); ++ dev_set_drvdata(&cdev->dev, NULL); + spin_unlock_irqrestore(get_ccwdev_lock(cdev), flags); + + mutex_unlock(&vmur_mutex); +--- a/drivers/s390/net/claw.c ++++ b/drivers/s390/net/claw.c +@@ -581,7 +581,7 @@ claw_irq_handler(struct ccw_device *cdev + + CLAW_DBF_TEXT(4, trace, "clawirq"); + /* Bypass all 'unsolicited interrupts' */ +- if (!cdev->dev.driver_data) { ++ if (!dev_get_drvdata(&cdev->dev)) { + printk(KERN_WARNING "claw: unsolicited interrupt for device:" + "%s received c-%02x d-%02x\n", + dev_name(&cdev->dev), irb->scsw.cmd.cstat, +@@ -589,7 +589,7 @@ claw_irq_handler(struct ccw_device *cdev + CLAW_DBF_TEXT(2, trace, "badirq"); + return; + } +- privptr = (struct claw_privbk *)cdev->dev.driver_data; ++ privptr = dev_get_drvdata(&cdev->dev); + + /* Try to extract channel from driver data. */ + if (privptr->channel[READ].cdev == cdev) +@@ -1964,7 +1964,7 @@ probe_error( struct ccwgroup_device *cgd + struct claw_privbk *privptr; + + CLAW_DBF_TEXT(4, trace, "proberr"); +- privptr = (struct claw_privbk *) cgdev->dev.driver_data; ++ privptr = dev_get_drvdata(&cgdev->dev); + if (privptr != NULL) { + cgdev->dev.driver_data = NULL; + kfree(privptr->p_env); +@@ -2883,7 +2883,7 @@ claw_new_device(struct ccwgroup_device * + printk(KERN_INFO "claw: add for %s\n", + dev_name(&cgdev->cdev[READ]->dev)); + CLAW_DBF_TEXT(2, setup, "new_dev"); +- privptr = cgdev->dev.driver_data; ++ privptr = dev_get_drvdata(&cgdev->dev); + cgdev->cdev[READ]->dev.driver_data = privptr; + cgdev->cdev[WRITE]->dev.driver_data = privptr; + if (!privptr) +@@ -2935,7 +2935,7 @@ claw_new_device(struct ccwgroup_device * + } + dev->flags &=~IFF_RUNNING; + if (privptr->buffs_alloc == 0) { +- ret=init_ccw_bk(dev); ++ ret=init_ccw_bk(dev); + if (ret !=0) { + unregister_netdev(dev); + claw_free_netdevice(dev,1); +@@ -2991,7 +2991,7 @@ claw_shutdown_device(struct ccwgroup_dev + int ret; + + CLAW_DBF_TEXT_(2, setup, "%s", dev_name(&cgdev->dev)); +- priv = cgdev->dev.driver_data; ++ priv = dev_get_drvdata(&cgdev->dev); + if (!priv) + return -ENODEV; + ndev = priv->channel[READ].ndev; +@@ -3021,7 +3021,7 @@ claw_remove_device(struct ccwgroup_devic + + BUG_ON(!cgdev); + CLAW_DBF_TEXT_(2, setup, "%s", dev_name(&cgdev->dev)); +- priv = cgdev->dev.driver_data; ++ priv = dev_get_drvdata(&cgdev->dev); + BUG_ON(!priv); + printk(KERN_INFO "claw: %s() called %s will be removed.\n", + __func__, dev_name(&cgdev->cdev[0]->dev)); +@@ -3037,9 +3037,9 @@ claw_remove_device(struct ccwgroup_devic + kfree(priv->channel[1].irb); + priv->channel[1].irb=NULL; + kfree(priv); +- cgdev->dev.driver_data=NULL; +- cgdev->cdev[READ]->dev.driver_data = NULL; +- cgdev->cdev[WRITE]->dev.driver_data = NULL; ++ dev_set_drvdata(&cgdev->dev,NULL); ++ dev_set_drvdata(&cgdev->cdev[READ]->dev, NULL); ++ dev_set_drvdata(&cgdev->cdev[WRITE]->dev, NULL); + put_device(&cgdev->dev); + + return; +@@ -3055,7 +3055,7 @@ claw_hname_show(struct device *dev, stru + struct claw_privbk *priv; + struct claw_env * p_env; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3068,7 +3068,7 @@ claw_hname_write(struct device *dev, str + struct claw_privbk *priv; + struct claw_env * p_env; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3092,7 +3092,7 @@ claw_adname_show(struct device *dev, str + struct claw_privbk *priv; + struct claw_env * p_env; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3105,7 +3105,7 @@ claw_adname_write(struct device *dev, st + struct claw_privbk *priv; + struct claw_env * p_env; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3129,7 +3129,7 @@ claw_apname_show(struct device *dev, str + struct claw_privbk *priv; + struct claw_env * p_env; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3143,7 +3143,7 @@ claw_apname_write(struct device *dev, st + struct claw_privbk *priv; + struct claw_env * p_env; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3177,7 +3177,7 @@ claw_wbuff_show(struct device *dev, stru + struct claw_privbk *priv; + struct claw_env * p_env; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3191,7 +3191,7 @@ claw_wbuff_write(struct device *dev, str + struct claw_env * p_env; + int nnn,max; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3218,7 +3218,7 @@ claw_rbuff_show(struct device *dev, stru + struct claw_privbk *priv; + struct claw_env * p_env; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +@@ -3232,7 +3232,7 @@ claw_rbuff_write(struct device *dev, str + struct claw_env *p_env; + int nnn,max; + +- priv = dev->driver_data; ++ priv = dev_get_drvdata(dev); + if (!priv) + return -ENODEV; + p_env = priv->p_env; +--- a/drivers/s390/net/lcs.c ++++ b/drivers/s390/net/lcs.c +@@ -1378,6 +1378,7 @@ lcs_schedule_recovery(struct lcs_card *c + static void + lcs_irq(struct ccw_device *cdev, unsigned long intparm, struct irb *irb) + { ++ struct ccwgroup_device *gdev = dev_get_drvdata(&cdev->dev); + struct lcs_card *card; + struct lcs_channel *channel; + int rc, index; +@@ -1386,7 +1387,7 @@ lcs_irq(struct ccw_device *cdev, unsigne + if (lcs_check_irb_error(cdev, irb)) + return; + +- card = CARD_FROM_DEV(cdev); ++ card = dev_get_drvdata(&gdev->dev); + if (card->read.ccwdev == cdev) + channel = &card->read; + else +@@ -1924,7 +1925,7 @@ lcs_portno_show (struct device *dev, str + { + struct lcs_card *card; + +- card = (struct lcs_card *)dev->driver_data; ++ card = dev_get_drvdata(dev); + + if (!card) + return 0; +@@ -1941,7 +1942,7 @@ lcs_portno_store (struct device *dev, st + struct lcs_card *card; + int value; + +- card = (struct lcs_card *)dev->driver_data; ++ card = dev_get_drvdata(dev); + + if (!card) + return 0; +@@ -1975,7 +1976,7 @@ lcs_timeout_show(struct device *dev, str + { + struct lcs_card *card; + +- card = (struct lcs_card *)dev->driver_data; ++ card = dev_get_drvdata(dev); + + return card ? sprintf(buf, "%u\n", card->lancmd_timeout) : 0; + } +@@ -1986,7 +1987,7 @@ lcs_timeout_store (struct device *dev, s + struct lcs_card *card; + int value; + +- card = (struct lcs_card *)dev->driver_data; ++ card = dev_get_drvdata(dev); + + if (!card) + return 0; +@@ -2005,7 +2006,7 @@ static ssize_t + lcs_dev_recover_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct lcs_card *card = dev->driver_data; ++ struct lcs_card *card = dev_get_drvdata(dev); + char *tmp; + int i; + +@@ -2058,7 +2059,7 @@ lcs_probe_device(struct ccwgroup_device + put_device(&ccwgdev->dev); + return ret; + } +- ccwgdev->dev.driver_data = card; ++ dev_set_drvdata(&ccwgdev->dev, card); + ccwgdev->cdev[0]->handler = lcs_irq; + ccwgdev->cdev[1]->handler = lcs_irq; + card->gdev = ccwgdev; +@@ -2075,7 +2076,7 @@ lcs_register_netdev(struct ccwgroup_devi + struct lcs_card *card; + + LCS_DBF_TEXT(2, setup, "regnetdv"); +- card = (struct lcs_card *)ccwgdev->dev.driver_data; ++ card = dev_get_drvdata(&ccwgdev->dev); + if (card->dev->reg_state != NETREG_UNINITIALIZED) + return 0; + SET_NETDEV_DEV(card->dev, &ccwgdev->dev); +@@ -2094,7 +2095,7 @@ lcs_new_device(struct ccwgroup_device *c + enum lcs_dev_states recover_state; + int rc; + +- card = (struct lcs_card *)ccwgdev->dev.driver_data; ++ card = dev_get_drvdata(&ccwgdev->dev); + if (!card) + return -ENODEV; + +@@ -2202,7 +2203,7 @@ __lcs_shutdown_device(struct ccwgroup_de + int ret; + + LCS_DBF_TEXT(3, setup, "shtdndev"); +- card = (struct lcs_card *)ccwgdev->dev.driver_data; ++ card = dev_get_drvdata(&ccwgdev->dev); + if (!card) + return -ENODEV; + if (recovery_mode == 0) { +@@ -2269,7 +2270,7 @@ lcs_remove_device(struct ccwgroup_device + { + struct lcs_card *card; + +- card = (struct lcs_card *)ccwgdev->dev.driver_data; ++ card = dev_get_drvdata(&ccwgdev->dev); + if (!card) + return; + +--- a/drivers/s390/net/netiucv.c ++++ b/drivers/s390/net/netiucv.c +@@ -1353,7 +1353,7 @@ static int netiucv_change_mtu(struct net + static ssize_t user_show(struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%s\n", netiucv_printname(priv->conn->userid)); +@@ -1362,7 +1362,7 @@ static ssize_t user_show(struct device * + static ssize_t user_write(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + struct net_device *ndev = priv->conn->netdev; + char *p; + char *tmp; +@@ -1419,7 +1419,8 @@ static DEVICE_ATTR(user, 0644, user_show + + static ssize_t buffer_show (struct device *dev, struct device_attribute *attr, + char *buf) +-{ struct netiucv_priv *priv = dev->driver_data; ++{ ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%d\n", priv->conn->max_buffsize); +@@ -1428,7 +1429,7 @@ static ssize_t buffer_show (struct devic + static ssize_t buffer_write (struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + struct net_device *ndev = priv->conn->netdev; + char *e; + int bs1; +@@ -1476,7 +1477,7 @@ static DEVICE_ATTR(buffer, 0644, buffer_ + static ssize_t dev_fsm_show (struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%s\n", fsm_getstate_str(priv->fsm)); +@@ -1487,7 +1488,7 @@ static DEVICE_ATTR(device_fsm_state, 044 + static ssize_t conn_fsm_show (struct device *dev, + struct device_attribute *attr, char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%s\n", fsm_getstate_str(priv->conn->fsm)); +@@ -1498,7 +1499,7 @@ static DEVICE_ATTR(connection_fsm_state, + static ssize_t maxmulti_show (struct device *dev, + struct device_attribute *attr, char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%ld\n", priv->conn->prof.maxmulti); +@@ -1508,7 +1509,7 @@ static ssize_t maxmulti_write (struct de + struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 4, __func__); + priv->conn->prof.maxmulti = 0; +@@ -1520,7 +1521,7 @@ static DEVICE_ATTR(max_tx_buffer_used, 0 + static ssize_t maxcq_show (struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%ld\n", priv->conn->prof.maxcqueue); +@@ -1529,7 +1530,7 @@ static ssize_t maxcq_show (struct device + static ssize_t maxcq_write (struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 4, __func__); + priv->conn->prof.maxcqueue = 0; +@@ -1541,7 +1542,7 @@ static DEVICE_ATTR(max_chained_skbs, 064 + static ssize_t sdoio_show (struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%ld\n", priv->conn->prof.doios_single); +@@ -1550,7 +1551,7 @@ static ssize_t sdoio_show (struct device + static ssize_t sdoio_write (struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 4, __func__); + priv->conn->prof.doios_single = 0; +@@ -1562,7 +1563,7 @@ static DEVICE_ATTR(tx_single_write_ops, + static ssize_t mdoio_show (struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%ld\n", priv->conn->prof.doios_multi); +@@ -1571,7 +1572,7 @@ static ssize_t mdoio_show (struct device + static ssize_t mdoio_write (struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + priv->conn->prof.doios_multi = 0; +@@ -1583,7 +1584,7 @@ static DEVICE_ATTR(tx_multi_write_ops, 0 + static ssize_t txlen_show (struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%ld\n", priv->conn->prof.txlen); +@@ -1592,7 +1593,7 @@ static ssize_t txlen_show (struct device + static ssize_t txlen_write (struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 4, __func__); + priv->conn->prof.txlen = 0; +@@ -1604,7 +1605,7 @@ static DEVICE_ATTR(netto_bytes, 0644, tx + static ssize_t txtime_show (struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%ld\n", priv->conn->prof.tx_time); +@@ -1613,7 +1614,7 @@ static ssize_t txtime_show (struct devic + static ssize_t txtime_write (struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 4, __func__); + priv->conn->prof.tx_time = 0; +@@ -1625,7 +1626,7 @@ static DEVICE_ATTR(max_tx_io_time, 0644, + static ssize_t txpend_show (struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%ld\n", priv->conn->prof.tx_pending); +@@ -1634,7 +1635,7 @@ static ssize_t txpend_show (struct devic + static ssize_t txpend_write (struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 4, __func__); + priv->conn->prof.tx_pending = 0; +@@ -1646,7 +1647,7 @@ static DEVICE_ATTR(tx_pending, 0644, txp + static ssize_t txmpnd_show (struct device *dev, struct device_attribute *attr, + char *buf) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 5, __func__); + return sprintf(buf, "%ld\n", priv->conn->prof.tx_max_pending); +@@ -1655,7 +1656,7 @@ static ssize_t txmpnd_show (struct devic + static ssize_t txmpnd_write (struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) + { +- struct netiucv_priv *priv = dev->driver_data; ++ struct netiucv_priv *priv = dev_get_drvdata(dev); + + IUCV_DBF_TEXT(trace, 4, __func__); + priv->conn->prof.tx_max_pending = 0; +@@ -1747,7 +1748,7 @@ static int netiucv_register_device(struc + if (ret) + goto out_unreg; + priv->dev = dev; +- dev->driver_data = priv; ++ dev_set_drvdata(dev, priv); + return 0; + + out_unreg: +--- a/drivers/scsi/aha1740.c ++++ b/drivers/scsi/aha1740.c +@@ -646,7 +646,8 @@ static int aha1740_probe (struct device + + static __devexit int aha1740_remove (struct device *dev) + { +- struct Scsi_Host *shpnt = dev->driver_data; ++ struct eisa_device *edev = to_eisa_device (dev); ++ struct Scsi_Host *shpnt = eisa_get_drvdata(edev); + struct aha1740_hostdata *host = HOSTDATA (shpnt); + + scsi_remove_host(shpnt); +--- a/drivers/scsi/ibmvscsi/ibmvstgt.c ++++ b/drivers/scsi/ibmvscsi/ibmvstgt.c +@@ -890,7 +890,7 @@ free_vport: + + static int ibmvstgt_remove(struct vio_dev *dev) + { +- struct srp_target *target = (struct srp_target *) dev->dev.driver_data; ++ struct srp_target *target = dev_get_drvdata(&dev->dev); + struct Scsi_Host *shost = target->shost; + struct vio_port *vport = target->ldata; + +--- a/drivers/scsi/libsrp.c ++++ b/drivers/scsi/libsrp.c +@@ -135,7 +135,7 @@ int srp_target_alloc(struct srp_target * + INIT_LIST_HEAD(&target->cmd_queue); + + target->dev = dev; +- target->dev->driver_data = target; ++ dev_set_drvdata(target->dev, target); + + target->srp_iu_size = iu_size; + target->rx_ring_size = nr; +--- a/drivers/thermal/thermal_sys.c ++++ b/drivers/thermal/thermal_sys.c +@@ -304,7 +304,7 @@ static LIST_HEAD(thermal_hwmon_list); + static ssize_t + name_show(struct device *dev, struct device_attribute *attr, char *buf) + { +- struct thermal_hwmon_device *hwmon = dev->driver_data; ++ struct thermal_hwmon_device *hwmon = dev_get_drvdata(dev); + return sprintf(buf, "%s\n", hwmon->type); + } + static DEVICE_ATTR(name, 0444, name_show, NULL); +@@ -362,7 +362,7 @@ thermal_add_hwmon_sysfs(struct thermal_z + result = PTR_ERR(hwmon->device); + goto free_mem; + } +- hwmon->device->driver_data = hwmon; ++ dev_set_drvdata(hwmon->device, hwmon); + result = device_create_file(hwmon->device, &dev_attr_name); + if (result) + goto unregister_hwmon_device; +--- a/drivers/video/xen-fbfront.c ++++ b/drivers/video/xen-fbfront.c +@@ -384,7 +384,7 @@ static int __devinit xenfb_probe(struct + fb_size = XENFB_DEFAULT_FB_LEN; + } + +- dev->dev.driver_data = info; ++ dev_set_drvdata(&dev->dev, info); + info->xbdev = dev; + info->irq = -1; + info->x1 = info->y1 = INT_MAX; +@@ -503,7 +503,7 @@ xenfb_make_preferred_console(void) + + static int xenfb_resume(struct xenbus_device *dev) + { +- struct xenfb_info *info = dev->dev.driver_data; ++ struct xenfb_info *info = dev_get_drvdata(&dev->dev); + + xenfb_disconnect_backend(info); + xenfb_init_shared_page(info, info->fb_info); +@@ -512,7 +512,7 @@ static int xenfb_resume(struct xenbus_de + + static int xenfb_remove(struct xenbus_device *dev) + { +- struct xenfb_info *info = dev->dev.driver_data; ++ struct xenfb_info *info = dev_get_drvdata(&dev->dev); + + xenfb_disconnect_backend(info); + if (info->fb_info) { +@@ -621,7 +621,7 @@ static void xenfb_disconnect_backend(str + static void xenfb_backend_changed(struct xenbus_device *dev, + enum xenbus_state backend_state) + { +- struct xenfb_info *info = dev->dev.driver_data; ++ struct xenfb_info *info = dev_get_drvdata(&dev->dev); + int val; + + switch (backend_state) { +--- a/include/linux/eisa.h ++++ b/include/linux/eisa.h +@@ -78,12 +78,12 @@ static inline void eisa_driver_unregiste + /* Mimics pci.h... */ + static inline void *eisa_get_drvdata (struct eisa_device *edev) + { +- return edev->dev.driver_data; ++ return dev_get_drvdata(&edev->dev); + } + + static inline void eisa_set_drvdata (struct eisa_device *edev, void *data) + { +- edev->dev.driver_data = data; ++ dev_set_drvdata(&edev->dev, data); + } + + /* The EISA root device. There's rumours about machines with multiple diff --git a/pending/usb-gotemp.patch b/pending/usb-gotemp.patch new file mode 100644 index 00000000000000..87a0b37d52dbbc --- /dev/null +++ b/pending/usb-gotemp.patch @@ -0,0 +1,349 @@ +From foo@baz Tue Apr 9 12:12:43 2002 +Date: Tue, 09 Apr 2002 12:14:34 -0700 +To: Greg KH <greg@kroah.com> +From: Greg Kroah-Hartman <gregkh@suse.de> +Subject: USB: driver for gotemp device + +NOT FOR MAINLINE! + +This is for the driver tutorial I give. It will not be included in the +mainline kernel tree ever. Use the ldusb driver that is already there +instead for this device. + +This is only a teaching tool. + +--- + drivers/usb/misc/Kconfig | 8 + + drivers/usb/misc/Makefile | 1 + drivers/usb/misc/gotemp.c | 301 ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 310 insertions(+) + +--- /dev/null ++++ b/drivers/usb/misc/gotemp.c +@@ -0,0 +1,301 @@ ++/* ++ * USB GoTemp driver ++ * ++ * Copyright (C) 2005 Greg Kroah-Hartman (greg@kroah.com) ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation, version 2. ++ * ++ */ ++ ++#include <linux/kernel.h> ++#include <linux/errno.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/module.h> ++#include <linux/usb.h> ++ ++ ++#define DRIVER_AUTHOR "Greg Kroah-Hartman, greg@kroah.com" ++#define DRIVER_DESC "USB GoTemp driver" ++ ++#define VENDOR_ID 0x08f7 ++#define PRODUCT_ID 0x0002 ++ ++/* table of devices that work with this driver */ ++static struct usb_device_id id_table[] = { ++ { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, ++ { }, ++}; ++MODULE_DEVICE_TABLE(usb, id_table); ++ ++struct gotemp { ++ struct usb_device *udev; ++ int temp; ++ unsigned char *int_in_buffer; ++ __u8 int_in_endpointAddr; ++ struct urb *int_in_urb; ++}; ++ ++#define CMD_ID_GET_STATUS 0x10 ++#define CMD_ID_WRITE_LOCAL_NV_MEM_1BYTE 0x11 ++#define CMD_ID_WRITE_LOCAL_NV_MEM_2BYTES 0x12 ++#define CMD_ID_WRITE_LOCAL_NV_MEM_3BYTES 0x13 ++#define CMD_ID_WRITE_LOCAL_NV_MEM_4BYTES 0x14 ++#define CMD_ID_WRITE_LOCAL_NV_MEM_5BYTES 0x15 ++#define CMD_ID_WRITE_LOCAL_NV_MEM_6BYTES 0x16 ++#define CMD_ID_READ_LOCAL_NV_MEM 0x17 ++#define CMD_ID_START_MEASUREMENTS 0x18 ++#define CMD_ID_STOP_MEASUREMENTS 0x19 ++#define CMD_ID_INIT 0x1A ++#define CMD_ID_SET_MEASUREMENT_PERIOD 0x1B ++#define CMD_ID_GET_MEASUREMENT_PERIOD 0x1C ++#define CMD_ID_SET_LED_STATE 0x1D ++#define CMD_ID_GET_LED_STATE 0x1E ++#define CMD_ID_GET_SERIAL_NUMBER 0x20 ++ ++struct output_packet { ++ u8 cmd; ++ u8 params[7]; ++} __attribute__ ((packed)); ++ ++struct measurement_packet { ++ u8 measurements_in_packet; ++ u8 rolling_counter; ++ __le16 measurement0; ++ __le16 measurement1; ++ __le16 measurement2; ++} __attribute__ ((packed)); ++ ++static int send_cmd(struct gotemp *gdev, u8 cmd) ++{ ++ struct output_packet *pkt; ++ int retval; ++ ++ pkt = kzalloc(sizeof(*pkt), GFP_KERNEL); ++ if (!pkt) ++ return -ENOMEM; ++ pkt->cmd = cmd; ++ ++ retval = usb_control_msg(gdev->udev, ++ usb_sndctrlpipe(gdev->udev, 0), ++ 0x09, /* bRequest = SET_REPORT */ ++ 0x21, /* bRequestType = 00100001 */ ++ 0x0200, /* or is it 0x0002? */ ++ 0x0000, /* interface 0 */ ++ pkt, sizeof(*pkt), 10000); ++ dev_dbg(&gdev->udev->dev, "retval=%d\n", retval); ++ if (retval == sizeof(*pkt)) ++ retval = 0; ++ ++ kfree(pkt); ++ return retval; ++} ++ ++static void init_dev(struct gotemp *gdev) ++{ ++ int retval; ++ ++ /* First send an init message */ ++ send_cmd(gdev, CMD_ID_INIT); ++ ++ /* hack hack hack */ ++ /* problem is, we want a usb_interrupt_msg() call to read the interrupt ++ * endpoint right now. only after it is flushed, can we properly start ++ * up the measurements. */ ++ msleep(1000); ++ ++ /* kick off interrupt urb */ ++ retval = usb_submit_urb(gdev->int_in_urb, GFP_KERNEL); ++ if (retval) ++ dev_err(&gdev->udev->dev, ++ "%s - Error %d submitting interrupt urb\n", ++ __func__, retval); ++ ++ msleep(3000); ++ send_cmd(gdev, CMD_ID_START_MEASUREMENTS); ++} ++ ++static ssize_t show_temp(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct usb_interface *intf = to_usb_interface(dev); ++ struct gotemp *gdev = usb_get_intfdata(intf); ++ ++ return sprintf(buf, "%d\n", gdev->temp); ++} ++ ++static DEVICE_ATTR(temp, S_IRUGO, show_temp, NULL); ++ ++static void read_int_callback(struct urb *urb) ++{ ++ struct gotemp *gdev = urb->context; ++ unsigned char *data = urb->transfer_buffer; ++ struct measurement_packet *measurement = urb->transfer_buffer; ++ int retval; ++ int i; ++ ++ switch (urb->status) { ++ case 0: ++ /* success */ ++ break; ++ case -ECONNRESET: ++ case -ENOENT: ++ case -ESHUTDOWN: ++ /* this urb is terminated, clean up */ ++ dbg("%s - urb shutting down with status: %d", ++ __func__, urb->status); ++ return; ++ default: ++ dbg("%s - nonzero urb status received: %d", ++ __func__, urb->status); ++ goto exit; ++ } ++ ++ dev_info(&urb->dev->dev, "int read data: "); ++ for (i = 0; i < urb->actual_length; ++i) ++ printk("%02x ", data[i]); ++ printk("\n"); ++ ++ dev_dbg(&urb->dev->dev, "counter %d, temp=%d\n", ++ measurement->rolling_counter, ++ measurement->measurement0); ++ gdev->temp = le16_to_cpu(measurement->measurement0); ++ ++exit: ++ retval = usb_submit_urb(urb, GFP_ATOMIC); ++ if (retval) ++ dev_err(&urb->dev->dev, ++ "%s - Error %d submitting interrupt urb\n", ++ __func__, retval); ++} ++ ++static int gotemp_probe(struct usb_interface *interface, ++ const struct usb_device_id *id) ++{ ++ struct usb_device *udev = interface_to_usbdev(interface); ++ struct gotemp *gdev = NULL; ++ int retval = -ENOMEM; ++ int i; ++ struct usb_host_interface *iface_desc; ++ struct usb_endpoint_descriptor *endpoint = NULL; ++ size_t buffer_size = 0; ++ ++ gdev = kzalloc(sizeof(struct gotemp), GFP_KERNEL); ++ if (gdev == NULL) { ++ dev_err(&interface->dev, "Out of memory\n"); ++ goto error; ++ } ++ ++ gdev->udev = usb_get_dev(udev); ++ ++ /* find the one control endpoint of this device */ ++ iface_desc = interface->cur_altsetting; ++ for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { ++ endpoint = &iface_desc->endpoint[i].desc; ++ ++ if (usb_endpoint_is_int_in(endpoint)) { ++ buffer_size = le16_to_cpu(endpoint->wMaxPacketSize); ++ gdev->int_in_endpointAddr = endpoint->bEndpointAddress; ++ gdev->int_in_buffer = kmalloc(buffer_size, GFP_KERNEL); ++ if (!gdev->int_in_buffer) { ++ dev_err(&interface->dev, ++ "Could not allocate buffer"); ++ goto error; ++ } ++ break; ++ } ++ } ++ if (!gdev->int_in_endpointAddr) { ++ dev_err(&interface->dev, "Could not find int-in endpoint"); ++ retval = -ENODEV; ++ goto error; ++ } ++ ++ gdev->int_in_urb = usb_alloc_urb(0, GFP_KERNEL); ++ if (!gdev->int_in_urb) { ++ dev_err(&interface->dev, "No free urbs available\n"); ++ goto error; ++ } ++ usb_fill_int_urb(gdev->int_in_urb, udev, ++ usb_rcvintpipe(udev, ++ endpoint->bEndpointAddress), ++ gdev->int_in_buffer, buffer_size, ++ read_int_callback, gdev, ++ endpoint->bInterval); ++ ++ usb_set_intfdata(interface, gdev); ++ ++ init_dev(gdev); ++ ++ /* ++ * this must come last - after this call the device is active ++ * if we delayed any initialization until after this, the user ++ * would read garbage ++ */ ++ retval = device_create_file(&interface->dev, &dev_attr_temp); ++ if (retval) ++ goto error; ++ ++ dev_info(&interface->dev, "USB GoTemp device now attached\n"); ++ return 0; ++ ++error: ++ usb_set_intfdata(interface, NULL); ++ if (gdev) { ++ usb_free_urb(gdev->int_in_urb); ++ kfree(gdev->int_in_buffer); ++ } ++ kfree(gdev); ++ return retval; ++} ++ ++static void gotemp_disconnect(struct usb_interface *interface) ++{ ++ struct gotemp *gdev; ++ ++ gdev = usb_get_intfdata(interface); ++ ++ device_remove_file(&interface->dev, &dev_attr_temp); ++ /* intfdata must remain valid while reads are under way */ ++ usb_set_intfdata(interface, NULL); ++ ++ usb_put_dev(gdev->udev); ++ ++ usb_kill_urb(gdev->int_in_urb); ++ usb_free_urb(gdev->int_in_urb); ++ kfree(gdev->int_in_buffer); ++ kfree(gdev); ++ ++ dev_info(&interface->dev, "USB GoTemp now disconnected\n"); ++} ++ ++static struct usb_driver gotemp_driver = { ++ .name = "gotemp", ++ .probe = gotemp_probe, ++ .disconnect = gotemp_disconnect, ++ .id_table = id_table, ++}; ++ ++static int __init gotemp_init(void) ++{ ++ int retval = 0; ++ ++ retval = usb_register(&gotemp_driver); ++ if (retval) ++ err("usb_register failed. Error number %d", retval); ++ return retval; ++} ++ ++static void __exit gotemp_exit(void) ++{ ++ usb_deregister(&gotemp_driver); ++} ++ ++module_init(gotemp_init); ++module_exit(gotemp_exit); ++ ++MODULE_AUTHOR(DRIVER_AUTHOR); ++MODULE_DESCRIPTION(DRIVER_DESC); ++MODULE_LICENSE("GPL"); +--- a/drivers/usb/misc/Kconfig ++++ b/drivers/usb/misc/Kconfig +@@ -255,4 +255,12 @@ config USB_VST + To compile this driver as a module, choose M here: the + module will be called vstusb. + ++config USB_GOTEMP ++ tristate "GoTemp USB thermometer driver support" ++ depends on USB ++ help ++ Say Y here if you want to connect a GoTemp USB thermometer ++ device to your computer's USB port. + ++ To compile this driver as a module, choose M here: the ++ module will be called gotemp. +--- a/drivers/usb/misc/Makefile ++++ b/drivers/usb/misc/Makefile +@@ -11,6 +11,7 @@ obj-$(CONFIG_USB_CYTHERM) += cytherm.o + obj-$(CONFIG_USB_EMI26) += emi26.o + obj-$(CONFIG_USB_EMI62) += emi62.o + obj-$(CONFIG_USB_FTDI_ELAN) += ftdi-elan.o ++obj-$(CONFIG_USB_GOTEMP) += gotemp.o + obj-$(CONFIG_USB_IDMOUSE) += idmouse.o + obj-$(CONFIG_USB_IOWARRIOR) += iowarrior.o + obj-$(CONFIG_USB_ISIGHTFW) += isight_firmware.o |