diff options
Diffstat (limited to 'drivers')
261 files changed, 1118 insertions, 1393 deletions
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 78105b3a5262..1a4ed64586a7 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig | |||
| @@ -176,7 +176,6 @@ config ACPI_FAN | |||
| 176 | 176 | ||
| 177 | config ACPI_DOCK | 177 | config ACPI_DOCK |
| 178 | bool "Dock" | 178 | bool "Dock" |
| 179 | depends on EXPERIMENTAL | ||
| 180 | help | 179 | help |
| 181 | This driver supports ACPI-controlled docking stations and removable | 180 | This driver supports ACPI-controlled docking stations and removable |
| 182 | drive bays such as the IBM Ultrabay and the Dell Module Bay. | 181 | drive bays such as the IBM Ultrabay and the Dell Module Bay. |
| @@ -202,7 +201,7 @@ config ACPI_PROCESSOR | |||
| 202 | the module will be called processor. | 201 | the module will be called processor. |
| 203 | config ACPI_IPMI | 202 | config ACPI_IPMI |
| 204 | tristate "IPMI" | 203 | tristate "IPMI" |
| 205 | depends on EXPERIMENTAL && IPMI_SI && IPMI_HANDLER | 204 | depends on IPMI_SI && IPMI_HANDLER |
| 206 | default n | 205 | default n |
| 207 | help | 206 | help |
| 208 | This driver enables the ACPI to access the BMC controller. And it | 207 | This driver enables the ACPI to access the BMC controller. And it |
| @@ -214,14 +213,13 @@ config ACPI_IPMI | |||
| 214 | 213 | ||
| 215 | config ACPI_HOTPLUG_CPU | 214 | config ACPI_HOTPLUG_CPU |
| 216 | bool | 215 | bool |
| 217 | depends on EXPERIMENTAL && ACPI_PROCESSOR && HOTPLUG_CPU | 216 | depends on ACPI_PROCESSOR && HOTPLUG_CPU |
| 218 | select ACPI_CONTAINER | 217 | select ACPI_CONTAINER |
| 219 | default y | 218 | default y |
| 220 | 219 | ||
| 221 | config ACPI_PROCESSOR_AGGREGATOR | 220 | config ACPI_PROCESSOR_AGGREGATOR |
| 222 | tristate "Processor Aggregator" | 221 | tristate "Processor Aggregator" |
| 223 | depends on ACPI_PROCESSOR | 222 | depends on ACPI_PROCESSOR |
| 224 | depends on EXPERIMENTAL | ||
| 225 | depends on X86 | 223 | depends on X86 |
| 226 | help | 224 | help |
| 227 | ACPI 4.0 defines processor Aggregator, which enables OS to perform | 225 | ACPI 4.0 defines processor Aggregator, which enables OS to perform |
| @@ -337,8 +335,7 @@ config X86_PM_TIMER | |||
| 337 | systems require this timer. | 335 | systems require this timer. |
| 338 | 336 | ||
| 339 | config ACPI_CONTAINER | 337 | config ACPI_CONTAINER |
| 340 | bool "Container and Module Devices (EXPERIMENTAL)" | 338 | bool "Container and Module Devices" |
| 341 | depends on EXPERIMENTAL | ||
| 342 | default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU || ACPI_HOTPLUG_IO) | 339 | default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU || ACPI_HOTPLUG_IO) |
| 343 | help | 340 | help |
| 344 | This driver supports ACPI Container and Module devices (IDs | 341 | This driver supports ACPI Container and Module devices (IDs |
diff --git a/drivers/amba/tegra-ahb.c b/drivers/amba/tegra-ahb.c index 536c166f4253..ab92785f54dc 100644 --- a/drivers/amba/tegra-ahb.c +++ b/drivers/amba/tegra-ahb.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | * | 20 | * |
| 21 | */ | 21 | */ |
| 22 | 22 | ||
| 23 | #include <linux/err.h> | ||
| 23 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
| 24 | #include <linux/module.h> | 25 | #include <linux/module.h> |
| 25 | #include <linux/platform_device.h> | 26 | #include <linux/platform_device.h> |
| @@ -257,9 +258,9 @@ static int tegra_ahb_probe(struct platform_device *pdev) | |||
| 257 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 258 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 258 | if (!res) | 259 | if (!res) |
| 259 | return -ENODEV; | 260 | return -ENODEV; |
| 260 | ahb->regs = devm_request_and_ioremap(&pdev->dev, res); | 261 | ahb->regs = devm_ioremap_resource(&pdev->dev, res); |
| 261 | if (!ahb->regs) | 262 | if (IS_ERR(ahb->regs)) |
| 262 | return -EBUSY; | 263 | return PTR_ERR(ahb->regs); |
| 263 | 264 | ||
| 264 | ahb->dev = &pdev->dev; | 265 | ahb->dev = &pdev->dev; |
| 265 | platform_set_drvdata(pdev, ahb); | 266 | platform_set_drvdata(pdev, ahb); |
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig index e08d322d01d7..cdadce23e66d 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig | |||
| @@ -163,7 +163,7 @@ config SATA_QSTOR | |||
| 163 | 163 | ||
| 164 | config SATA_SX4 | 164 | config SATA_SX4 |
| 165 | tristate "Promise SATA SX4 support (Experimental)" | 165 | tristate "Promise SATA SX4 support (Experimental)" |
| 166 | depends on PCI && EXPERIMENTAL | 166 | depends on PCI |
| 167 | help | 167 | help |
| 168 | This option enables support for Promise Serial ATA SX4. | 168 | This option enables support for Promise Serial ATA SX4. |
| 169 | 169 | ||
| @@ -390,7 +390,7 @@ config PATA_CS5530 | |||
| 390 | 390 | ||
| 391 | config PATA_CS5535 | 391 | config PATA_CS5535 |
| 392 | tristate "CS5535 PATA support (Experimental)" | 392 | tristate "CS5535 PATA support (Experimental)" |
| 393 | depends on PCI && X86 && !X86_64 && EXPERIMENTAL | 393 | depends on PCI && X86 && !X86_64 |
| 394 | help | 394 | help |
| 395 | This option enables support for the NatSemi/AMD CS5535 | 395 | This option enables support for the NatSemi/AMD CS5535 |
| 396 | companion chip used with the Geode processor family. | 396 | companion chip used with the Geode processor family. |
| @@ -408,7 +408,7 @@ config PATA_CS5536 | |||
| 408 | 408 | ||
| 409 | config PATA_CYPRESS | 409 | config PATA_CYPRESS |
| 410 | tristate "Cypress CY82C693 PATA support (Very Experimental)" | 410 | tristate "Cypress CY82C693 PATA support (Very Experimental)" |
| 411 | depends on PCI && EXPERIMENTAL | 411 | depends on PCI |
| 412 | help | 412 | help |
| 413 | This option enables support for the Cypress/Contaq CY82C693 | 413 | This option enables support for the Cypress/Contaq CY82C693 |
| 414 | chipset found in some Alpha systems | 414 | chipset found in some Alpha systems |
| @@ -496,7 +496,7 @@ config PATA_IMX | |||
| 496 | 496 | ||
| 497 | config PATA_IT8213 | 497 | config PATA_IT8213 |
| 498 | tristate "IT8213 PATA support (Experimental)" | 498 | tristate "IT8213 PATA support (Experimental)" |
| 499 | depends on PCI && EXPERIMENTAL | 499 | depends on PCI |
| 500 | help | 500 | help |
| 501 | This option enables support for the ITE 821 PATA | 501 | This option enables support for the ITE 821 PATA |
| 502 | controllers via the new ATA layer. | 502 | controllers via the new ATA layer. |
| @@ -589,7 +589,7 @@ config PATA_OLDPIIX | |||
| 589 | 589 | ||
| 590 | config PATA_OPTIDMA | 590 | config PATA_OPTIDMA |
| 591 | tristate "OPTI FireStar PATA support (Very Experimental)" | 591 | tristate "OPTI FireStar PATA support (Very Experimental)" |
| 592 | depends on PCI && EXPERIMENTAL | 592 | depends on PCI |
| 593 | help | 593 | help |
| 594 | This option enables DMA/PIO support for the later OPTi | 594 | This option enables DMA/PIO support for the later OPTi |
| 595 | controllers found on some old motherboards and in some | 595 | controllers found on some old motherboards and in some |
| @@ -616,7 +616,7 @@ config PATA_PDC_OLD | |||
| 616 | 616 | ||
| 617 | config PATA_RADISYS | 617 | config PATA_RADISYS |
| 618 | tristate "RADISYS 82600 PATA support (Experimental)" | 618 | tristate "RADISYS 82600 PATA support (Experimental)" |
| 619 | depends on PCI && EXPERIMENTAL | 619 | depends on PCI |
| 620 | help | 620 | help |
| 621 | This option enables support for the RADISYS 82600 | 621 | This option enables support for the RADISYS 82600 |
| 622 | PATA controllers via the new ATA layer | 622 | PATA controllers via the new ATA layer |
| @@ -687,7 +687,7 @@ config PATA_SIS | |||
| 687 | 687 | ||
| 688 | config PATA_TOSHIBA | 688 | config PATA_TOSHIBA |
| 689 | tristate "Toshiba Piccolo support (Experimental)" | 689 | tristate "Toshiba Piccolo support (Experimental)" |
| 690 | depends on PCI && EXPERIMENTAL | 690 | depends on PCI |
| 691 | help | 691 | help |
| 692 | Support for the Toshiba Piccolo controllers. Currently only the | 692 | Support for the Toshiba Piccolo controllers. Currently only the |
| 693 | primary channel is supported by this driver. | 693 | primary channel is supported by this driver. |
| @@ -738,7 +738,7 @@ comment "PIO-only SFF controllers" | |||
| 738 | 738 | ||
| 739 | config PATA_AT32 | 739 | config PATA_AT32 |
| 740 | tristate "Atmel AVR32 PATA support (Experimental)" | 740 | tristate "Atmel AVR32 PATA support (Experimental)" |
| 741 | depends on AVR32 && PLATFORM_AT32AP && EXPERIMENTAL | 741 | depends on AVR32 && PLATFORM_AT32AP |
| 742 | help | 742 | help |
| 743 | This option enables support for the IDE devices on the | 743 | This option enables support for the IDE devices on the |
| 744 | Atmel AT32AP platform. | 744 | Atmel AT32AP platform. |
| @@ -755,7 +755,7 @@ config PATA_AT91 | |||
| 755 | 755 | ||
| 756 | config PATA_CMD640_PCI | 756 | config PATA_CMD640_PCI |
| 757 | tristate "CMD640 PCI PATA support (Experimental)" | 757 | tristate "CMD640 PCI PATA support (Experimental)" |
| 758 | depends on PCI && EXPERIMENTAL | 758 | depends on PCI |
| 759 | help | 759 | help |
| 760 | This option enables support for the CMD640 PCI IDE | 760 | This option enables support for the CMD640 PCI IDE |
| 761 | interface chip. Only the primary channel is currently | 761 | interface chip. Only the primary channel is currently |
| @@ -801,7 +801,7 @@ config PATA_NS87410 | |||
| 801 | 801 | ||
| 802 | config PATA_OPTI | 802 | config PATA_OPTI |
| 803 | tristate "OPTI621/6215 PATA support (Very Experimental)" | 803 | tristate "OPTI621/6215 PATA support (Very Experimental)" |
| 804 | depends on PCI && EXPERIMENTAL | 804 | depends on PCI |
| 805 | help | 805 | help |
| 806 | This option enables full PIO support for the early Opti ATA | 806 | This option enables full PIO support for the early Opti ATA |
| 807 | controllers found on some old motherboards. | 807 | controllers found on some old motherboards. |
| @@ -881,7 +881,7 @@ config PATA_SAMSUNG_CF | |||
| 881 | 881 | ||
| 882 | config PATA_WINBOND_VLB | 882 | config PATA_WINBOND_VLB |
| 883 | tristate "Winbond W83759A VLB PATA support (Experimental)" | 883 | tristate "Winbond W83759A VLB PATA support (Experimental)" |
| 884 | depends on ISA && EXPERIMENTAL | 884 | depends on ISA |
| 885 | select PATA_LEGACY | 885 | select PATA_LEGACY |
| 886 | help | 886 | help |
| 887 | Support for the Winbond W83759A controller on Vesa Local Bus | 887 | Support for the Winbond W83759A controller on Vesa Local Bus |
| @@ -909,7 +909,7 @@ config ATA_GENERIC | |||
| 909 | 909 | ||
| 910 | config PATA_LEGACY | 910 | config PATA_LEGACY |
| 911 | tristate "Legacy ISA PATA support (Experimental)" | 911 | tristate "Legacy ISA PATA support (Experimental)" |
| 912 | depends on (ISA || PCI) && EXPERIMENTAL | 912 | depends on (ISA || PCI) |
| 913 | help | 913 | help |
| 914 | This option enables support for ISA/VLB/PCI bus legacy PATA | 914 | This option enables support for ISA/VLB/PCI bus legacy PATA |
| 915 | ports and allows them to be accessed via the new ATA layer. | 915 | ports and allows them to be accessed via the new ATA layer. |
diff --git a/drivers/ata/pata_ep93xx.c b/drivers/ata/pata_ep93xx.c index 556222f04731..c1bfaf43d109 100644 --- a/drivers/ata/pata_ep93xx.c +++ b/drivers/ata/pata_ep93xx.c | |||
| @@ -31,6 +31,7 @@ | |||
| 31 | * Copyright (C) 2006 Tower Technologies | 31 | * Copyright (C) 2006 Tower Technologies |
| 32 | */ | 32 | */ |
| 33 | 33 | ||
| 34 | #include <linux/err.h> | ||
| 34 | #include <linux/kernel.h> | 35 | #include <linux/kernel.h> |
| 35 | #include <linux/module.h> | 36 | #include <linux/module.h> |
| 36 | #include <linux/init.h> | 37 | #include <linux/init.h> |
| @@ -937,9 +938,9 @@ static int ep93xx_pata_probe(struct platform_device *pdev) | |||
| 937 | goto err_rel_gpio; | 938 | goto err_rel_gpio; |
| 938 | } | 939 | } |
| 939 | 940 | ||
| 940 | ide_base = devm_request_and_ioremap(&pdev->dev, mem_res); | 941 | ide_base = devm_ioremap_resource(&pdev->dev, mem_res); |
| 941 | if (!ide_base) { | 942 | if (IS_ERR(ide_base)) { |
| 942 | err = -ENXIO; | 943 | err = PTR_ERR(ide_base); |
| 943 | goto err_rel_gpio; | 944 | goto err_rel_gpio; |
| 944 | } | 945 | } |
| 945 | 946 | ||
diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index c8b453939da2..07abd9d76f7f 100644 --- a/drivers/base/Kconfig +++ b/drivers/base/Kconfig | |||
| @@ -145,6 +145,17 @@ config EXTRA_FIRMWARE_DIR | |||
| 145 | this option you can point it elsewhere, such as /lib/firmware/ or | 145 | this option you can point it elsewhere, such as /lib/firmware/ or |
| 146 | some other directory containing the firmware files. | 146 | some other directory containing the firmware files. |
| 147 | 147 | ||
| 148 | config FW_LOADER_USER_HELPER | ||
| 149 | bool "Fallback user-helper invocation for firmware loading" | ||
| 150 | depends on FW_LOADER | ||
| 151 | default y | ||
| 152 | help | ||
| 153 | This option enables / disables the invocation of user-helper | ||
| 154 | (e.g. udev) for loading firmware files as a fallback after the | ||
| 155 | direct file loading in kernel fails. The user-mode helper is | ||
| 156 | no longer required unless you have a special firmware file that | ||
| 157 | resides in a non-standard path. | ||
| 158 | |||
| 148 | config DEBUG_DRIVER | 159 | config DEBUG_DRIVER |
| 149 | bool "Driver Core verbose debug messages" | 160 | bool "Driver Core verbose debug messages" |
| 150 | depends on DEBUG_KERNEL | 161 | depends on DEBUG_KERNEL |
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 24eb07868344..519865b53f76 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c | |||
| @@ -290,7 +290,7 @@ int bus_for_each_dev(struct bus_type *bus, struct device *start, | |||
| 290 | struct device *dev; | 290 | struct device *dev; |
| 291 | int error = 0; | 291 | int error = 0; |
| 292 | 292 | ||
| 293 | if (!bus) | 293 | if (!bus || !bus->p) |
| 294 | return -EINVAL; | 294 | return -EINVAL; |
| 295 | 295 | ||
| 296 | klist_iter_init_node(&bus->p->klist_devices, &i, | 296 | klist_iter_init_node(&bus->p->klist_devices, &i, |
| @@ -324,7 +324,7 @@ struct device *bus_find_device(struct bus_type *bus, | |||
| 324 | struct klist_iter i; | 324 | struct klist_iter i; |
| 325 | struct device *dev; | 325 | struct device *dev; |
| 326 | 326 | ||
| 327 | if (!bus) | 327 | if (!bus || !bus->p) |
| 328 | return NULL; | 328 | return NULL; |
| 329 | 329 | ||
| 330 | klist_iter_init_node(&bus->p->klist_devices, &i, | 330 | klist_iter_init_node(&bus->p->klist_devices, &i, |
| @@ -700,12 +700,12 @@ int bus_add_driver(struct device_driver *drv) | |||
| 700 | if (error) | 700 | if (error) |
| 701 | goto out_unregister; | 701 | goto out_unregister; |
| 702 | 702 | ||
| 703 | klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers); | ||
| 703 | if (drv->bus->p->drivers_autoprobe) { | 704 | if (drv->bus->p->drivers_autoprobe) { |
| 704 | error = driver_attach(drv); | 705 | error = driver_attach(drv); |
| 705 | if (error) | 706 | if (error) |
| 706 | goto out_unregister; | 707 | goto out_unregister; |
| 707 | } | 708 | } |
| 708 | klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers); | ||
| 709 | module_add_driver(drv->owner, drv); | 709 | module_add_driver(drv->owner, drv); |
| 710 | 710 | ||
| 711 | error = driver_create_file(drv, &driver_attr_uevent); | 711 | error = driver_create_file(drv, &driver_attr_uevent); |
diff --git a/drivers/base/class.c b/drivers/base/class.c index 03243d4002fd..3ce845471327 100644 --- a/drivers/base/class.c +++ b/drivers/base/class.c | |||
| @@ -420,8 +420,8 @@ EXPORT_SYMBOL_GPL(class_for_each_device); | |||
| 420 | * code. There's no locking restriction. | 420 | * code. There's no locking restriction. |
| 421 | */ | 421 | */ |
| 422 | struct device *class_find_device(struct class *class, struct device *start, | 422 | struct device *class_find_device(struct class *class, struct device *start, |
| 423 | void *data, | 423 | const void *data, |
| 424 | int (*match)(struct device *, void *)) | 424 | int (*match)(struct device *, const void *)) |
| 425 | { | 425 | { |
| 426 | struct class_dev_iter iter; | 426 | struct class_dev_iter iter; |
| 427 | struct device *dev; | 427 | struct device *dev; |
diff --git a/drivers/base/core.c b/drivers/base/core.c index a235085e343c..56536f4b0f6b 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
| @@ -1617,9 +1617,9 @@ struct device *device_create(struct class *class, struct device *parent, | |||
| 1617 | } | 1617 | } |
| 1618 | EXPORT_SYMBOL_GPL(device_create); | 1618 | EXPORT_SYMBOL_GPL(device_create); |
| 1619 | 1619 | ||
| 1620 | static int __match_devt(struct device *dev, void *data) | 1620 | static int __match_devt(struct device *dev, const void *data) |
| 1621 | { | 1621 | { |
| 1622 | dev_t *devt = data; | 1622 | const dev_t *devt = data; |
| 1623 | 1623 | ||
| 1624 | return dev->devt == *devt; | 1624 | return dev->devt == *devt; |
| 1625 | } | 1625 | } |
| @@ -1685,8 +1685,6 @@ EXPORT_SYMBOL_GPL(device_destroy); | |||
| 1685 | */ | 1685 | */ |
| 1686 | int device_rename(struct device *dev, const char *new_name) | 1686 | int device_rename(struct device *dev, const char *new_name) |
| 1687 | { | 1687 | { |
| 1688 | char *old_class_name = NULL; | ||
| 1689 | char *new_class_name = NULL; | ||
| 1690 | char *old_device_name = NULL; | 1688 | char *old_device_name = NULL; |
| 1691 | int error; | 1689 | int error; |
| 1692 | 1690 | ||
| @@ -1717,8 +1715,6 @@ int device_rename(struct device *dev, const char *new_name) | |||
| 1717 | out: | 1715 | out: |
| 1718 | put_device(dev); | 1716 | put_device(dev); |
| 1719 | 1717 | ||
| 1720 | kfree(new_class_name); | ||
| 1721 | kfree(old_class_name); | ||
| 1722 | kfree(old_device_name); | 1718 | kfree(old_device_name); |
| 1723 | 1719 | ||
| 1724 | return error; | 1720 | return error; |
diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 656310156dde..bb5645ea0282 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c | |||
| @@ -173,6 +173,8 @@ static int deferred_probe_initcall(void) | |||
| 173 | 173 | ||
| 174 | driver_deferred_probe_enable = true; | 174 | driver_deferred_probe_enable = true; |
| 175 | driver_deferred_probe_trigger(); | 175 | driver_deferred_probe_trigger(); |
| 176 | /* Sort as many dependencies as possible before exiting initcalls */ | ||
| 177 | flush_workqueue(deferred_wq); | ||
| 176 | return 0; | 178 | return 0; |
| 177 | } | 179 | } |
| 178 | late_initcall(deferred_probe_initcall); | 180 | late_initcall(deferred_probe_initcall); |
diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c index a3f79c495a41..ff5b745c4705 100644 --- a/drivers/base/dma-buf.c +++ b/drivers/base/dma-buf.c | |||
| @@ -134,15 +134,14 @@ EXPORT_SYMBOL_GPL(dma_buf_export); | |||
| 134 | */ | 134 | */ |
| 135 | int dma_buf_fd(struct dma_buf *dmabuf, int flags) | 135 | int dma_buf_fd(struct dma_buf *dmabuf, int flags) |
| 136 | { | 136 | { |
| 137 | int error, fd; | 137 | int fd; |
| 138 | 138 | ||
| 139 | if (!dmabuf || !dmabuf->file) | 139 | if (!dmabuf || !dmabuf->file) |
| 140 | return -EINVAL; | 140 | return -EINVAL; |
| 141 | 141 | ||
| 142 | error = get_unused_fd_flags(flags); | 142 | fd = get_unused_fd_flags(flags); |
| 143 | if (error < 0) | 143 | if (fd < 0) |
| 144 | return error; | 144 | return fd; |
| 145 | fd = error; | ||
| 146 | 145 | ||
| 147 | fd_install(fd, dmabuf->file); | 146 | fd_install(fd, dmabuf->file); |
| 148 | 147 | ||
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index b392b353be39..4a223fedcd73 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c | |||
| @@ -88,11 +88,6 @@ enum { | |||
| 88 | FW_STATUS_ABORT, | 88 | FW_STATUS_ABORT, |
| 89 | }; | 89 | }; |
| 90 | 90 | ||
| 91 | enum fw_buf_fmt { | ||
| 92 | VMALLOC_BUF, /* used in direct loading */ | ||
| 93 | PAGE_BUF, /* used in loading via userspace */ | ||
| 94 | }; | ||
| 95 | |||
| 96 | static int loading_timeout = 60; /* In seconds */ | 91 | static int loading_timeout = 60; /* In seconds */ |
| 97 | 92 | ||
| 98 | static inline long firmware_loading_timeout(void) | 93 | static inline long firmware_loading_timeout(void) |
| @@ -128,12 +123,14 @@ struct firmware_buf { | |||
| 128 | struct completion completion; | 123 | struct completion completion; |
| 129 | struct firmware_cache *fwc; | 124 | struct firmware_cache *fwc; |
| 130 | unsigned long status; | 125 | unsigned long status; |
| 131 | enum fw_buf_fmt fmt; | ||
| 132 | void *data; | 126 | void *data; |
| 133 | size_t size; | 127 | size_t size; |
| 128 | #ifdef CONFIG_FW_LOADER_USER_HELPER | ||
| 129 | bool is_paged_buf; | ||
| 134 | struct page **pages; | 130 | struct page **pages; |
| 135 | int nr_pages; | 131 | int nr_pages; |
| 136 | int page_array_size; | 132 | int page_array_size; |
| 133 | #endif | ||
| 137 | char fw_id[]; | 134 | char fw_id[]; |
| 138 | }; | 135 | }; |
| 139 | 136 | ||
| @@ -142,14 +139,6 @@ struct fw_cache_entry { | |||
| 142 | char name[]; | 139 | char name[]; |
| 143 | }; | 140 | }; |
| 144 | 141 | ||
| 145 | struct firmware_priv { | ||
| 146 | struct delayed_work timeout_work; | ||
| 147 | bool nowait; | ||
| 148 | struct device dev; | ||
| 149 | struct firmware_buf *buf; | ||
| 150 | struct firmware *fw; | ||
| 151 | }; | ||
| 152 | |||
| 153 | struct fw_name_devm { | 142 | struct fw_name_devm { |
| 154 | unsigned long magic; | 143 | unsigned long magic; |
| 155 | char name[]; | 144 | char name[]; |
| @@ -182,7 +171,6 @@ static struct firmware_buf *__allocate_fw_buf(const char *fw_name, | |||
| 182 | strcpy(buf->fw_id, fw_name); | 171 | strcpy(buf->fw_id, fw_name); |
| 183 | buf->fwc = fwc; | 172 | buf->fwc = fwc; |
| 184 | init_completion(&buf->completion); | 173 | init_completion(&buf->completion); |
| 185 | buf->fmt = VMALLOC_BUF; | ||
| 186 | 174 | ||
| 187 | pr_debug("%s: fw-%s buf=%p\n", __func__, fw_name, buf); | 175 | pr_debug("%s: fw-%s buf=%p\n", __func__, fw_name, buf); |
| 188 | 176 | ||
| @@ -240,7 +228,6 @@ static void __fw_free_buf(struct kref *ref) | |||
| 240 | { | 228 | { |
| 241 | struct firmware_buf *buf = to_fwbuf(ref); | 229 | struct firmware_buf *buf = to_fwbuf(ref); |
| 242 | struct firmware_cache *fwc = buf->fwc; | 230 | struct firmware_cache *fwc = buf->fwc; |
| 243 | int i; | ||
| 244 | 231 | ||
| 245 | pr_debug("%s: fw-%s buf=%p data=%p size=%u\n", | 232 | pr_debug("%s: fw-%s buf=%p data=%p size=%u\n", |
| 246 | __func__, buf->fw_id, buf, buf->data, | 233 | __func__, buf->fw_id, buf, buf->data, |
| @@ -249,13 +236,15 @@ static void __fw_free_buf(struct kref *ref) | |||
| 249 | list_del(&buf->list); | 236 | list_del(&buf->list); |
| 250 | spin_unlock(&fwc->lock); | 237 | spin_unlock(&fwc->lock); |
| 251 | 238 | ||
| 252 | 239 | #ifdef CONFIG_FW_LOADER_USER_HELPER | |
| 253 | if (buf->fmt == PAGE_BUF) { | 240 | if (buf->is_paged_buf) { |
| 241 | int i; | ||
| 254 | vunmap(buf->data); | 242 | vunmap(buf->data); |
| 255 | for (i = 0; i < buf->nr_pages; i++) | 243 | for (i = 0; i < buf->nr_pages; i++) |
| 256 | __free_page(buf->pages[i]); | 244 | __free_page(buf->pages[i]); |
| 257 | kfree(buf->pages); | 245 | kfree(buf->pages); |
| 258 | } else | 246 | } else |
| 247 | #endif | ||
| 259 | vfree(buf->data); | 248 | vfree(buf->data); |
| 260 | kfree(buf); | 249 | kfree(buf); |
| 261 | } | 250 | } |
| @@ -319,7 +308,8 @@ static bool fw_read_file_contents(struct file *file, struct firmware_buf *fw_buf | |||
| 319 | return true; | 308 | return true; |
| 320 | } | 309 | } |
| 321 | 310 | ||
| 322 | static bool fw_get_filesystem_firmware(struct firmware_buf *buf) | 311 | static bool fw_get_filesystem_firmware(struct device *device, |
| 312 | struct firmware_buf *buf) | ||
| 323 | { | 313 | { |
| 324 | int i; | 314 | int i; |
| 325 | bool success = false; | 315 | bool success = false; |
| @@ -343,9 +333,114 @@ static bool fw_get_filesystem_firmware(struct firmware_buf *buf) | |||
| 343 | break; | 333 | break; |
| 344 | } | 334 | } |
| 345 | __putname(path); | 335 | __putname(path); |
| 336 | |||
| 337 | if (success) { | ||
| 338 | dev_dbg(device, "firmware: direct-loading firmware %s\n", | ||
| 339 | buf->fw_id); | ||
| 340 | mutex_lock(&fw_lock); | ||
| 341 | set_bit(FW_STATUS_DONE, &buf->status); | ||
| 342 | complete_all(&buf->completion); | ||
| 343 | mutex_unlock(&fw_lock); | ||
| 344 | } | ||
| 345 | |||
| 346 | return success; | 346 | return success; |
| 347 | } | 347 | } |
| 348 | 348 | ||
| 349 | /* firmware holds the ownership of pages */ | ||
| 350 | static void firmware_free_data(const struct firmware *fw) | ||
| 351 | { | ||
| 352 | /* Loaded directly? */ | ||
| 353 | if (!fw->priv) { | ||
| 354 | vfree(fw->data); | ||
| 355 | return; | ||
| 356 | } | ||
| 357 | fw_free_buf(fw->priv); | ||
| 358 | } | ||
| 359 | |||
| 360 | /* store the pages buffer info firmware from buf */ | ||
| 361 | static void fw_set_page_data(struct firmware_buf *buf, struct firmware *fw) | ||
| 362 | { | ||
| 363 | fw->priv = buf; | ||
| 364 | #ifdef CONFIG_FW_LOADER_USER_HELPER | ||
| 365 | fw->pages = buf->pages; | ||
| 366 | #endif | ||
| 367 | fw->size = buf->size; | ||
| 368 | fw->data = buf->data; | ||
| 369 | |||
| 370 | pr_debug("%s: fw-%s buf=%p data=%p size=%u\n", | ||
| 371 | __func__, buf->fw_id, buf, buf->data, | ||
| 372 | (unsigned int)buf->size); | ||
| 373 | } | ||
| 374 | |||
| 375 | #ifdef CONFIG_PM_SLEEP | ||
| 376 | static void fw_name_devm_release(struct device *dev, void *res) | ||
| 377 | { | ||
| 378 | struct fw_name_devm *fwn = res; | ||
| 379 | |||
| 380 | if (fwn->magic == (unsigned long)&fw_cache) | ||
| 381 | pr_debug("%s: fw_name-%s devm-%p released\n", | ||
| 382 | __func__, fwn->name, res); | ||
| 383 | } | ||
| 384 | |||
| 385 | static int fw_devm_match(struct device *dev, void *res, | ||
| 386 | void *match_data) | ||
| 387 | { | ||
| 388 | struct fw_name_devm *fwn = res; | ||
| 389 | |||
| 390 | return (fwn->magic == (unsigned long)&fw_cache) && | ||
| 391 | !strcmp(fwn->name, match_data); | ||
| 392 | } | ||
| 393 | |||
| 394 | static struct fw_name_devm *fw_find_devm_name(struct device *dev, | ||
| 395 | const char *name) | ||
| 396 | { | ||
| 397 | struct fw_name_devm *fwn; | ||
| 398 | |||
| 399 | fwn = devres_find(dev, fw_name_devm_release, | ||
| 400 | fw_devm_match, (void *)name); | ||
| 401 | return fwn; | ||
| 402 | } | ||
| 403 | |||
| 404 | /* add firmware name into devres list */ | ||
| 405 | static int fw_add_devm_name(struct device *dev, const char *name) | ||
| 406 | { | ||
| 407 | struct fw_name_devm *fwn; | ||
| 408 | |||
| 409 | fwn = fw_find_devm_name(dev, name); | ||
| 410 | if (fwn) | ||
| 411 | return 1; | ||
| 412 | |||
| 413 | fwn = devres_alloc(fw_name_devm_release, sizeof(struct fw_name_devm) + | ||
| 414 | strlen(name) + 1, GFP_KERNEL); | ||
| 415 | if (!fwn) | ||
| 416 | return -ENOMEM; | ||
| 417 | |||
| 418 | fwn->magic = (unsigned long)&fw_cache; | ||
| 419 | strcpy(fwn->name, name); | ||
| 420 | devres_add(dev, fwn); | ||
| 421 | |||
| 422 | return 0; | ||
| 423 | } | ||
| 424 | #else | ||
| 425 | static int fw_add_devm_name(struct device *dev, const char *name) | ||
| 426 | { | ||
| 427 | return 0; | ||
| 428 | } | ||
| 429 | #endif | ||
| 430 | |||
| 431 | |||
| 432 | /* | ||
| 433 | * user-mode helper code | ||
| 434 | */ | ||
| 435 | #ifdef CONFIG_FW_LOADER_USER_HELPER | ||
| 436 | struct firmware_priv { | ||
| 437 | struct delayed_work timeout_work; | ||
| 438 | bool nowait; | ||
| 439 | struct device dev; | ||
| 440 | struct firmware_buf *buf; | ||
| 441 | struct firmware *fw; | ||
| 442 | }; | ||
| 443 | |||
| 349 | static struct firmware_priv *to_firmware_priv(struct device *dev) | 444 | static struct firmware_priv *to_firmware_priv(struct device *dev) |
| 350 | { | 445 | { |
| 351 | return container_of(dev, struct firmware_priv, dev); | 446 | return container_of(dev, struct firmware_priv, dev); |
| @@ -359,6 +454,9 @@ static void fw_load_abort(struct firmware_priv *fw_priv) | |||
| 359 | complete_all(&buf->completion); | 454 | complete_all(&buf->completion); |
| 360 | } | 455 | } |
| 361 | 456 | ||
| 457 | #define is_fw_load_aborted(buf) \ | ||
| 458 | test_bit(FW_STATUS_ABORT, &(buf)->status) | ||
| 459 | |||
| 362 | static ssize_t firmware_timeout_show(struct class *class, | 460 | static ssize_t firmware_timeout_show(struct class *class, |
| 363 | struct class_attribute *attr, | 461 | struct class_attribute *attr, |
| 364 | char *buf) | 462 | char *buf) |
| @@ -435,17 +533,6 @@ static ssize_t firmware_loading_show(struct device *dev, | |||
| 435 | return sprintf(buf, "%d\n", loading); | 533 | return sprintf(buf, "%d\n", loading); |
| 436 | } | 534 | } |
| 437 | 535 | ||
| 438 | /* firmware holds the ownership of pages */ | ||
| 439 | static void firmware_free_data(const struct firmware *fw) | ||
| 440 | { | ||
| 441 | /* Loaded directly? */ | ||
| 442 | if (!fw->priv) { | ||
| 443 | vfree(fw->data); | ||
| 444 | return; | ||
| 445 | } | ||
| 446 | fw_free_buf(fw->priv); | ||
| 447 | } | ||
| 448 | |||
| 449 | /* Some architectures don't have PAGE_KERNEL_RO */ | 536 | /* Some architectures don't have PAGE_KERNEL_RO */ |
| 450 | #ifndef PAGE_KERNEL_RO | 537 | #ifndef PAGE_KERNEL_RO |
| 451 | #define PAGE_KERNEL_RO PAGE_KERNEL | 538 | #define PAGE_KERNEL_RO PAGE_KERNEL |
| @@ -454,7 +541,7 @@ static void firmware_free_data(const struct firmware *fw) | |||
| 454 | /* one pages buffer should be mapped/unmapped only once */ | 541 | /* one pages buffer should be mapped/unmapped only once */ |
| 455 | static int fw_map_pages_buf(struct firmware_buf *buf) | 542 | static int fw_map_pages_buf(struct firmware_buf *buf) |
| 456 | { | 543 | { |
| 457 | if (buf->fmt != PAGE_BUF) | 544 | if (!buf->is_paged_buf) |
| 458 | return 0; | 545 | return 0; |
| 459 | 546 | ||
| 460 | if (buf->data) | 547 | if (buf->data) |
| @@ -727,171 +814,16 @@ exit: | |||
| 727 | return fw_priv; | 814 | return fw_priv; |
| 728 | } | 815 | } |
| 729 | 816 | ||
| 730 | /* store the pages buffer info firmware from buf */ | 817 | /* load a firmware via user helper */ |
| 731 | static void fw_set_page_data(struct firmware_buf *buf, struct firmware *fw) | ||
| 732 | { | ||
| 733 | fw->priv = buf; | ||
| 734 | fw->pages = buf->pages; | ||
| 735 | fw->size = buf->size; | ||
| 736 | fw->data = buf->data; | ||
| 737 | |||
| 738 | pr_debug("%s: fw-%s buf=%p data=%p size=%u\n", | ||
| 739 | __func__, buf->fw_id, buf, buf->data, | ||
| 740 | (unsigned int)buf->size); | ||
| 741 | } | ||
| 742 | |||
| 743 | #ifdef CONFIG_PM_SLEEP | ||
| 744 | static void fw_name_devm_release(struct device *dev, void *res) | ||
| 745 | { | ||
| 746 | struct fw_name_devm *fwn = res; | ||
| 747 | |||
| 748 | if (fwn->magic == (unsigned long)&fw_cache) | ||
| 749 | pr_debug("%s: fw_name-%s devm-%p released\n", | ||
| 750 | __func__, fwn->name, res); | ||
| 751 | } | ||
| 752 | |||
| 753 | static int fw_devm_match(struct device *dev, void *res, | ||
| 754 | void *match_data) | ||
| 755 | { | ||
| 756 | struct fw_name_devm *fwn = res; | ||
| 757 | |||
| 758 | return (fwn->magic == (unsigned long)&fw_cache) && | ||
| 759 | !strcmp(fwn->name, match_data); | ||
| 760 | } | ||
| 761 | |||
| 762 | static struct fw_name_devm *fw_find_devm_name(struct device *dev, | ||
| 763 | const char *name) | ||
| 764 | { | ||
| 765 | struct fw_name_devm *fwn; | ||
| 766 | |||
| 767 | fwn = devres_find(dev, fw_name_devm_release, | ||
| 768 | fw_devm_match, (void *)name); | ||
| 769 | return fwn; | ||
| 770 | } | ||
| 771 | |||
| 772 | /* add firmware name into devres list */ | ||
| 773 | static int fw_add_devm_name(struct device *dev, const char *name) | ||
| 774 | { | ||
| 775 | struct fw_name_devm *fwn; | ||
| 776 | |||
| 777 | fwn = fw_find_devm_name(dev, name); | ||
| 778 | if (fwn) | ||
| 779 | return 1; | ||
| 780 | |||
| 781 | fwn = devres_alloc(fw_name_devm_release, sizeof(struct fw_name_devm) + | ||
| 782 | strlen(name) + 1, GFP_KERNEL); | ||
| 783 | if (!fwn) | ||
| 784 | return -ENOMEM; | ||
| 785 | |||
| 786 | fwn->magic = (unsigned long)&fw_cache; | ||
| 787 | strcpy(fwn->name, name); | ||
| 788 | devres_add(dev, fwn); | ||
| 789 | |||
| 790 | return 0; | ||
| 791 | } | ||
| 792 | #else | ||
| 793 | static int fw_add_devm_name(struct device *dev, const char *name) | ||
| 794 | { | ||
| 795 | return 0; | ||
| 796 | } | ||
| 797 | #endif | ||
| 798 | |||
| 799 | static void _request_firmware_cleanup(const struct firmware **firmware_p) | ||
| 800 | { | ||
| 801 | release_firmware(*firmware_p); | ||
| 802 | *firmware_p = NULL; | ||
| 803 | } | ||
| 804 | |||
| 805 | static struct firmware_priv * | ||
| 806 | _request_firmware_prepare(const struct firmware **firmware_p, const char *name, | ||
| 807 | struct device *device, bool uevent, bool nowait) | ||
| 808 | { | ||
| 809 | struct firmware *firmware; | ||
| 810 | struct firmware_priv *fw_priv = NULL; | ||
| 811 | struct firmware_buf *buf; | ||
| 812 | int ret; | ||
| 813 | |||
| 814 | if (!firmware_p) | ||
| 815 | return ERR_PTR(-EINVAL); | ||
| 816 | |||
| 817 | *firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL); | ||
| 818 | if (!firmware) { | ||
| 819 | dev_err(device, "%s: kmalloc(struct firmware) failed\n", | ||
| 820 | __func__); | ||
| 821 | return ERR_PTR(-ENOMEM); | ||
| 822 | } | ||
| 823 | |||
| 824 | if (fw_get_builtin_firmware(firmware, name)) { | ||
| 825 | dev_dbg(device, "firmware: using built-in firmware %s\n", name); | ||
| 826 | return NULL; | ||
| 827 | } | ||
| 828 | |||
| 829 | ret = fw_lookup_and_allocate_buf(name, &fw_cache, &buf); | ||
| 830 | if (!ret) | ||
| 831 | fw_priv = fw_create_instance(firmware, name, device, | ||
| 832 | uevent, nowait); | ||
| 833 | |||
| 834 | if (IS_ERR(fw_priv) || ret < 0) { | ||
| 835 | kfree(firmware); | ||
| 836 | *firmware_p = NULL; | ||
| 837 | return ERR_PTR(-ENOMEM); | ||
| 838 | } else if (fw_priv) { | ||
| 839 | fw_priv->buf = buf; | ||
| 840 | |||
| 841 | /* | ||
| 842 | * bind with 'buf' now to avoid warning in failure path | ||
| 843 | * of requesting firmware. | ||
| 844 | */ | ||
| 845 | firmware->priv = buf; | ||
| 846 | return fw_priv; | ||
| 847 | } | ||
| 848 | |||
| 849 | /* share the cached buf, which is inprogessing or completed */ | ||
| 850 | check_status: | ||
| 851 | mutex_lock(&fw_lock); | ||
| 852 | if (test_bit(FW_STATUS_ABORT, &buf->status)) { | ||
| 853 | fw_priv = ERR_PTR(-ENOENT); | ||
| 854 | firmware->priv = buf; | ||
| 855 | _request_firmware_cleanup(firmware_p); | ||
| 856 | goto exit; | ||
| 857 | } else if (test_bit(FW_STATUS_DONE, &buf->status)) { | ||
| 858 | fw_priv = NULL; | ||
| 859 | fw_set_page_data(buf, firmware); | ||
| 860 | goto exit; | ||
| 861 | } | ||
| 862 | mutex_unlock(&fw_lock); | ||
| 863 | wait_for_completion(&buf->completion); | ||
| 864 | goto check_status; | ||
| 865 | |||
| 866 | exit: | ||
| 867 | mutex_unlock(&fw_lock); | ||
| 868 | return fw_priv; | ||
| 869 | } | ||
| 870 | |||
| 871 | static int _request_firmware_load(struct firmware_priv *fw_priv, bool uevent, | 818 | static int _request_firmware_load(struct firmware_priv *fw_priv, bool uevent, |
| 872 | long timeout) | 819 | long timeout) |
| 873 | { | 820 | { |
| 874 | int retval = 0; | 821 | int retval = 0; |
| 875 | struct device *f_dev = &fw_priv->dev; | 822 | struct device *f_dev = &fw_priv->dev; |
| 876 | struct firmware_buf *buf = fw_priv->buf; | 823 | struct firmware_buf *buf = fw_priv->buf; |
| 877 | struct firmware_cache *fwc = &fw_cache; | ||
| 878 | int direct_load = 0; | ||
| 879 | |||
| 880 | /* try direct loading from fs first */ | ||
| 881 | if (fw_get_filesystem_firmware(buf)) { | ||
| 882 | dev_dbg(f_dev->parent, "firmware: direct-loading" | ||
| 883 | " firmware %s\n", buf->fw_id); | ||
| 884 | |||
| 885 | mutex_lock(&fw_lock); | ||
| 886 | set_bit(FW_STATUS_DONE, &buf->status); | ||
| 887 | mutex_unlock(&fw_lock); | ||
| 888 | complete_all(&buf->completion); | ||
| 889 | direct_load = 1; | ||
| 890 | goto handle_fw; | ||
| 891 | } | ||
| 892 | 824 | ||
| 893 | /* fall back on userspace loading */ | 825 | /* fall back on userspace loading */ |
| 894 | buf->fmt = PAGE_BUF; | 826 | buf->is_paged_buf = true; |
| 895 | 827 | ||
| 896 | dev_set_uevent_suppress(f_dev, true); | 828 | dev_set_uevent_suppress(f_dev, true); |
| 897 | 829 | ||
| @@ -929,47 +861,196 @@ static int _request_firmware_load(struct firmware_priv *fw_priv, bool uevent, | |||
| 929 | 861 | ||
| 930 | cancel_delayed_work_sync(&fw_priv->timeout_work); | 862 | cancel_delayed_work_sync(&fw_priv->timeout_work); |
| 931 | 863 | ||
| 932 | handle_fw: | 864 | fw_priv->buf = NULL; |
| 865 | |||
| 866 | device_remove_file(f_dev, &dev_attr_loading); | ||
| 867 | err_del_bin_attr: | ||
| 868 | device_remove_bin_file(f_dev, &firmware_attr_data); | ||
| 869 | err_del_dev: | ||
| 870 | device_del(f_dev); | ||
| 871 | err_put_dev: | ||
| 872 | put_device(f_dev); | ||
| 873 | return retval; | ||
| 874 | } | ||
| 875 | |||
| 876 | static int fw_load_from_user_helper(struct firmware *firmware, | ||
| 877 | const char *name, struct device *device, | ||
| 878 | bool uevent, bool nowait, long timeout) | ||
| 879 | { | ||
| 880 | struct firmware_priv *fw_priv; | ||
| 881 | |||
| 882 | fw_priv = fw_create_instance(firmware, name, device, uevent, nowait); | ||
| 883 | if (IS_ERR(fw_priv)) | ||
| 884 | return PTR_ERR(fw_priv); | ||
| 885 | |||
| 886 | fw_priv->buf = firmware->priv; | ||
| 887 | return _request_firmware_load(fw_priv, uevent, timeout); | ||
| 888 | } | ||
| 889 | #else /* CONFIG_FW_LOADER_USER_HELPER */ | ||
| 890 | static inline int | ||
| 891 | fw_load_from_user_helper(struct firmware *firmware, const char *name, | ||
| 892 | struct device *device, bool uevent, bool nowait, | ||
| 893 | long timeout) | ||
| 894 | { | ||
| 895 | return -ENOENT; | ||
| 896 | } | ||
| 897 | |||
| 898 | /* No abort during direct loading */ | ||
| 899 | #define is_fw_load_aborted(buf) false | ||
| 900 | |||
| 901 | #endif /* CONFIG_FW_LOADER_USER_HELPER */ | ||
| 902 | |||
| 903 | |||
| 904 | /* wait until the shared firmware_buf becomes ready (or error) */ | ||
| 905 | static int sync_cached_firmware_buf(struct firmware_buf *buf) | ||
| 906 | { | ||
| 907 | int ret = 0; | ||
| 908 | |||
| 909 | mutex_lock(&fw_lock); | ||
| 910 | while (!test_bit(FW_STATUS_DONE, &buf->status)) { | ||
| 911 | if (is_fw_load_aborted(buf)) { | ||
| 912 | ret = -ENOENT; | ||
| 913 | break; | ||
| 914 | } | ||
| 915 | mutex_unlock(&fw_lock); | ||
| 916 | wait_for_completion(&buf->completion); | ||
| 917 | mutex_lock(&fw_lock); | ||
| 918 | } | ||
| 919 | mutex_unlock(&fw_lock); | ||
| 920 | return ret; | ||
| 921 | } | ||
| 922 | |||
| 923 | /* prepare firmware and firmware_buf structs; | ||
| 924 | * return 0 if a firmware is already assigned, 1 if need to load one, | ||
| 925 | * or a negative error code | ||
| 926 | */ | ||
| 927 | static int | ||
| 928 | _request_firmware_prepare(struct firmware **firmware_p, const char *name, | ||
| 929 | struct device *device) | ||
| 930 | { | ||
| 931 | struct firmware *firmware; | ||
| 932 | struct firmware_buf *buf; | ||
| 933 | int ret; | ||
| 934 | |||
| 935 | *firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL); | ||
| 936 | if (!firmware) { | ||
| 937 | dev_err(device, "%s: kmalloc(struct firmware) failed\n", | ||
| 938 | __func__); | ||
| 939 | return -ENOMEM; | ||
| 940 | } | ||
| 941 | |||
| 942 | if (fw_get_builtin_firmware(firmware, name)) { | ||
| 943 | dev_dbg(device, "firmware: using built-in firmware %s\n", name); | ||
| 944 | return 0; /* assigned */ | ||
| 945 | } | ||
| 946 | |||
| 947 | ret = fw_lookup_and_allocate_buf(name, &fw_cache, &buf); | ||
| 948 | |||
| 949 | /* | ||
| 950 | * bind with 'buf' now to avoid warning in failure path | ||
| 951 | * of requesting firmware. | ||
| 952 | */ | ||
| 953 | firmware->priv = buf; | ||
| 954 | |||
| 955 | if (ret > 0) { | ||
| 956 | ret = sync_cached_firmware_buf(buf); | ||
| 957 | if (!ret) { | ||
| 958 | fw_set_page_data(buf, firmware); | ||
| 959 | return 0; /* assigned */ | ||
| 960 | } | ||
| 961 | } | ||
| 962 | |||
| 963 | if (ret < 0) | ||
| 964 | return ret; | ||
| 965 | return 1; /* need to load */ | ||
| 966 | } | ||
| 967 | |||
| 968 | static int assign_firmware_buf(struct firmware *fw, struct device *device) | ||
| 969 | { | ||
| 970 | struct firmware_buf *buf = fw->priv; | ||
| 971 | |||
| 933 | mutex_lock(&fw_lock); | 972 | mutex_lock(&fw_lock); |
| 934 | if (!buf->size || test_bit(FW_STATUS_ABORT, &buf->status)) | 973 | if (!buf->size || is_fw_load_aborted(buf)) { |
| 935 | retval = -ENOENT; | 974 | mutex_unlock(&fw_lock); |
| 975 | return -ENOENT; | ||
| 976 | } | ||
| 936 | 977 | ||
| 937 | /* | 978 | /* |
| 938 | * add firmware name into devres list so that we can auto cache | 979 | * add firmware name into devres list so that we can auto cache |
| 939 | * and uncache firmware for device. | 980 | * and uncache firmware for device. |
| 940 | * | 981 | * |
| 941 | * f_dev->parent may has been deleted already, but the problem | 982 | * device may has been deleted already, but the problem |
| 942 | * should be fixed in devres or driver core. | 983 | * should be fixed in devres or driver core. |
| 943 | */ | 984 | */ |
| 944 | if (!retval && f_dev->parent) | 985 | if (device) |
| 945 | fw_add_devm_name(f_dev->parent, buf->fw_id); | 986 | fw_add_devm_name(device, buf->fw_id); |
| 946 | 987 | ||
| 947 | /* | 988 | /* |
| 948 | * After caching firmware image is started, let it piggyback | 989 | * After caching firmware image is started, let it piggyback |
| 949 | * on request firmware. | 990 | * on request firmware. |
| 950 | */ | 991 | */ |
| 951 | if (!retval && fwc->state == FW_LOADER_START_CACHE) { | 992 | if (buf->fwc->state == FW_LOADER_START_CACHE) { |
| 952 | if (fw_cache_piggyback_on_request(buf->fw_id)) | 993 | if (fw_cache_piggyback_on_request(buf->fw_id)) |
| 953 | kref_get(&buf->ref); | 994 | kref_get(&buf->ref); |
| 954 | } | 995 | } |
| 955 | 996 | ||
| 956 | /* pass the pages buffer to driver at the last minute */ | 997 | /* pass the pages buffer to driver at the last minute */ |
| 957 | fw_set_page_data(buf, fw_priv->fw); | 998 | fw_set_page_data(buf, fw); |
| 958 | |||
| 959 | fw_priv->buf = NULL; | ||
| 960 | mutex_unlock(&fw_lock); | 999 | mutex_unlock(&fw_lock); |
| 1000 | return 0; | ||
| 1001 | } | ||
| 961 | 1002 | ||
| 962 | if (direct_load) | 1003 | /* called from request_firmware() and request_firmware_work_func() */ |
| 963 | goto err_put_dev; | 1004 | static int |
| 1005 | _request_firmware(const struct firmware **firmware_p, const char *name, | ||
| 1006 | struct device *device, bool uevent, bool nowait) | ||
| 1007 | { | ||
| 1008 | struct firmware *fw; | ||
| 1009 | long timeout; | ||
| 1010 | int ret; | ||
| 964 | 1011 | ||
| 965 | device_remove_file(f_dev, &dev_attr_loading); | 1012 | if (!firmware_p) |
| 966 | err_del_bin_attr: | 1013 | return -EINVAL; |
| 967 | device_remove_bin_file(f_dev, &firmware_attr_data); | 1014 | |
| 968 | err_del_dev: | 1015 | ret = _request_firmware_prepare(&fw, name, device); |
| 969 | device_del(f_dev); | 1016 | if (ret <= 0) /* error or already assigned */ |
| 970 | err_put_dev: | 1017 | goto out; |
| 971 | put_device(f_dev); | 1018 | |
| 972 | return retval; | 1019 | ret = 0; |
| 1020 | timeout = firmware_loading_timeout(); | ||
| 1021 | if (nowait) { | ||
| 1022 | timeout = usermodehelper_read_lock_wait(timeout); | ||
| 1023 | if (!timeout) { | ||
| 1024 | dev_dbg(device, "firmware: %s loading timed out\n", | ||
| 1025 | name); | ||
| 1026 | ret = -EBUSY; | ||
| 1027 | goto out; | ||
| 1028 | } | ||
| 1029 | } else { | ||
| 1030 | ret = usermodehelper_read_trylock(); | ||
| 1031 | if (WARN_ON(ret)) { | ||
| 1032 | dev_err(device, "firmware: %s will not be loaded\n", | ||
| 1033 | name); | ||
| 1034 | goto out; | ||
| 1035 | } | ||
| 1036 | } | ||
| 1037 | |||
| 1038 | if (!fw_get_filesystem_firmware(device, fw->priv)) | ||
| 1039 | ret = fw_load_from_user_helper(fw, name, device, | ||
| 1040 | uevent, nowait, timeout); | ||
| 1041 | if (!ret) | ||
| 1042 | ret = assign_firmware_buf(fw, device); | ||
| 1043 | |||
| 1044 | usermodehelper_read_unlock(); | ||
| 1045 | |||
| 1046 | out: | ||
| 1047 | if (ret < 0) { | ||
| 1048 | release_firmware(fw); | ||
| 1049 | fw = NULL; | ||
| 1050 | } | ||
| 1051 | |||
| 1052 | *firmware_p = fw; | ||
| 1053 | return ret; | ||
| 973 | } | 1054 | } |
| 974 | 1055 | ||
| 975 | /** | 1056 | /** |
| @@ -996,26 +1077,7 @@ int | |||
| 996 | request_firmware(const struct firmware **firmware_p, const char *name, | 1077 | request_firmware(const struct firmware **firmware_p, const char *name, |
| 997 | struct device *device) | 1078 | struct device *device) |
| 998 | { | 1079 | { |
| 999 | struct firmware_priv *fw_priv; | 1080 | return _request_firmware(firmware_p, name, device, true, false); |
| 1000 | int ret; | ||
| 1001 | |||
| 1002 | fw_priv = _request_firmware_prepare(firmware_p, name, device, true, | ||
| 1003 | false); | ||
| 1004 | if (IS_ERR_OR_NULL(fw_priv)) | ||
| 1005 | return PTR_RET(fw_priv); | ||
| 1006 | |||
| 1007 | ret = usermodehelper_read_trylock(); | ||
| 1008 | if (WARN_ON(ret)) { | ||
| 1009 | dev_err(device, "firmware: %s will not be loaded\n", name); | ||
| 1010 | } else { | ||
| 1011 | ret = _request_firmware_load(fw_priv, true, | ||
| 1012 | firmware_loading_timeout()); | ||
| 1013 | usermodehelper_read_unlock(); | ||
| 1014 | } | ||
| 1015 | if (ret) | ||
| 1016 | _request_firmware_cleanup(firmware_p); | ||
| 1017 | |||
| 1018 | return ret; | ||
| 1019 | } | 1081 | } |
| 1020 | 1082 | ||
| 1021 | /** | 1083 | /** |
| @@ -1046,33 +1108,13 @@ static void request_firmware_work_func(struct work_struct *work) | |||
| 1046 | { | 1108 | { |
| 1047 | struct firmware_work *fw_work; | 1109 | struct firmware_work *fw_work; |
| 1048 | const struct firmware *fw; | 1110 | const struct firmware *fw; |
| 1049 | struct firmware_priv *fw_priv; | ||
| 1050 | long timeout; | ||
| 1051 | int ret; | ||
| 1052 | 1111 | ||
| 1053 | fw_work = container_of(work, struct firmware_work, work); | 1112 | fw_work = container_of(work, struct firmware_work, work); |
| 1054 | fw_priv = _request_firmware_prepare(&fw, fw_work->name, fw_work->device, | ||
| 1055 | fw_work->uevent, true); | ||
| 1056 | if (IS_ERR_OR_NULL(fw_priv)) { | ||
| 1057 | ret = PTR_RET(fw_priv); | ||
| 1058 | goto out; | ||
| 1059 | } | ||
| 1060 | |||
| 1061 | timeout = usermodehelper_read_lock_wait(firmware_loading_timeout()); | ||
| 1062 | if (timeout) { | ||
| 1063 | ret = _request_firmware_load(fw_priv, fw_work->uevent, timeout); | ||
| 1064 | usermodehelper_read_unlock(); | ||
| 1065 | } else { | ||
| 1066 | dev_dbg(fw_work->device, "firmware: %s loading timed out\n", | ||
| 1067 | fw_work->name); | ||
| 1068 | ret = -EAGAIN; | ||
| 1069 | } | ||
| 1070 | if (ret) | ||
| 1071 | _request_firmware_cleanup(&fw); | ||
| 1072 | 1113 | ||
| 1073 | out: | 1114 | _request_firmware(&fw, fw_work->name, fw_work->device, |
| 1115 | fw_work->uevent, true); | ||
| 1074 | fw_work->cont(fw, fw_work->context); | 1116 | fw_work->cont(fw, fw_work->context); |
| 1075 | put_device(fw_work->device); | 1117 | put_device(fw_work->device); /* taken in request_firmware_nowait() */ |
| 1076 | 1118 | ||
| 1077 | module_put(fw_work->module); | 1119 | module_put(fw_work->module); |
| 1078 | kfree(fw_work); | 1120 | kfree(fw_work); |
| @@ -1474,7 +1516,11 @@ static void __init fw_cache_init(void) | |||
| 1474 | static int __init firmware_class_init(void) | 1516 | static int __init firmware_class_init(void) |
| 1475 | { | 1517 | { |
| 1476 | fw_cache_init(); | 1518 | fw_cache_init(); |
| 1519 | #ifdef CONFIG_FW_LOADER_USER_HELPER | ||
| 1477 | return class_register(&firmware_class); | 1520 | return class_register(&firmware_class); |
| 1521 | #else | ||
| 1522 | return 0; | ||
| 1523 | #endif | ||
| 1478 | } | 1524 | } |
| 1479 | 1525 | ||
| 1480 | static void __exit firmware_class_exit(void) | 1526 | static void __exit firmware_class_exit(void) |
| @@ -1483,7 +1529,9 @@ static void __exit firmware_class_exit(void) | |||
| 1483 | unregister_syscore_ops(&fw_syscore_ops); | 1529 | unregister_syscore_ops(&fw_syscore_ops); |
| 1484 | unregister_pm_notifier(&fw_cache.pm_notify); | 1530 | unregister_pm_notifier(&fw_cache.pm_notify); |
| 1485 | #endif | 1531 | #endif |
| 1532 | #ifdef CONFIG_FW_LOADER_USER_HELPER | ||
| 1486 | class_unregister(&firmware_class); | 1533 | class_unregister(&firmware_class); |
| 1534 | #endif | ||
| 1487 | } | 1535 | } |
| 1488 | 1536 | ||
| 1489 | fs_initcall(firmware_class_init); | 1537 | fs_initcall(firmware_class_init); |
diff --git a/drivers/base/memory.c b/drivers/base/memory.c index 987604d56c83..83d0b17ba1c2 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c | |||
| @@ -494,8 +494,8 @@ store_hard_offline_page(struct device *dev, | |||
| 494 | return ret ? ret : count; | 494 | return ret ? ret : count; |
| 495 | } | 495 | } |
| 496 | 496 | ||
| 497 | static DEVICE_ATTR(soft_offline_page, 0644, NULL, store_soft_offline_page); | 497 | static DEVICE_ATTR(soft_offline_page, S_IWUSR, NULL, store_soft_offline_page); |
| 498 | static DEVICE_ATTR(hard_offline_page, 0644, NULL, store_hard_offline_page); | 498 | static DEVICE_ATTR(hard_offline_page, S_IWUSR, NULL, store_hard_offline_page); |
| 499 | 499 | ||
| 500 | static __init int memory_fail_init(void) | 500 | static __init int memory_fail_init(void) |
| 501 | { | 501 | { |
diff --git a/drivers/block/paride/Kconfig b/drivers/block/paride/Kconfig index 28cf3082d442..efefb5ac3004 100644 --- a/drivers/block/paride/Kconfig +++ b/drivers/block/paride/Kconfig | |||
| @@ -205,8 +205,8 @@ config PARIDE_EPAT | |||
| 205 | support. | 205 | support. |
| 206 | 206 | ||
| 207 | config PARIDE_EPATC8 | 207 | config PARIDE_EPATC8 |
| 208 | bool "Support c7/c8 chips (EXPERIMENTAL)" | 208 | bool "Support c7/c8 chips" |
| 209 | depends on PARIDE_EPAT && EXPERIMENTAL | 209 | depends on PARIDE_EPAT |
| 210 | help | 210 | help |
| 211 | This option enables support for the newer Shuttle EP1284 (aka c7 and | 211 | This option enables support for the newer Shuttle EP1284 (aka c7 and |
| 212 | c8) chip. You need this if you are using any recent Imation SuperDisk | 212 | c8) chip. You need this if you are using any recent Imation SuperDisk |
diff --git a/drivers/char/hw_random/exynos-rng.c b/drivers/char/hw_random/exynos-rng.c index 48bbfeca4b5d..4673fc4ad931 100644 --- a/drivers/char/hw_random/exynos-rng.c +++ b/drivers/char/hw_random/exynos-rng.c | |||
| @@ -104,6 +104,7 @@ static int exynos_read(struct hwrng *rng, void *buf, | |||
| 104 | static int exynos_rng_probe(struct platform_device *pdev) | 104 | static int exynos_rng_probe(struct platform_device *pdev) |
| 105 | { | 105 | { |
| 106 | struct exynos_rng *exynos_rng; | 106 | struct exynos_rng *exynos_rng; |
| 107 | struct resource *res; | ||
| 107 | 108 | ||
| 108 | exynos_rng = devm_kzalloc(&pdev->dev, sizeof(struct exynos_rng), | 109 | exynos_rng = devm_kzalloc(&pdev->dev, sizeof(struct exynos_rng), |
| 109 | GFP_KERNEL); | 110 | GFP_KERNEL); |
| @@ -120,10 +121,10 @@ static int exynos_rng_probe(struct platform_device *pdev) | |||
| 120 | return -ENOENT; | 121 | return -ENOENT; |
| 121 | } | 122 | } |
| 122 | 123 | ||
| 123 | exynos_rng->mem = devm_request_and_ioremap(&pdev->dev, | 124 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 124 | platform_get_resource(pdev, IORESOURCE_MEM, 0)); | 125 | exynos_rng->mem = devm_ioremap_resource(&pdev->dev, res); |
| 125 | if (!exynos_rng->mem) | 126 | if (IS_ERR(exynos_rng->mem)) |
| 126 | return -EBUSY; | 127 | return PTR_ERR(exynos_rng->mem); |
| 127 | 128 | ||
| 128 | platform_set_drvdata(pdev, exynos_rng); | 129 | platform_set_drvdata(pdev, exynos_rng); |
| 129 | 130 | ||
diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c index d8c54e253761..749dc16ca2cc 100644 --- a/drivers/char/hw_random/omap-rng.c +++ b/drivers/char/hw_random/omap-rng.c | |||
| @@ -124,9 +124,9 @@ static int omap_rng_probe(struct platform_device *pdev) | |||
| 124 | goto err_ioremap; | 124 | goto err_ioremap; |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | priv->base = devm_request_and_ioremap(&pdev->dev, priv->mem_res); | 127 | priv->base = devm_ioremap_resource(&pdev->dev, priv->mem_res); |
| 128 | if (!priv->base) { | 128 | if (IS_ERR(priv->base)) { |
| 129 | ret = -ENOMEM; | 129 | ret = PTR_ERR(priv->base); |
| 130 | goto err_ioremap; | 130 | goto err_ioremap; |
| 131 | } | 131 | } |
| 132 | dev_set_drvdata(&pdev->dev, priv); | 132 | dev_set_drvdata(&pdev->dev, priv); |
diff --git a/drivers/char/hw_random/tx4939-rng.c b/drivers/char/hw_random/tx4939-rng.c index de473ef3882b..30991989d65b 100644 --- a/drivers/char/hw_random/tx4939-rng.c +++ b/drivers/char/hw_random/tx4939-rng.c | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | * License. See the file "COPYING" in the main directory of this archive | 7 | * License. See the file "COPYING" in the main directory of this archive |
| 8 | * for more details. | 8 | * for more details. |
| 9 | */ | 9 | */ |
| 10 | #include <linux/err.h> | ||
| 10 | #include <linux/module.h> | 11 | #include <linux/module.h> |
| 11 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
| 12 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| @@ -115,9 +116,9 @@ static int __init tx4939_rng_probe(struct platform_device *dev) | |||
| 115 | rngdev = devm_kzalloc(&dev->dev, sizeof(*rngdev), GFP_KERNEL); | 116 | rngdev = devm_kzalloc(&dev->dev, sizeof(*rngdev), GFP_KERNEL); |
| 116 | if (!rngdev) | 117 | if (!rngdev) |
| 117 | return -ENOMEM; | 118 | return -ENOMEM; |
| 118 | rngdev->base = devm_request_and_ioremap(&dev->dev, r); | 119 | rngdev->base = devm_ioremap_resource(&dev->dev, r); |
| 119 | if (!rngdev->base) | 120 | if (IS_ERR(rngdev->base)) |
| 120 | return -EBUSY; | 121 | return PTR_ERR(rngdev->base); |
| 121 | 122 | ||
| 122 | rngdev->rng.name = dev_name(&dev->dev); | 123 | rngdev->rng.name = dev_name(&dev->dev); |
| 123 | rngdev->rng.data_present = tx4939_rng_data_present; | 124 | rngdev->rng.data_present = tx4939_rng_data_present; |
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm index 7f333af1c059..030ddf6dd3f1 100644 --- a/drivers/cpufreq/Kconfig.arm +++ b/drivers/cpufreq/Kconfig.arm | |||
| @@ -21,8 +21,8 @@ config ARM_S3C2416_CPUFREQ | |||
| 21 | If in doubt, say N. | 21 | If in doubt, say N. |
| 22 | 22 | ||
| 23 | config ARM_S3C2416_CPUFREQ_VCORESCALE | 23 | config ARM_S3C2416_CPUFREQ_VCORESCALE |
| 24 | bool "Allow voltage scaling for S3C2416 arm core (EXPERIMENTAL)" | 24 | bool "Allow voltage scaling for S3C2416 arm core" |
| 25 | depends on ARM_S3C2416_CPUFREQ && REGULATOR && EXPERIMENTAL | 25 | depends on ARM_S3C2416_CPUFREQ && REGULATOR |
| 26 | help | 26 | help |
| 27 | Enable CPU voltage scaling when entering the dvs mode. | 27 | Enable CPU voltage scaling when entering the dvs mode. |
| 28 | It uses information gathered through existing hardware and | 28 | It uses information gathered through existing hardware and |
diff --git a/drivers/cpufreq/Kconfig.x86 b/drivers/cpufreq/Kconfig.x86 index 98e5abbe8f26..d7dc0ed6adb0 100644 --- a/drivers/cpufreq/Kconfig.x86 +++ b/drivers/cpufreq/Kconfig.x86 | |||
| @@ -187,7 +187,7 @@ config X86_SPEEDSTEP_ICH | |||
| 187 | config X86_SPEEDSTEP_SMI | 187 | config X86_SPEEDSTEP_SMI |
| 188 | tristate "Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)" | 188 | tristate "Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)" |
| 189 | select CPU_FREQ_TABLE | 189 | select CPU_FREQ_TABLE |
| 190 | depends on X86_32 && EXPERIMENTAL | 190 | depends on X86_32 |
| 191 | help | 191 | help |
| 192 | This adds the CPUFreq driver for certain mobile Intel Pentium III | 192 | This adds the CPUFreq driver for certain mobile Intel Pentium III |
| 193 | (Coppermine), all mobile Intel Pentium III-M (Tualatin) | 193 | (Coppermine), all mobile Intel Pentium III-M (Tualatin) |
| @@ -219,7 +219,7 @@ config X86_P4_CLOCKMOD | |||
| 219 | 219 | ||
| 220 | config X86_CPUFREQ_NFORCE2 | 220 | config X86_CPUFREQ_NFORCE2 |
| 221 | tristate "nVidia nForce2 FSB changing" | 221 | tristate "nVidia nForce2 FSB changing" |
| 222 | depends on X86_32 && EXPERIMENTAL | 222 | depends on X86_32 |
| 223 | help | 223 | help |
| 224 | This adds the CPUFreq driver for FSB changing on nVidia nForce2 | 224 | This adds the CPUFreq driver for FSB changing on nVidia nForce2 |
| 225 | platforms. | 225 | platforms. |
| @@ -255,7 +255,7 @@ config X86_LONGHAUL | |||
| 255 | config X86_E_POWERSAVER | 255 | config X86_E_POWERSAVER |
| 256 | tristate "VIA C7 Enhanced PowerSaver (DANGEROUS)" | 256 | tristate "VIA C7 Enhanced PowerSaver (DANGEROUS)" |
| 257 | select CPU_FREQ_TABLE | 257 | select CPU_FREQ_TABLE |
| 258 | depends on X86_32 && EXPERIMENTAL | 258 | depends on X86_32 |
| 259 | help | 259 | help |
| 260 | This adds the CPUFreq driver for VIA C7 processors. However, this driver | 260 | This adds the CPUFreq driver for VIA C7 processors. However, this driver |
| 261 | does not have any safeguards to prevent operating the CPU out of spec | 261 | does not have any safeguards to prevent operating the CPU out of spec |
diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw_dmac.c index 3e8ba02ba292..b33d1f6e1333 100644 --- a/drivers/dma/dw_dmac.c +++ b/drivers/dma/dw_dmac.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/delay.h> | 14 | #include <linux/delay.h> |
| 15 | #include <linux/dmaengine.h> | 15 | #include <linux/dmaengine.h> |
| 16 | #include <linux/dma-mapping.h> | 16 | #include <linux/dma-mapping.h> |
| 17 | #include <linux/err.h> | ||
| 17 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 18 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
| 19 | #include <linux/io.h> | 20 | #include <linux/io.h> |
| @@ -1489,9 +1490,9 @@ static int dw_probe(struct platform_device *pdev) | |||
| 1489 | if (irq < 0) | 1490 | if (irq < 0) |
| 1490 | return irq; | 1491 | return irq; |
| 1491 | 1492 | ||
| 1492 | regs = devm_request_and_ioremap(&pdev->dev, io); | 1493 | regs = devm_ioremap_resource(&pdev->dev, io); |
| 1493 | if (!regs) | 1494 | if (IS_ERR(regs)) |
| 1494 | return -EBUSY; | 1495 | return PTR_ERR(regs); |
| 1495 | 1496 | ||
| 1496 | dw_params = dma_read_byaddr(regs, DW_PARAMS); | 1497 | dw_params = dma_read_byaddr(regs, DW_PARAMS); |
| 1497 | autocfg = dw_params >> DW_PARAMS_EN & 0x1; | 1498 | autocfg = dw_params >> DW_PARAMS_EN & 0x1; |
diff --git a/drivers/dma/imx-dma.c b/drivers/dma/imx-dma.c index a7dcf78b1ff8..70b8975d107e 100644 --- a/drivers/dma/imx-dma.c +++ b/drivers/dma/imx-dma.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | * http://www.opensource.org/licenses/gpl-license.html | 14 | * http://www.opensource.org/licenses/gpl-license.html |
| 15 | * http://www.gnu.org/copyleft/gpl.html | 15 | * http://www.gnu.org/copyleft/gpl.html |
| 16 | */ | 16 | */ |
| 17 | #include <linux/err.h> | ||
| 17 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| 18 | #include <linux/types.h> | 19 | #include <linux/types.h> |
| 19 | #include <linux/mm.h> | 20 | #include <linux/mm.h> |
| @@ -1010,9 +1011,9 @@ static int __init imxdma_probe(struct platform_device *pdev) | |||
| 1010 | imxdma->devtype = pdev->id_entry->driver_data; | 1011 | imxdma->devtype = pdev->id_entry->driver_data; |
| 1011 | 1012 | ||
| 1012 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1013 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1013 | imxdma->base = devm_request_and_ioremap(&pdev->dev, res); | 1014 | imxdma->base = devm_ioremap_resource(&pdev->dev, res); |
| 1014 | if (!imxdma->base) | 1015 | if (IS_ERR(imxdma->base)) |
| 1015 | return -EADDRNOTAVAIL; | 1016 | return PTR_ERR(imxdma->base); |
| 1016 | 1017 | ||
| 1017 | irq = platform_get_irq(pdev, 0); | 1018 | irq = platform_get_irq(pdev, 0); |
| 1018 | if (irq < 0) | 1019 | if (irq < 0) |
diff --git a/drivers/dma/mmp_pdma.c b/drivers/dma/mmp_pdma.c index c6d98c00f05c..dc7466563507 100644 --- a/drivers/dma/mmp_pdma.c +++ b/drivers/dma/mmp_pdma.c | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | * it under the terms of the GNU General Public License version 2 as | 5 | * it under the terms of the GNU General Public License version 2 as |
| 6 | * published by the Free Software Foundation. | 6 | * published by the Free Software Foundation. |
| 7 | */ | 7 | */ |
| 8 | #include <linux/err.h> | ||
| 8 | #include <linux/module.h> | 9 | #include <linux/module.h> |
| 9 | #include <linux/init.h> | 10 | #include <linux/init.h> |
| 10 | #include <linux/types.h> | 11 | #include <linux/types.h> |
| @@ -782,9 +783,9 @@ static int mmp_pdma_probe(struct platform_device *op) | |||
| 782 | if (!iores) | 783 | if (!iores) |
| 783 | return -EINVAL; | 784 | return -EINVAL; |
| 784 | 785 | ||
| 785 | pdev->base = devm_request_and_ioremap(pdev->dev, iores); | 786 | pdev->base = devm_ioremap_resource(pdev->dev, iores); |
| 786 | if (!pdev->base) | 787 | if (IS_ERR(pdev->base)) |
| 787 | return -EADDRNOTAVAIL; | 788 | return PTR_ERR(pdev->base); |
| 788 | 789 | ||
| 789 | of_id = of_match_device(mmp_pdma_dt_ids, pdev->dev); | 790 | of_id = of_match_device(mmp_pdma_dt_ids, pdev->dev); |
| 790 | if (of_id) | 791 | if (of_id) |
diff --git a/drivers/dma/mmp_tdma.c b/drivers/dma/mmp_tdma.c index a9f1cd56689c..43d5a6c33297 100644 --- a/drivers/dma/mmp_tdma.c +++ b/drivers/dma/mmp_tdma.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | * | 9 | * |
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #include <linux/err.h> | ||
| 12 | #include <linux/module.h> | 13 | #include <linux/module.h> |
| 13 | #include <linux/init.h> | 14 | #include <linux/init.h> |
| 14 | #include <linux/types.h> | 15 | #include <linux/types.h> |
| @@ -547,9 +548,9 @@ static int mmp_tdma_probe(struct platform_device *pdev) | |||
| 547 | if (!iores) | 548 | if (!iores) |
| 548 | return -EINVAL; | 549 | return -EINVAL; |
| 549 | 550 | ||
| 550 | tdev->base = devm_request_and_ioremap(&pdev->dev, iores); | 551 | tdev->base = devm_ioremap_resource(&pdev->dev, iores); |
| 551 | if (!tdev->base) | 552 | if (IS_ERR(tdev->base)) |
| 552 | return -EADDRNOTAVAIL; | 553 | return PTR_ERR(tdev->base); |
| 553 | 554 | ||
| 554 | INIT_LIST_HEAD(&tdev->device.channels); | 555 | INIT_LIST_HEAD(&tdev->device.channels); |
| 555 | 556 | ||
diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c index 3cad856fe67f..58c1896271e1 100644 --- a/drivers/dma/tegra20-apb-dma.c +++ b/drivers/dma/tegra20-apb-dma.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
| 22 | #include <linux/dmaengine.h> | 22 | #include <linux/dmaengine.h> |
| 23 | #include <linux/dma-mapping.h> | 23 | #include <linux/dma-mapping.h> |
| 24 | #include <linux/err.h> | ||
| 24 | #include <linux/init.h> | 25 | #include <linux/init.h> |
| 25 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
| 26 | #include <linux/io.h> | 27 | #include <linux/io.h> |
| @@ -1240,12 +1241,9 @@ static int tegra_dma_probe(struct platform_device *pdev) | |||
| 1240 | return -EINVAL; | 1241 | return -EINVAL; |
| 1241 | } | 1242 | } |
| 1242 | 1243 | ||
| 1243 | tdma->base_addr = devm_request_and_ioremap(&pdev->dev, res); | 1244 | tdma->base_addr = devm_ioremap_resource(&pdev->dev, res); |
| 1244 | if (!tdma->base_addr) { | 1245 | if (IS_ERR(tdma->base_addr)) |
| 1245 | dev_err(&pdev->dev, | 1246 | return PTR_ERR(tdma->base_addr); |
| 1246 | "Cannot request memregion/iomap dma address\n"); | ||
| 1247 | return -EADDRNOTAVAIL; | ||
| 1248 | } | ||
| 1249 | 1247 | ||
| 1250 | tdma->dma_clk = devm_clk_get(&pdev->dev, NULL); | 1248 | tdma->dma_clk = devm_clk_get(&pdev->dev, NULL); |
| 1251 | if (IS_ERR(tdma->dma_clk)) { | 1249 | if (IS_ERR(tdma->dma_clk)) { |
diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig index 66719925970f..acb709bfac0f 100644 --- a/drivers/edac/Kconfig +++ b/drivers/edac/Kconfig | |||
| @@ -158,7 +158,7 @@ config EDAC_I3000 | |||
| 158 | 158 | ||
| 159 | config EDAC_I3200 | 159 | config EDAC_I3200 |
| 160 | tristate "Intel 3200" | 160 | tristate "Intel 3200" |
| 161 | depends on EDAC_MM_EDAC && PCI && X86 && EXPERIMENTAL | 161 | depends on EDAC_MM_EDAC && PCI && X86 |
| 162 | help | 162 | help |
| 163 | Support for error detection and correction on the Intel | 163 | Support for error detection and correction on the Intel |
| 164 | 3200 and 3210 server chipsets. | 164 | 3200 and 3210 server chipsets. |
| @@ -224,7 +224,7 @@ config EDAC_I7300 | |||
| 224 | config EDAC_SBRIDGE | 224 | config EDAC_SBRIDGE |
| 225 | tristate "Intel Sandy-Bridge Integrated MC" | 225 | tristate "Intel Sandy-Bridge Integrated MC" |
| 226 | depends on EDAC_MM_EDAC && PCI && X86_64 && X86_MCE_INTEL | 226 | depends on EDAC_MM_EDAC && PCI && X86_64 && X86_MCE_INTEL |
| 227 | depends on PCI_MMCONFIG && EXPERIMENTAL | 227 | depends on PCI_MMCONFIG |
| 228 | help | 228 | help |
| 229 | Support for error detection and correction the Intel | 229 | Support for error detection and correction the Intel |
| 230 | Sandy Bridge Integrated Memory Controller. | 230 | Sandy Bridge Integrated Memory Controller. |
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index e5116fa85140..1855a6fd2b0a 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig | |||
| @@ -66,7 +66,7 @@ config DEBUG_GPIO | |||
| 66 | 66 | ||
| 67 | config GPIO_SYSFS | 67 | config GPIO_SYSFS |
| 68 | bool "/sys/class/gpio/... (sysfs interface)" | 68 | bool "/sys/class/gpio/... (sysfs interface)" |
| 69 | depends on SYSFS && EXPERIMENTAL | 69 | depends on SYSFS |
| 70 | help | 70 | help |
| 71 | Say Y here to add a sysfs interface for GPIOs. | 71 | Say Y here to add a sysfs interface for GPIOs. |
| 72 | 72 | ||
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c index 6819d63cb167..7472182967ce 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | * interrupts. | 33 | * interrupts. |
| 34 | */ | 34 | */ |
| 35 | 35 | ||
| 36 | #include <linux/err.h> | ||
| 36 | #include <linux/module.h> | 37 | #include <linux/module.h> |
| 37 | #include <linux/gpio.h> | 38 | #include <linux/gpio.h> |
| 38 | #include <linux/irq.h> | 39 | #include <linux/irq.h> |
| @@ -544,11 +545,9 @@ static int mvebu_gpio_probe(struct platform_device *pdev) | |||
| 544 | mvchip->chip.of_node = np; | 545 | mvchip->chip.of_node = np; |
| 545 | 546 | ||
| 546 | spin_lock_init(&mvchip->lock); | 547 | spin_lock_init(&mvchip->lock); |
| 547 | mvchip->membase = devm_request_and_ioremap(&pdev->dev, res); | 548 | mvchip->membase = devm_ioremap_resource(&pdev->dev, res); |
| 548 | if (! mvchip->membase) { | 549 | if (IS_ERR(mvchip->membase)) |
| 549 | dev_err(&pdev->dev, "Cannot ioremap\n"); | 550 | return PTR_ERR(mvchip->membase); |
| 550 | return -ENOMEM; | ||
| 551 | } | ||
| 552 | 551 | ||
| 553 | /* The Armada XP has a second range of registers for the | 552 | /* The Armada XP has a second range of registers for the |
| 554 | * per-CPU registers */ | 553 | * per-CPU registers */ |
| @@ -559,11 +558,10 @@ static int mvebu_gpio_probe(struct platform_device *pdev) | |||
| 559 | return -ENODEV; | 558 | return -ENODEV; |
| 560 | } | 559 | } |
| 561 | 560 | ||
| 562 | mvchip->percpu_membase = devm_request_and_ioremap(&pdev->dev, res); | 561 | mvchip->percpu_membase = devm_ioremap_resource(&pdev->dev, |
| 563 | if (! mvchip->percpu_membase) { | 562 | res); |
| 564 | dev_err(&pdev->dev, "Cannot ioremap\n"); | 563 | if (IS_ERR(mvchip->percpu_membase)) |
| 565 | return -ENOMEM; | 564 | return PTR_ERR(mvchip->percpu_membase); |
| 566 | } | ||
| 567 | } | 565 | } |
| 568 | 566 | ||
| 569 | /* | 567 | /* |
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c index fa2a63cad32e..45d97c46831a 100644 --- a/drivers/gpio/gpio-mxs.c +++ b/drivers/gpio/gpio-mxs.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | * MA 02110-1301, USA. | 20 | * MA 02110-1301, USA. |
| 21 | */ | 21 | */ |
| 22 | 22 | ||
| 23 | #include <linux/err.h> | ||
| 23 | #include <linux/init.h> | 24 | #include <linux/init.h> |
| 24 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
| 25 | #include <linux/io.h> | 26 | #include <linux/io.h> |
| @@ -253,12 +254,14 @@ static int mxs_gpio_probe(struct platform_device *pdev) | |||
| 253 | parent = of_get_parent(np); | 254 | parent = of_get_parent(np); |
| 254 | base = of_iomap(parent, 0); | 255 | base = of_iomap(parent, 0); |
| 255 | of_node_put(parent); | 256 | of_node_put(parent); |
| 257 | if (!base) | ||
| 258 | return -EADDRNOTAVAIL; | ||
| 256 | } else { | 259 | } else { |
| 257 | iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 260 | iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 258 | base = devm_request_and_ioremap(&pdev->dev, iores); | 261 | base = devm_ioremap_resource(&pdev->dev, iores); |
| 262 | if (IS_ERR(base)) | ||
| 263 | return PTR_ERR(base); | ||
| 259 | } | 264 | } |
| 260 | if (!base) | ||
| 261 | return -EADDRNOTAVAIL; | ||
| 262 | } | 265 | } |
| 263 | port->base = base; | 266 | port->base = base; |
| 264 | 267 | ||
diff --git a/drivers/gpio/gpio-spear-spics.c b/drivers/gpio/gpio-spear-spics.c index 5f45fc4ed5d1..7a4bf7c0d98f 100644 --- a/drivers/gpio/gpio-spear-spics.c +++ b/drivers/gpio/gpio-spear-spics.c | |||
| @@ -140,11 +140,9 @@ static int spics_gpio_probe(struct platform_device *pdev) | |||
| 140 | return -ENOMEM; | 140 | return -ENOMEM; |
| 141 | } | 141 | } |
| 142 | 142 | ||
| 143 | spics->base = devm_request_and_ioremap(&pdev->dev, res); | 143 | spics->base = devm_ioremap_resource(&pdev->dev, res); |
| 144 | if (!spics->base) { | 144 | if (IS_ERR(spics->base)) |
| 145 | dev_err(&pdev->dev, "request and ioremap fail\n"); | 145 | return PTR_ERR(spics->base); |
| 146 | return -ENOMEM; | ||
| 147 | } | ||
| 148 | 146 | ||
| 149 | if (of_property_read_u32(np, "st-spics,peripcfg-reg", | 147 | if (of_property_read_u32(np, "st-spics,peripcfg-reg", |
| 150 | &spics->perip_cfg)) | 148 | &spics->perip_cfg)) |
diff --git a/drivers/gpio/gpio-stp-xway.c b/drivers/gpio/gpio-stp-xway.c index 85841ee70b17..c20e05151212 100644 --- a/drivers/gpio/gpio-stp-xway.c +++ b/drivers/gpio/gpio-stp-xway.c | |||
| @@ -214,11 +214,10 @@ static int xway_stp_probe(struct platform_device *pdev) | |||
| 214 | if (!chip) | 214 | if (!chip) |
| 215 | return -ENOMEM; | 215 | return -ENOMEM; |
| 216 | 216 | ||
| 217 | chip->virt = devm_request_and_ioremap(&pdev->dev, res); | 217 | chip->virt = devm_ioremap_resource(&pdev->dev, res); |
| 218 | if (!chip->virt) { | 218 | if (IS_ERR(chip->virt)) |
| 219 | dev_err(&pdev->dev, "failed to remap STP memory\n"); | 219 | return PTR_ERR(chip->virt); |
| 220 | return -ENOMEM; | 220 | |
| 221 | } | ||
| 222 | chip->gc.dev = &pdev->dev; | 221 | chip->gc.dev = &pdev->dev; |
| 223 | chip->gc.label = "stp-xway"; | 222 | chip->gc.label = "stp-xway"; |
| 224 | chip->gc.direction_output = xway_stp_dir_out; | 223 | chip->gc.direction_output = xway_stp_dir_out; |
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c index 63cb643d4b5a..414ad912232f 100644 --- a/drivers/gpio/gpio-tegra.c +++ b/drivers/gpio/gpio-tegra.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | * | 17 | * |
| 18 | */ | 18 | */ |
| 19 | 19 | ||
| 20 | #include <linux/err.h> | ||
| 20 | #include <linux/init.h> | 21 | #include <linux/init.h> |
| 21 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
| 22 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
| @@ -450,11 +451,9 @@ static int tegra_gpio_probe(struct platform_device *pdev) | |||
| 450 | return -ENODEV; | 451 | return -ENODEV; |
| 451 | } | 452 | } |
| 452 | 453 | ||
| 453 | regs = devm_request_and_ioremap(&pdev->dev, res); | 454 | regs = devm_ioremap_resource(&pdev->dev, res); |
| 454 | if (!regs) { | 455 | if (IS_ERR(regs)) |
| 455 | dev_err(&pdev->dev, "Couldn't ioremap regs\n"); | 456 | return PTR_ERR(regs); |
| 456 | return -ENODEV; | ||
| 457 | } | ||
| 458 | 457 | ||
| 459 | for (i = 0; i < tegra_gpio_bank_count; i++) { | 458 | for (i = 0; i < tegra_gpio_bank_count; i++) { |
| 460 | for (j = 0; j < 4; j++) { | 459 | for (j = 0; j < 4; j++) { |
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 199fca15f270..5359ca78130f 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c | |||
| @@ -806,7 +806,7 @@ fail_unlock: | |||
| 806 | } | 806 | } |
| 807 | EXPORT_SYMBOL_GPL(gpio_export); | 807 | EXPORT_SYMBOL_GPL(gpio_export); |
| 808 | 808 | ||
| 809 | static int match_export(struct device *dev, void *data) | 809 | static int match_export(struct device *dev, const void *data) |
| 810 | { | 810 | { |
| 811 | return dev_get_drvdata(dev) == data; | 811 | return dev_get_drvdata(dev) == data; |
| 812 | } | 812 | } |
diff --git a/drivers/gpu/drm/ast/Kconfig b/drivers/gpu/drm/ast/Kconfig index a277b1257888..da4a51eae824 100644 --- a/drivers/gpu/drm/ast/Kconfig +++ b/drivers/gpu/drm/ast/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config DRM_AST | 1 | config DRM_AST |
| 2 | tristate "AST server chips" | 2 | tristate "AST server chips" |
| 3 | depends on DRM && PCI && EXPERIMENTAL | 3 | depends on DRM && PCI |
| 4 | select DRM_TTM | 4 | select DRM_TTM |
| 5 | select FB_SYS_COPYAREA | 5 | select FB_SYS_COPYAREA |
| 6 | select FB_SYS_FILLRECT | 6 | select FB_SYS_FILLRECT |
diff --git a/drivers/gpu/drm/cirrus/Kconfig b/drivers/gpu/drm/cirrus/Kconfig index fc154dd75296..bf67b22723f9 100644 --- a/drivers/gpu/drm/cirrus/Kconfig +++ b/drivers/gpu/drm/cirrus/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config DRM_CIRRUS_QEMU | 1 | config DRM_CIRRUS_QEMU |
| 2 | tristate "Cirrus driver for QEMU emulated device" | 2 | tristate "Cirrus driver for QEMU emulated device" |
| 3 | depends on DRM && PCI && EXPERIMENTAL | 3 | depends on DRM && PCI |
| 4 | select FB_SYS_FILLRECT | 4 | select FB_SYS_FILLRECT |
| 5 | select FB_SYS_COPYAREA | 5 | select FB_SYS_COPYAREA |
| 6 | select FB_SYS_IMAGEBLIT | 6 | select FB_SYS_IMAGEBLIT |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimc.c b/drivers/gpu/drm/exynos/exynos_drm_fimc.c index 67a83e69544b..411f69b76e84 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimc.c | |||
| @@ -1785,11 +1785,9 @@ static int fimc_probe(struct platform_device *pdev) | |||
| 1785 | 1785 | ||
| 1786 | /* resource memory */ | 1786 | /* resource memory */ |
| 1787 | ctx->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1787 | ctx->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1788 | ctx->regs = devm_request_and_ioremap(dev, ctx->regs_res); | 1788 | ctx->regs = devm_ioremap_resource(dev, ctx->regs_res); |
| 1789 | if (!ctx->regs) { | 1789 | if (IS_ERR(ctx->regs)) |
| 1790 | dev_err(dev, "failed to map registers.\n"); | 1790 | return PTR_ERR(ctx->regs); |
| 1791 | return -ENXIO; | ||
| 1792 | } | ||
| 1793 | 1791 | ||
| 1794 | /* resource irq */ | 1792 | /* resource irq */ |
| 1795 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 1793 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index 9537761931ee..36493ce71f9a 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c | |||
| @@ -913,11 +913,9 @@ static int fimd_probe(struct platform_device *pdev) | |||
| 913 | 913 | ||
| 914 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 914 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 915 | 915 | ||
| 916 | ctx->regs = devm_request_and_ioremap(&pdev->dev, res); | 916 | ctx->regs = devm_ioremap_resource(&pdev->dev, res); |
| 917 | if (!ctx->regs) { | 917 | if (IS_ERR(ctx->regs)) |
| 918 | dev_err(dev, "failed to map registers\n"); | 918 | return PTR_ERR(ctx->regs); |
| 919 | return -ENXIO; | ||
| 920 | } | ||
| 921 | 919 | ||
| 922 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 920 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 923 | if (!res) { | 921 | if (!res) { |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c b/drivers/gpu/drm/exynos/exynos_drm_g2d.c index 9a4c08e7453c..fb2f81b8063d 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c +++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c | |||
| @@ -1136,10 +1136,9 @@ static int g2d_probe(struct platform_device *pdev) | |||
| 1136 | 1136 | ||
| 1137 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1137 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1138 | 1138 | ||
| 1139 | g2d->regs = devm_request_and_ioremap(&pdev->dev, res); | 1139 | g2d->regs = devm_ioremap_resource(&pdev->dev, res); |
| 1140 | if (!g2d->regs) { | 1140 | if (IS_ERR(g2d->regs)) { |
| 1141 | dev_err(dev, "failed to remap I/O memory\n"); | 1141 | ret = PTR_ERR(g2d->regs); |
| 1142 | ret = -ENXIO; | ||
| 1143 | goto err_put_clk; | 1142 | goto err_put_clk; |
| 1144 | } | 1143 | } |
| 1145 | 1144 | ||
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c b/drivers/gpu/drm/exynos/exynos_drm_gsc.c index 8140753ec9c8..7841c3b8a20e 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gsc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c | |||
| @@ -1692,11 +1692,9 @@ static int gsc_probe(struct platform_device *pdev) | |||
| 1692 | 1692 | ||
| 1693 | /* resource memory */ | 1693 | /* resource memory */ |
| 1694 | ctx->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1694 | ctx->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1695 | ctx->regs = devm_request_and_ioremap(dev, ctx->regs_res); | 1695 | ctx->regs = devm_ioremap_resource(dev, ctx->regs_res); |
| 1696 | if (!ctx->regs) { | 1696 | if (IS_ERR(ctx->regs)) |
| 1697 | dev_err(dev, "failed to map registers.\n"); | 1697 | return PTR_ERR(ctx->regs); |
| 1698 | return -ENXIO; | ||
| 1699 | } | ||
| 1700 | 1698 | ||
| 1701 | /* resource irq */ | 1699 | /* resource irq */ |
| 1702 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 1700 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_rotator.c b/drivers/gpu/drm/exynos/exynos_drm_rotator.c index f976e29def6e..a40b9fb60240 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_rotator.c +++ b/drivers/gpu/drm/exynos/exynos_drm_rotator.c | |||
| @@ -656,11 +656,9 @@ static int rotator_probe(struct platform_device *pdev) | |||
| 656 | platform_get_device_id(pdev)->driver_data; | 656 | platform_get_device_id(pdev)->driver_data; |
| 657 | 657 | ||
| 658 | rot->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 658 | rot->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 659 | rot->regs = devm_request_and_ioremap(dev, rot->regs_res); | 659 | rot->regs = devm_ioremap_resource(dev, rot->regs_res); |
| 660 | if (!rot->regs) { | 660 | if (IS_ERR(rot->regs)) |
| 661 | dev_err(dev, "failed to map register\n"); | 661 | return PTR_ERR(rot->regs); |
| 662 | return -ENXIO; | ||
| 663 | } | ||
| 664 | 662 | ||
| 665 | rot->irq = platform_get_irq(pdev, 0); | 663 | rot->irq = platform_get_irq(pdev, 0); |
| 666 | if (rot->irq < 0) { | 664 | if (rot->irq < 0) { |
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index fbab3c468603..233247505ff8 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c | |||
| @@ -2501,11 +2501,9 @@ static int hdmi_probe(struct platform_device *pdev) | |||
| 2501 | return -ENOENT; | 2501 | return -ENOENT; |
| 2502 | } | 2502 | } |
| 2503 | 2503 | ||
| 2504 | hdata->regs = devm_request_and_ioremap(&pdev->dev, res); | 2504 | hdata->regs = devm_ioremap_resource(&pdev->dev, res); |
| 2505 | if (!hdata->regs) { | 2505 | if (IS_ERR(hdata->regs)) |
| 2506 | DRM_ERROR("failed to map registers\n"); | 2506 | return PTR_ERR(hdata->regs); |
| 2507 | return -ENXIO; | ||
| 2508 | } | ||
| 2509 | 2507 | ||
| 2510 | ret = devm_gpio_request(&pdev->dev, hdata->hpd_gpio, "HPD"); | 2508 | ret = devm_gpio_request(&pdev->dev, hdata->hpd_gpio, "HPD"); |
| 2511 | if (ret) { | 2509 | if (ret) { |
diff --git a/drivers/gpu/drm/gma500/Kconfig b/drivers/gpu/drm/gma500/Kconfig index 42e665c7e90a..1188f0fe7e4f 100644 --- a/drivers/gpu/drm/gma500/Kconfig +++ b/drivers/gpu/drm/gma500/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config DRM_GMA500 | 1 | config DRM_GMA500 |
| 2 | tristate "Intel GMA5/600 KMS Framebuffer" | 2 | tristate "Intel GMA5/600 KMS Framebuffer" |
| 3 | depends on DRM && PCI && X86 && EXPERIMENTAL | 3 | depends on DRM && PCI && X86 |
| 4 | select FB_CFB_COPYAREA | 4 | select FB_CFB_COPYAREA |
| 5 | select FB_CFB_FILLRECT | 5 | select FB_CFB_FILLRECT |
| 6 | select FB_CFB_IMAGEBLIT | 6 | select FB_CFB_IMAGEBLIT |
diff --git a/drivers/gpu/drm/mgag200/Kconfig b/drivers/gpu/drm/mgag200/Kconfig index d63013497f66..b487cdec5ee7 100644 --- a/drivers/gpu/drm/mgag200/Kconfig +++ b/drivers/gpu/drm/mgag200/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config DRM_MGAG200 | 1 | config DRM_MGAG200 |
| 2 | tristate "Kernel modesetting driver for MGA G200 server engines" | 2 | tristate "Kernel modesetting driver for MGA G200 server engines" |
| 3 | depends on DRM && PCI && EXPERIMENTAL | 3 | depends on DRM && PCI |
| 4 | select FB_SYS_FILLRECT | 4 | select FB_SYS_FILLRECT |
| 5 | select FB_SYS_COPYAREA | 5 | select FB_SYS_COPYAREA |
| 6 | select FB_SYS_IMAGEBLIT | 6 | select FB_SYS_IMAGEBLIT |
diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 656b2e3334a6..d365c6dff0fb 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c | |||
| @@ -764,11 +764,9 @@ static int tegra_dc_probe(struct platform_device *pdev) | |||
| 764 | return -ENXIO; | 764 | return -ENXIO; |
| 765 | } | 765 | } |
| 766 | 766 | ||
| 767 | dc->regs = devm_request_and_ioremap(&pdev->dev, regs); | 767 | dc->regs = devm_ioremap_resource(&pdev->dev, regs); |
| 768 | if (!dc->regs) { | 768 | if (IS_ERR(dc->regs)) |
| 769 | dev_err(&pdev->dev, "failed to remap registers\n"); | 769 | return PTR_ERR(dc->regs); |
| 770 | return -ENXIO; | ||
| 771 | } | ||
| 772 | 770 | ||
| 773 | dc->irq = platform_get_irq(pdev, 0); | 771 | dc->irq = platform_get_irq(pdev, 0); |
| 774 | if (dc->irq < 0) { | 772 | if (dc->irq < 0) { |
diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c index e060c7e6434d..266af7879240 100644 --- a/drivers/gpu/drm/tegra/hdmi.c +++ b/drivers/gpu/drm/tegra/hdmi.c | |||
| @@ -1259,9 +1259,9 @@ static int tegra_hdmi_probe(struct platform_device *pdev) | |||
| 1259 | if (!regs) | 1259 | if (!regs) |
| 1260 | return -ENXIO; | 1260 | return -ENXIO; |
| 1261 | 1261 | ||
| 1262 | hdmi->regs = devm_request_and_ioremap(&pdev->dev, regs); | 1262 | hdmi->regs = devm_ioremap_resource(&pdev->dev, regs); |
| 1263 | if (!hdmi->regs) | 1263 | if (IS_ERR(hdmi->regs)) |
| 1264 | return -EADDRNOTAVAIL; | 1264 | return PTR_ERR(hdmi->regs); |
| 1265 | 1265 | ||
| 1266 | err = platform_get_irq(pdev, 0); | 1266 | err = platform_get_irq(pdev, 0); |
| 1267 | if (err < 0) | 1267 | if (err < 0) |
diff --git a/drivers/gpu/drm/tegra/host1x.c b/drivers/gpu/drm/tegra/host1x.c index 5d17b113a6fc..92e25a7e00ea 100644 --- a/drivers/gpu/drm/tegra/host1x.c +++ b/drivers/gpu/drm/tegra/host1x.c | |||
| @@ -139,9 +139,9 @@ static int tegra_host1x_probe(struct platform_device *pdev) | |||
| 139 | 139 | ||
| 140 | host1x->irq = err; | 140 | host1x->irq = err; |
| 141 | 141 | ||
| 142 | host1x->regs = devm_request_and_ioremap(&pdev->dev, regs); | 142 | host1x->regs = devm_ioremap_resource(&pdev->dev, regs); |
| 143 | if (!host1x->regs) { | 143 | if (IS_ERR(host1x->regs)) { |
| 144 | err = -EADDRNOTAVAIL; | 144 | err = PTR_ERR(host1x->regs); |
| 145 | goto err; | 145 | goto err; |
| 146 | } | 146 | } |
| 147 | 147 | ||
diff --git a/drivers/gpu/drm/udl/Kconfig b/drivers/gpu/drm/udl/Kconfig index 56e0bf31d425..6222af19f456 100644 --- a/drivers/gpu/drm/udl/Kconfig +++ b/drivers/gpu/drm/udl/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config DRM_UDL | 1 | config DRM_UDL |
| 2 | tristate "DisplayLink" | 2 | tristate "DisplayLink" |
| 3 | depends on DRM && EXPERIMENTAL | 3 | depends on DRM |
| 4 | depends on USB_ARCH_HAS_HCD | 4 | depends on USB_ARCH_HAS_HCD |
| 5 | select DRM_USB | 5 | select DRM_USB |
| 6 | select FB_SYS_FILLRECT | 6 | select FB_SYS_FILLRECT |
diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig index 2f8c76becc6b..46cde098c11c 100644 --- a/drivers/i2c/Kconfig +++ b/drivers/i2c/Kconfig | |||
| @@ -89,7 +89,7 @@ source drivers/i2c/busses/Kconfig | |||
| 89 | 89 | ||
| 90 | config I2C_STUB | 90 | config I2C_STUB |
| 91 | tristate "I2C/SMBus Test Stub" | 91 | tristate "I2C/SMBus Test Stub" |
| 92 | depends on EXPERIMENTAL && m | 92 | depends on m |
| 93 | default 'n' | 93 | default 'n' |
| 94 | help | 94 | help |
| 95 | This module may be useful to developers of SMBus client drivers, | 95 | This module may be useful to developers of SMBus client drivers, |
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig index bdca5111eb9d..9b94a78ca776 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig | |||
| @@ -22,7 +22,7 @@ config I2C_ALI1535 | |||
| 22 | 22 | ||
| 23 | config I2C_ALI1563 | 23 | config I2C_ALI1563 |
| 24 | tristate "ALI 1563" | 24 | tristate "ALI 1563" |
| 25 | depends on PCI && EXPERIMENTAL | 25 | depends on PCI |
| 26 | help | 26 | help |
| 27 | If you say yes to this option, support will be included for the SMB | 27 | If you say yes to this option, support will be included for the SMB |
| 28 | Host controller on Acer Labs Inc. (ALI) M1563 South Bridges. The SMB | 28 | Host controller on Acer Labs Inc. (ALI) M1563 South Bridges. The SMB |
| @@ -56,7 +56,7 @@ config I2C_AMD756 | |||
| 56 | 56 | ||
| 57 | config I2C_AMD756_S4882 | 57 | config I2C_AMD756_S4882 |
| 58 | tristate "SMBus multiplexing on the Tyan S4882" | 58 | tristate "SMBus multiplexing on the Tyan S4882" |
| 59 | depends on I2C_AMD756 && X86 && EXPERIMENTAL | 59 | depends on I2C_AMD756 && X86 |
| 60 | help | 60 | help |
| 61 | Enabling this option will add specific SMBus support for the Tyan | 61 | Enabling this option will add specific SMBus support for the Tyan |
| 62 | S4882 motherboard. On this 4-CPU board, the SMBus is multiplexed | 62 | S4882 motherboard. On this 4-CPU board, the SMBus is multiplexed |
| @@ -164,7 +164,7 @@ config I2C_NFORCE2 | |||
| 164 | 164 | ||
| 165 | config I2C_NFORCE2_S4985 | 165 | config I2C_NFORCE2_S4985 |
| 166 | tristate "SMBus multiplexing on the Tyan S4985" | 166 | tristate "SMBus multiplexing on the Tyan S4985" |
| 167 | depends on I2C_NFORCE2 && X86 && EXPERIMENTAL | 167 | depends on I2C_NFORCE2 && X86 |
| 168 | help | 168 | help |
| 169 | Enabling this option will add specific SMBus support for the Tyan | 169 | Enabling this option will add specific SMBus support for the Tyan |
| 170 | S4985 motherboard. On this 4-CPU board, the SMBus is multiplexed | 170 | S4985 motherboard. On this 4-CPU board, the SMBus is multiplexed |
| @@ -215,7 +215,7 @@ config I2C_SIS96X | |||
| 215 | 215 | ||
| 216 | config I2C_VIA | 216 | config I2C_VIA |
| 217 | tristate "VIA VT82C586B" | 217 | tristate "VIA VT82C586B" |
| 218 | depends on PCI && EXPERIMENTAL | 218 | depends on PCI |
| 219 | select I2C_ALGOBIT | 219 | select I2C_ALGOBIT |
| 220 | help | 220 | help |
| 221 | If you say yes to this option, support will be included for the VIA | 221 | If you say yes to this option, support will be included for the VIA |
| @@ -267,7 +267,7 @@ comment "Mac SMBus host controller drivers" | |||
| 267 | 267 | ||
| 268 | config I2C_HYDRA | 268 | config I2C_HYDRA |
| 269 | tristate "CHRP Apple Hydra Mac I/O I2C interface" | 269 | tristate "CHRP Apple Hydra Mac I/O I2C interface" |
| 270 | depends on PCI && PPC_CHRP && EXPERIMENTAL | 270 | depends on PCI && PPC_CHRP |
| 271 | select I2C_ALGOBIT | 271 | select I2C_ALGOBIT |
| 272 | help | 272 | help |
| 273 | This supports the use of the I2C interface in the Apple Hydra Mac | 273 | This supports the use of the I2C interface in the Apple Hydra Mac |
| @@ -293,7 +293,7 @@ comment "I2C system bus drivers (mostly embedded / system-on-chip)" | |||
| 293 | 293 | ||
| 294 | config I2C_AT91 | 294 | config I2C_AT91 |
| 295 | tristate "Atmel AT91 I2C Two-Wire interface (TWI)" | 295 | tristate "Atmel AT91 I2C Two-Wire interface (TWI)" |
| 296 | depends on ARCH_AT91 && EXPERIMENTAL | 296 | depends on ARCH_AT91 |
| 297 | help | 297 | help |
| 298 | This supports the use of the I2C interface on Atmel AT91 | 298 | This supports the use of the I2C interface on Atmel AT91 |
| 299 | processors. | 299 | processors. |
| @@ -519,7 +519,6 @@ config I2C_NUC900 | |||
| 519 | 519 | ||
| 520 | config I2C_OCORES | 520 | config I2C_OCORES |
| 521 | tristate "OpenCores I2C Controller" | 521 | tristate "OpenCores I2C Controller" |
| 522 | depends on EXPERIMENTAL | ||
| 523 | help | 522 | help |
| 524 | If you say yes to this option, support will be included for the | 523 | If you say yes to this option, support will be included for the |
| 525 | OpenCores I2C controller. For details see | 524 | OpenCores I2C controller. For details see |
| @@ -712,7 +711,7 @@ config I2C_OCTEON | |||
| 712 | 711 | ||
| 713 | config I2C_XILINX | 712 | config I2C_XILINX |
| 714 | tristate "Xilinx I2C Controller" | 713 | tristate "Xilinx I2C Controller" |
| 715 | depends on EXPERIMENTAL && HAS_IOMEM | 714 | depends on HAS_IOMEM |
| 716 | help | 715 | help |
| 717 | If you say yes to this option, support will be included for the | 716 | If you say yes to this option, support will be included for the |
| 718 | Xilinx I2C controller. | 717 | Xilinx I2C controller. |
| @@ -803,7 +802,6 @@ config I2C_PARPORT_LIGHT | |||
| 803 | 802 | ||
| 804 | config I2C_TAOS_EVM | 803 | config I2C_TAOS_EVM |
| 805 | tristate "TAOS evaluation module" | 804 | tristate "TAOS evaluation module" |
| 806 | depends on EXPERIMENTAL | ||
| 807 | select SERIO | 805 | select SERIO |
| 808 | select SERIO_SERPORT | 806 | select SERIO_SERPORT |
| 809 | default n | 807 | default n |
diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c index 2bfc04d0a1b1..ebc224154695 100644 --- a/drivers/i2c/busses/i2c-at91.c +++ b/drivers/i2c/busses/i2c-at91.c | |||
| @@ -723,9 +723,9 @@ static int at91_twi_probe(struct platform_device *pdev) | |||
| 723 | if (!dev->pdata) | 723 | if (!dev->pdata) |
| 724 | return -ENODEV; | 724 | return -ENODEV; |
| 725 | 725 | ||
| 726 | dev->base = devm_request_and_ioremap(&pdev->dev, mem); | 726 | dev->base = devm_ioremap_resource(&pdev->dev, mem); |
| 727 | if (!dev->base) | 727 | if (IS_ERR(dev->base)) |
| 728 | return -EBUSY; | 728 | return PTR_ERR(dev->base); |
| 729 | 729 | ||
| 730 | dev->irq = platform_get_irq(pdev, 0); | 730 | dev->irq = platform_get_irq(pdev, 0); |
| 731 | if (dev->irq < 0) | 731 | if (dev->irq < 0) |
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index b9734747d610..a71ece63e917 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c | |||
| @@ -511,9 +511,9 @@ static int __init i2c_imx_probe(struct platform_device *pdev) | |||
| 511 | return -ENOENT; | 511 | return -ENOENT; |
| 512 | } | 512 | } |
| 513 | 513 | ||
| 514 | base = devm_request_and_ioremap(&pdev->dev, res); | 514 | base = devm_ioremap_resource(&pdev->dev, res); |
| 515 | if (!base) | 515 | if (IS_ERR(base)) |
| 516 | return -EBUSY; | 516 | return PTR_ERR(base); |
| 517 | 517 | ||
| 518 | i2c_imx = devm_kzalloc(&pdev->dev, sizeof(struct imx_i2c_struct), | 518 | i2c_imx = devm_kzalloc(&pdev->dev, sizeof(struct imx_i2c_struct), |
| 519 | GFP_KERNEL); | 519 | GFP_KERNEL); |
diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c index a873d0ad1acb..a337d08a392d 100644 --- a/drivers/i2c/busses/i2c-ocores.c +++ b/drivers/i2c/busses/i2c-ocores.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | * kind, whether express or implied. | 12 | * kind, whether express or implied. |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <linux/err.h> | ||
| 15 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
| 16 | #include <linux/module.h> | 17 | #include <linux/module.h> |
| 17 | #include <linux/init.h> | 18 | #include <linux/init.h> |
| @@ -364,9 +365,9 @@ static int ocores_i2c_probe(struct platform_device *pdev) | |||
| 364 | if (!i2c) | 365 | if (!i2c) |
| 365 | return -ENOMEM; | 366 | return -ENOMEM; |
| 366 | 367 | ||
| 367 | i2c->base = devm_request_and_ioremap(&pdev->dev, res); | 368 | i2c->base = devm_ioremap_resource(&pdev->dev, res); |
| 368 | if (!i2c->base) | 369 | if (IS_ERR(i2c->base)) |
| 369 | return -EADDRNOTAVAIL; | 370 | return PTR_ERR(i2c->base); |
| 370 | 371 | ||
| 371 | pdata = pdev->dev.platform_data; | 372 | pdata = pdev->dev.platform_data; |
| 372 | if (pdata) { | 373 | if (pdata) { |
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 4cc2f0528c88..3ee188679cf1 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c | |||
| @@ -1103,11 +1103,9 @@ omap_i2c_probe(struct platform_device *pdev) | |||
| 1103 | return -ENOMEM; | 1103 | return -ENOMEM; |
| 1104 | } | 1104 | } |
| 1105 | 1105 | ||
| 1106 | dev->base = devm_request_and_ioremap(&pdev->dev, mem); | 1106 | dev->base = devm_ioremap_resource(&pdev->dev, mem); |
| 1107 | if (!dev->base) { | 1107 | if (IS_ERR(dev->base)) |
| 1108 | dev_err(&pdev->dev, "I2C region already claimed\n"); | 1108 | return PTR_ERR(dev->base); |
| 1109 | return -ENOMEM; | ||
| 1110 | } | ||
| 1111 | 1109 | ||
| 1112 | match = of_match_device(of_match_ptr(omap_i2c_of_match), &pdev->dev); | 1110 | match = of_match_device(of_match_ptr(omap_i2c_of_match), &pdev->dev); |
| 1113 | if (match) { | 1111 | if (match) { |
diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c index 9bd4d73d29e3..4ba4a95b6b26 100644 --- a/drivers/i2c/busses/i2c-rcar.c +++ b/drivers/i2c/busses/i2c-rcar.c | |||
| @@ -642,11 +642,9 @@ static int rcar_i2c_probe(struct platform_device *pdev) | |||
| 642 | if (ret < 0) | 642 | if (ret < 0) |
| 643 | return ret; | 643 | return ret; |
| 644 | 644 | ||
| 645 | priv->io = devm_request_and_ioremap(dev, res); | 645 | priv->io = devm_ioremap_resource(dev, res); |
| 646 | if (!priv->io) { | 646 | if (IS_ERR(priv->io)) |
| 647 | dev_err(dev, "cannot ioremap\n"); | 647 | return PTR_ERR(priv->io); |
| 648 | return -ENODEV; | ||
| 649 | } | ||
| 650 | 648 | ||
| 651 | priv->irq = platform_get_irq(pdev, 0); | 649 | priv->irq = platform_get_irq(pdev, 0); |
| 652 | init_waitqueue_head(&priv->wait); | 650 | init_waitqueue_head(&priv->wait); |
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c index a290d089ceaf..c807a6d14f0c 100644 --- a/drivers/i2c/busses/i2c-s3c2410.c +++ b/drivers/i2c/busses/i2c-s3c2410.c | |||
| @@ -1042,11 +1042,10 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) | |||
| 1042 | goto err_clk; | 1042 | goto err_clk; |
| 1043 | } | 1043 | } |
| 1044 | 1044 | ||
| 1045 | i2c->regs = devm_request_and_ioremap(&pdev->dev, res); | 1045 | i2c->regs = devm_ioremap_resource(&pdev->dev, res); |
| 1046 | 1046 | ||
| 1047 | if (i2c->regs == NULL) { | 1047 | if (IS_ERR(i2c->regs)) { |
| 1048 | dev_err(&pdev->dev, "cannot map IO\n"); | 1048 | ret = PTR_ERR(i2c->regs); |
| 1049 | ret = -ENXIO; | ||
| 1050 | goto err_clk; | 1049 | goto err_clk; |
| 1051 | } | 1050 | } |
| 1052 | 1051 | ||
diff --git a/drivers/i2c/busses/i2c-sirf.c b/drivers/i2c/busses/i2c-sirf.c index e03381aee34f..5a7ad240bd26 100644 --- a/drivers/i2c/busses/i2c-sirf.c +++ b/drivers/i2c/busses/i2c-sirf.c | |||
| @@ -309,10 +309,9 @@ static int i2c_sirfsoc_probe(struct platform_device *pdev) | |||
| 309 | goto out; | 309 | goto out; |
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | siic->base = devm_request_and_ioremap(&pdev->dev, mem_res); | 312 | siic->base = devm_ioremap_resource(&pdev->dev, mem_res); |
| 313 | if (siic->base == NULL) { | 313 | if (IS_ERR(siic->base)) { |
| 314 | dev_err(&pdev->dev, "IO remap failed!\n"); | 314 | err = PTR_ERR(siic->base); |
| 315 | err = -ENOMEM; | ||
| 316 | goto out; | 315 | goto out; |
| 317 | } | 316 | } |
| 318 | 317 | ||
diff --git a/drivers/i2c/busses/i2c-stu300.c b/drivers/i2c/busses/i2c-stu300.c index 580a0c04cb42..60195b590637 100644 --- a/drivers/i2c/busses/i2c-stu300.c +++ b/drivers/i2c/busses/i2c-stu300.c | |||
| @@ -888,11 +888,11 @@ stu300_probe(struct platform_device *pdev) | |||
| 888 | if (!res) | 888 | if (!res) |
| 889 | return -ENOENT; | 889 | return -ENOENT; |
| 890 | 890 | ||
| 891 | dev->virtbase = devm_request_and_ioremap(&pdev->dev, res); | 891 | dev->virtbase = devm_ioremap_resource(&pdev->dev, res); |
| 892 | dev_dbg(&pdev->dev, "initialize bus device I2C%d on virtual " | 892 | dev_dbg(&pdev->dev, "initialize bus device I2C%d on virtual " |
| 893 | "base %p\n", bus_nr, dev->virtbase); | 893 | "base %p\n", bus_nr, dev->virtbase); |
| 894 | if (!dev->virtbase) | 894 | if (IS_ERR(dev->virtbase)) |
| 895 | return -ENOMEM; | 895 | return PTR_ERR(dev->virtbase); |
| 896 | 896 | ||
| 897 | dev->irq = platform_get_irq(pdev, 0); | 897 | dev->irq = platform_get_irq(pdev, 0); |
| 898 | ret = devm_request_irq(&pdev->dev, dev->irq, stu300_irh, 0, NAME, dev); | 898 | ret = devm_request_irq(&pdev->dev, dev->irq, stu300_irh, 0, NAME, dev); |
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index 7b38877ffec1..1fb30099dac4 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c | |||
| @@ -669,11 +669,9 @@ static int tegra_i2c_probe(struct platform_device *pdev) | |||
| 669 | return -EINVAL; | 669 | return -EINVAL; |
| 670 | } | 670 | } |
| 671 | 671 | ||
| 672 | base = devm_request_and_ioremap(&pdev->dev, res); | 672 | base = devm_ioremap_resource(&pdev->dev, res); |
| 673 | if (!base) { | 673 | if (IS_ERR(base)) |
| 674 | dev_err(&pdev->dev, "Cannot request/ioremap I2C registers\n"); | 674 | return PTR_ERR(base); |
| 675 | return -EADDRNOTAVAIL; | ||
| 676 | } | ||
| 677 | 675 | ||
| 678 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 676 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 679 | if (!res) { | 677 | if (!res) { |
diff --git a/drivers/i2c/busses/i2c-xlr.c b/drivers/i2c/busses/i2c-xlr.c index a005265461da..93f029e98c0d 100644 --- a/drivers/i2c/busses/i2c-xlr.c +++ b/drivers/i2c/busses/i2c-xlr.c | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | * warranty of any kind, whether express or implied. | 7 | * warranty of any kind, whether express or implied. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <linux/err.h> | ||
| 10 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 11 | #include <linux/module.h> | 12 | #include <linux/module.h> |
| 12 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
| @@ -225,11 +226,9 @@ static int xlr_i2c_probe(struct platform_device *pdev) | |||
| 225 | return -ENOMEM; | 226 | return -ENOMEM; |
| 226 | 227 | ||
| 227 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 228 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 228 | priv->iobase = devm_request_and_ioremap(&pdev->dev, res); | 229 | priv->iobase = devm_ioremap_resource(&pdev->dev, res); |
| 229 | if (!priv->iobase) { | 230 | if (IS_ERR(priv->iobase)) |
| 230 | dev_err(&pdev->dev, "devm_request_and_ioremap failed\n"); | 231 | return PTR_ERR(priv->iobase); |
| 231 | return -EBUSY; | ||
| 232 | } | ||
| 233 | 232 | ||
| 234 | priv->adap.dev.parent = &pdev->dev; | 233 | priv->adap.dev.parent = &pdev->dev; |
| 235 | priv->adap.owner = THIS_MODULE; | 234 | priv->adap.owner = THIS_MODULE; |
diff --git a/drivers/i2c/muxes/Kconfig b/drivers/i2c/muxes/Kconfig index a0edd9854218..0be5b83c08fa 100644 --- a/drivers/i2c/muxes/Kconfig +++ b/drivers/i2c/muxes/Kconfig | |||
| @@ -19,7 +19,6 @@ config I2C_MUX_GPIO | |||
| 19 | 19 | ||
| 20 | config I2C_MUX_PCA9541 | 20 | config I2C_MUX_PCA9541 |
| 21 | tristate "NXP PCA9541 I2C Master Selector" | 21 | tristate "NXP PCA9541 I2C Master Selector" |
| 22 | depends on EXPERIMENTAL | ||
| 23 | help | 22 | help |
| 24 | If you say yes here you get support for the NXP PCA9541 | 23 | If you say yes here you get support for the NXP PCA9541 |
| 25 | I2C Master Selector. | 24 | I2C Master Selector. |
| @@ -29,7 +28,6 @@ config I2C_MUX_PCA9541 | |||
| 29 | 28 | ||
| 30 | config I2C_MUX_PCA954x | 29 | config I2C_MUX_PCA954x |
| 31 | tristate "Philips PCA954x I2C Mux/switches" | 30 | tristate "Philips PCA954x I2C Mux/switches" |
| 32 | depends on EXPERIMENTAL | ||
| 33 | help | 31 | help |
| 34 | If you say yes here you get support for the Philips PCA954x | 32 | If you say yes here you get support for the Philips PCA954x |
| 35 | I2C mux/switch devices. | 33 | I2C mux/switch devices. |
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig index 5a26584934ca..3c4417a1d438 100644 --- a/drivers/ide/Kconfig +++ b/drivers/ide/Kconfig | |||
| @@ -322,8 +322,7 @@ config BLK_DEV_GENERIC | |||
| 322 | which otherwise might not be supported. | 322 | which otherwise might not be supported. |
| 323 | 323 | ||
| 324 | config BLK_DEV_OPTI621 | 324 | config BLK_DEV_OPTI621 |
| 325 | tristate "OPTi 82C621 chipset enhanced support (EXPERIMENTAL)" | 325 | tristate "OPTi 82C621 chipset enhanced support" |
| 326 | depends on EXPERIMENTAL | ||
| 327 | select BLK_DEV_IDEPCI | 326 | select BLK_DEV_IDEPCI |
| 328 | help | 327 | help |
| 329 | This is a driver for the OPTi 82C621 EIDE controller. | 328 | This is a driver for the OPTi 82C621 EIDE controller. |
| @@ -417,7 +416,6 @@ config BLK_DEV_CY82C693 | |||
| 417 | 416 | ||
| 418 | config BLK_DEV_CS5520 | 417 | config BLK_DEV_CS5520 |
| 419 | tristate "Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)" | 418 | tristate "Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)" |
| 420 | depends on EXPERIMENTAL | ||
| 421 | select BLK_DEV_IDEDMA_PCI | 419 | select BLK_DEV_IDEDMA_PCI |
| 422 | help | 420 | help |
| 423 | Include support for PIO tuning and virtual DMA on the Cyrix MediaGX | 421 | Include support for PIO tuning and virtual DMA on the Cyrix MediaGX |
| @@ -761,8 +759,8 @@ config BLK_DEV_GAYLE | |||
| 761 | use Gayle IDE interfaces on the Zorro expansion bus. | 759 | use Gayle IDE interfaces on the Zorro expansion bus. |
| 762 | 760 | ||
| 763 | config BLK_DEV_BUDDHA | 761 | config BLK_DEV_BUDDHA |
| 764 | tristate "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)" | 762 | tristate "Buddha/Catweasel/X-Surf IDE interface support" |
| 765 | depends on ZORRO && EXPERIMENTAL | 763 | depends on ZORRO |
| 766 | help | 764 | help |
| 767 | This is the IDE driver for the IDE interfaces on the Buddha, Catweasel | 765 | This is the IDE driver for the IDE interfaces on the Buddha, Catweasel |
| 768 | and X-Surf expansion boards. It supports up to two interfaces on the | 766 | and X-Surf expansion boards. It supports up to two interfaces on the |
diff --git a/drivers/idle/Kconfig b/drivers/idle/Kconfig index 8489eb58a52c..4732dfc15447 100644 --- a/drivers/idle/Kconfig +++ b/drivers/idle/Kconfig | |||
| @@ -18,7 +18,6 @@ config I7300_IDLE_IOAT_CHANNEL | |||
| 18 | config I7300_IDLE | 18 | config I7300_IDLE |
| 19 | tristate "Intel chipset idle memory power saving driver" | 19 | tristate "Intel chipset idle memory power saving driver" |
| 20 | select I7300_IDLE_IOAT_CHANNEL | 20 | select I7300_IDLE_IOAT_CHANNEL |
| 21 | depends on EXPERIMENTAL | ||
| 22 | help | 21 | help |
| 23 | Enable memory power savings when idle with certain Intel server | 22 | Enable memory power savings when idle with certain Intel server |
| 24 | chipsets. The chipset must have I/O AT support, such as the | 23 | chipsets. The chipset must have I/O AT support, such as the |
diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c index a526c0e3aaa8..83c836ba600f 100644 --- a/drivers/iio/adc/at91_adc.c +++ b/drivers/iio/adc/at91_adc.c | |||
| @@ -557,9 +557,9 @@ static int at91_adc_probe(struct platform_device *pdev) | |||
| 557 | 557 | ||
| 558 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 558 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 559 | 559 | ||
| 560 | st->reg_base = devm_request_and_ioremap(&pdev->dev, res); | 560 | st->reg_base = devm_ioremap_resource(&pdev->dev, res); |
| 561 | if (!st->reg_base) { | 561 | if (IS_ERR(st->reg_base)) { |
| 562 | ret = -ENOMEM; | 562 | ret = PTR_ERR(st->reg_base); |
| 563 | goto error_free_device; | 563 | goto error_free_device; |
| 564 | } | 564 | } |
| 565 | 565 | ||
diff --git a/drivers/input/keyboard/spear-keyboard.c b/drivers/input/keyboard/spear-keyboard.c index 695d237417d6..cb1e8f614631 100644 --- a/drivers/input/keyboard/spear-keyboard.c +++ b/drivers/input/keyboard/spear-keyboard.c | |||
| @@ -228,11 +228,9 @@ static int spear_kbd_probe(struct platform_device *pdev) | |||
| 228 | kbd->suspended_rate = pdata->suspended_rate; | 228 | kbd->suspended_rate = pdata->suspended_rate; |
| 229 | } | 229 | } |
| 230 | 230 | ||
| 231 | kbd->io_base = devm_request_and_ioremap(&pdev->dev, res); | 231 | kbd->io_base = devm_ioremap_resource(&pdev->dev, res); |
| 232 | if (!kbd->io_base) { | 232 | if (IS_ERR(kbd->io_base)) |
| 233 | dev_err(&pdev->dev, "request-ioremap failed for kbd_region\n"); | 233 | return PTR_ERR(kbd->io_base); |
| 234 | return -ENOMEM; | ||
| 235 | } | ||
| 236 | 234 | ||
| 237 | kbd->clk = devm_clk_get(&pdev->dev, NULL); | 235 | kbd->clk = devm_clk_get(&pdev->dev, NULL); |
| 238 | if (IS_ERR(kbd->clk)) | 236 | if (IS_ERR(kbd->clk)) |
diff --git a/drivers/input/serio/arc_ps2.c b/drivers/input/serio/arc_ps2.c index b571eb3e4efc..c52e3e589f72 100644 --- a/drivers/input/serio/arc_ps2.c +++ b/drivers/input/serio/arc_ps2.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | * Driver is originally developed by Pavel Sokolov <psokolov@synopsys.com> | 8 | * Driver is originally developed by Pavel Sokolov <psokolov@synopsys.com> |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <linux/err.h> | ||
| 11 | #include <linux/module.h> | 12 | #include <linux/module.h> |
| 12 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
| 13 | #include <linux/input.h> | 14 | #include <linux/input.h> |
| @@ -206,9 +207,9 @@ static int arc_ps2_probe(struct platform_device *pdev) | |||
| 206 | return -ENOMEM; | 207 | return -ENOMEM; |
| 207 | } | 208 | } |
| 208 | 209 | ||
| 209 | arc_ps2->addr = devm_request_and_ioremap(&pdev->dev, res); | 210 | arc_ps2->addr = devm_ioremap_resource(&pdev->dev, res); |
| 210 | if (!arc_ps2->addr) | 211 | if (IS_ERR(arc_ps2->addr)) |
| 211 | return -EBUSY; | 212 | return PTR_ERR(arc_ps2->addr); |
| 212 | 213 | ||
| 213 | dev_info(&pdev->dev, "irq = %d, address = 0x%p, ports = %i\n", | 214 | dev_info(&pdev->dev, "irq = %d, address = 0x%p, ports = %i\n", |
| 214 | irq, arc_ps2->addr, ARC_PS2_PORTS); | 215 | irq, arc_ps2->addr, ARC_PS2_PORTS); |
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig index e39f9dbf297b..01068987809d 100644 --- a/drivers/iommu/Kconfig +++ b/drivers/iommu/Kconfig | |||
| @@ -65,8 +65,8 @@ config AMD_IOMMU_STATS | |||
| 65 | If unsure, say N. | 65 | If unsure, say N. |
| 66 | 66 | ||
| 67 | config AMD_IOMMU_V2 | 67 | config AMD_IOMMU_V2 |
| 68 | tristate "AMD IOMMU Version 2 driver (EXPERIMENTAL)" | 68 | tristate "AMD IOMMU Version 2 driver" |
| 69 | depends on AMD_IOMMU && PROFILING && EXPERIMENTAL | 69 | depends on AMD_IOMMU && PROFILING |
| 70 | select MMU_NOTIFIER | 70 | select MMU_NOTIFIER |
| 71 | ---help--- | 71 | ---help--- |
| 72 | This option enables support for the AMD IOMMUv2 features of the IOMMU | 72 | This option enables support for the AMD IOMMUv2 features of the IOMMU |
| @@ -119,8 +119,8 @@ config INTEL_IOMMU_FLOPPY_WA | |||
| 119 | 16MiB to make floppy (an ISA device) work. | 119 | 16MiB to make floppy (an ISA device) work. |
| 120 | 120 | ||
| 121 | config IRQ_REMAP | 121 | config IRQ_REMAP |
| 122 | bool "Support for Interrupt Remapping (EXPERIMENTAL)" | 122 | bool "Support for Interrupt Remapping" |
| 123 | depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI && EXPERIMENTAL | 123 | depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI |
| 124 | select DMAR_TABLE | 124 | select DMAR_TABLE |
| 125 | ---help--- | 125 | ---help--- |
| 126 | Supports Interrupt remapping for IO-APIC and MSI devices. | 126 | Supports Interrupt remapping for IO-APIC and MSI devices. |
diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c index fc178893789a..f08dbcd2f175 100644 --- a/drivers/iommu/tegra-smmu.c +++ b/drivers/iommu/tegra-smmu.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | #define pr_fmt(fmt) "%s(): " fmt, __func__ | 20 | #define pr_fmt(fmt) "%s(): " fmt, __func__ |
| 21 | 21 | ||
| 22 | #include <linux/err.h> | ||
| 22 | #include <linux/module.h> | 23 | #include <linux/module.h> |
| 23 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
| 24 | #include <linux/spinlock.h> | 25 | #include <linux/spinlock.h> |
| @@ -1176,9 +1177,9 @@ static int tegra_smmu_probe(struct platform_device *pdev) | |||
| 1176 | res = platform_get_resource(pdev, IORESOURCE_MEM, i); | 1177 | res = platform_get_resource(pdev, IORESOURCE_MEM, i); |
| 1177 | if (!res) | 1178 | if (!res) |
| 1178 | return -ENODEV; | 1179 | return -ENODEV; |
| 1179 | smmu->regs[i] = devm_request_and_ioremap(&pdev->dev, res); | 1180 | smmu->regs[i] = devm_ioremap_resource(&pdev->dev, res); |
| 1180 | if (!smmu->regs[i]) | 1181 | if (IS_ERR(smmu->regs[i])) |
| 1181 | return -EBUSY; | 1182 | return PTR_ERR(smmu->regs[i]); |
| 1182 | } | 1183 | } |
| 1183 | 1184 | ||
| 1184 | err = of_get_dma_window(dev->of_node, NULL, 0, NULL, &base, &size); | 1185 | err = of_get_dma_window(dev->of_node, NULL, 0, NULL, &base, &size); |
diff --git a/drivers/isdn/hisax/Kconfig b/drivers/isdn/hisax/Kconfig index 70ecd0c19500..5313c9ea44dc 100644 --- a/drivers/isdn/hisax/Kconfig +++ b/drivers/isdn/hisax/Kconfig | |||
| @@ -389,8 +389,8 @@ config HISAX_TELES_CS | |||
| 389 | comment "HiSax sub driver modules" | 389 | comment "HiSax sub driver modules" |
| 390 | 390 | ||
| 391 | config HISAX_ST5481 | 391 | config HISAX_ST5481 |
| 392 | tristate "ST5481 USB ISDN modem (EXPERIMENTAL)" | 392 | tristate "ST5481 USB ISDN modem" |
| 393 | depends on USB && EXPERIMENTAL | 393 | depends on USB |
| 394 | select ISDN_HDLC | 394 | select ISDN_HDLC |
| 395 | select CRC_CCITT | 395 | select CRC_CCITT |
| 396 | select BITREVERSE | 396 | select BITREVERSE |
| @@ -399,20 +399,19 @@ config HISAX_ST5481 | |||
| 399 | e.g. the BeWan Gazel 128 USB | 399 | e.g. the BeWan Gazel 128 USB |
| 400 | 400 | ||
| 401 | config HISAX_HFCUSB | 401 | config HISAX_HFCUSB |
| 402 | tristate "HFC USB based ISDN modems (EXPERIMENTAL)" | 402 | tristate "HFC USB based ISDN modems" |
| 403 | depends on USB && EXPERIMENTAL | 403 | depends on USB |
| 404 | help | 404 | help |
| 405 | This enables the driver for HFC USB based ISDN modems. | 405 | This enables the driver for HFC USB based ISDN modems. |
| 406 | 406 | ||
| 407 | config HISAX_HFC4S8S | 407 | config HISAX_HFC4S8S |
| 408 | tristate "HFC-4S/8S based ISDN cards (EXPERIMENTAL)" | 408 | tristate "HFC-4S/8S based ISDN cards" |
| 409 | depends on EXPERIMENTAL | ||
| 410 | help | 409 | help |
| 411 | This enables the driver for HFC-4S/8S based ISDN cards. | 410 | This enables the driver for HFC-4S/8S based ISDN cards. |
| 412 | 411 | ||
| 413 | config HISAX_FRITZ_PCIPNP | 412 | config HISAX_FRITZ_PCIPNP |
| 414 | tristate "AVM Fritz!Card PCI/PCIv2/PnP support (EXPERIMENTAL)" | 413 | tristate "AVM Fritz!Card PCI/PCIv2/PnP support" |
| 415 | depends on PCI && EXPERIMENTAL | 414 | depends on PCI |
| 416 | help | 415 | help |
| 417 | This enables the driver for the AVM Fritz!Card PCI, | 416 | This enables the driver for the AVM Fritz!Card PCI, |
| 418 | Fritz!Card PCI v2 and Fritz!Card PnP. | 417 | Fritz!Card PCI v2 and Fritz!Card PnP. |
diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c index 3e245712bba7..da30c5cb9609 100644 --- a/drivers/isdn/mISDN/core.c +++ b/drivers/isdn/mISDN/core.c | |||
| @@ -168,13 +168,13 @@ static struct class mISDN_class = { | |||
| 168 | }; | 168 | }; |
| 169 | 169 | ||
| 170 | static int | 170 | static int |
| 171 | _get_mdevice(struct device *dev, void *id) | 171 | _get_mdevice(struct device *dev, const void *id) |
| 172 | { | 172 | { |
| 173 | struct mISDNdevice *mdev = dev_to_mISDN(dev); | 173 | struct mISDNdevice *mdev = dev_to_mISDN(dev); |
| 174 | 174 | ||
| 175 | if (!mdev) | 175 | if (!mdev) |
| 176 | return 0; | 176 | return 0; |
| 177 | if (mdev->id != *(u_int *)id) | 177 | if (mdev->id != *(const u_int *)id) |
| 178 | return 0; | 178 | return 0; |
| 179 | return 1; | 179 | return 1; |
| 180 | } | 180 | } |
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig index b58bc8a14b9c..4469b441b785 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig | |||
| @@ -154,7 +154,7 @@ config LEDS_HP6XX | |||
| 154 | config LEDS_PCA9532 | 154 | config LEDS_PCA9532 |
| 155 | tristate "LED driver for PCA9532 dimmer" | 155 | tristate "LED driver for PCA9532 dimmer" |
| 156 | depends on LEDS_CLASS | 156 | depends on LEDS_CLASS |
| 157 | depends on I2C && INPUT && EXPERIMENTAL | 157 | depends on I2C && INPUT |
| 158 | help | 158 | help |
| 159 | This option enables support for NXP pca9532 | 159 | This option enables support for NXP pca9532 |
| 160 | LED controller. It is generally only useful | 160 | LED controller. It is generally only useful |
diff --git a/drivers/lguest/Kconfig b/drivers/lguest/Kconfig index 34ae49dc557c..6cdcdb0d3d58 100644 --- a/drivers/lguest/Kconfig +++ b/drivers/lguest/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config LGUEST | 1 | config LGUEST |
| 2 | tristate "Linux hypervisor example code" | 2 | tristate "Linux hypervisor example code" |
| 3 | depends on X86_32 && EXPERIMENTAL && EVENTFD | 3 | depends on X86_32 && EVENTFD |
| 4 | select HVC_DRIVER | 4 | select HVC_DRIVER |
| 5 | ---help--- | 5 | ---help--- |
| 6 | This is a very simple module which allows you to run | 6 | This is a very simple module which allows you to run |
diff --git a/drivers/macintosh/Kconfig b/drivers/macintosh/Kconfig index a555da64224e..696238b9f0f7 100644 --- a/drivers/macintosh/Kconfig +++ b/drivers/macintosh/Kconfig | |||
| @@ -278,7 +278,7 @@ config PMAC_RACKMETER | |||
| 278 | 278 | ||
| 279 | config SENSORS_AMS | 279 | config SENSORS_AMS |
| 280 | tristate "Apple Motion Sensor driver" | 280 | tristate "Apple Motion Sensor driver" |
| 281 | depends on PPC_PMAC && !PPC64 && INPUT && ((ADB_PMU && I2C = y) || (ADB_PMU && !I2C) || I2C) && EXPERIMENTAL | 281 | depends on PPC_PMAC && !PPC64 && INPUT && ((ADB_PMU && I2C = y) || (ADB_PMU && !I2C) || I2C) |
| 282 | select INPUT_POLLDEV | 282 | select INPUT_POLLDEV |
| 283 | help | 283 | help |
| 284 | Support for the motion sensor included in PowerBooks. Includes | 284 | Support for the motion sensor included in PowerBooks. Includes |
diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig index 4ef0d80b57f4..8567a7a64104 100644 --- a/drivers/media/Kconfig +++ b/drivers/media/Kconfig | |||
| @@ -79,8 +79,7 @@ config MEDIA_RC_SUPPORT | |||
| 79 | # | 79 | # |
| 80 | 80 | ||
| 81 | config MEDIA_CONTROLLER | 81 | config MEDIA_CONTROLLER |
| 82 | bool "Media Controller API (EXPERIMENTAL)" | 82 | bool "Media Controller API" |
| 83 | depends on EXPERIMENTAL | ||
| 84 | depends on MEDIA_CAMERA_SUPPORT | 83 | depends on MEDIA_CAMERA_SUPPORT |
| 85 | ---help--- | 84 | ---help--- |
| 86 | Enable the media controller API used to query media devices internal | 85 | Enable the media controller API used to query media devices internal |
| @@ -100,8 +99,8 @@ config VIDEO_DEV | |||
| 100 | default y | 99 | default y |
| 101 | 100 | ||
| 102 | config VIDEO_V4L2_SUBDEV_API | 101 | config VIDEO_V4L2_SUBDEV_API |
| 103 | bool "V4L2 sub-device userspace API (EXPERIMENTAL)" | 102 | bool "V4L2 sub-device userspace API" |
| 104 | depends on VIDEO_DEV && MEDIA_CONTROLLER && EXPERIMENTAL | 103 | depends on VIDEO_DEV && MEDIA_CONTROLLER |
| 105 | ---help--- | 104 | ---help--- |
| 106 | Enables the V4L2 sub-device pad-level userspace API used to configure | 105 | Enables the V4L2 sub-device pad-level userspace API used to configure |
| 107 | video format, size and frame rate between hardware blocks. | 106 | video format, size and frame rate between hardware blocks. |
diff --git a/drivers/media/pci/cx25821/Kconfig b/drivers/media/pci/cx25821/Kconfig index 5f6b54213713..4017c9420348 100644 --- a/drivers/media/pci/cx25821/Kconfig +++ b/drivers/media/pci/cx25821/Kconfig | |||
| @@ -18,7 +18,7 @@ config VIDEO_CX25821 | |||
| 18 | 18 | ||
| 19 | config VIDEO_CX25821_ALSA | 19 | config VIDEO_CX25821_ALSA |
| 20 | tristate "Conexant 25821 DMA audio support" | 20 | tristate "Conexant 25821 DMA audio support" |
| 21 | depends on VIDEO_CX25821 && SND && EXPERIMENTAL | 21 | depends on VIDEO_CX25821 && SND |
| 22 | select SND_PCM | 22 | select SND_PCM |
| 23 | ---help--- | 23 | ---help--- |
| 24 | This is a video4linux driver for direct (DMA) audio on | 24 | This is a video4linux driver for direct (DMA) audio on |
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig index 3dcfea612c42..33241120a58c 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig | |||
| @@ -98,8 +98,8 @@ config VIDEO_OMAP2 | |||
| 98 | This is a v4l2 driver for the TI OMAP2 camera capture interface | 98 | This is a v4l2 driver for the TI OMAP2 camera capture interface |
| 99 | 99 | ||
| 100 | config VIDEO_OMAP3 | 100 | config VIDEO_OMAP3 |
| 101 | tristate "OMAP 3 Camera support (EXPERIMENTAL)" | 101 | tristate "OMAP 3 Camera support" |
| 102 | depends on OMAP_IOVMM && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3 && EXPERIMENTAL | 102 | depends on OMAP_IOVMM && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3 |
| 103 | ---help--- | 103 | ---help--- |
| 104 | Driver for an OMAP 3 camera controller. | 104 | Driver for an OMAP 3 camera controller. |
| 105 | 105 | ||
| @@ -169,8 +169,8 @@ config VIDEO_SAMSUNG_S5P_G2D | |||
| 169 | 2d graphics accelerator. | 169 | 2d graphics accelerator. |
| 170 | 170 | ||
| 171 | config VIDEO_SAMSUNG_S5P_JPEG | 171 | config VIDEO_SAMSUNG_S5P_JPEG |
| 172 | tristate "Samsung S5P/Exynos4 JPEG codec driver (EXPERIMENTAL)" | 172 | tristate "Samsung S5P/Exynos4 JPEG codec driver" |
| 173 | depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P && EXPERIMENTAL | 173 | depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P |
| 174 | select VIDEOBUF2_DMA_CONTIG | 174 | select VIDEOBUF2_DMA_CONTIG |
| 175 | select V4L2_MEM2MEM_DEV | 175 | select V4L2_MEM2MEM_DEV |
| 176 | ---help--- | 176 | ---help--- |
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c index 2b1b9f30e1f9..c1a07133cc56 100644 --- a/drivers/media/platform/exynos-gsc/gsc-core.c +++ b/drivers/media/platform/exynos-gsc/gsc-core.c | |||
| @@ -1098,11 +1098,9 @@ static int gsc_probe(struct platform_device *pdev) | |||
| 1098 | mutex_init(&gsc->lock); | 1098 | mutex_init(&gsc->lock); |
| 1099 | 1099 | ||
| 1100 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1100 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1101 | gsc->regs = devm_request_and_ioremap(dev, res); | 1101 | gsc->regs = devm_ioremap_resource(dev, res); |
| 1102 | if (!gsc->regs) { | 1102 | if (IS_ERR(gsc->regs)) |
| 1103 | dev_err(dev, "failed to map registers\n"); | 1103 | return PTR_ERR(gsc->regs); |
| 1104 | return -ENOENT; | ||
| 1105 | } | ||
| 1106 | 1104 | ||
| 1107 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 1105 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 1108 | if (!res) { | 1106 | if (!res) { |
diff --git a/drivers/media/platform/mx2_emmaprp.c b/drivers/media/platform/mx2_emmaprp.c index 6b155d7be8e0..4b9e0a28616a 100644 --- a/drivers/media/platform/mx2_emmaprp.c +++ b/drivers/media/platform/mx2_emmaprp.c | |||
| @@ -941,9 +941,9 @@ static int emmaprp_probe(struct platform_device *pdev) | |||
| 941 | 941 | ||
| 942 | platform_set_drvdata(pdev, pcdev); | 942 | platform_set_drvdata(pdev, pcdev); |
| 943 | 943 | ||
| 944 | pcdev->base_emma = devm_request_and_ioremap(&pdev->dev, res_emma); | 944 | pcdev->base_emma = devm_ioremap_resource(&pdev->dev, res_emma); |
| 945 | if (!pcdev->base_emma) { | 945 | if (IS_ERR(pcdev->base_emma)) { |
| 946 | ret = -ENXIO; | 946 | ret = PTR_ERR(pcdev->base_emma); |
| 947 | goto rel_vdev; | 947 | goto rel_vdev; |
| 948 | } | 948 | } |
| 949 | 949 | ||
diff --git a/drivers/media/platform/s3c-camif/camif-core.c b/drivers/media/platform/s3c-camif/camif-core.c index e2716c35f8f1..09a8c9cac5c9 100644 --- a/drivers/media/platform/s3c-camif/camif-core.c +++ b/drivers/media/platform/s3c-camif/camif-core.c | |||
| @@ -433,11 +433,9 @@ static int s3c_camif_probe(struct platform_device *pdev) | |||
| 433 | 433 | ||
| 434 | mres = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 434 | mres = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 435 | 435 | ||
| 436 | camif->io_base = devm_request_and_ioremap(dev, mres); | 436 | camif->io_base = devm_ioremap_resource(dev, mres); |
| 437 | if (!camif->io_base) { | 437 | if (IS_ERR(camif->io_base)) |
| 438 | dev_err(dev, "failed to obtain I/O memory\n"); | 438 | return PTR_ERR(camif->io_base); |
| 439 | return -ENOENT; | ||
| 440 | } | ||
| 441 | 439 | ||
| 442 | ret = camif_request_irqs(pdev, camif); | 440 | ret = camif_request_irqs(pdev, camif); |
| 443 | if (ret < 0) | 441 | if (ret < 0) |
diff --git a/drivers/media/platform/s5p-fimc/Kconfig b/drivers/media/platform/s5p-fimc/Kconfig index c16b20d86ed2..f997a5203b7c 100644 --- a/drivers/media/platform/s5p-fimc/Kconfig +++ b/drivers/media/platform/s5p-fimc/Kconfig | |||
| @@ -2,7 +2,6 @@ | |||
| 2 | config VIDEO_SAMSUNG_S5P_FIMC | 2 | config VIDEO_SAMSUNG_S5P_FIMC |
| 3 | bool "Samsung S5P/EXYNOS SoC camera interface driver (experimental)" | 3 | bool "Samsung S5P/EXYNOS SoC camera interface driver (experimental)" |
| 4 | depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && PLAT_S5P && PM_RUNTIME | 4 | depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && PLAT_S5P && PM_RUNTIME |
| 5 | depends on EXPERIMENTAL | ||
| 6 | help | 5 | help |
| 7 | Say Y here to enable camera host interface devices for | 6 | Say Y here to enable camera host interface devices for |
| 8 | Samsung S5P and EXYNOS SoC series. | 7 | Samsung S5P and EXYNOS SoC series. |
diff --git a/drivers/media/platform/s5p-fimc/fimc-core.c b/drivers/media/platform/s5p-fimc/fimc-core.c index 545b46ae12a1..acc0f84ffa56 100644 --- a/drivers/media/platform/s5p-fimc/fimc-core.c +++ b/drivers/media/platform/s5p-fimc/fimc-core.c | |||
| @@ -909,11 +909,9 @@ static int fimc_probe(struct platform_device *pdev) | |||
| 909 | mutex_init(&fimc->lock); | 909 | mutex_init(&fimc->lock); |
| 910 | 910 | ||
| 911 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 911 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 912 | fimc->regs = devm_request_and_ioremap(&pdev->dev, res); | 912 | fimc->regs = devm_ioremap_resource(&pdev->dev, res); |
| 913 | if (fimc->regs == NULL) { | 913 | if (IS_ERR(fimc->regs)) |
| 914 | dev_err(&pdev->dev, "Failed to obtain io memory\n"); | 914 | return PTR_ERR(fimc->regs); |
| 915 | return -ENOENT; | ||
| 916 | } | ||
| 917 | 915 | ||
| 918 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 916 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 919 | if (res == NULL) { | 917 | if (res == NULL) { |
diff --git a/drivers/media/platform/s5p-fimc/fimc-lite.c b/drivers/media/platform/s5p-fimc/fimc-lite.c index ed67220d0a64..67db9f8102e4 100644 --- a/drivers/media/platform/s5p-fimc/fimc-lite.c +++ b/drivers/media/platform/s5p-fimc/fimc-lite.c | |||
| @@ -1426,11 +1426,9 @@ static int fimc_lite_probe(struct platform_device *pdev) | |||
| 1426 | mutex_init(&fimc->lock); | 1426 | mutex_init(&fimc->lock); |
| 1427 | 1427 | ||
| 1428 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1428 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1429 | fimc->regs = devm_request_and_ioremap(&pdev->dev, res); | 1429 | fimc->regs = devm_ioremap_resource(&pdev->dev, res); |
| 1430 | if (fimc->regs == NULL) { | 1430 | if (IS_ERR(fimc->regs)) |
| 1431 | dev_err(&pdev->dev, "Failed to obtain io memory\n"); | 1431 | return PTR_ERR(fimc->regs); |
| 1432 | return -ENOENT; | ||
| 1433 | } | ||
| 1434 | 1432 | ||
| 1435 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 1433 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 1436 | if (res == NULL) { | 1434 | if (res == NULL) { |
diff --git a/drivers/media/platform/s5p-fimc/mipi-csis.c b/drivers/media/platform/s5p-fimc/mipi-csis.c index ec3fa7d75306..7abae012f55e 100644 --- a/drivers/media/platform/s5p-fimc/mipi-csis.c +++ b/drivers/media/platform/s5p-fimc/mipi-csis.c | |||
| @@ -686,11 +686,9 @@ static int s5pcsis_probe(struct platform_device *pdev) | |||
| 686 | } | 686 | } |
| 687 | 687 | ||
| 688 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 688 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 689 | state->regs = devm_request_and_ioremap(&pdev->dev, mem_res); | 689 | state->regs = devm_ioremap_resource(&pdev->dev, mem_res); |
| 690 | if (state->regs == NULL) { | 690 | if (IS_ERR(state->regs)) |
| 691 | dev_err(&pdev->dev, "Failed to request and remap io memory\n"); | 691 | return PTR_ERR(state->regs); |
| 692 | return -ENXIO; | ||
| 693 | } | ||
| 694 | 692 | ||
| 695 | state->irq = platform_get_irq(pdev, 0); | 693 | state->irq = platform_get_irq(pdev, 0); |
| 696 | if (state->irq < 0) { | 694 | if (state->irq < 0) { |
diff --git a/drivers/media/platform/s5p-g2d/g2d.c b/drivers/media/platform/s5p-g2d/g2d.c index 1bfbc325836b..6ed259fb1046 100644 --- a/drivers/media/platform/s5p-g2d/g2d.c +++ b/drivers/media/platform/s5p-g2d/g2d.c | |||
| @@ -708,11 +708,9 @@ static int g2d_probe(struct platform_device *pdev) | |||
| 708 | 708 | ||
| 709 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 709 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 710 | 710 | ||
| 711 | dev->regs = devm_request_and_ioremap(&pdev->dev, res); | 711 | dev->regs = devm_ioremap_resource(&pdev->dev, res); |
| 712 | if (dev->regs == NULL) { | 712 | if (IS_ERR(dev->regs)) |
| 713 | dev_err(&pdev->dev, "Failed to obtain io memory\n"); | 713 | return PTR_ERR(dev->regs); |
| 714 | return -ENOENT; | ||
| 715 | } | ||
| 716 | 714 | ||
| 717 | dev->clk = clk_get(&pdev->dev, "sclk_fimg2d"); | 715 | dev->clk = clk_get(&pdev->dev, "sclk_fimg2d"); |
| 718 | if (IS_ERR_OR_NULL(dev->clk)) { | 716 | if (IS_ERR_OR_NULL(dev->clk)) { |
diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c index 17983c4c9a9a..3b023752bcb4 100644 --- a/drivers/media/platform/s5p-jpeg/jpeg-core.c +++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c | |||
| @@ -1325,11 +1325,9 @@ static int s5p_jpeg_probe(struct platform_device *pdev) | |||
| 1325 | /* memory-mapped registers */ | 1325 | /* memory-mapped registers */ |
| 1326 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1326 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1327 | 1327 | ||
| 1328 | jpeg->regs = devm_request_and_ioremap(&pdev->dev, res); | 1328 | jpeg->regs = devm_ioremap_resource(&pdev->dev, res); |
| 1329 | if (jpeg->regs == NULL) { | 1329 | if (IS_ERR(jpeg->regs)) |
| 1330 | dev_err(&pdev->dev, "Failed to obtain io memory\n"); | 1330 | return PTR_ERR(jpeg->regs); |
| 1331 | return -ENOENT; | ||
| 1332 | } | ||
| 1333 | 1331 | ||
| 1334 | /* interrupt service routine registration */ | 1332 | /* interrupt service routine registration */ |
| 1335 | jpeg->irq = ret = platform_get_irq(pdev, 0); | 1333 | jpeg->irq = ret = platform_get_irq(pdev, 0); |
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c index 681bc6ba149d..8b7fbc7cc04d 100644 --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c | |||
| @@ -1047,11 +1047,9 @@ static int s5p_mfc_probe(struct platform_device *pdev) | |||
| 1047 | 1047 | ||
| 1048 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1048 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1049 | 1049 | ||
| 1050 | dev->regs_base = devm_request_and_ioremap(&pdev->dev, res); | 1050 | dev->regs_base = devm_ioremap_resource(&pdev->dev, res); |
| 1051 | if (dev->regs_base == NULL) { | 1051 | if (IS_ERR(dev->regs_base)) |
| 1052 | dev_err(&pdev->dev, "Failed to obtain io memory\n"); | 1052 | return PTR_ERR(dev->regs_base); |
| 1053 | return -ENOENT; | ||
| 1054 | } | ||
| 1055 | 1053 | ||
| 1056 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 1054 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 1057 | if (res == NULL) { | 1055 | if (res == NULL) { |
diff --git a/drivers/media/platform/s5p-tv/Kconfig b/drivers/media/platform/s5p-tv/Kconfig index ea11a513033f..7b659bd09bfd 100644 --- a/drivers/media/platform/s5p-tv/Kconfig +++ b/drivers/media/platform/s5p-tv/Kconfig | |||
| @@ -7,9 +7,8 @@ | |||
| 7 | # Licensed under GPL | 7 | # Licensed under GPL |
| 8 | 8 | ||
| 9 | config VIDEO_SAMSUNG_S5P_TV | 9 | config VIDEO_SAMSUNG_S5P_TV |
| 10 | bool "Samsung TV driver for S5P platform (experimental)" | 10 | bool "Samsung TV driver for S5P platform" |
| 11 | depends on PLAT_S5P && PM_RUNTIME | 11 | depends on PLAT_S5P && PM_RUNTIME |
| 12 | depends on EXPERIMENTAL | ||
| 13 | default n | 12 | default n |
| 14 | ---help--- | 13 | ---help--- |
| 15 | Say Y here to enable selecting the TV output devices for | 14 | Say Y here to enable selecting the TV output devices for |
diff --git a/drivers/media/platform/soc_camera/mx2_camera.c b/drivers/media/platform/soc_camera/mx2_camera.c index 8bda2c908aba..1abdc7d9c744 100644 --- a/drivers/media/platform/soc_camera/mx2_camera.c +++ b/drivers/media/platform/soc_camera/mx2_camera.c | |||
| @@ -1707,9 +1707,9 @@ static int mx27_camera_emma_init(struct platform_device *pdev) | |||
| 1707 | goto out; | 1707 | goto out; |
| 1708 | } | 1708 | } |
| 1709 | 1709 | ||
| 1710 | pcdev->base_emma = devm_request_and_ioremap(pcdev->dev, res_emma); | 1710 | pcdev->base_emma = devm_ioremap_resource(pcdev->dev, res_emma); |
| 1711 | if (!pcdev->base_emma) { | 1711 | if (IS_ERR(pcdev->base_emma)) { |
| 1712 | err = -EADDRNOTAVAIL; | 1712 | err = PTR_ERR(pcdev->base_emma); |
| 1713 | goto out; | 1713 | goto out; |
| 1714 | } | 1714 | } |
| 1715 | 1715 | ||
| @@ -1824,9 +1824,9 @@ static int mx2_camera_probe(struct platform_device *pdev) | |||
| 1824 | INIT_LIST_HEAD(&pcdev->discard); | 1824 | INIT_LIST_HEAD(&pcdev->discard); |
| 1825 | spin_lock_init(&pcdev->lock); | 1825 | spin_lock_init(&pcdev->lock); |
| 1826 | 1826 | ||
| 1827 | pcdev->base_csi = devm_request_and_ioremap(&pdev->dev, res_csi); | 1827 | pcdev->base_csi = devm_ioremap_resource(&pdev->dev, res_csi); |
| 1828 | if (!pcdev->base_csi) { | 1828 | if (IS_ERR(pcdev->base_csi)) { |
| 1829 | err = -EADDRNOTAVAIL; | 1829 | err = PTR_ERR(pcdev->base_csi); |
| 1830 | goto exit; | 1830 | goto exit; |
| 1831 | } | 1831 | } |
| 1832 | 1832 | ||
diff --git a/drivers/media/usb/dvb-usb-v2/Kconfig b/drivers/media/usb/dvb-usb-v2/Kconfig index 834bfecbed73..7a622dbe9b6d 100644 --- a/drivers/media/usb/dvb-usb-v2/Kconfig +++ b/drivers/media/usb/dvb-usb-v2/Kconfig | |||
| @@ -134,7 +134,7 @@ config DVB_USB_MXL111SF | |||
| 134 | 134 | ||
| 135 | config DVB_USB_RTL28XXU | 135 | config DVB_USB_RTL28XXU |
| 136 | tristate "Realtek RTL28xxU DVB USB support" | 136 | tristate "Realtek RTL28xxU DVB USB support" |
| 137 | depends on DVB_USB_V2 && EXPERIMENTAL | 137 | depends on DVB_USB_V2 |
| 138 | select DVB_RTL2830 | 138 | select DVB_RTL2830 |
| 139 | select DVB_RTL2832 | 139 | select DVB_RTL2832 |
| 140 | select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT | 140 | select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT |
diff --git a/drivers/media/usb/pvrusb2/Kconfig b/drivers/media/usb/pvrusb2/Kconfig index 32b11c15bb1a..60a2604e4cb3 100644 --- a/drivers/media/usb/pvrusb2/Kconfig +++ b/drivers/media/usb/pvrusb2/Kconfig | |||
| @@ -17,9 +17,9 @@ config VIDEO_PVRUSB2 | |||
| 17 | module will be called pvrusb2 | 17 | module will be called pvrusb2 |
| 18 | 18 | ||
| 19 | config VIDEO_PVRUSB2_SYSFS | 19 | config VIDEO_PVRUSB2_SYSFS |
| 20 | bool "pvrusb2 sysfs support (EXPERIMENTAL)" | 20 | bool "pvrusb2 sysfs support" |
| 21 | default y | 21 | default y |
| 22 | depends on VIDEO_PVRUSB2 && SYSFS && EXPERIMENTAL | 22 | depends on VIDEO_PVRUSB2 && SYSFS |
| 23 | ---help--- | 23 | ---help--- |
| 24 | This option enables the operation of a sysfs based | 24 | This option enables the operation of a sysfs based |
| 25 | interface for query and control of the pvrusb2 driver. | 25 | interface for query and control of the pvrusb2 driver. |
| @@ -33,9 +33,9 @@ config VIDEO_PVRUSB2_SYSFS | |||
| 33 | Note: This feature is experimental and subject to change. | 33 | Note: This feature is experimental and subject to change. |
| 34 | 34 | ||
| 35 | config VIDEO_PVRUSB2_DVB | 35 | config VIDEO_PVRUSB2_DVB |
| 36 | bool "pvrusb2 ATSC/DVB support (EXPERIMENTAL)" | 36 | bool "pvrusb2 ATSC/DVB support" |
| 37 | default y | 37 | default y |
| 38 | depends on VIDEO_PVRUSB2 && DVB_CORE && EXPERIMENTAL | 38 | depends on VIDEO_PVRUSB2 && DVB_CORE |
| 39 | select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT | 39 | select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT |
| 40 | select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT | 40 | select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT |
| 41 | select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT | 41 | select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT |
diff --git a/drivers/memory/emif.c b/drivers/memory/emif.c index 06d31c99e6ac..df0873694858 100644 --- a/drivers/memory/emif.c +++ b/drivers/memory/emif.c | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
| 11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
| 12 | */ | 12 | */ |
| 13 | #include <linux/err.h> | ||
| 13 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
| 14 | #include <linux/reboot.h> | 15 | #include <linux/reboot.h> |
| 15 | #include <linux/platform_data/emif_plat.h> | 16 | #include <linux/platform_data/emif_plat.h> |
| @@ -1468,12 +1469,9 @@ static int __init_or_module emif_probe(struct platform_device *pdev) | |||
| 1468 | goto error; | 1469 | goto error; |
| 1469 | } | 1470 | } |
| 1470 | 1471 | ||
| 1471 | emif->base = devm_request_and_ioremap(emif->dev, res); | 1472 | emif->base = devm_ioremap_resource(emif->dev, res); |
| 1472 | if (!emif->base) { | 1473 | if (IS_ERR(emif->base)) |
| 1473 | dev_err(emif->dev, "%s: devm_request_and_ioremap() failed\n", | ||
| 1474 | __func__); | ||
| 1475 | goto error; | 1474 | goto error; |
| 1476 | } | ||
| 1477 | 1475 | ||
| 1478 | irq = platform_get_irq(pdev, 0); | 1476 | irq = platform_get_irq(pdev, 0); |
| 1479 | if (irq < 0) { | 1477 | if (irq < 0) { |
diff --git a/drivers/memory/tegra20-mc.c b/drivers/memory/tegra20-mc.c index 186f27d9e5f1..2ca5f2814f4a 100644 --- a/drivers/memory/tegra20-mc.c +++ b/drivers/memory/tegra20-mc.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
| 18 | */ | 18 | */ |
| 19 | 19 | ||
| 20 | #include <linux/err.h> | ||
| 20 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| 21 | #include <linux/module.h> | 22 | #include <linux/module.h> |
| 22 | #include <linux/ratelimit.h> | 23 | #include <linux/ratelimit.h> |
| @@ -216,9 +217,9 @@ static int tegra20_mc_probe(struct platform_device *pdev) | |||
| 216 | res = platform_get_resource(pdev, IORESOURCE_MEM, i); | 217 | res = platform_get_resource(pdev, IORESOURCE_MEM, i); |
| 217 | if (!res) | 218 | if (!res) |
| 218 | return -ENODEV; | 219 | return -ENODEV; |
| 219 | mc->regs[i] = devm_request_and_ioremap(&pdev->dev, res); | 220 | mc->regs[i] = devm_ioremap_resource(&pdev->dev, res); |
| 220 | if (!mc->regs[i]) | 221 | if (IS_ERR(mc->regs[i])) |
| 221 | return -EBUSY; | 222 | return PTR_ERR(mc->regs[i]); |
| 222 | } | 223 | } |
| 223 | 224 | ||
| 224 | irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 225 | irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
diff --git a/drivers/memory/tegra30-mc.c b/drivers/memory/tegra30-mc.c index 0b7ab9332a18..0b975986777d 100644 --- a/drivers/memory/tegra30-mc.c +++ b/drivers/memory/tegra30-mc.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 17 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
| 18 | */ | 18 | */ |
| 19 | 19 | ||
| 20 | #include <linux/err.h> | ||
| 20 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| 21 | #include <linux/module.h> | 22 | #include <linux/module.h> |
| 22 | #include <linux/ratelimit.h> | 23 | #include <linux/ratelimit.h> |
| @@ -336,9 +337,9 @@ static int tegra30_mc_probe(struct platform_device *pdev) | |||
| 336 | res = platform_get_resource(pdev, IORESOURCE_MEM, i); | 337 | res = platform_get_resource(pdev, IORESOURCE_MEM, i); |
| 337 | if (!res) | 338 | if (!res) |
| 338 | return -ENODEV; | 339 | return -ENODEV; |
| 339 | mc->regs[i] = devm_request_and_ioremap(&pdev->dev, res); | 340 | mc->regs[i] = devm_ioremap_resource(&pdev->dev, res); |
| 340 | if (!mc->regs[i]) | 341 | if (IS_ERR(mc->regs[i])) |
| 341 | return -EBUSY; | 342 | return PTR_ERR(mc->regs[i]); |
| 342 | } | 343 | } |
| 343 | 344 | ||
| 344 | irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 345 | irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
diff --git a/drivers/memstick/Kconfig b/drivers/memstick/Kconfig index f0ca41c20323..1314605d791f 100644 --- a/drivers/memstick/Kconfig +++ b/drivers/memstick/Kconfig | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | menuconfig MEMSTICK | 5 | menuconfig MEMSTICK |
| 6 | tristate "Sony MemoryStick card support (EXPERIMENTAL)" | 6 | tristate "Sony MemoryStick card support" |
| 7 | help | 7 | help |
| 8 | Sony MemoryStick is a proprietary storage/extension card protocol. | 8 | Sony MemoryStick is a proprietary storage/extension card protocol. |
| 9 | 9 | ||
diff --git a/drivers/memstick/host/Kconfig b/drivers/memstick/host/Kconfig index 4f7a17fd1aa7..1b37cf8cd204 100644 --- a/drivers/memstick/host/Kconfig +++ b/drivers/memstick/host/Kconfig | |||
| @@ -5,8 +5,8 @@ | |||
| 5 | comment "MemoryStick Host Controller Drivers" | 5 | comment "MemoryStick Host Controller Drivers" |
| 6 | 6 | ||
| 7 | config MEMSTICK_TIFM_MS | 7 | config MEMSTICK_TIFM_MS |
| 8 | tristate "TI Flash Media MemoryStick Interface support (EXPERIMENTAL)" | 8 | tristate "TI Flash Media MemoryStick Interface support " |
| 9 | depends on EXPERIMENTAL && PCI | 9 | depends on PCI |
| 10 | select TIFM_CORE | 10 | select TIFM_CORE |
| 11 | help | 11 | help |
| 12 | Say Y here if you want to be able to access MemoryStick cards with | 12 | Say Y here if you want to be able to access MemoryStick cards with |
| @@ -21,8 +21,8 @@ config MEMSTICK_TIFM_MS | |||
| 21 | module will be called tifm_ms. | 21 | module will be called tifm_ms. |
| 22 | 22 | ||
| 23 | config MEMSTICK_JMICRON_38X | 23 | config MEMSTICK_JMICRON_38X |
| 24 | tristate "JMicron JMB38X MemoryStick interface support (EXPERIMENTAL)" | 24 | tristate "JMicron JMB38X MemoryStick interface support" |
| 25 | depends on EXPERIMENTAL && PCI | 25 | depends on PCI |
| 26 | 26 | ||
| 27 | help | 27 | help |
| 28 | Say Y here if you want to be able to access MemoryStick cards with | 28 | Say Y here if you want to be able to access MemoryStick cards with |
| @@ -32,8 +32,8 @@ config MEMSTICK_JMICRON_38X | |||
| 32 | module will be called jmb38x_ms. | 32 | module will be called jmb38x_ms. |
| 33 | 33 | ||
| 34 | config MEMSTICK_R592 | 34 | config MEMSTICK_R592 |
| 35 | tristate "Ricoh R5C592 MemoryStick interface support (EXPERIMENTAL)" | 35 | tristate "Ricoh R5C592 MemoryStick interface support" |
| 36 | depends on EXPERIMENTAL && PCI | 36 | depends on PCI |
| 37 | 37 | ||
| 38 | help | 38 | help |
| 39 | Say Y here if you want to be able to access MemoryStick cards with | 39 | Say Y here if you want to be able to access MemoryStick cards with |
diff --git a/drivers/mfd/intel_msic.c b/drivers/mfd/intel_msic.c index ab8d0b2739b2..1804331bd52c 100644 --- a/drivers/mfd/intel_msic.c +++ b/drivers/mfd/intel_msic.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | * published by the Free Software Foundation. | 9 | * published by the Free Software Foundation. |
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #include <linux/err.h> | ||
| 12 | #include <linux/gpio.h> | 13 | #include <linux/gpio.h> |
| 13 | #include <linux/io.h> | 14 | #include <linux/io.h> |
| 14 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| @@ -424,11 +425,9 @@ static int intel_msic_probe(struct platform_device *pdev) | |||
| 424 | return -ENODEV; | 425 | return -ENODEV; |
| 425 | } | 426 | } |
| 426 | 427 | ||
| 427 | msic->irq_base = devm_request_and_ioremap(&pdev->dev, res); | 428 | msic->irq_base = devm_ioremap_resource(&pdev->dev, res); |
| 428 | if (!msic->irq_base) { | 429 | if (IS_ERR(msic->irq_base)) |
| 429 | dev_err(&pdev->dev, "failed to map SRAM memory\n"); | 430 | return PTR_ERR(msic->irq_base); |
| 430 | return -ENOMEM; | ||
| 431 | } | ||
| 432 | 431 | ||
| 433 | platform_set_drvdata(pdev, msic); | 432 | platform_set_drvdata(pdev, msic); |
| 434 | 433 | ||
diff --git a/drivers/misc/atmel-ssc.c b/drivers/misc/atmel-ssc.c index bd90dd23242e..c09c28f92055 100644 --- a/drivers/misc/atmel-ssc.c +++ b/drivers/misc/atmel-ssc.c | |||
| @@ -159,11 +159,9 @@ static int ssc_probe(struct platform_device *pdev) | |||
| 159 | return -ENXIO; | 159 | return -ENXIO; |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | ssc->regs = devm_request_and_ioremap(&pdev->dev, regs); | 162 | ssc->regs = devm_ioremap_resource(&pdev->dev, regs); |
| 163 | if (!ssc->regs) { | 163 | if (IS_ERR(ssc->regs)) |
| 164 | dev_dbg(&pdev->dev, "ioremap failed\n"); | 164 | return PTR_ERR(ssc->regs); |
| 165 | return -EINVAL; | ||
| 166 | } | ||
| 167 | 165 | ||
| 168 | ssc->phybase = regs->start; | 166 | ssc->phybase = regs->start; |
| 169 | 167 | ||
diff --git a/drivers/mmc/core/Kconfig b/drivers/mmc/core/Kconfig index ef103871517f..269d072ef55e 100644 --- a/drivers/mmc/core/Kconfig +++ b/drivers/mmc/core/Kconfig | |||
| @@ -18,8 +18,7 @@ config MMC_UNSAFE_RESUME | |||
| 18 | module parameter "removable=0" or "removable=1". | 18 | module parameter "removable=0" or "removable=1". |
| 19 | 19 | ||
| 20 | config MMC_CLKGATE | 20 | config MMC_CLKGATE |
| 21 | bool "MMC host clock gating (EXPERIMENTAL)" | 21 | bool "MMC host clock gating" |
| 22 | depends on EXPERIMENTAL | ||
| 23 | help | 22 | help |
| 24 | This will attempt to aggressively gate the clock to the MMC card. | 23 | This will attempt to aggressively gate the clock to the MMC card. |
| 25 | This is done to save power due to gating off the logic and bus | 24 | This is done to save power due to gating off the logic and bus |
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig index 8d13c6594520..cc8a8fad455a 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig | |||
| @@ -69,7 +69,7 @@ config MMC_SDHCI_PCI | |||
| 69 | If unsure, say N. | 69 | If unsure, say N. |
| 70 | 70 | ||
| 71 | config MMC_RICOH_MMC | 71 | config MMC_RICOH_MMC |
| 72 | bool "Ricoh MMC Controller Disabler (EXPERIMENTAL)" | 72 | bool "Ricoh MMC Controller Disabler" |
| 73 | depends on MMC_SDHCI_PCI | 73 | depends on MMC_SDHCI_PCI |
| 74 | help | 74 | help |
| 75 | This adds a pci quirk to disable Ricoh MMC Controller. This | 75 | This adds a pci quirk to disable Ricoh MMC Controller. This |
| @@ -186,9 +186,6 @@ config MMC_SDHCI_S3C | |||
| 186 | often referrered to as the HSMMC block in some of the Samsung S3C | 186 | often referrered to as the HSMMC block in some of the Samsung S3C |
| 187 | range of SoC. | 187 | range of SoC. |
| 188 | 188 | ||
| 189 | Note, due to the problems with DMA, the DMA support is only | ||
| 190 | available with CONFIG_EXPERIMENTAL is selected. | ||
| 191 | |||
| 192 | If you have a controller with this interface, say Y or M here. | 189 | If you have a controller with this interface, say Y or M here. |
| 193 | 190 | ||
| 194 | If unsure, say N. | 191 | If unsure, say N. |
| @@ -233,7 +230,7 @@ config MMC_SDHCI_SPEAR | |||
| 233 | 230 | ||
| 234 | config MMC_SDHCI_S3C_DMA | 231 | config MMC_SDHCI_S3C_DMA |
| 235 | bool "DMA support on S3C SDHCI" | 232 | bool "DMA support on S3C SDHCI" |
| 236 | depends on MMC_SDHCI_S3C && EXPERIMENTAL | 233 | depends on MMC_SDHCI_S3C |
| 237 | help | 234 | help |
| 238 | Enable DMA support on the Samsung S3C SDHCI glue. The DMA | 235 | Enable DMA support on the Samsung S3C SDHCI glue. The DMA |
| 239 | has proved to be problematic if the controller encounters | 236 | has proved to be problematic if the controller encounters |
| @@ -330,8 +327,8 @@ config MMC_MXS | |||
| 330 | If unsure, say N. | 327 | If unsure, say N. |
| 331 | 328 | ||
| 332 | config MMC_TIFM_SD | 329 | config MMC_TIFM_SD |
| 333 | tristate "TI Flash Media MMC/SD Interface support (EXPERIMENTAL)" | 330 | tristate "TI Flash Media MMC/SD Interface support" |
| 334 | depends on EXPERIMENTAL && PCI | 331 | depends on PCI |
| 335 | select TIFM_CORE | 332 | select TIFM_CORE |
| 336 | help | 333 | help |
| 337 | Say Y here if you want to be able to access MMC/SD cards with | 334 | Say Y here if you want to be able to access MMC/SD cards with |
| @@ -410,8 +407,7 @@ config MMC_S3C_PIO | |||
| 410 | the S3C MCI driver. | 407 | the S3C MCI driver. |
| 411 | 408 | ||
| 412 | config MMC_S3C_DMA | 409 | config MMC_S3C_DMA |
| 413 | bool "Use DMA transfers only (EXPERIMENTAL)" | 410 | bool "Use DMA transfers only" |
| 414 | depends on EXPERIMENTAL | ||
| 415 | help | 411 | help |
| 416 | Use DMA to transfer data between memory and the hardare. | 412 | Use DMA to transfer data between memory and the hardare. |
| 417 | 413 | ||
| @@ -420,7 +416,7 @@ config MMC_S3C_DMA | |||
| 420 | option is useful. | 416 | option is useful. |
| 421 | 417 | ||
| 422 | config MMC_S3C_PIODMA | 418 | config MMC_S3C_PIODMA |
| 423 | bool "Support for both PIO and DMA (EXPERIMENTAL)" | 419 | bool "Support for both PIO and DMA" |
| 424 | help | 420 | help |
| 425 | Compile both the PIO and DMA transfer routines into the | 421 | Compile both the PIO and DMA transfer routines into the |
| 426 | driver and let the platform select at run-time which one | 422 | driver and let the platform select at run-time which one |
| @@ -431,8 +427,8 @@ config MMC_S3C_PIODMA | |||
| 431 | endchoice | 427 | endchoice |
| 432 | 428 | ||
| 433 | config MMC_SDRICOH_CS | 429 | config MMC_SDRICOH_CS |
| 434 | tristate "MMC/SD driver for Ricoh Bay1Controllers (EXPERIMENTAL)" | 430 | tristate "MMC/SD driver for Ricoh Bay1Controllers" |
| 435 | depends on EXPERIMENTAL && PCI && PCMCIA | 431 | depends on PCI && PCMCIA |
| 436 | help | 432 | help |
| 437 | Say Y here if your Notebook reports a Ricoh Bay1Controller PCMCIA | 433 | Say Y here if your Notebook reports a Ricoh Bay1Controller PCMCIA |
| 438 | card whenever you insert a MMC or SD card into the card slot. | 434 | card whenever you insert a MMC or SD card into the card slot. |
diff --git a/drivers/mmc/host/dw_mmc-pltfm.c b/drivers/mmc/host/dw_mmc-pltfm.c index 5e1fb1d2c422..41c27b74b003 100644 --- a/drivers/mmc/host/dw_mmc-pltfm.c +++ b/drivers/mmc/host/dw_mmc-pltfm.c | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | * (at your option) any later version. | 10 | * (at your option) any later version. |
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #include <linux/err.h> | ||
| 13 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
| 14 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| 15 | #include <linux/io.h> | 16 | #include <linux/io.h> |
| @@ -46,9 +47,9 @@ int dw_mci_pltfm_register(struct platform_device *pdev, | |||
| 46 | host->dev = &pdev->dev; | 47 | host->dev = &pdev->dev; |
| 47 | host->irq_flags = 0; | 48 | host->irq_flags = 0; |
| 48 | host->pdata = pdev->dev.platform_data; | 49 | host->pdata = pdev->dev.platform_data; |
| 49 | host->regs = devm_request_and_ioremap(&pdev->dev, regs); | 50 | host->regs = devm_ioremap_resource(&pdev->dev, regs); |
| 50 | if (!host->regs) | 51 | if (IS_ERR(host->regs)) |
| 51 | return -ENOMEM; | 52 | return PTR_ERR(host->regs); |
| 52 | 53 | ||
| 53 | if (drv_data && drv_data->init) { | 54 | if (drv_data && drv_data->init) { |
| 54 | ret = drv_data->init(host); | 55 | ret = drv_data->init(host); |
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c index 206fe499ded5..5b665551a6f3 100644 --- a/drivers/mmc/host/mxs-mmc.c +++ b/drivers/mmc/host/mxs-mmc.c | |||
| @@ -614,9 +614,9 @@ static int mxs_mmc_probe(struct platform_device *pdev) | |||
| 614 | host = mmc_priv(mmc); | 614 | host = mmc_priv(mmc); |
| 615 | ssp = &host->ssp; | 615 | ssp = &host->ssp; |
| 616 | ssp->dev = &pdev->dev; | 616 | ssp->dev = &pdev->dev; |
| 617 | ssp->base = devm_request_and_ioremap(&pdev->dev, iores); | 617 | ssp->base = devm_ioremap_resource(&pdev->dev, iores); |
| 618 | if (!ssp->base) { | 618 | if (IS_ERR(ssp->base)) { |
| 619 | ret = -EADDRNOTAVAIL; | 619 | ret = PTR_ERR(ssp->base); |
| 620 | goto out_mmc_free; | 620 | goto out_mmc_free; |
| 621 | } | 621 | } |
| 622 | 622 | ||
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 82a8de148a8f..a0c621421ee8 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c | |||
| @@ -651,10 +651,9 @@ static int sdhci_s3c_probe(struct platform_device *pdev) | |||
| 651 | #endif | 651 | #endif |
| 652 | 652 | ||
| 653 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 653 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 654 | host->ioaddr = devm_request_and_ioremap(&pdev->dev, res); | 654 | host->ioaddr = devm_ioremap_resource(&pdev->dev, res); |
| 655 | if (!host->ioaddr) { | 655 | if (IS_ERR(host->ioaddr)) { |
| 656 | dev_err(dev, "failed to map registers\n"); | 656 | ret = PTR_ERR(host->ioaddr); |
| 657 | ret = -ENXIO; | ||
| 658 | goto err_req_regs; | 657 | goto err_req_regs; |
| 659 | } | 658 | } |
| 660 | 659 | ||
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig index 73fcbbeb78d0..03f2eb5627ec 100644 --- a/drivers/mtd/Kconfig +++ b/drivers/mtd/Kconfig | |||
| @@ -291,7 +291,7 @@ config SSFDC | |||
| 291 | 291 | ||
| 292 | config SM_FTL | 292 | config SM_FTL |
| 293 | tristate "SmartMedia/xD new translation layer" | 293 | tristate "SmartMedia/xD new translation layer" |
| 294 | depends on EXPERIMENTAL && BLOCK | 294 | depends on BLOCK |
| 295 | select MTD_BLKDEVS | 295 | select MTD_BLKDEVS |
| 296 | select MTD_NAND_ECC | 296 | select MTD_NAND_ECC |
| 297 | help | 297 | help |
diff --git a/drivers/mtd/chips/Kconfig b/drivers/mtd/chips/Kconfig index e469b01d40d2..c219e3d098d9 100644 --- a/drivers/mtd/chips/Kconfig +++ b/drivers/mtd/chips/Kconfig | |||
| @@ -225,7 +225,7 @@ config MTD_ABSENT | |||
| 225 | 225 | ||
| 226 | config MTD_XIP | 226 | config MTD_XIP |
| 227 | bool "XIP aware MTD support" | 227 | bool "XIP aware MTD support" |
| 228 | depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && EXPERIMENTAL && ARCH_MTD_XIP | 228 | depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && ARCH_MTD_XIP |
| 229 | default y if XIP_KERNEL | 229 | default y if XIP_KERNEL |
| 230 | help | 230 | help |
| 231 | This allows MTD support to work with flash memory which is also | 231 | This allows MTD support to work with flash memory which is also |
diff --git a/drivers/mtd/devices/Kconfig b/drivers/mtd/devices/Kconfig index 46dcb54c32ec..12311f506ca1 100644 --- a/drivers/mtd/devices/Kconfig +++ b/drivers/mtd/devices/Kconfig | |||
| @@ -52,7 +52,7 @@ config MTD_MS02NV | |||
| 52 | 52 | ||
| 53 | config MTD_DATAFLASH | 53 | config MTD_DATAFLASH |
| 54 | tristate "Support for AT45xxx DataFlash" | 54 | tristate "Support for AT45xxx DataFlash" |
| 55 | depends on SPI_MASTER && EXPERIMENTAL | 55 | depends on SPI_MASTER |
| 56 | help | 56 | help |
| 57 | This enables access to AT45xxx DataFlash chips, using SPI. | 57 | This enables access to AT45xxx DataFlash chips, using SPI. |
| 58 | Sometimes DataFlash chips are packaged inside MMC-format | 58 | Sometimes DataFlash chips are packaged inside MMC-format |
| @@ -81,7 +81,7 @@ config MTD_DATAFLASH_OTP | |||
| 81 | 81 | ||
| 82 | config MTD_M25P80 | 82 | config MTD_M25P80 |
| 83 | tristate "Support most SPI Flash chips (AT26DF, M25P, W25X, ...)" | 83 | tristate "Support most SPI Flash chips (AT26DF, M25P, W25X, ...)" |
| 84 | depends on SPI_MASTER && EXPERIMENTAL | 84 | depends on SPI_MASTER |
| 85 | help | 85 | help |
| 86 | This enables access to most modern SPI flash chips, used for | 86 | This enables access to most modern SPI flash chips, used for |
| 87 | program and data storage. Series supported include Atmel AT26DF, | 87 | program and data storage. Series supported include Atmel AT26DF, |
diff --git a/drivers/mtd/devices/spear_smi.c b/drivers/mtd/devices/spear_smi.c index 2aabd96bf0ff..8a82b8bc21e1 100644 --- a/drivers/mtd/devices/spear_smi.c +++ b/drivers/mtd/devices/spear_smi.c | |||
| @@ -949,10 +949,9 @@ static int spear_smi_probe(struct platform_device *pdev) | |||
| 949 | 949 | ||
| 950 | smi_base = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 950 | smi_base = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 951 | 951 | ||
| 952 | dev->io_base = devm_request_and_ioremap(&pdev->dev, smi_base); | 952 | dev->io_base = devm_ioremap_resource(&pdev->dev, smi_base); |
| 953 | if (!dev->io_base) { | 953 | if (IS_ERR(dev->io_base)) { |
| 954 | ret = -EIO; | 954 | ret = PTR_ERR(dev->io_base); |
| 955 | dev_err(&pdev->dev, "devm_request_and_ioremap fail\n"); | ||
| 956 | goto err; | 955 | goto err; |
| 957 | } | 956 | } |
| 958 | 957 | ||
diff --git a/drivers/mtd/maps/autcpu12-nvram.c b/drivers/mtd/maps/autcpu12-nvram.c index a2dc2ae4b24e..c3525d2a2fa8 100644 --- a/drivers/mtd/maps/autcpu12-nvram.c +++ b/drivers/mtd/maps/autcpu12-nvram.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | * along with this program; if not, write to the Free Software | 16 | * along with this program; if not, write to the Free Software |
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 18 | */ | 18 | */ |
| 19 | #include <linux/err.h> | ||
| 19 | #include <linux/sizes.h> | 20 | #include <linux/sizes.h> |
| 20 | 21 | ||
| 21 | #include <linux/types.h> | 22 | #include <linux/types.h> |
| @@ -55,12 +56,10 @@ static int autcpu12_nvram_probe(struct platform_device *pdev) | |||
| 55 | priv->map.bankwidth = 4; | 56 | priv->map.bankwidth = 4; |
| 56 | priv->map.phys = res->start; | 57 | priv->map.phys = res->start; |
| 57 | priv->map.size = resource_size(res); | 58 | priv->map.size = resource_size(res); |
| 58 | priv->map.virt = devm_request_and_ioremap(&pdev->dev, res); | 59 | priv->map.virt = devm_ioremap_resource(&pdev->dev, res); |
| 59 | strcpy((char *)priv->map.name, res->name); | 60 | strcpy((char *)priv->map.name, res->name); |
| 60 | if (!priv->map.virt) { | 61 | if (IS_ERR(priv->map.virt)) |
| 61 | dev_err(&pdev->dev, "failed to remap mem resource\n"); | 62 | return PTR_ERR(priv->map.virt); |
| 62 | return -EBUSY; | ||
| 63 | } | ||
| 64 | 63 | ||
| 65 | simple_map_init(&priv->map); | 64 | simple_map_init(&priv->map); |
| 66 | 65 | ||
diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c index 3c3c791eb96a..d1da6ede3845 100644 --- a/drivers/mtd/maps/lantiq-flash.c +++ b/drivers/mtd/maps/lantiq-flash.c | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | * Copyright (C) 2010 John Crispin <blogic@openwrt.org> | 7 | * Copyright (C) 2010 John Crispin <blogic@openwrt.org> |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <linux/err.h> | ||
| 10 | #include <linux/module.h> | 11 | #include <linux/module.h> |
| 11 | #include <linux/types.h> | 12 | #include <linux/types.h> |
| 12 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
| @@ -136,10 +137,9 @@ ltq_mtd_probe(struct platform_device *pdev) | |||
| 136 | ltq_mtd->map = kzalloc(sizeof(struct map_info), GFP_KERNEL); | 137 | ltq_mtd->map = kzalloc(sizeof(struct map_info), GFP_KERNEL); |
| 137 | ltq_mtd->map->phys = ltq_mtd->res->start; | 138 | ltq_mtd->map->phys = ltq_mtd->res->start; |
| 138 | ltq_mtd->map->size = resource_size(ltq_mtd->res); | 139 | ltq_mtd->map->size = resource_size(ltq_mtd->res); |
| 139 | ltq_mtd->map->virt = devm_request_and_ioremap(&pdev->dev, ltq_mtd->res); | 140 | ltq_mtd->map->virt = devm_ioremap_resource(&pdev->dev, ltq_mtd->res); |
| 140 | if (!ltq_mtd->map->virt) { | 141 | if (IS_ERR(ltq_mtd->map->virt)) { |
| 141 | dev_err(&pdev->dev, "failed to remap mem resource\n"); | 142 | err = PTR_ERR(ltq_mtd->map->virt); |
| 142 | err = -EBUSY; | ||
| 143 | goto err_out; | 143 | goto err_out; |
| 144 | } | 144 | } |
| 145 | 145 | ||
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig index 5819eb575210..81bf5e52601e 100644 --- a/drivers/mtd/nand/Kconfig +++ b/drivers/mtd/nand/Kconfig | |||
| @@ -260,8 +260,7 @@ config MTD_NAND_S3C2410_CLKSTOP | |||
| 260 | approximately 5mA of power when there is nothing happening. | 260 | approximately 5mA of power when there is nothing happening. |
| 261 | 261 | ||
| 262 | config MTD_NAND_DISKONCHIP | 262 | config MTD_NAND_DISKONCHIP |
| 263 | tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation) (EXPERIMENTAL)" | 263 | tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation)" |
| 264 | depends on EXPERIMENTAL | ||
| 265 | depends on HAS_IOMEM | 264 | depends on HAS_IOMEM |
| 266 | select REED_SOLOMON | 265 | select REED_SOLOMON |
| 267 | select REED_SOLOMON_DEC16 | 266 | select REED_SOLOMON_DEC16 |
| @@ -331,8 +330,8 @@ config MTD_NAND_DISKONCHIP_BBTWRITE | |||
| 331 | parameter "inftl_bbt_write=1". | 330 | parameter "inftl_bbt_write=1". |
| 332 | 331 | ||
| 333 | config MTD_NAND_DOCG4 | 332 | config MTD_NAND_DOCG4 |
| 334 | tristate "Support for DiskOnChip G4 (EXPERIMENTAL)" | 333 | tristate "Support for DiskOnChip G4" |
| 335 | depends on EXPERIMENTAL && HAS_IOMEM | 334 | depends on HAS_IOMEM |
| 336 | select BCH | 335 | select BCH |
| 337 | select BITREVERSE | 336 | select BITREVERSE |
| 338 | help | 337 | help |
diff --git a/drivers/mtd/nand/fsmc_nand.c b/drivers/mtd/nand/fsmc_nand.c index 67e62d3d495c..c543cc09f193 100644 --- a/drivers/mtd/nand/fsmc_nand.c +++ b/drivers/mtd/nand/fsmc_nand.c | |||
| @@ -937,42 +937,35 @@ static int __init fsmc_nand_probe(struct platform_device *pdev) | |||
| 937 | if (!res) | 937 | if (!res) |
| 938 | return -EINVAL; | 938 | return -EINVAL; |
| 939 | 939 | ||
| 940 | host->data_va = devm_request_and_ioremap(&pdev->dev, res); | 940 | host->data_va = devm_ioremap_resource(&pdev->dev, res); |
| 941 | if (!host->data_va) { | 941 | if (IS_ERR(host->data_va)) |
| 942 | dev_err(&pdev->dev, "data ioremap failed\n"); | 942 | return PTR_ERR(host->data_va); |
| 943 | return -ENOMEM; | 943 | |
| 944 | } | ||
| 945 | host->data_pa = (dma_addr_t)res->start; | 944 | host->data_pa = (dma_addr_t)res->start; |
| 946 | 945 | ||
| 947 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nand_addr"); | 946 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nand_addr"); |
| 948 | if (!res) | 947 | if (!res) |
| 949 | return -EINVAL; | 948 | return -EINVAL; |
| 950 | 949 | ||
| 951 | host->addr_va = devm_request_and_ioremap(&pdev->dev, res); | 950 | host->addr_va = devm_ioremap_resource(&pdev->dev, res); |
| 952 | if (!host->addr_va) { | 951 | if (IS_ERR(host->addr_va)) |
| 953 | dev_err(&pdev->dev, "ale ioremap failed\n"); | 952 | return PTR_ERR(host->addr_va); |
| 954 | return -ENOMEM; | ||
| 955 | } | ||
| 956 | 953 | ||
| 957 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nand_cmd"); | 954 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nand_cmd"); |
| 958 | if (!res) | 955 | if (!res) |
| 959 | return -EINVAL; | 956 | return -EINVAL; |
| 960 | 957 | ||
| 961 | host->cmd_va = devm_request_and_ioremap(&pdev->dev, res); | 958 | host->cmd_va = devm_ioremap_resource(&pdev->dev, res); |
| 962 | if (!host->cmd_va) { | 959 | if (IS_ERR(host->cmd_va)) |
| 963 | dev_err(&pdev->dev, "ale ioremap failed\n"); | 960 | return PTR_ERR(host->cmd_va); |
| 964 | return -ENOMEM; | ||
| 965 | } | ||
| 966 | 961 | ||
| 967 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "fsmc_regs"); | 962 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "fsmc_regs"); |
| 968 | if (!res) | 963 | if (!res) |
| 969 | return -EINVAL; | 964 | return -EINVAL; |
| 970 | 965 | ||
| 971 | host->regs_va = devm_request_and_ioremap(&pdev->dev, res); | 966 | host->regs_va = devm_ioremap_resource(&pdev->dev, res); |
| 972 | if (!host->regs_va) { | 967 | if (IS_ERR(host->regs_va)) |
| 973 | dev_err(&pdev->dev, "regs ioremap failed\n"); | 968 | return PTR_ERR(host->regs_va); |
| 974 | return -ENOMEM; | ||
| 975 | } | ||
| 976 | 969 | ||
| 977 | host->clk = clk_get(&pdev->dev, NULL); | 970 | host->clk = clk_get(&pdev->dev, NULL); |
| 978 | if (IS_ERR(host->clk)) { | 971 | if (IS_ERR(host->clk)) { |
diff --git a/drivers/mtd/nand/lpc32xx_mlc.c b/drivers/mtd/nand/lpc32xx_mlc.c index f182befa7360..0ca22ae9135c 100644 --- a/drivers/mtd/nand/lpc32xx_mlc.c +++ b/drivers/mtd/nand/lpc32xx_mlc.c | |||
| @@ -677,11 +677,10 @@ static int lpc32xx_nand_probe(struct platform_device *pdev) | |||
| 677 | return -ENXIO; | 677 | return -ENXIO; |
| 678 | } | 678 | } |
| 679 | 679 | ||
| 680 | host->io_base = devm_request_and_ioremap(&pdev->dev, rc); | 680 | host->io_base = devm_ioremap_resource(&pdev->dev, rc); |
| 681 | if (host->io_base == NULL) { | 681 | if (IS_ERR(host->io_base)) |
| 682 | dev_err(&pdev->dev, "ioremap failed\n"); | 682 | return PTR_ERR(host->io_base); |
| 683 | return -EIO; | 683 | |
| 684 | } | ||
| 685 | host->io_base_phy = rc->start; | 684 | host->io_base_phy = rc->start; |
| 686 | 685 | ||
| 687 | mtd = &host->mtd; | 686 | mtd = &host->mtd; |
diff --git a/drivers/mtd/nand/lpc32xx_slc.c b/drivers/mtd/nand/lpc32xx_slc.c index 030b78c62895..be94ed5abefb 100644 --- a/drivers/mtd/nand/lpc32xx_slc.c +++ b/drivers/mtd/nand/lpc32xx_slc.c | |||
| @@ -778,11 +778,9 @@ static int lpc32xx_nand_probe(struct platform_device *pdev) | |||
| 778 | } | 778 | } |
| 779 | host->io_base_dma = rc->start; | 779 | host->io_base_dma = rc->start; |
| 780 | 780 | ||
| 781 | host->io_base = devm_request_and_ioremap(&pdev->dev, rc); | 781 | host->io_base = devm_ioremap_resource(&pdev->dev, rc); |
| 782 | if (host->io_base == NULL) { | 782 | if (IS_ERR(host->io_base)) |
| 783 | dev_err(&pdev->dev, "ioremap failed\n"); | 783 | return PTR_ERR(host->io_base); |
| 784 | return -ENOMEM; | ||
| 785 | } | ||
| 786 | 784 | ||
| 787 | if (pdev->dev.of_node) | 785 | if (pdev->dev.of_node) |
| 788 | host->ncfg = lpc32xx_parse_dt(&pdev->dev); | 786 | host->ncfg = lpc32xx_parse_dt(&pdev->dev); |
diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c index 45204e41a028..60ac5b98b718 100644 --- a/drivers/mtd/nand/mxc_nand.c +++ b/drivers/mtd/nand/mxc_nand.c | |||
| @@ -1437,9 +1437,9 @@ static int mxcnd_probe(struct platform_device *pdev) | |||
| 1437 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1437 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1438 | if (!res) | 1438 | if (!res) |
| 1439 | return -ENODEV; | 1439 | return -ENODEV; |
| 1440 | host->regs_ip = devm_request_and_ioremap(&pdev->dev, res); | 1440 | host->regs_ip = devm_ioremap_resource(&pdev->dev, res); |
| 1441 | if (!host->regs_ip) | 1441 | if (IS_ERR(host->regs_ip)) |
| 1442 | return -ENOMEM; | 1442 | return PTR_ERR(host->regs_ip); |
| 1443 | 1443 | ||
| 1444 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); | 1444 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
| 1445 | } else { | 1445 | } else { |
| @@ -1449,9 +1449,9 @@ static int mxcnd_probe(struct platform_device *pdev) | |||
| 1449 | if (!res) | 1449 | if (!res) |
| 1450 | return -ENODEV; | 1450 | return -ENODEV; |
| 1451 | 1451 | ||
| 1452 | host->base = devm_request_and_ioremap(&pdev->dev, res); | 1452 | host->base = devm_ioremap_resource(&pdev->dev, res); |
| 1453 | if (!host->base) | 1453 | if (IS_ERR(host->base)) |
| 1454 | return -ENOMEM; | 1454 | return PTR_ERR(host->base); |
| 1455 | 1455 | ||
| 1456 | host->main_area0 = host->base; | 1456 | host->main_area0 = host->base; |
| 1457 | 1457 | ||
diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c index df954b4dcba2..d65afd23e171 100644 --- a/drivers/mtd/nand/s3c2410.c +++ b/drivers/mtd/nand/s3c2410.c | |||
| @@ -952,10 +952,9 @@ static int s3c24xx_nand_probe(struct platform_device *pdev) | |||
| 952 | info->platform = plat; | 952 | info->platform = plat; |
| 953 | info->cpu_type = cpu_type; | 953 | info->cpu_type = cpu_type; |
| 954 | 954 | ||
| 955 | info->regs = devm_request_and_ioremap(&pdev->dev, res); | 955 | info->regs = devm_ioremap_resource(&pdev->dev, res); |
| 956 | if (info->regs == NULL) { | 956 | if (IS_ERR(info->regs)) { |
| 957 | dev_err(&pdev->dev, "cannot reserve register region\n"); | 957 | err = PTR_ERR(info->regs); |
| 958 | err = -EIO; | ||
| 959 | goto exit_error; | 958 | goto exit_error; |
| 960 | } | 959 | } |
| 961 | 960 | ||
diff --git a/drivers/mtd/nand/txx9ndfmc.c b/drivers/mtd/nand/txx9ndfmc.c index e3d7266e256f..e1e8748aa47b 100644 --- a/drivers/mtd/nand/txx9ndfmc.c +++ b/drivers/mtd/nand/txx9ndfmc.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | * (C) Copyright TOSHIBA CORPORATION 2004-2007 | 9 | * (C) Copyright TOSHIBA CORPORATION 2004-2007 |
| 10 | * All Rights Reserved. | 10 | * All Rights Reserved. |
| 11 | */ | 11 | */ |
| 12 | #include <linux/err.h> | ||
| 12 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| 13 | #include <linux/slab.h> | 14 | #include <linux/slab.h> |
| 14 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| @@ -286,9 +287,9 @@ static int __init txx9ndfmc_probe(struct platform_device *dev) | |||
| 286 | drvdata = devm_kzalloc(&dev->dev, sizeof(*drvdata), GFP_KERNEL); | 287 | drvdata = devm_kzalloc(&dev->dev, sizeof(*drvdata), GFP_KERNEL); |
| 287 | if (!drvdata) | 288 | if (!drvdata) |
| 288 | return -ENOMEM; | 289 | return -ENOMEM; |
| 289 | drvdata->base = devm_request_and_ioremap(&dev->dev, res); | 290 | drvdata->base = devm_ioremap_resource(&dev->dev, res); |
| 290 | if (!drvdata->base) | 291 | if (IS_ERR(drvdata->base)) |
| 291 | return -EBUSY; | 292 | return PTR_ERR(drvdata->base); |
| 292 | 293 | ||
| 293 | hold = plat->hold ?: 20; /* tDH */ | 294 | hold = plat->hold ?: 20; /* tDH */ |
| 294 | spw = plat->spw ?: 90; /* max(tREADID, tWP, tRP) */ | 295 | spw = plat->spw ?: 90; /* max(tREADID, tWP, tRP) */ |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 6a70184c3f23..2334190ff8d2 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
| @@ -123,8 +123,7 @@ config IFB | |||
| 123 | source "drivers/net/team/Kconfig" | 123 | source "drivers/net/team/Kconfig" |
| 124 | 124 | ||
| 125 | config MACVLAN | 125 | config MACVLAN |
| 126 | tristate "MAC-VLAN support (EXPERIMENTAL)" | 126 | tristate "MAC-VLAN support" |
| 127 | depends on EXPERIMENTAL | ||
| 128 | ---help--- | 127 | ---help--- |
| 129 | This allows one to create virtual interfaces that map packets to | 128 | This allows one to create virtual interfaces that map packets to |
| 130 | or from specific MAC addresses to a particular interface. | 129 | or from specific MAC addresses to a particular interface. |
| @@ -138,7 +137,7 @@ config MACVLAN | |||
| 138 | will be called macvlan. | 137 | will be called macvlan. |
| 139 | 138 | ||
| 140 | config MACVTAP | 139 | config MACVTAP |
| 141 | tristate "MAC-VLAN based tap driver (EXPERIMENTAL)" | 140 | tristate "MAC-VLAN based tap driver" |
| 142 | depends on MACVLAN | 141 | depends on MACVLAN |
| 143 | help | 142 | help |
| 144 | This adds a specialized tap character device driver that is based | 143 | This adds a specialized tap character device driver that is based |
| @@ -234,8 +233,8 @@ config VETH | |||
| 234 | versa. | 233 | versa. |
| 235 | 234 | ||
| 236 | config VIRTIO_NET | 235 | config VIRTIO_NET |
| 237 | tristate "Virtio network driver (EXPERIMENTAL)" | 236 | tristate "Virtio network driver" |
| 238 | depends on EXPERIMENTAL && VIRTIO | 237 | depends on VIRTIO |
| 239 | ---help--- | 238 | ---help--- |
| 240 | This is the virtual network driver for virtio. It can be used with | 239 | This is the virtual network driver for virtio. It can be used with |
| 241 | lguest or QEMU based VMMs (like KVM or Xen). Say Y or M. | 240 | lguest or QEMU based VMMs (like KVM or Xen). Say Y or M. |
diff --git a/drivers/net/ethernet/8390/Kconfig b/drivers/net/ethernet/8390/Kconfig index 1b78ca7a9786..a5f91e1e8fe3 100644 --- a/drivers/net/ethernet/8390/Kconfig +++ b/drivers/net/ethernet/8390/Kconfig | |||
| @@ -5,10 +5,7 @@ | |||
| 5 | config NET_VENDOR_8390 | 5 | config NET_VENDOR_8390 |
| 6 | bool "National Semi-conductor 8390 devices" | 6 | bool "National Semi-conductor 8390 devices" |
| 7 | default y | 7 | default y |
| 8 | depends on NET_VENDOR_NATSEMI && (AMIGA_PCMCIA || PCI || SUPERH || \ | 8 | depends on NET_VENDOR_NATSEMI |
| 9 | ISA || MAC || M32R || MACH_TX49XX || \ | ||
| 10 | H8300 || ARM || MIPS || ZORRO || PCMCIA || \ | ||
| 11 | EXPERIMENTAL) | ||
| 12 | ---help--- | 9 | ---help--- |
| 13 | If you have a network (Ethernet) card belonging to this class, say Y | 10 | If you have a network (Ethernet) card belonging to this class, say Y |
| 14 | and read the Ethernet-HOWTO, available from | 11 | and read the Ethernet-HOWTO, available from |
diff --git a/drivers/net/ethernet/atheros/Kconfig b/drivers/net/ethernet/atheros/Kconfig index 1ed886d421f8..36d6abd1cfff 100644 --- a/drivers/net/ethernet/atheros/Kconfig +++ b/drivers/net/ethernet/atheros/Kconfig | |||
| @@ -44,8 +44,8 @@ config ATL1 | |||
| 44 | will be called atl1. | 44 | will be called atl1. |
| 45 | 45 | ||
| 46 | config ATL1E | 46 | config ATL1E |
| 47 | tristate "Atheros L1E Gigabit Ethernet support (EXPERIMENTAL)" | 47 | tristate "Atheros L1E Gigabit Ethernet support" |
| 48 | depends on PCI && EXPERIMENTAL | 48 | depends on PCI |
| 49 | select CRC32 | 49 | select CRC32 |
| 50 | select NET_CORE | 50 | select NET_CORE |
| 51 | select MII | 51 | select MII |
| @@ -56,8 +56,8 @@ config ATL1E | |||
| 56 | will be called atl1e. | 56 | will be called atl1e. |
| 57 | 57 | ||
| 58 | config ATL1C | 58 | config ATL1C |
| 59 | tristate "Atheros L1C Gigabit Ethernet support (EXPERIMENTAL)" | 59 | tristate "Atheros L1C Gigabit Ethernet support" |
| 60 | depends on PCI && EXPERIMENTAL | 60 | depends on PCI |
| 61 | select CRC32 | 61 | select CRC32 |
| 62 | select NET_CORE | 62 | select NET_CORE |
| 63 | select MII | 63 | select MII |
diff --git a/drivers/net/ethernet/dec/tulip/Kconfig b/drivers/net/ethernet/dec/tulip/Kconfig index 1203be0436e2..0c37fb2cc867 100644 --- a/drivers/net/ethernet/dec/tulip/Kconfig +++ b/drivers/net/ethernet/dec/tulip/Kconfig | |||
| @@ -57,8 +57,8 @@ config TULIP | |||
| 57 | be called tulip. | 57 | be called tulip. |
| 58 | 58 | ||
| 59 | config TULIP_MWI | 59 | config TULIP_MWI |
| 60 | bool "New bus configuration (EXPERIMENTAL)" | 60 | bool "New bus configuration" |
| 61 | depends on TULIP && EXPERIMENTAL | 61 | depends on TULIP |
| 62 | ---help--- | 62 | ---help--- |
| 63 | This configures your Tulip card specifically for the card and | 63 | This configures your Tulip card specifically for the card and |
| 64 | system cache line size type you are using. | 64 | system cache line size type you are using. |
diff --git a/drivers/net/ethernet/fujitsu/Kconfig b/drivers/net/ethernet/fujitsu/Kconfig index c6a87625898a..6231bc02b964 100644 --- a/drivers/net/ethernet/fujitsu/Kconfig +++ b/drivers/net/ethernet/fujitsu/Kconfig | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | config NET_VENDOR_FUJITSU | 5 | config NET_VENDOR_FUJITSU |
| 6 | bool "Fujitsu devices" | 6 | bool "Fujitsu devices" |
| 7 | default y | 7 | default y |
| 8 | depends on ISA || PCMCIA || (ISA && EXPERIMENTAL) | 8 | depends on ISA || PCMCIA |
| 9 | ---help--- | 9 | ---help--- |
| 10 | If you have a network (Ethernet) card belonging to this class, say Y | 10 | If you have a network (Ethernet) card belonging to this class, say Y |
| 11 | and read the Ethernet-HOWTO, available from | 11 | and read the Ethernet-HOWTO, available from |
diff --git a/drivers/net/ethernet/i825xx/Kconfig b/drivers/net/ethernet/i825xx/Kconfig index 955d929cd00f..9521e68aa3b3 100644 --- a/drivers/net/ethernet/i825xx/Kconfig +++ b/drivers/net/ethernet/i825xx/Kconfig | |||
| @@ -5,9 +5,7 @@ | |||
| 5 | config NET_VENDOR_I825XX | 5 | config NET_VENDOR_I825XX |
| 6 | bool "Intel (82586/82593/82596) devices" | 6 | bool "Intel (82586/82593/82596) devices" |
| 7 | default y | 7 | default y |
| 8 | depends on NET_VENDOR_INTEL && (ISA || ISA_DMA_API || ARM || \ | 8 | depends on NET_VENDOR_INTEL |
| 9 | ARCH_ACORN || SNI_RM || SUN3 || \ | ||
| 10 | GSC || BVME6000 || MVME16x || EXPERIMENTAL) | ||
| 11 | ---help--- | 9 | ---help--- |
| 12 | If you have a network (Ethernet) card belonging to this class, say Y | 10 | If you have a network (Ethernet) card belonging to this class, say Y |
| 13 | and read the Ethernet-HOWTO, available from | 11 | and read the Ethernet-HOWTO, available from |
diff --git a/drivers/net/ethernet/icplus/Kconfig b/drivers/net/ethernet/icplus/Kconfig index 3aff81d7989f..5119ef18953b 100644 --- a/drivers/net/ethernet/icplus/Kconfig +++ b/drivers/net/ethernet/icplus/Kconfig | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | config IP1000 | 5 | config IP1000 |
| 6 | tristate "IP1000 Gigabit Ethernet support" | 6 | tristate "IP1000 Gigabit Ethernet support" |
| 7 | depends on PCI && EXPERIMENTAL | 7 | depends on PCI |
| 8 | select NET_CORE | 8 | select NET_CORE |
| 9 | select MII | 9 | select MII |
| 10 | ---help--- | 10 | ---help--- |
diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig index 3d5f6d463757..05f7264c51f7 100644 --- a/drivers/net/ethernet/intel/Kconfig +++ b/drivers/net/ethernet/intel/Kconfig | |||
| @@ -5,11 +5,6 @@ | |||
| 5 | config NET_VENDOR_INTEL | 5 | config NET_VENDOR_INTEL |
| 6 | bool "Intel devices" | 6 | bool "Intel devices" |
| 7 | default y | 7 | default y |
| 8 | depends on PCI || PCI_MSI || ISA || ISA_DMA_API || ARM || \ | ||
| 9 | ARCH_ACORN || SNI_RM || SUN3 || \ | ||
| 10 | GSC || BVME6000 || MVME16x || \ | ||
| 11 | (ARM && ARCH_IXP4XX && IXP4XX_NPE && IXP4XX_QMGR) || \ | ||
| 12 | EXPERIMENTAL | ||
| 13 | ---help--- | 8 | ---help--- |
| 14 | If you have a network (Ethernet) card belonging to this class, say Y | 9 | If you have a network (Ethernet) card belonging to this class, say Y |
| 15 | and read the Ethernet-HOWTO, available from | 10 | and read the Ethernet-HOWTO, available from |
diff --git a/drivers/net/ethernet/microchip/Kconfig b/drivers/net/ethernet/microchip/Kconfig index 8163fd0f453f..afaf0c07f37f 100644 --- a/drivers/net/ethernet/microchip/Kconfig +++ b/drivers/net/ethernet/microchip/Kconfig | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | config NET_VENDOR_MICROCHIP | 5 | config NET_VENDOR_MICROCHIP |
| 6 | bool "Microchip devices" | 6 | bool "Microchip devices" |
| 7 | default y | 7 | default y |
| 8 | depends on SPI && EXPERIMENTAL | 8 | depends on SPI |
| 9 | ---help--- | 9 | ---help--- |
| 10 | If you have a network (Ethernet) card belonging to this class, say Y | 10 | If you have a network (Ethernet) card belonging to this class, say Y |
| 11 | and read the Ethernet-HOWTO, available from | 11 | and read the Ethernet-HOWTO, available from |
| @@ -20,7 +20,7 @@ if NET_VENDOR_MICROCHIP | |||
| 20 | 20 | ||
| 21 | config ENC28J60 | 21 | config ENC28J60 |
| 22 | tristate "ENC28J60 support" | 22 | tristate "ENC28J60 support" |
| 23 | depends on SPI && EXPERIMENTAL | 23 | depends on SPI |
| 24 | select CRC32 | 24 | select CRC32 |
| 25 | ---help--- | 25 | ---help--- |
| 26 | Support for the Microchip EN28J60 ethernet chip. | 26 | Support for the Microchip EN28J60 ethernet chip. |
diff --git a/drivers/net/ethernet/natsemi/Kconfig b/drivers/net/ethernet/natsemi/Kconfig index f157334579fd..a100860d45e6 100644 --- a/drivers/net/ethernet/natsemi/Kconfig +++ b/drivers/net/ethernet/natsemi/Kconfig | |||
| @@ -5,9 +5,6 @@ | |||
| 5 | config NET_VENDOR_NATSEMI | 5 | config NET_VENDOR_NATSEMI |
| 6 | bool "National Semi-conductor devices" | 6 | bool "National Semi-conductor devices" |
| 7 | default y | 7 | default y |
| 8 | depends on AMIGA_PCMCIA || ARM || EISA || EXPERIMENTAL || H8300 || \ | ||
| 9 | ISA || M32R || MAC || MACH_JAZZ || MACH_TX49XX || MIPS || \ | ||
| 10 | PCI || PCMCIA || SUPERH || XTENSA_PLATFORM_XT2000 || ZORRO | ||
| 11 | ---help--- | 8 | ---help--- |
| 12 | If you have a network (Ethernet) card belonging to this class, say Y | 9 | If you have a network (Ethernet) card belonging to this class, say Y |
| 13 | and read the Ethernet-HOWTO, available from | 10 | and read the Ethernet-HOWTO, available from |
diff --git a/drivers/net/ethernet/packetengines/Kconfig b/drivers/net/ethernet/packetengines/Kconfig index 8f29feb35548..cbbeca3f8c5c 100644 --- a/drivers/net/ethernet/packetengines/Kconfig +++ b/drivers/net/ethernet/packetengines/Kconfig | |||
| @@ -32,8 +32,8 @@ config HAMACHI | |||
| 32 | called hamachi. | 32 | called hamachi. |
| 33 | 33 | ||
| 34 | config YELLOWFIN | 34 | config YELLOWFIN |
| 35 | tristate "Packet Engines Yellowfin Gigabit-NIC support (EXPERIMENTAL)" | 35 | tristate "Packet Engines Yellowfin Gigabit-NIC support" |
| 36 | depends on PCI && EXPERIMENTAL | 36 | depends on PCI |
| 37 | select CRC32 | 37 | select CRC32 |
| 38 | ---help--- | 38 | ---help--- |
| 39 | Say Y here if you have a Packet Engines G-NIC PCI Gigabit Ethernet | 39 | Say Y here if you have a Packet Engines G-NIC PCI Gigabit Ethernet |
diff --git a/drivers/net/ethernet/realtek/Kconfig b/drivers/net/ethernet/realtek/Kconfig index 5821966f9f28..783fa8b5cde7 100644 --- a/drivers/net/ethernet/realtek/Kconfig +++ b/drivers/net/ethernet/realtek/Kconfig | |||
| @@ -34,8 +34,8 @@ config ATP | |||
| 34 | will be called atp. | 34 | will be called atp. |
| 35 | 35 | ||
| 36 | config 8139CP | 36 | config 8139CP |
| 37 | tristate "RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)" | 37 | tristate "RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support" |
| 38 | depends on PCI && EXPERIMENTAL | 38 | depends on PCI |
| 39 | select CRC32 | 39 | select CRC32 |
| 40 | select NET_CORE | 40 | select NET_CORE |
| 41 | select MII | 41 | select MII |
diff --git a/drivers/net/ethernet/seeq/Kconfig b/drivers/net/ethernet/seeq/Kconfig index a71e1ec068ed..11f168e46ebe 100644 --- a/drivers/net/ethernet/seeq/Kconfig +++ b/drivers/net/ethernet/seeq/Kconfig | |||
| @@ -6,7 +6,6 @@ config NET_VENDOR_SEEQ | |||
| 6 | bool "SEEQ devices" | 6 | bool "SEEQ devices" |
| 7 | default y | 7 | default y |
| 8 | depends on HAS_IOMEM | 8 | depends on HAS_IOMEM |
| 9 | depends on (ARM && ARCH_ACORN) || SGI_HAS_SEEQ || EXPERIMENTAL | ||
| 10 | ---help--- | 9 | ---help--- |
| 11 | If you have a network (Ethernet) card belonging to this class, say Y | 10 | If you have a network (Ethernet) card belonging to this class, say Y |
| 12 | and read the Ethernet-HOWTO, available from | 11 | and read the Ethernet-HOWTO, available from |
diff --git a/drivers/net/ethernet/silan/Kconfig b/drivers/net/ethernet/silan/Kconfig index ae1ce170864d..3409b3f97a1b 100644 --- a/drivers/net/ethernet/silan/Kconfig +++ b/drivers/net/ethernet/silan/Kconfig | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | config NET_VENDOR_SILAN | 5 | config NET_VENDOR_SILAN |
| 6 | bool "Silan devices" | 6 | bool "Silan devices" |
| 7 | default y | 7 | default y |
| 8 | depends on PCI && EXPERIMENTAL | 8 | depends on PCI |
| 9 | ---help--- | 9 | ---help--- |
| 10 | If you have a network (Ethernet) card belonging to this class, say Y | 10 | If you have a network (Ethernet) card belonging to this class, say Y |
| 11 | and read the Ethernet-HOWTO, available from | 11 | and read the Ethernet-HOWTO, available from |
| @@ -19,8 +19,8 @@ config NET_VENDOR_SILAN | |||
| 19 | if NET_VENDOR_SILAN | 19 | if NET_VENDOR_SILAN |
| 20 | 20 | ||
| 21 | config SC92031 | 21 | config SC92031 |
| 22 | tristate "Silan SC92031 PCI Fast Ethernet Adapter driver (EXPERIMENTAL)" | 22 | tristate "Silan SC92031 PCI Fast Ethernet Adapter driver" |
| 23 | depends on PCI && EXPERIMENTAL | 23 | depends on PCI |
| 24 | select CRC32 | 24 | select CRC32 |
| 25 | ---help--- | 25 | ---help--- |
| 26 | This is a driver for the Fast Ethernet PCI network cards based on | 26 | This is a driver for the Fast Ethernet PCI network cards based on |
diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig index 1164930a40a5..c0ea838c78d1 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig | |||
| @@ -26,8 +26,8 @@ config STMMAC_PLATFORM | |||
| 26 | If unsure, say N. | 26 | If unsure, say N. |
| 27 | 27 | ||
| 28 | config STMMAC_PCI | 28 | config STMMAC_PCI |
| 29 | bool "STMMAC PCI bus support (EXPERIMENTAL)" | 29 | bool "STMMAC PCI bus support" |
| 30 | depends on STMMAC_ETH && PCI && EXPERIMENTAL | 30 | depends on STMMAC_ETH && PCI |
| 31 | ---help--- | 31 | ---help--- |
| 32 | This is to select the Synopsys DWMAC available on PCI devices, | 32 | This is to select the Synopsys DWMAC available on PCI devices, |
| 33 | if you have a controller with this interface, say Y or M here. | 33 | if you have a controller with this interface, say Y or M here. |
diff --git a/drivers/net/ethernet/sun/Kconfig b/drivers/net/ethernet/sun/Kconfig index 57bfd8599679..ae3a3557293f 100644 --- a/drivers/net/ethernet/sun/Kconfig +++ b/drivers/net/ethernet/sun/Kconfig | |||
| @@ -32,8 +32,8 @@ config HAPPYMEAL | |||
| 32 | will be called sunhme. | 32 | will be called sunhme. |
| 33 | 33 | ||
| 34 | config SUNBMAC | 34 | config SUNBMAC |
| 35 | tristate "Sun BigMAC 10/100baseT support (EXPERIMENTAL)" | 35 | tristate "Sun BigMAC 10/100baseT support" |
| 36 | depends on SBUS && EXPERIMENTAL | 36 | depends on SBUS |
| 37 | select CRC32 | 37 | select CRC32 |
| 38 | ---help--- | 38 | ---help--- |
| 39 | This driver supports the "be" interface available as an Sbus option. | 39 | This driver supports the "be" interface available as an Sbus option. |
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig index 4426151d4ac9..de71b1ec4625 100644 --- a/drivers/net/ethernet/ti/Kconfig +++ b/drivers/net/ethernet/ti/Kconfig | |||
| @@ -88,8 +88,8 @@ config TLAN | |||
| 88 | Please email feedback to <torben.mathiasen@compaq.com>. | 88 | Please email feedback to <torben.mathiasen@compaq.com>. |
| 89 | 89 | ||
| 90 | config CPMAC | 90 | config CPMAC |
| 91 | tristate "TI AR7 CPMAC Ethernet support (EXPERIMENTAL)" | 91 | tristate "TI AR7 CPMAC Ethernet support" |
| 92 | depends on EXPERIMENTAL && AR7 | 92 | depends on AR7 |
| 93 | select PHYLIB | 93 | select PHYLIB |
| 94 | ---help--- | 94 | ---help--- |
| 95 | TI AR7 CPMAC Ethernet support | 95 | TI AR7 CPMAC Ethernet support |
diff --git a/drivers/net/hippi/Kconfig b/drivers/net/hippi/Kconfig index 95eb34fdbba7..f71515dc5beb 100644 --- a/drivers/net/hippi/Kconfig +++ b/drivers/net/hippi/Kconfig | |||
| @@ -3,8 +3,8 @@ | |||
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | config HIPPI | 5 | config HIPPI |
| 6 | bool "HIPPI driver support (EXPERIMENTAL)" | 6 | bool "HIPPI driver support" |
| 7 | depends on EXPERIMENTAL && INET && PCI | 7 | depends on INET && PCI |
| 8 | ---help--- | 8 | ---help--- |
| 9 | HIgh Performance Parallel Interface (HIPPI) is a 800Mbit/sec and | 9 | HIgh Performance Parallel Interface (HIPPI) is a 800Mbit/sec and |
| 10 | 1600Mbit/sec dual-simplex switched or point-to-point network. HIPPI | 10 | 1600Mbit/sec dual-simplex switched or point-to-point network. HIPPI |
| @@ -18,7 +18,7 @@ config HIPPI | |||
| 18 | if HIPPI | 18 | if HIPPI |
| 19 | 19 | ||
| 20 | config ROADRUNNER | 20 | config ROADRUNNER |
| 21 | tristate "Essential RoadRunner HIPPI PCI adapter support (EXPERIMENTAL)" | 21 | tristate "Essential RoadRunner HIPPI PCI adapter support" |
| 22 | depends on PCI | 22 | depends on PCI |
| 23 | ---help--- | 23 | ---help--- |
| 24 | Say Y here if this is your PCI HIPPI network card. | 24 | Say Y here if this is your PCI HIPPI network card. |
| @@ -27,7 +27,7 @@ config ROADRUNNER | |||
| 27 | will be called rrunner. If unsure, say N. | 27 | will be called rrunner. If unsure, say N. |
| 28 | 28 | ||
| 29 | config ROADRUNNER_LARGE_RINGS | 29 | config ROADRUNNER_LARGE_RINGS |
| 30 | bool "Use large TX/RX rings (EXPERIMENTAL)" | 30 | bool "Use large TX/RX rings" |
| 31 | depends on ROADRUNNER | 31 | depends on ROADRUNNER |
| 32 | ---help--- | 32 | ---help--- |
| 33 | If you say Y here, the RoadRunner driver will preallocate up to 2 MB | 33 | If you say Y here, the RoadRunner driver will preallocate up to 2 MB |
diff --git a/drivers/net/irda/Kconfig b/drivers/net/irda/Kconfig index 595205406d73..59e9d9e1fd0f 100644 --- a/drivers/net/irda/Kconfig +++ b/drivers/net/irda/Kconfig | |||
| @@ -140,7 +140,7 @@ config LITELINK_DONGLE | |||
| 140 | 140 | ||
| 141 | config MA600_DONGLE | 141 | config MA600_DONGLE |
| 142 | tristate "Mobile Action MA600 dongle" | 142 | tristate "Mobile Action MA600 dongle" |
| 143 | depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL | 143 | depends on IRTTY_SIR && DONGLE && IRDA |
| 144 | help | 144 | help |
| 145 | Say Y here if you want to build support for the Mobile Action MA600 | 145 | Say Y here if you want to build support for the Mobile Action MA600 |
| 146 | dongle. To compile it as a module, choose M here. The MA600 dongle | 146 | dongle. To compile it as a module, choose M here. The MA600 dongle |
| @@ -153,7 +153,7 @@ config MA600_DONGLE | |||
| 153 | 153 | ||
| 154 | config GIRBIL_DONGLE | 154 | config GIRBIL_DONGLE |
| 155 | tristate "Greenwich GIrBIL dongle" | 155 | tristate "Greenwich GIrBIL dongle" |
| 156 | depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL | 156 | depends on IRTTY_SIR && DONGLE && IRDA |
| 157 | help | 157 | help |
| 158 | Say Y here if you want to build support for the Greenwich GIrBIL | 158 | Say Y here if you want to build support for the Greenwich GIrBIL |
| 159 | dongle. If you want to compile it as a module, choose M here. | 159 | dongle. If you want to compile it as a module, choose M here. |
| @@ -164,7 +164,7 @@ config GIRBIL_DONGLE | |||
| 164 | 164 | ||
| 165 | config MCP2120_DONGLE | 165 | config MCP2120_DONGLE |
| 166 | tristate "Microchip MCP2120" | 166 | tristate "Microchip MCP2120" |
| 167 | depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL | 167 | depends on IRTTY_SIR && DONGLE && IRDA |
| 168 | help | 168 | help |
| 169 | Say Y here if you want to build support for the Microchip MCP2120 | 169 | Say Y here if you want to build support for the Microchip MCP2120 |
| 170 | dongle. If you want to compile it as a module, choose M here. | 170 | dongle. If you want to compile it as a module, choose M here. |
| @@ -178,7 +178,7 @@ config MCP2120_DONGLE | |||
| 178 | 178 | ||
| 179 | config OLD_BELKIN_DONGLE | 179 | config OLD_BELKIN_DONGLE |
| 180 | tristate "Old Belkin dongle" | 180 | tristate "Old Belkin dongle" |
| 181 | depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL | 181 | depends on IRTTY_SIR && DONGLE && IRDA |
| 182 | help | 182 | help |
| 183 | Say Y here if you want to build support for the Adaptec Airport 1000 | 183 | Say Y here if you want to build support for the Adaptec Airport 1000 |
| 184 | and 2000 dongles. If you want to compile it as a module, choose | 184 | and 2000 dongles. If you want to compile it as a module, choose |
| @@ -187,7 +187,7 @@ config OLD_BELKIN_DONGLE | |||
| 187 | 187 | ||
| 188 | config ACT200L_DONGLE | 188 | config ACT200L_DONGLE |
| 189 | tristate "ACTiSYS IR-200L dongle" | 189 | tristate "ACTiSYS IR-200L dongle" |
| 190 | depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL | 190 | depends on IRTTY_SIR && DONGLE && IRDA |
| 191 | help | 191 | help |
| 192 | Say Y here if you want to build support for the ACTiSYS IR-200L | 192 | Say Y here if you want to build support for the ACTiSYS IR-200L |
| 193 | dongle. If you want to compile it as a module, choose M here. | 193 | dongle. If you want to compile it as a module, choose M here. |
| @@ -198,7 +198,7 @@ config ACT200L_DONGLE | |||
| 198 | 198 | ||
| 199 | config KINGSUN_DONGLE | 199 | config KINGSUN_DONGLE |
| 200 | tristate "KingSun/DonShine DS-620 IrDA-USB dongle" | 200 | tristate "KingSun/DonShine DS-620 IrDA-USB dongle" |
| 201 | depends on IRDA && USB && EXPERIMENTAL | 201 | depends on IRDA && USB |
| 202 | help | 202 | help |
| 203 | Say Y or M here if you want to build support for the KingSun/DonShine | 203 | Say Y or M here if you want to build support for the KingSun/DonShine |
| 204 | DS-620 IrDA-USB bridge device driver. | 204 | DS-620 IrDA-USB bridge device driver. |
| @@ -212,14 +212,14 @@ config KINGSUN_DONGLE | |||
| 212 | 212 | ||
| 213 | config EP7211_DONGLE | 213 | config EP7211_DONGLE |
| 214 | tristate "Cirrus Logic clps711x I/R support" | 214 | tristate "Cirrus Logic clps711x I/R support" |
| 215 | depends on IRTTY_SIR && ARCH_CLPS711X && IRDA && EXPERIMENTAL | 215 | depends on IRTTY_SIR && ARCH_CLPS711X && IRDA |
| 216 | help | 216 | help |
| 217 | Say Y here if you want to build support for the Cirrus logic | 217 | Say Y here if you want to build support for the Cirrus logic |
| 218 | EP7211 chipset's infrared module. | 218 | EP7211 chipset's infrared module. |
| 219 | 219 | ||
| 220 | config KSDAZZLE_DONGLE | 220 | config KSDAZZLE_DONGLE |
| 221 | tristate "KingSun Dazzle IrDA-USB dongle (EXPERIMENTAL)" | 221 | tristate "KingSun Dazzle IrDA-USB dongle" |
| 222 | depends on IRDA && USB && EXPERIMENTAL | 222 | depends on IRDA && USB |
| 223 | help | 223 | help |
| 224 | Say Y or M here if you want to build support for the KingSun Dazzle | 224 | Say Y or M here if you want to build support for the KingSun Dazzle |
| 225 | IrDA-USB bridge device driver. | 225 | IrDA-USB bridge device driver. |
| @@ -232,8 +232,8 @@ config KSDAZZLE_DONGLE | |||
| 232 | ksdazzle-sir. | 232 | ksdazzle-sir. |
| 233 | 233 | ||
| 234 | config KS959_DONGLE | 234 | config KS959_DONGLE |
| 235 | tristate "KingSun KS-959 IrDA-USB dongle (EXPERIMENTAL)" | 235 | tristate "KingSun KS-959 IrDA-USB dongle" |
| 236 | depends on IRDA && USB && EXPERIMENTAL | 236 | depends on IRDA && USB |
| 237 | help | 237 | help |
| 238 | Say Y or M here if you want to build support for the KingSun KS-959 | 238 | Say Y or M here if you want to build support for the KingSun KS-959 |
| 239 | IrDA-USB bridge device driver. | 239 | IrDA-USB bridge device driver. |
| @@ -264,8 +264,8 @@ config USB_IRDA | |||
| 264 | you will need both USB and IrDA support in your kernel... | 264 | you will need both USB and IrDA support in your kernel... |
| 265 | 265 | ||
| 266 | config SIGMATEL_FIR | 266 | config SIGMATEL_FIR |
| 267 | tristate "SigmaTel STIr4200 bridge (EXPERIMENTAL)" | 267 | tristate "SigmaTel STIr4200 bridge" |
| 268 | depends on IRDA && USB && EXPERIMENTAL | 268 | depends on IRDA && USB |
| 269 | select CRC32 | 269 | select CRC32 |
| 270 | ---help--- | 270 | ---help--- |
| 271 | Say Y here if you want to build support for the SigmaTel STIr4200 | 271 | Say Y here if you want to build support for the SigmaTel STIr4200 |
| @@ -331,8 +331,8 @@ config SMC_IRCC_FIR | |||
| 331 | smsc-ircc2.o. | 331 | smsc-ircc2.o. |
| 332 | 332 | ||
| 333 | config ALI_FIR | 333 | config ALI_FIR |
| 334 | tristate "ALi M5123 FIR (EXPERIMENTAL)" | 334 | tristate "ALi M5123 FIR" |
| 335 | depends on EXPERIMENTAL && IRDA && ISA_DMA_API | 335 | depends on IRDA && ISA_DMA_API |
| 336 | help | 336 | help |
| 337 | Say Y here if you want to build support for the ALi M5123 FIR | 337 | Say Y here if you want to build support for the ALi M5123 FIR |
| 338 | Controller. The ALi M5123 FIR Controller is embedded in ALi M1543C, | 338 | Controller. The ALi M5123 FIR Controller is embedded in ALi M1543C, |
| @@ -343,8 +343,8 @@ config ALI_FIR | |||
| 343 | ali-ircc. | 343 | ali-ircc. |
| 344 | 344 | ||
| 345 | config VLSI_FIR | 345 | config VLSI_FIR |
| 346 | tristate "VLSI 82C147 SIR/MIR/FIR (EXPERIMENTAL)" | 346 | tristate "VLSI 82C147 SIR/MIR/FIR" |
| 347 | depends on EXPERIMENTAL && IRDA && PCI | 347 | depends on IRDA && PCI |
| 348 | help | 348 | help |
| 349 | Say Y here if you want to build support for the VLSI 82C147 | 349 | Say Y here if you want to build support for the VLSI 82C147 |
| 350 | PCI-IrDA Controller. This controller is used by the HP OmniBook 800 | 350 | PCI-IrDA Controller. This controller is used by the HP OmniBook 800 |
| @@ -387,7 +387,7 @@ config PXA_FICP | |||
| 387 | 387 | ||
| 388 | config MCS_FIR | 388 | config MCS_FIR |
| 389 | tristate "MosChip MCS7780 IrDA-USB dongle" | 389 | tristate "MosChip MCS7780 IrDA-USB dongle" |
| 390 | depends on IRDA && USB && EXPERIMENTAL | 390 | depends on IRDA && USB |
| 391 | select CRC32 | 391 | select CRC32 |
| 392 | help | 392 | help |
| 393 | Say Y or M here if you want to build support for the MosChip | 393 | Say Y or M here if you want to build support for the MosChip |
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 044b5326459f..dc920974204e 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c | |||
| @@ -95,7 +95,7 @@ static struct class mdio_bus_class = { | |||
| 95 | 95 | ||
| 96 | #if IS_ENABLED(CONFIG_OF_MDIO) | 96 | #if IS_ENABLED(CONFIG_OF_MDIO) |
| 97 | /* Helper function for of_mdio_find_bus */ | 97 | /* Helper function for of_mdio_find_bus */ |
| 98 | static int of_mdio_bus_match(struct device *dev, void *mdio_bus_np) | 98 | static int of_mdio_bus_match(struct device *dev, const void *mdio_bus_np) |
| 99 | { | 99 | { |
| 100 | return dev->of_node == mdio_bus_np; | 100 | return dev->of_node == mdio_bus_np; |
| 101 | } | 101 | } |
diff --git a/drivers/net/ppp/Kconfig b/drivers/net/ppp/Kconfig index 872df3ef07a6..278dea0c4c98 100644 --- a/drivers/net/ppp/Kconfig +++ b/drivers/net/ppp/Kconfig | |||
| @@ -82,8 +82,8 @@ config PPP_FILTER | |||
| 82 | If unsure, say N. | 82 | If unsure, say N. |
| 83 | 83 | ||
| 84 | config PPP_MPPE | 84 | config PPP_MPPE |
| 85 | tristate "PPP MPPE compression (encryption) (EXPERIMENTAL)" | 85 | tristate "PPP MPPE compression (encryption)" |
| 86 | depends on PPP && EXPERIMENTAL | 86 | depends on PPP |
| 87 | select CRYPTO | 87 | select CRYPTO |
| 88 | select CRYPTO_SHA1 | 88 | select CRYPTO_SHA1 |
| 89 | select CRYPTO_ARC4 | 89 | select CRYPTO_ARC4 |
| @@ -96,8 +96,8 @@ config PPP_MPPE | |||
| 96 | configuring PPTP clients and servers to utilize this method. | 96 | configuring PPTP clients and servers to utilize this method. |
| 97 | 97 | ||
| 98 | config PPP_MULTILINK | 98 | config PPP_MULTILINK |
| 99 | bool "PPP multilink support (EXPERIMENTAL)" | 99 | bool "PPP multilink support" |
| 100 | depends on PPP && EXPERIMENTAL | 100 | depends on PPP |
| 101 | ---help--- | 101 | ---help--- |
| 102 | PPP multilink is a protocol (defined in RFC 1990) which allows you | 102 | PPP multilink is a protocol (defined in RFC 1990) which allows you |
| 103 | to combine several (logical or physical) lines into one logical PPP | 103 | to combine several (logical or physical) lines into one logical PPP |
| @@ -118,8 +118,8 @@ config PPPOATM | |||
| 118 | changes its encapsulation unilaterally. | 118 | changes its encapsulation unilaterally. |
| 119 | 119 | ||
| 120 | config PPPOE | 120 | config PPPOE |
| 121 | tristate "PPP over Ethernet (EXPERIMENTAL)" | 121 | tristate "PPP over Ethernet" |
| 122 | depends on EXPERIMENTAL && PPP | 122 | depends on PPP |
| 123 | ---help--- | 123 | ---help--- |
| 124 | Support for PPP over Ethernet. | 124 | Support for PPP over Ethernet. |
| 125 | 125 | ||
| @@ -130,8 +130,8 @@ config PPPOE | |||
| 130 | the heading "Kernel mode PPPoE"). | 130 | the heading "Kernel mode PPPoE"). |
| 131 | 131 | ||
| 132 | config PPTP | 132 | config PPTP |
| 133 | tristate "PPP over IPv4 (PPTP) (EXPERIMENTAL)" | 133 | tristate "PPP over IPv4 (PPTP)" |
| 134 | depends on EXPERIMENTAL && PPP && NET_IPGRE_DEMUX | 134 | depends on PPP && NET_IPGRE_DEMUX |
| 135 | ---help--- | 135 | ---help--- |
| 136 | Support for PPP over IPv4.(Point-to-Point Tunneling Protocol) | 136 | Support for PPP over IPv4.(Point-to-Point Tunneling Protocol) |
| 137 | 137 | ||
| @@ -141,8 +141,8 @@ config PPTP | |||
| 141 | utilize this module. | 141 | utilize this module. |
| 142 | 142 | ||
| 143 | config PPPOL2TP | 143 | config PPPOL2TP |
| 144 | tristate "PPP over L2TP (EXPERIMENTAL)" | 144 | tristate "PPP over L2TP" |
| 145 | depends on EXPERIMENTAL && L2TP && PPP | 145 | depends on L2TP && PPP |
| 146 | ---help--- | 146 | ---help--- |
| 147 | Support for PPP-over-L2TP socket family. L2TP is a protocol | 147 | Support for PPP-over-L2TP socket family. L2TP is a protocol |
| 148 | used by ISPs and enterprises to tunnel PPP traffic over UDP | 148 | used by ISPs and enterprises to tunnel PPP traffic over UDP |
diff --git a/drivers/net/team/Kconfig b/drivers/net/team/Kconfig index 6b08bd419fba..c3011af68e91 100644 --- a/drivers/net/team/Kconfig +++ b/drivers/net/team/Kconfig | |||
| @@ -1,6 +1,5 @@ | |||
| 1 | menuconfig NET_TEAM | 1 | menuconfig NET_TEAM |
| 2 | tristate "Ethernet team driver support (EXPERIMENTAL)" | 2 | tristate "Ethernet team driver support" |
| 3 | depends on EXPERIMENTAL | ||
| 4 | ---help--- | 3 | ---help--- |
| 5 | This allows one to create virtual interfaces that teams together | 4 | This allows one to create virtual interfaces that teams together |
| 6 | multiple ethernet devices. | 5 | multiple ethernet devices. |
diff --git a/drivers/net/usb/Kconfig b/drivers/net/usb/Kconfig index ef976215b649..3a44a5d7bf9e 100644 --- a/drivers/net/usb/Kconfig +++ b/drivers/net/usb/Kconfig | |||
| @@ -8,8 +8,7 @@ menu "USB Network Adapters" | |||
| 8 | depends on USB && NET | 8 | depends on USB && NET |
| 9 | 9 | ||
| 10 | config USB_CATC | 10 | config USB_CATC |
| 11 | tristate "USB CATC NetMate-based Ethernet device support (EXPERIMENTAL)" | 11 | tristate "USB CATC NetMate-based Ethernet device support" |
| 12 | depends on EXPERIMENTAL | ||
| 13 | select CRC32 | 12 | select CRC32 |
| 14 | ---help--- | 13 | ---help--- |
| 15 | Say Y if you want to use one of the following 10Mbps USB Ethernet | 14 | Say Y if you want to use one of the following 10Mbps USB Ethernet |
| @@ -83,8 +82,7 @@ config USB_PEGASUS | |||
| 83 | module will be called pegasus. | 82 | module will be called pegasus. |
| 84 | 83 | ||
| 85 | config USB_RTL8150 | 84 | config USB_RTL8150 |
| 86 | tristate "USB RTL8150 based ethernet device support (EXPERIMENTAL)" | 85 | tristate "USB RTL8150 based ethernet device support" |
| 87 | depends on EXPERIMENTAL | ||
| 88 | select NET_CORE | 86 | select NET_CORE |
| 89 | select MII | 87 | select MII |
| 90 | help | 88 | help |
| @@ -188,7 +186,7 @@ config USB_NET_CDCETHER | |||
| 188 | 186 | ||
| 189 | config USB_NET_CDC_EEM | 187 | config USB_NET_CDC_EEM |
| 190 | tristate "CDC EEM support" | 188 | tristate "CDC EEM support" |
| 191 | depends on USB_USBNET && EXPERIMENTAL | 189 | depends on USB_USBNET |
| 192 | help | 190 | help |
| 193 | This option supports devices conforming to the Communication Device | 191 | This option supports devices conforming to the Communication Device |
| 194 | Class (CDC) Ethernet Emulation Model, a specification that's easy to | 192 | Class (CDC) Ethernet Emulation Model, a specification that's easy to |
| @@ -287,7 +285,7 @@ config USB_NET_PLUSB | |||
| 287 | tristate "Prolific PL-2301/2302/25A1 based cables" | 285 | tristate "Prolific PL-2301/2302/25A1 based cables" |
| 288 | # if the handshake/init/reset problems, from original 'plusb', | 286 | # if the handshake/init/reset problems, from original 'plusb', |
| 289 | # are ever resolved ... then remove "experimental" | 287 | # are ever resolved ... then remove "experimental" |
| 290 | depends on USB_USBNET && EXPERIMENTAL | 288 | depends on USB_USBNET |
| 291 | help | 289 | help |
| 292 | Choose this option if you're using a host-to-host cable | 290 | Choose this option if you're using a host-to-host cable |
| 293 | with one of these chips. | 291 | with one of these chips. |
| @@ -301,8 +299,8 @@ config USB_NET_MCS7830 | |||
| 301 | adapters marketed under the DeLOCK brand. | 299 | adapters marketed under the DeLOCK brand. |
| 302 | 300 | ||
| 303 | config USB_NET_RNDIS_HOST | 301 | config USB_NET_RNDIS_HOST |
| 304 | tristate "Host for RNDIS and ActiveSync devices (EXPERIMENTAL)" | 302 | tristate "Host for RNDIS and ActiveSync devices" |
| 305 | depends on USB_USBNET && EXPERIMENTAL | 303 | depends on USB_USBNET |
| 306 | select USB_NET_CDCETHER | 304 | select USB_NET_CDCETHER |
| 307 | help | 305 | help |
| 308 | This option enables hosting "Remote NDIS" USB networking links, | 306 | This option enables hosting "Remote NDIS" USB networking links, |
| @@ -380,7 +378,7 @@ config USB_EPSON2888 | |||
| 380 | 378 | ||
| 381 | config USB_KC2190 | 379 | config USB_KC2190 |
| 382 | boolean "KT Technology KC2190 based cables (InstaNet)" | 380 | boolean "KT Technology KC2190 based cables (InstaNet)" |
| 383 | depends on USB_NET_CDC_SUBSET && EXPERIMENTAL | 381 | depends on USB_NET_CDC_SUBSET |
| 384 | help | 382 | help |
| 385 | Choose this option if you're using a host-to-host cable | 383 | Choose this option if you're using a host-to-host cable |
| 386 | with one of these chips. | 384 | with one of these chips. |
diff --git a/drivers/net/wan/Kconfig b/drivers/net/wan/Kconfig index 0c077b0f7a2b..13daec88d918 100644 --- a/drivers/net/wan/Kconfig +++ b/drivers/net/wan/Kconfig | |||
| @@ -358,7 +358,7 @@ config SDLA | |||
| 358 | 358 | ||
| 359 | # X.25 network drivers | 359 | # X.25 network drivers |
| 360 | config LAPBETHER | 360 | config LAPBETHER |
| 361 | tristate "LAPB over Ethernet driver (EXPERIMENTAL)" | 361 | tristate "LAPB over Ethernet driver" |
| 362 | depends on LAPB && X25 | 362 | depends on LAPB && X25 |
| 363 | ---help--- | 363 | ---help--- |
| 364 | Driver for a pseudo device (typically called /dev/lapb0) which allows | 364 | Driver for a pseudo device (typically called /dev/lapb0) which allows |
| @@ -374,7 +374,7 @@ config LAPBETHER | |||
| 374 | If unsure, say N. | 374 | If unsure, say N. |
| 375 | 375 | ||
| 376 | config X25_ASY | 376 | config X25_ASY |
| 377 | tristate "X.25 async driver (EXPERIMENTAL)" | 377 | tristate "X.25 async driver" |
| 378 | depends on LAPB && X25 | 378 | depends on LAPB && X25 |
| 379 | ---help--- | 379 | ---help--- |
| 380 | Send and receive X.25 frames over regular asynchronous serial | 380 | Send and receive X.25 frames over regular asynchronous serial |
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index 28aa05f60c26..f8f0156dff4e 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig | |||
| @@ -138,7 +138,7 @@ config AIRO_CS | |||
| 138 | 138 | ||
| 139 | config PCMCIA_WL3501 | 139 | config PCMCIA_WL3501 |
| 140 | tristate "Planet WL3501 PCMCIA cards" | 140 | tristate "Planet WL3501 PCMCIA cards" |
| 141 | depends on EXPERIMENTAL && PCMCIA | 141 | depends on PCMCIA |
| 142 | select WIRELESS_EXT | 142 | select WIRELESS_EXT |
| 143 | select WEXT_SPY | 143 | select WEXT_SPY |
| 144 | help | 144 | help |
| @@ -148,7 +148,7 @@ config PCMCIA_WL3501 | |||
| 148 | 148 | ||
| 149 | config PRISM54 | 149 | config PRISM54 |
| 150 | tristate 'Intersil Prism GT/Duette/Indigo PCI/Cardbus (DEPRECATED)' | 150 | tristate 'Intersil Prism GT/Duette/Indigo PCI/Cardbus (DEPRECATED)' |
| 151 | depends on PCI && EXPERIMENTAL | 151 | depends on PCI |
| 152 | select WIRELESS_EXT | 152 | select WIRELESS_EXT |
| 153 | select WEXT_SPY | 153 | select WEXT_SPY |
| 154 | select WEXT_PRIV | 154 | select WEXT_PRIV |
| @@ -187,7 +187,7 @@ config USB_ZD1201 | |||
| 187 | 187 | ||
| 188 | config USB_NET_RNDIS_WLAN | 188 | config USB_NET_RNDIS_WLAN |
| 189 | tristate "Wireless RNDIS USB support" | 189 | tristate "Wireless RNDIS USB support" |
| 190 | depends on USB && EXPERIMENTAL | 190 | depends on USB |
| 191 | depends on CFG80211 | 191 | depends on CFG80211 |
| 192 | select USB_USBNET | 192 | select USB_USBNET |
| 193 | select USB_NET_CDCETHER | 193 | select USB_NET_CDCETHER |
| @@ -217,7 +217,7 @@ source "drivers/net/wireless/rtl818x/Kconfig" | |||
| 217 | 217 | ||
| 218 | config ADM8211 | 218 | config ADM8211 |
| 219 | tristate "ADMtek ADM8211 support" | 219 | tristate "ADMtek ADM8211 support" |
| 220 | depends on MAC80211 && PCI && EXPERIMENTAL | 220 | depends on MAC80211 && PCI |
| 221 | select CRC32 | 221 | select CRC32 |
| 222 | select EEPROM_93CX6 | 222 | select EEPROM_93CX6 |
| 223 | ---help--- | 223 | ---help--- |
| @@ -257,7 +257,7 @@ config MAC80211_HWSIM | |||
| 257 | 257 | ||
| 258 | config MWL8K | 258 | config MWL8K |
| 259 | tristate "Marvell 88W8xxx PCI/PCIe Wireless support" | 259 | tristate "Marvell 88W8xxx PCI/PCIe Wireless support" |
| 260 | depends on MAC80211 && PCI && EXPERIMENTAL | 260 | depends on MAC80211 && PCI |
| 261 | ---help--- | 261 | ---help--- |
| 262 | This driver supports Marvell TOPDOG 802.11 wireless cards. | 262 | This driver supports Marvell TOPDOG 802.11 wireless cards. |
| 263 | 263 | ||
diff --git a/drivers/net/wireless/ath/ath6kl/Kconfig b/drivers/net/wireless/ath/ath6kl/Kconfig index 26c4b7220859..630c83db056e 100644 --- a/drivers/net/wireless/ath/ath6kl/Kconfig +++ b/drivers/net/wireless/ath/ath6kl/Kconfig | |||
| @@ -18,7 +18,6 @@ config ATH6KL_USB | |||
| 18 | depends on ATH6KL | 18 | depends on ATH6KL |
| 19 | depends on USB | 19 | depends on USB |
| 20 | depends on CFG80211 | 20 | depends on CFG80211 |
| 21 | depends on EXPERIMENTAL | ||
| 22 | ---help--- | 21 | ---help--- |
| 23 | This module adds support for wireless adapters based on | 22 | This module adds support for wireless adapters based on |
| 24 | Atheros AR6004 chipset running over USB. This is still under | 23 | Atheros AR6004 chipset running over USB. This is still under |
diff --git a/drivers/net/wireless/ath/carl9170/Kconfig b/drivers/net/wireless/ath/carl9170/Kconfig index 13a204598766..1a796e5f69ec 100644 --- a/drivers/net/wireless/ath/carl9170/Kconfig +++ b/drivers/net/wireless/ath/carl9170/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config CARL9170 | 1 | config CARL9170 |
| 2 | tristate "Linux Community AR9170 802.11n USB support" | 2 | tristate "Linux Community AR9170 802.11n USB support" |
| 3 | depends on USB && MAC80211 && EXPERIMENTAL | 3 | depends on USB && MAC80211 |
| 4 | select ATH_COMMON | 4 | select ATH_COMMON |
| 5 | select FW_LOADER | 5 | select FW_LOADER |
| 6 | select CRC32 | 6 | select CRC32 |
diff --git a/drivers/net/wireless/ath/wil6210/dbg_hexdump.h b/drivers/net/wireless/ath/wil6210/dbg_hexdump.h index 6a315ba5aa7d..e5712f026c47 100644 --- a/drivers/net/wireless/ath/wil6210/dbg_hexdump.h +++ b/drivers/net/wireless/ath/wil6210/dbg_hexdump.h | |||
| @@ -1,25 +1,15 @@ | |||
| 1 | #ifndef WIL_DBG_HEXDUMP_H_ | 1 | #ifndef WIL_DBG_HEXDUMP_H_ |
| 2 | #define WIL_DBG_HEXDUMP_H_ | 2 | #define WIL_DBG_HEXDUMP_H_ |
| 3 | 3 | ||
| 4 | #if defined(CONFIG_DYNAMIC_DEBUG) | 4 | #include <linux/printk.h> |
| 5 | #define wil_dynamic_hex_dump(prefix_str, prefix_type, rowsize, \ | 5 | #include <linux/dynamic_debug.h> |
| 6 | groupsize, buf, len, ascii) \ | ||
| 7 | do { \ | ||
| 8 | DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, \ | ||
| 9 | __builtin_constant_p(prefix_str) ? prefix_str : "hexdump");\ | ||
| 10 | if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) \ | ||
| 11 | print_hex_dump(KERN_DEBUG, prefix_str, \ | ||
| 12 | prefix_type, rowsize, groupsize, \ | ||
| 13 | buf, len, ascii); \ | ||
| 14 | } while (0) | ||
| 15 | 6 | ||
| 7 | #if defined(CONFIG_DYNAMIC_DEBUG) | ||
| 16 | #define wil_print_hex_dump_debug(prefix_str, prefix_type, rowsize, \ | 8 | #define wil_print_hex_dump_debug(prefix_str, prefix_type, rowsize, \ |
| 17 | groupsize, buf, len, ascii) \ | 9 | groupsize, buf, len, ascii) \ |
| 18 | wil_dynamic_hex_dump(prefix_str, prefix_type, rowsize, \ | 10 | dynamic_hex_dump(prefix_str, prefix_type, rowsize, \ |
| 19 | groupsize, buf, len, ascii) | 11 | groupsize, buf, len, ascii) |
| 20 | 12 | ||
| 21 | #define print_hex_dump_bytes(prefix_str, prefix_type, buf, len) \ | ||
| 22 | wil_dynamic_hex_dump(prefix_str, prefix_type, 16, 1, buf, len, true) | ||
| 23 | #else /* defined(CONFIG_DYNAMIC_DEBUG) */ | 13 | #else /* defined(CONFIG_DYNAMIC_DEBUG) */ |
| 24 | #define wil_print_hex_dump_debug(prefix_str, prefix_type, rowsize, \ | 14 | #define wil_print_hex_dump_debug(prefix_str, prefix_type, rowsize, \ |
| 25 | groupsize, buf, len, ascii) \ | 15 | groupsize, buf, len, ascii) \ |
diff --git a/drivers/net/wireless/b43/Kconfig b/drivers/net/wireless/b43/Kconfig index 7a28d21ac389..287c6b670a36 100644 --- a/drivers/net/wireless/b43/Kconfig +++ b/drivers/net/wireless/b43/Kconfig | |||
| @@ -78,8 +78,8 @@ config B43_PCMCIA | |||
| 78 | If unsure, say N. | 78 | If unsure, say N. |
| 79 | 79 | ||
| 80 | config B43_SDIO | 80 | config B43_SDIO |
| 81 | bool "Broadcom 43xx SDIO device support (EXPERIMENTAL)" | 81 | bool "Broadcom 43xx SDIO device support" |
| 82 | depends on B43 && SSB_SDIOHOST_POSSIBLE && EXPERIMENTAL | 82 | depends on B43 && SSB_SDIOHOST_POSSIBLE |
| 83 | select SSB_SDIOHOST | 83 | select SSB_SDIOHOST |
| 84 | ---help--- | 84 | ---help--- |
| 85 | Broadcom 43xx device support for Soft-MAC SDIO devices. | 85 | Broadcom 43xx device support for Soft-MAC SDIO devices. |
| @@ -109,8 +109,8 @@ config B43_PIO | |||
| 109 | default y | 109 | default y |
| 110 | 110 | ||
| 111 | config B43_PHY_N | 111 | config B43_PHY_N |
| 112 | bool "Support for 802.11n (N-PHY) devices (EXPERIMENTAL)" | 112 | bool "Support for 802.11n (N-PHY) devices" |
| 113 | depends on B43 && EXPERIMENTAL | 113 | depends on B43 |
| 114 | ---help--- | 114 | ---help--- |
| 115 | Support for the N-PHY. | 115 | Support for the N-PHY. |
| 116 | 116 | ||
| @@ -130,8 +130,8 @@ config B43_PHY_LP | |||
| 130 | (802.11a support is optional, and currently disabled). | 130 | (802.11a support is optional, and currently disabled). |
| 131 | 131 | ||
| 132 | config B43_PHY_HT | 132 | config B43_PHY_HT |
| 133 | bool "Support for HT-PHY (high throughput) devices (EXPERIMENTAL)" | 133 | bool "Support for HT-PHY (high throughput) devices" |
| 134 | depends on B43 && EXPERIMENTAL | 134 | depends on B43 |
| 135 | ---help--- | 135 | ---help--- |
| 136 | Support for the HT-PHY. | 136 | Support for the HT-PHY. |
| 137 | 137 | ||
diff --git a/drivers/net/wireless/ipw2x00/Kconfig b/drivers/net/wireless/ipw2x00/Kconfig index 2715b101aded..91c0cb3c368e 100644 --- a/drivers/net/wireless/ipw2x00/Kconfig +++ b/drivers/net/wireless/ipw2x00/Kconfig | |||
| @@ -137,7 +137,7 @@ config IPW2200_PROMISCUOUS | |||
| 137 | 137 | ||
| 138 | config IPW2200_QOS | 138 | config IPW2200_QOS |
| 139 | bool "Enable QoS support" | 139 | bool "Enable QoS support" |
| 140 | depends on IPW2200 && EXPERIMENTAL | 140 | depends on IPW2200 |
| 141 | 141 | ||
| 142 | config IPW2200_DEBUG | 142 | config IPW2200_DEBUG |
| 143 | bool "Enable full debugging output in IPW2200 module." | 143 | bool "Enable full debugging output in IPW2200 module." |
diff --git a/drivers/net/wireless/p54/Kconfig b/drivers/net/wireless/p54/Kconfig index 0ec55b50798e..15ea36b51a66 100644 --- a/drivers/net/wireless/p54/Kconfig +++ b/drivers/net/wireless/p54/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config P54_COMMON | 1 | config P54_COMMON |
| 2 | tristate "Softmac Prism54 support" | 2 | tristate "Softmac Prism54 support" |
| 3 | depends on MAC80211 && EXPERIMENTAL | 3 | depends on MAC80211 |
| 4 | select FW_LOADER | 4 | select FW_LOADER |
| 5 | select CRC_CCITT | 5 | select CRC_CCITT |
| 6 | ---help--- | 6 | ---help--- |
diff --git a/drivers/net/wireless/rt2x00/Kconfig b/drivers/net/wireless/rt2x00/Kconfig index c7548da6573d..44d6ead43341 100644 --- a/drivers/net/wireless/rt2x00/Kconfig +++ b/drivers/net/wireless/rt2x00/Kconfig | |||
| @@ -82,7 +82,6 @@ config RT2800PCI_RT33XX | |||
| 82 | 82 | ||
| 83 | config RT2800PCI_RT35XX | 83 | config RT2800PCI_RT35XX |
| 84 | bool "rt2800pci - Include support for rt35xx devices (EXPERIMENTAL)" | 84 | bool "rt2800pci - Include support for rt35xx devices (EXPERIMENTAL)" |
| 85 | depends on EXPERIMENTAL | ||
| 86 | default y | 85 | default y |
| 87 | ---help--- | 86 | ---help--- |
| 88 | This adds support for rt35xx wireless chipset family to the | 87 | This adds support for rt35xx wireless chipset family to the |
| @@ -92,7 +91,6 @@ config RT2800PCI_RT35XX | |||
| 92 | 91 | ||
| 93 | config RT2800PCI_RT53XX | 92 | config RT2800PCI_RT53XX |
| 94 | bool "rt2800pci - Include support for rt53xx devices (EXPERIMENTAL)" | 93 | bool "rt2800pci - Include support for rt53xx devices (EXPERIMENTAL)" |
| 95 | depends on EXPERIMENTAL | ||
| 96 | default y | 94 | default y |
| 97 | ---help--- | 95 | ---help--- |
| 98 | This adds support for rt53xx wireless chipset family to the | 96 | This adds support for rt53xx wireless chipset family to the |
| @@ -101,7 +99,6 @@ config RT2800PCI_RT53XX | |||
| 101 | 99 | ||
| 102 | config RT2800PCI_RT3290 | 100 | config RT2800PCI_RT3290 |
| 103 | bool "rt2800pci - Include support for rt3290 devices (EXPERIMENTAL)" | 101 | bool "rt2800pci - Include support for rt3290 devices (EXPERIMENTAL)" |
| 104 | depends on EXPERIMENTAL | ||
| 105 | default y | 102 | default y |
| 106 | ---help--- | 103 | ---help--- |
| 107 | This adds support for rt3290 wireless chipset family to the | 104 | This adds support for rt3290 wireless chipset family to the |
| @@ -159,7 +156,6 @@ config RT2800USB_RT33XX | |||
| 159 | 156 | ||
| 160 | config RT2800USB_RT35XX | 157 | config RT2800USB_RT35XX |
| 161 | bool "rt2800usb - Include support for rt35xx devices (EXPERIMENTAL)" | 158 | bool "rt2800usb - Include support for rt35xx devices (EXPERIMENTAL)" |
| 162 | depends on EXPERIMENTAL | ||
| 163 | default y | 159 | default y |
| 164 | ---help--- | 160 | ---help--- |
| 165 | This adds support for rt35xx wireless chipset family to the | 161 | This adds support for rt35xx wireless chipset family to the |
| @@ -168,7 +164,6 @@ config RT2800USB_RT35XX | |||
| 168 | 164 | ||
| 169 | config RT2800USB_RT53XX | 165 | config RT2800USB_RT53XX |
| 170 | bool "rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)" | 166 | bool "rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)" |
| 171 | depends on EXPERIMENTAL | ||
| 172 | ---help--- | 167 | ---help--- |
| 173 | This adds support for rt53xx wireless chipset family to the | 168 | This adds support for rt53xx wireless chipset family to the |
| 174 | rt2800usb driver. | 169 | rt2800usb driver. |
diff --git a/drivers/net/wireless/rtl818x/Kconfig b/drivers/net/wireless/rtl818x/Kconfig index 17d80fe556de..30332175bcd8 100644 --- a/drivers/net/wireless/rtl818x/Kconfig +++ b/drivers/net/wireless/rtl818x/Kconfig | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | # | 3 | # |
| 4 | config RTL8180 | 4 | config RTL8180 |
| 5 | tristate "Realtek 8180/8185 PCI support" | 5 | tristate "Realtek 8180/8185 PCI support" |
| 6 | depends on MAC80211 && PCI && EXPERIMENTAL | 6 | depends on MAC80211 && PCI |
| 7 | select EEPROM_93CX6 | 7 | select EEPROM_93CX6 |
| 8 | ---help--- | 8 | ---help--- |
| 9 | This is a driver for RTL8180 and RTL8185 based cards. | 9 | This is a driver for RTL8180 and RTL8185 based cards. |
diff --git a/drivers/net/wireless/zd1211rw/Kconfig b/drivers/net/wireless/zd1211rw/Kconfig index 5f809695f71a..96c8e1de0879 100644 --- a/drivers/net/wireless/zd1211rw/Kconfig +++ b/drivers/net/wireless/zd1211rw/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config ZD1211RW | 1 | config ZD1211RW |
| 2 | tristate "ZyDAS ZD1211/ZD1211B USB-wireless support" | 2 | tristate "ZyDAS ZD1211/ZD1211B USB-wireless support" |
| 3 | depends on USB && MAC80211 && EXPERIMENTAL | 3 | depends on USB && MAC80211 |
| 4 | select FW_LOADER | 4 | select FW_LOADER |
| 5 | ---help--- | 5 | ---help--- |
| 6 | This is an experimental driver for the ZyDAS ZD1211/ZD1211B wireless | 6 | This is an experimental driver for the ZyDAS ZD1211/ZD1211B wireless |
diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig index 8fd255f7ee40..b90f85bf5f81 100644 --- a/drivers/pcmcia/Kconfig +++ b/drivers/pcmcia/Kconfig | |||
| @@ -36,8 +36,8 @@ config PCMCIA | |||
| 36 | If unsure, say Y. | 36 | If unsure, say Y. |
| 37 | 37 | ||
| 38 | config PCMCIA_LOAD_CIS | 38 | config PCMCIA_LOAD_CIS |
| 39 | bool "Load CIS updates from userspace (EXPERIMENTAL)" | 39 | bool "Load CIS updates from userspace" |
| 40 | depends on PCMCIA && EXPERIMENTAL | 40 | depends on PCMCIA |
| 41 | select FW_LOADER | 41 | select FW_LOADER |
| 42 | default y | 42 | default y |
| 43 | help | 43 | help |
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c index 471c71f7f8b6..75933a6aa828 100644 --- a/drivers/pinctrl/pinctrl-at91.c +++ b/drivers/pinctrl/pinctrl-at91.c | |||
| @@ -1503,10 +1503,9 @@ static int at91_gpio_probe(struct platform_device *pdev) | |||
| 1503 | goto err; | 1503 | goto err; |
| 1504 | } | 1504 | } |
| 1505 | 1505 | ||
| 1506 | at91_chip->regbase = devm_request_and_ioremap(&pdev->dev, res); | 1506 | at91_chip->regbase = devm_ioremap_resource(&pdev->dev, res); |
| 1507 | if (!at91_chip->regbase) { | 1507 | if (IS_ERR(at91_chip->regbase)) { |
| 1508 | dev_err(&pdev->dev, "failed to map registers, ignoring.\n"); | 1508 | ret = PTR_ERR(at91_chip->regbase); |
| 1509 | ret = -EBUSY; | ||
| 1510 | goto err; | 1509 | goto err; |
| 1511 | } | 1510 | } |
| 1512 | 1511 | ||
diff --git a/drivers/pinctrl/pinctrl-bcm2835.c b/drivers/pinctrl/pinctrl-bcm2835.c index d347b9f2eae3..4eb6d2c4e4df 100644 --- a/drivers/pinctrl/pinctrl-bcm2835.c +++ b/drivers/pinctrl/pinctrl-bcm2835.c | |||
| @@ -959,9 +959,9 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev) | |||
| 959 | return err; | 959 | return err; |
| 960 | } | 960 | } |
| 961 | 961 | ||
| 962 | pc->base = devm_request_and_ioremap(dev, &iomem); | 962 | pc->base = devm_ioremap_resource(dev, &iomem); |
| 963 | if (!pc->base) | 963 | if (IS_ERR(pc->base)) |
| 964 | return -EADDRNOTAVAIL; | 964 | return PTR_ERR(pc->base); |
| 965 | 965 | ||
| 966 | pc->gpio_chip = bcm2835_gpio_chip; | 966 | pc->gpio_chip = bcm2835_gpio_chip; |
| 967 | pc->gpio_chip.dev = dev; | 967 | pc->gpio_chip.dev = dev; |
diff --git a/drivers/pinctrl/pinctrl-coh901.c b/drivers/pinctrl/pinctrl-coh901.c index fbb37154471c..8b7e7bc2226b 100644 --- a/drivers/pinctrl/pinctrl-coh901.c +++ b/drivers/pinctrl/pinctrl-coh901.c | |||
| @@ -715,11 +715,9 @@ static int __init u300_gpio_probe(struct platform_device *pdev) | |||
| 715 | return -ENODEV; | 715 | return -ENODEV; |
| 716 | } | 716 | } |
| 717 | 717 | ||
| 718 | gpio->base = devm_request_and_ioremap(&pdev->dev, memres); | 718 | gpio->base = devm_ioremap_resource(&pdev->dev, memres); |
| 719 | if (!gpio->base) { | 719 | if (IS_ERR(gpio->base)) |
| 720 | dev_err(gpio->dev, "could not get remap memory\n"); | 720 | return PTR_ERR(gpio->base); |
| 721 | return -ENOMEM; | ||
| 722 | } | ||
| 723 | 721 | ||
| 724 | gpio->clk = devm_clk_get(gpio->dev, NULL); | 722 | gpio->clk = devm_clk_get(gpio->dev, NULL); |
| 725 | if (IS_ERR(gpio->clk)) { | 723 | if (IS_ERR(gpio->clk)) { |
diff --git a/drivers/pinctrl/pinctrl-exynos5440.c b/drivers/pinctrl/pinctrl-exynos5440.c index 142729914c34..1376eb7305db 100644 --- a/drivers/pinctrl/pinctrl-exynos5440.c +++ b/drivers/pinctrl/pinctrl-exynos5440.c | |||
| @@ -866,11 +866,9 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev) | |||
| 866 | return -ENOENT; | 866 | return -ENOENT; |
| 867 | } | 867 | } |
| 868 | 868 | ||
| 869 | priv->reg_base = devm_request_and_ioremap(&pdev->dev, res); | 869 | priv->reg_base = devm_ioremap_resource(&pdev->dev, res); |
| 870 | if (!priv->reg_base) { | 870 | if (IS_ERR(priv->reg_base)) |
| 871 | dev_err(dev, "ioremap failed\n"); | 871 | return PTR_ERR(priv->reg_base); |
| 872 | return -ENODEV; | ||
| 873 | } | ||
| 874 | 872 | ||
| 875 | ret = exynos5440_gpiolib_register(pdev, priv); | 873 | ret = exynos5440_gpiolib_register(pdev, priv); |
| 876 | if (ret) | 874 | if (ret) |
diff --git a/drivers/pinctrl/pinctrl-falcon.c b/drivers/pinctrl/pinctrl-falcon.c index 4a0d54a08890..af97a1f90007 100644 --- a/drivers/pinctrl/pinctrl-falcon.c +++ b/drivers/pinctrl/pinctrl-falcon.c | |||
| @@ -447,14 +447,11 @@ static int pinctrl_falcon_probe(struct platform_device *pdev) | |||
| 447 | dev_err(&ppdev->dev, "failed to get clock\n"); | 447 | dev_err(&ppdev->dev, "failed to get clock\n"); |
| 448 | return PTR_ERR(falcon_info.clk[*bank]); | 448 | return PTR_ERR(falcon_info.clk[*bank]); |
| 449 | } | 449 | } |
| 450 | falcon_info.membase[*bank] = | 450 | falcon_info.membase[*bank] = devm_ioremap_resource(&pdev->dev, |
| 451 | devm_request_and_ioremap(&pdev->dev, &res); | 451 | &res); |
| 452 | if (!falcon_info.membase[*bank]) { | 452 | if (IS_ERR(falcon_info.membase[*bank])) |
| 453 | dev_err(&pdev->dev, | 453 | return PTR_ERR(falcon_info.membase[*bank]); |
| 454 | "Failed to remap memory for bank %d\n", | 454 | |
| 455 | *bank); | ||
| 456 | return -ENOMEM; | ||
| 457 | } | ||
| 458 | avail = pad_r32(falcon_info.membase[*bank], | 455 | avail = pad_r32(falcon_info.membase[*bank], |
| 459 | LTQ_PADC_AVAIL); | 456 | LTQ_PADC_AVAIL); |
| 460 | pins = fls(avail); | 457 | pins = fls(avail); |
diff --git a/drivers/pinctrl/pinctrl-imx.c b/drivers/pinctrl/pinctrl-imx.c index 43a6f1ffc786..4cebb9c6c5c5 100644 --- a/drivers/pinctrl/pinctrl-imx.c +++ b/drivers/pinctrl/pinctrl-imx.c | |||
| @@ -584,9 +584,9 @@ int imx_pinctrl_probe(struct platform_device *pdev, | |||
| 584 | if (!res) | 584 | if (!res) |
| 585 | return -ENOENT; | 585 | return -ENOENT; |
| 586 | 586 | ||
| 587 | ipctl->base = devm_request_and_ioremap(&pdev->dev, res); | 587 | ipctl->base = devm_ioremap_resource(&pdev->dev, res); |
| 588 | if (!ipctl->base) | 588 | if (IS_ERR(ipctl->base)) |
| 589 | return -EBUSY; | 589 | return PTR_ERR(ipctl->base); |
| 590 | 590 | ||
| 591 | imx_pinctrl_desc.name = dev_name(&pdev->dev); | 591 | imx_pinctrl_desc.name = dev_name(&pdev->dev); |
| 592 | imx_pinctrl_desc.pins = info->pins; | 592 | imx_pinctrl_desc.pins = info->pins; |
diff --git a/drivers/pinctrl/pinctrl-nomadik.c b/drivers/pinctrl/pinctrl-nomadik.c index de9e8519b803..3c80dd98304b 100644 --- a/drivers/pinctrl/pinctrl-nomadik.c +++ b/drivers/pinctrl/pinctrl-nomadik.c | |||
| @@ -1362,9 +1362,9 @@ static int nmk_gpio_probe(struct platform_device *dev) | |||
| 1362 | if (secondary_irq >= 0 && !pdata->get_secondary_status) | 1362 | if (secondary_irq >= 0 && !pdata->get_secondary_status) |
| 1363 | return -EINVAL; | 1363 | return -EINVAL; |
| 1364 | 1364 | ||
| 1365 | base = devm_request_and_ioremap(&dev->dev, res); | 1365 | base = devm_ioremap_resource(&dev->dev, res); |
| 1366 | if (!base) | 1366 | if (IS_ERR(base)) |
| 1367 | return -ENOMEM; | 1367 | return PTR_ERR(base); |
| 1368 | 1368 | ||
| 1369 | clk = devm_clk_get(&dev->dev, NULL); | 1369 | clk = devm_clk_get(&dev->dev, NULL); |
| 1370 | if (IS_ERR(clk)) | 1370 | if (IS_ERR(clk)) |
diff --git a/drivers/pinctrl/pinctrl-pxa3xx.c b/drivers/pinctrl/pinctrl-pxa3xx.c index 51f8a388b917..1f49bb02a6af 100644 --- a/drivers/pinctrl/pinctrl-pxa3xx.c +++ b/drivers/pinctrl/pinctrl-pxa3xx.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | * | 11 | * |
| 12 | */ | 12 | */ |
| 13 | 13 | ||
| 14 | #include <linux/err.h> | ||
| 14 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| 15 | #include <linux/device.h> | 16 | #include <linux/device.h> |
| 16 | #include <linux/io.h> | 17 | #include <linux/io.h> |
| @@ -187,9 +188,9 @@ int pxa3xx_pinctrl_register(struct platform_device *pdev, | |||
| 187 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 188 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 188 | if (!res) | 189 | if (!res) |
| 189 | return -ENOENT; | 190 | return -ENOENT; |
| 190 | info->virt_base = devm_request_and_ioremap(&pdev->dev, res); | 191 | info->virt_base = devm_ioremap_resource(&pdev->dev, res); |
| 191 | if (!info->virt_base) | 192 | if (IS_ERR(info->virt_base)) |
| 192 | return -ENOMEM; | 193 | return PTR_ERR(info->virt_base); |
| 193 | info->pctrl = pinctrl_register(desc, &pdev->dev, info); | 194 | info->pctrl = pinctrl_register(desc, &pdev->dev, info); |
| 194 | if (!info->pctrl) { | 195 | if (!info->pctrl) { |
| 195 | dev_err(&pdev->dev, "failed to register PXA pinmux driver\n"); | 196 | dev_err(&pdev->dev, "failed to register PXA pinmux driver\n"); |
diff --git a/drivers/pinctrl/pinctrl-samsung.c b/drivers/pinctrl/pinctrl-samsung.c index 5c20ed056054..5f8441ef59ca 100644 --- a/drivers/pinctrl/pinctrl-samsung.c +++ b/drivers/pinctrl/pinctrl-samsung.c | |||
| @@ -916,11 +916,9 @@ static int samsung_pinctrl_probe(struct platform_device *pdev) | |||
| 916 | return -ENOENT; | 916 | return -ENOENT; |
| 917 | } | 917 | } |
| 918 | 918 | ||
| 919 | drvdata->virt_base = devm_request_and_ioremap(&pdev->dev, res); | 919 | drvdata->virt_base = devm_ioremap_resource(&pdev->dev, res); |
| 920 | if (!drvdata->virt_base) { | 920 | if (IS_ERR(drvdata->virt_base)) |
| 921 | dev_err(dev, "ioremap failed\n"); | 921 | return PTR_ERR(drvdata->virt_base); |
| 922 | return -ENODEV; | ||
| 923 | } | ||
| 924 | 922 | ||
| 925 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 923 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 926 | if (res) | 924 | if (res) |
diff --git a/drivers/pinctrl/pinctrl-u300.c b/drivers/pinctrl/pinctrl-u300.c index 718ec5762683..2b5772550836 100644 --- a/drivers/pinctrl/pinctrl-u300.c +++ b/drivers/pinctrl/pinctrl-u300.c | |||
| @@ -1078,9 +1078,9 @@ static int u300_pmx_probe(struct platform_device *pdev) | |||
| 1078 | if (!res) | 1078 | if (!res) |
| 1079 | return -ENOENT; | 1079 | return -ENOENT; |
| 1080 | 1080 | ||
| 1081 | upmx->virtbase = devm_request_and_ioremap(&pdev->dev, res); | 1081 | upmx->virtbase = devm_ioremap_resource(&pdev->dev, res); |
| 1082 | if (!upmx->virtbase) | 1082 | if (IS_ERR(upmx->virtbase)) |
| 1083 | return -ENOMEM; | 1083 | return PTR_ERR(upmx->virtbase); |
| 1084 | 1084 | ||
| 1085 | upmx->pctl = pinctrl_register(&u300_pmx_desc, &pdev->dev, upmx); | 1085 | upmx->pctl = pinctrl_register(&u300_pmx_desc, &pdev->dev, upmx); |
| 1086 | if (!upmx->pctl) { | 1086 | if (!upmx->pctl) { |
diff --git a/drivers/pinctrl/pinctrl-xway.c b/drivers/pinctrl/pinctrl-xway.c index 53cb6a3a56ed..068224efa6fa 100644 --- a/drivers/pinctrl/pinctrl-xway.c +++ b/drivers/pinctrl/pinctrl-xway.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | * Copyright (C) 2012 John Crispin <blogic@openwrt.org> | 9 | * Copyright (C) 2012 John Crispin <blogic@openwrt.org> |
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #include <linux/err.h> | ||
| 12 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
| 13 | #include <linux/module.h> | 14 | #include <linux/module.h> |
| 14 | #include <linux/of_platform.h> | 15 | #include <linux/of_platform.h> |
| @@ -719,11 +720,9 @@ static int pinmux_xway_probe(struct platform_device *pdev) | |||
| 719 | dev_err(&pdev->dev, "Failed to get resource\n"); | 720 | dev_err(&pdev->dev, "Failed to get resource\n"); |
| 720 | return -ENOENT; | 721 | return -ENOENT; |
| 721 | } | 722 | } |
| 722 | xway_info.membase[0] = devm_request_and_ioremap(&pdev->dev, res); | 723 | xway_info.membase[0] = devm_ioremap_resource(&pdev->dev, res); |
| 723 | if (!xway_info.membase[0]) { | 724 | if (IS_ERR(xway_info.membase[0])) |
| 724 | dev_err(&pdev->dev, "Failed to remap resource\n"); | 725 | return PTR_ERR(xway_info.membase[0]); |
| 725 | return -ENOMEM; | ||
| 726 | } | ||
| 727 | 726 | ||
| 728 | match = of_match_device(xway_match, &pdev->dev); | 727 | match = of_match_device(xway_match, &pdev->dev); |
| 729 | if (match) | 728 | if (match) |
diff --git a/drivers/pinctrl/spear/pinctrl-plgpio.c b/drivers/pinctrl/spear/pinctrl-plgpio.c index 3cf4ecd9302c..295b349a05cf 100644 --- a/drivers/pinctrl/spear/pinctrl-plgpio.c +++ b/drivers/pinctrl/spear/pinctrl-plgpio.c | |||
| @@ -540,11 +540,9 @@ static int plgpio_probe(struct platform_device *pdev) | |||
| 540 | return -ENOMEM; | 540 | return -ENOMEM; |
| 541 | } | 541 | } |
| 542 | 542 | ||
| 543 | plgpio->base = devm_request_and_ioremap(&pdev->dev, res); | 543 | plgpio->base = devm_ioremap_resource(&pdev->dev, res); |
| 544 | if (!plgpio->base) { | 544 | if (IS_ERR(plgpio->base)) |
| 545 | dev_err(&pdev->dev, "request and ioremap fail\n"); | 545 | return PTR_ERR(plgpio->base); |
| 546 | return -ENOMEM; | ||
| 547 | } | ||
| 548 | 546 | ||
| 549 | ret = plgpio_probe_dt(pdev, plgpio); | 547 | ret = plgpio_probe_dt(pdev, plgpio); |
| 550 | if (ret) { | 548 | if (ret) { |
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index c86bae828c28..7ab0b2fba503 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig | |||
| @@ -80,10 +80,9 @@ config ASUS_LAPTOP | |||
| 80 | If you have an ACPI-compatible ASUS laptop, say Y or M here. | 80 | If you have an ACPI-compatible ASUS laptop, say Y or M here. |
| 81 | 81 | ||
| 82 | config DELL_LAPTOP | 82 | config DELL_LAPTOP |
| 83 | tristate "Dell Laptop Extras (EXPERIMENTAL)" | 83 | tristate "Dell Laptop Extras" |
| 84 | depends on X86 | 84 | depends on X86 |
| 85 | depends on DCDBAS | 85 | depends on DCDBAS |
| 86 | depends on EXPERIMENTAL | ||
| 87 | depends on BACKLIGHT_CLASS_DEVICE | 86 | depends on BACKLIGHT_CLASS_DEVICE |
| 88 | depends on RFKILL || RFKILL = n | 87 | depends on RFKILL || RFKILL = n |
| 89 | depends on SERIO_I8042 | 88 | depends on SERIO_I8042 |
| @@ -171,9 +170,8 @@ config AMILO_RFKILL | |||
| 171 | laptops. | 170 | laptops. |
| 172 | 171 | ||
| 173 | config TC1100_WMI | 172 | config TC1100_WMI |
| 174 | tristate "HP Compaq TC1100 Tablet WMI Extras (EXPERIMENTAL)" | 173 | tristate "HP Compaq TC1100 Tablet WMI Extras" |
| 175 | depends on !X86_64 | 174 | depends on !X86_64 |
| 176 | depends on EXPERIMENTAL | ||
| 177 | depends on ACPI | 175 | depends on ACPI |
| 178 | depends on ACPI_WMI | 176 | depends on ACPI_WMI |
| 179 | ---help--- | 177 | ---help--- |
diff --git a/drivers/power/jz4740-battery.c b/drivers/power/jz4740-battery.c index bf914893c6fd..c675553d4647 100644 --- a/drivers/power/jz4740-battery.c +++ b/drivers/power/jz4740-battery.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
| 23 | 23 | ||
| 24 | #include <linux/delay.h> | 24 | #include <linux/delay.h> |
| 25 | #include <linux/err.h> | ||
| 25 | #include <linux/gpio.h> | 26 | #include <linux/gpio.h> |
| 26 | #include <linux/mfd/core.h> | 27 | #include <linux/mfd/core.h> |
| 27 | #include <linux/power_supply.h> | 28 | #include <linux/power_supply.h> |
| @@ -266,9 +267,9 @@ static int jz_battery_probe(struct platform_device *pdev) | |||
| 266 | 267 | ||
| 267 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 268 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 268 | 269 | ||
| 269 | jz_battery->base = devm_request_and_ioremap(&pdev->dev, mem); | 270 | jz_battery->base = devm_ioremap_resource(&pdev->dev, mem); |
| 270 | if (!jz_battery->base) | 271 | if (IS_ERR(jz_battery->base)) |
| 271 | return -EBUSY; | 272 | return PTR_ERR(jz_battery->base); |
| 272 | 273 | ||
| 273 | battery = &jz_battery->battery; | 274 | battery = &jz_battery->battery; |
| 274 | battery->name = pdata->info.name; | 275 | battery->name = pdata->info.name; |
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c index 8a7cfb3cc166..5deac432e2ae 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c | |||
| @@ -141,7 +141,7 @@ int power_supply_set_battery_charged(struct power_supply *psy) | |||
| 141 | } | 141 | } |
| 142 | EXPORT_SYMBOL_GPL(power_supply_set_battery_charged); | 142 | EXPORT_SYMBOL_GPL(power_supply_set_battery_charged); |
| 143 | 143 | ||
| 144 | static int power_supply_match_device_by_name(struct device *dev, void *data) | 144 | static int power_supply_match_device_by_name(struct device *dev, const void *data) |
| 145 | { | 145 | { |
| 146 | const char *name = data; | 146 | const char *name = data; |
| 147 | struct power_supply *psy = dev_get_drvdata(dev); | 147 | struct power_supply *psy = dev_get_drvdata(dev); |
| @@ -149,7 +149,7 @@ static int power_supply_match_device_by_name(struct device *dev, void *data) | |||
| 149 | return strcmp(psy->name, name) == 0; | 149 | return strcmp(psy->name, name) == 0; |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | struct power_supply *power_supply_get_by_name(char *name) | 152 | struct power_supply *power_supply_get_by_name(const char *name) |
| 153 | { | 153 | { |
| 154 | struct device *dev = class_find_device(power_supply_class, NULL, name, | 154 | struct device *dev = class_find_device(power_supply_class, NULL, name, |
| 155 | power_supply_match_device_by_name); | 155 | power_supply_match_device_by_name); |
diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c index 65a86bdeabed..3f5677b7690e 100644 --- a/drivers/pwm/pwm-imx.c +++ b/drivers/pwm/pwm-imx.c | |||
| @@ -274,9 +274,9 @@ static int imx_pwm_probe(struct platform_device *pdev) | |||
| 274 | return -ENODEV; | 274 | return -ENODEV; |
| 275 | } | 275 | } |
| 276 | 276 | ||
| 277 | imx->mmio_base = devm_request_and_ioremap(&pdev->dev, r); | 277 | imx->mmio_base = devm_ioremap_resource(&pdev->dev, r); |
| 278 | if (imx->mmio_base == NULL) | 278 | if (IS_ERR(imx->mmio_base)) |
| 279 | return -EADDRNOTAVAIL; | 279 | return PTR_ERR(imx->mmio_base); |
| 280 | 280 | ||
| 281 | data = of_id->data; | 281 | data = of_id->data; |
| 282 | imx->config = data->config; | 282 | imx->config = data->config; |
diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c index 14106440294f..b3f0d0dfd748 100644 --- a/drivers/pwm/pwm-lpc32xx.c +++ b/drivers/pwm/pwm-lpc32xx.c | |||
| @@ -110,9 +110,9 @@ static int lpc32xx_pwm_probe(struct platform_device *pdev) | |||
| 110 | if (!res) | 110 | if (!res) |
| 111 | return -EINVAL; | 111 | return -EINVAL; |
| 112 | 112 | ||
| 113 | lpc32xx->base = devm_request_and_ioremap(&pdev->dev, res); | 113 | lpc32xx->base = devm_ioremap_resource(&pdev->dev, res); |
| 114 | if (!lpc32xx->base) | 114 | if (IS_ERR(lpc32xx->base)) |
| 115 | return -EADDRNOTAVAIL; | 115 | return PTR_ERR(lpc32xx->base); |
| 116 | 116 | ||
| 117 | lpc32xx->clk = devm_clk_get(&pdev->dev, NULL); | 117 | lpc32xx->clk = devm_clk_get(&pdev->dev, NULL); |
| 118 | if (IS_ERR(lpc32xx->clk)) | 118 | if (IS_ERR(lpc32xx->clk)) |
diff --git a/drivers/pwm/pwm-mxs.c b/drivers/pwm/pwm-mxs.c index 7ec345f01831..a53d3094b75a 100644 --- a/drivers/pwm/pwm-mxs.c +++ b/drivers/pwm/pwm-mxs.c | |||
| @@ -139,9 +139,9 @@ static int mxs_pwm_probe(struct platform_device *pdev) | |||
| 139 | return -ENOMEM; | 139 | return -ENOMEM; |
| 140 | 140 | ||
| 141 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 141 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 142 | mxs->base = devm_request_and_ioremap(&pdev->dev, res); | 142 | mxs->base = devm_ioremap_resource(&pdev->dev, res); |
| 143 | if (!mxs->base) | 143 | if (IS_ERR(mxs->base)) |
| 144 | return -EADDRNOTAVAIL; | 144 | return PTR_ERR(mxs->base); |
| 145 | 145 | ||
| 146 | pinctrl = devm_pinctrl_get_select_default(&pdev->dev); | 146 | pinctrl = devm_pinctrl_get_select_default(&pdev->dev); |
| 147 | if (IS_ERR(pinctrl)) | 147 | if (IS_ERR(pinctrl)) |
diff --git a/drivers/pwm/pwm-puv3.c b/drivers/pwm/pwm-puv3.c index b882f6032fee..db964e6ecf5c 100644 --- a/drivers/pwm/pwm-puv3.c +++ b/drivers/pwm/pwm-puv3.c | |||
| @@ -123,9 +123,9 @@ static int pwm_probe(struct platform_device *pdev) | |||
| 123 | return -ENODEV; | 123 | return -ENODEV; |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | puv3->base = devm_request_and_ioremap(&pdev->dev, r); | 126 | puv3->base = devm_ioremap_resource(&pdev->dev, r); |
| 127 | if (puv3->base == NULL) | 127 | if (IS_ERR(puv3->base)) |
| 128 | return -EADDRNOTAVAIL; | 128 | return PTR_ERR(puv3->base); |
| 129 | 129 | ||
| 130 | puv3->chip.dev = &pdev->dev; | 130 | puv3->chip.dev = &pdev->dev; |
| 131 | puv3->chip.ops = &puv3_pwm_ops; | 131 | puv3->chip.ops = &puv3_pwm_ops; |
diff --git a/drivers/pwm/pwm-pxa.c b/drivers/pwm/pwm-pxa.c index f32fc4e66e0c..20370e61de5a 100644 --- a/drivers/pwm/pwm-pxa.c +++ b/drivers/pwm/pwm-pxa.c | |||
| @@ -165,9 +165,9 @@ static int pwm_probe(struct platform_device *pdev) | |||
| 165 | return -ENODEV; | 165 | return -ENODEV; |
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | pwm->mmio_base = devm_request_and_ioremap(&pdev->dev, r); | 168 | pwm->mmio_base = devm_ioremap_resource(&pdev->dev, r); |
| 169 | if (pwm->mmio_base == NULL) | 169 | if (IS_ERR(pwm->mmio_base)) |
| 170 | return -EADDRNOTAVAIL; | 170 | return PTR_ERR(pwm->mmio_base); |
| 171 | 171 | ||
| 172 | ret = pwmchip_add(&pwm->chip); | 172 | ret = pwmchip_add(&pwm->chip); |
| 173 | if (ret < 0) { | 173 | if (ret < 0) { |
diff --git a/drivers/pwm/pwm-spear.c b/drivers/pwm/pwm-spear.c index 83b21d9d5cf9..69a2d9eb34db 100644 --- a/drivers/pwm/pwm-spear.c +++ b/drivers/pwm/pwm-spear.c | |||
| @@ -192,9 +192,9 @@ static int spear_pwm_probe(struct platform_device *pdev) | |||
| 192 | return -ENOMEM; | 192 | return -ENOMEM; |
| 193 | } | 193 | } |
| 194 | 194 | ||
| 195 | pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r); | 195 | pc->mmio_base = devm_ioremap_resource(&pdev->dev, r); |
| 196 | if (!pc->mmio_base) | 196 | if (IS_ERR(pc->mmio_base)) |
| 197 | return -EADDRNOTAVAIL; | 197 | return PTR_ERR(pc->mmio_base); |
| 198 | 198 | ||
| 199 | pc->clk = devm_clk_get(&pdev->dev, NULL); | 199 | pc->clk = devm_clk_get(&pdev->dev, NULL); |
| 200 | if (IS_ERR(pc->clk)) | 200 | if (IS_ERR(pc->clk)) |
diff --git a/drivers/pwm/pwm-tegra.c b/drivers/pwm/pwm-tegra.c index 30c0e2b70ce8..71900e8cd3d1 100644 --- a/drivers/pwm/pwm-tegra.c +++ b/drivers/pwm/pwm-tegra.c | |||
| @@ -186,9 +186,9 @@ static int tegra_pwm_probe(struct platform_device *pdev) | |||
| 186 | return -ENODEV; | 186 | return -ENODEV; |
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | pwm->mmio_base = devm_request_and_ioremap(&pdev->dev, r); | 189 | pwm->mmio_base = devm_ioremap_resource(&pdev->dev, r); |
| 190 | if (!pwm->mmio_base) | 190 | if (IS_ERR(pwm->mmio_base)) |
| 191 | return -EADDRNOTAVAIL; | 191 | return PTR_ERR(pwm->mmio_base); |
| 192 | 192 | ||
| 193 | platform_set_drvdata(pdev, pwm); | 193 | platform_set_drvdata(pdev, pwm); |
| 194 | 194 | ||
diff --git a/drivers/pwm/pwm-tiecap.c b/drivers/pwm/pwm-tiecap.c index 5cf016dd9822..27a67d6b27c1 100644 --- a/drivers/pwm/pwm-tiecap.c +++ b/drivers/pwm/pwm-tiecap.c | |||
| @@ -238,9 +238,9 @@ static int ecap_pwm_probe(struct platform_device *pdev) | |||
| 238 | return -ENODEV; | 238 | return -ENODEV; |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r); | 241 | pc->mmio_base = devm_ioremap_resource(&pdev->dev, r); |
| 242 | if (!pc->mmio_base) | 242 | if (IS_ERR(pc->mmio_base)) |
| 243 | return -EADDRNOTAVAIL; | 243 | return PTR_ERR(pc->mmio_base); |
| 244 | 244 | ||
| 245 | ret = pwmchip_add(&pc->chip); | 245 | ret = pwmchip_add(&pc->chip); |
| 246 | if (ret < 0) { | 246 | if (ret < 0) { |
diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index 72a6dd40c9ec..5a1399580533 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c | |||
| @@ -453,9 +453,9 @@ static int ehrpwm_pwm_probe(struct platform_device *pdev) | |||
| 453 | return -ENODEV; | 453 | return -ENODEV; |
| 454 | } | 454 | } |
| 455 | 455 | ||
| 456 | pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r); | 456 | pc->mmio_base = devm_ioremap_resource(&pdev->dev, r); |
| 457 | if (!pc->mmio_base) | 457 | if (IS_ERR(pc->mmio_base)) |
| 458 | return -EADDRNOTAVAIL; | 458 | return PTR_ERR(pc->mmio_base); |
| 459 | 459 | ||
| 460 | /* Acquire tbclk for Time Base EHRPWM submodule */ | 460 | /* Acquire tbclk for Time Base EHRPWM submodule */ |
| 461 | pc->tbclk = devm_clk_get(&pdev->dev, "tbclk"); | 461 | pc->tbclk = devm_clk_get(&pdev->dev, "tbclk"); |
diff --git a/drivers/pwm/pwm-tipwmss.c b/drivers/pwm/pwm-tipwmss.c index 3448a1c88590..17cbc59660ec 100644 --- a/drivers/pwm/pwm-tipwmss.c +++ b/drivers/pwm/pwm-tipwmss.c | |||
| @@ -75,9 +75,9 @@ static int pwmss_probe(struct platform_device *pdev) | |||
| 75 | return -ENODEV; | 75 | return -ENODEV; |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | info->mmio_base = devm_request_and_ioremap(&pdev->dev, r); | 78 | info->mmio_base = devm_ioremap_resource(&pdev->dev, r); |
| 79 | if (!info->mmio_base) | 79 | if (IS_ERR(info->mmio_base)) |
| 80 | return -EADDRNOTAVAIL; | 80 | return PTR_ERR(info->mmio_base); |
| 81 | 81 | ||
| 82 | pm_runtime_enable(&pdev->dev); | 82 | pm_runtime_enable(&pdev->dev); |
| 83 | pm_runtime_get_sync(&pdev->dev); | 83 | pm_runtime_get_sync(&pdev->dev); |
diff --git a/drivers/pwm/pwm-vt8500.c b/drivers/pwm/pwm-vt8500.c index b0ba2d403439..f9de9b28e46e 100644 --- a/drivers/pwm/pwm-vt8500.c +++ b/drivers/pwm/pwm-vt8500.c | |||
| @@ -178,9 +178,9 @@ static int vt8500_pwm_probe(struct platform_device *pdev) | |||
| 178 | return -ENODEV; | 178 | return -ENODEV; |
| 179 | } | 179 | } |
| 180 | 180 | ||
| 181 | chip->base = devm_request_and_ioremap(&pdev->dev, r); | 181 | chip->base = devm_ioremap_resource(&pdev->dev, r); |
| 182 | if (!chip->base) | 182 | if (IS_ERR(chip->base)) |
| 183 | return -EADDRNOTAVAIL; | 183 | return PTR_ERR(chip->base); |
| 184 | 184 | ||
| 185 | ret = clk_prepare(chip->clk); | 185 | ret = clk_prepare(chip->clk); |
| 186 | if (ret < 0) { | 186 | if (ret < 0) { |
diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig index 96ce101b9067..0b24108d1e1b 100644 --- a/drivers/remoteproc/Kconfig +++ b/drivers/remoteproc/Kconfig | |||
| @@ -1,16 +1,14 @@ | |||
| 1 | menu "Remoteproc drivers (EXPERIMENTAL)" | 1 | menu "Remoteproc drivers" |
| 2 | 2 | ||
| 3 | # REMOTEPROC gets selected by whoever wants it | 3 | # REMOTEPROC gets selected by whoever wants it |
| 4 | config REMOTEPROC | 4 | config REMOTEPROC |
| 5 | tristate | 5 | tristate |
| 6 | depends on EXPERIMENTAL | ||
| 7 | depends on HAS_DMA | 6 | depends on HAS_DMA |
| 8 | select FW_CONFIG | 7 | select FW_CONFIG |
| 9 | select VIRTIO | 8 | select VIRTIO |
| 10 | 9 | ||
| 11 | config OMAP_REMOTEPROC | 10 | config OMAP_REMOTEPROC |
| 12 | tristate "OMAP remoteproc support" | 11 | tristate "OMAP remoteproc support" |
| 13 | depends on EXPERIMENTAL | ||
| 14 | depends on HAS_DMA | 12 | depends on HAS_DMA |
| 15 | depends on ARCH_OMAP4 | 13 | depends on ARCH_OMAP4 |
| 16 | depends on OMAP_IOMMU | 14 | depends on OMAP_IOMMU |
| @@ -32,7 +30,6 @@ config OMAP_REMOTEPROC | |||
| 32 | 30 | ||
| 33 | config STE_MODEM_RPROC | 31 | config STE_MODEM_RPROC |
| 34 | tristate "STE-Modem remoteproc support" | 32 | tristate "STE-Modem remoteproc support" |
| 35 | depends on EXPERIMENTAL | ||
| 36 | depends on HAS_DMA | 33 | depends on HAS_DMA |
| 37 | select REMOTEPROC | 34 | select REMOTEPROC |
| 38 | default n | 35 | default n |
diff --git a/drivers/rpmsg/Kconfig b/drivers/rpmsg/Kconfig index 2bd911f12571..f6e0ea6ffda5 100644 --- a/drivers/rpmsg/Kconfig +++ b/drivers/rpmsg/Kconfig | |||
| @@ -1,9 +1,8 @@ | |||
| 1 | menu "Rpmsg drivers (EXPERIMENTAL)" | 1 | menu "Rpmsg drivers" |
| 2 | 2 | ||
| 3 | # RPMSG always gets selected by whoever wants it | 3 | # RPMSG always gets selected by whoever wants it |
| 4 | config RPMSG | 4 | config RPMSG |
| 5 | tristate | 5 | tristate |
| 6 | select VIRTIO | 6 | select VIRTIO |
| 7 | depends on EXPERIMENTAL | ||
| 8 | 7 | ||
| 9 | endmenu | 8 | endmenu |
diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index 9592b936b71b..42bd57da239d 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c | |||
| @@ -587,16 +587,16 @@ void rtc_update_irq(struct rtc_device *rtc, | |||
| 587 | } | 587 | } |
| 588 | EXPORT_SYMBOL_GPL(rtc_update_irq); | 588 | EXPORT_SYMBOL_GPL(rtc_update_irq); |
| 589 | 589 | ||
| 590 | static int __rtc_match(struct device *dev, void *data) | 590 | static int __rtc_match(struct device *dev, const void *data) |
| 591 | { | 591 | { |
| 592 | char *name = (char *)data; | 592 | const char *name = data; |
| 593 | 593 | ||
| 594 | if (strcmp(dev_name(dev), name) == 0) | 594 | if (strcmp(dev_name(dev), name) == 0) |
| 595 | return 1; | 595 | return 1; |
| 596 | return 0; | 596 | return 0; |
| 597 | } | 597 | } |
| 598 | 598 | ||
| 599 | struct rtc_device *rtc_class_open(char *name) | 599 | struct rtc_device *rtc_class_open(const char *name) |
| 600 | { | 600 | { |
| 601 | struct device *dev; | 601 | struct device *dev; |
| 602 | struct rtc_device *rtc = NULL; | 602 | struct rtc_device *rtc = NULL; |
diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c index 404651464d45..0c397ac3b132 100644 --- a/drivers/rtc/rtc-s3c.c +++ b/drivers/rtc/rtc-s3c.c | |||
| @@ -486,11 +486,9 @@ static int s3c_rtc_probe(struct platform_device *pdev) | |||
| 486 | return -ENOENT; | 486 | return -ENOENT; |
| 487 | } | 487 | } |
| 488 | 488 | ||
| 489 | s3c_rtc_base = devm_request_and_ioremap(&pdev->dev, res); | 489 | s3c_rtc_base = devm_ioremap_resource(&pdev->dev, res); |
| 490 | if (s3c_rtc_base == NULL) { | 490 | if (IS_ERR(s3c_rtc_base)) |
| 491 | dev_err(&pdev->dev, "failed to ioremap memory region\n"); | 491 | return PTR_ERR(s3c_rtc_base); |
| 492 | return -EINVAL; | ||
| 493 | } | ||
| 494 | 492 | ||
| 495 | rtc_clk = devm_clk_get(&pdev->dev, "rtc"); | 493 | rtc_clk = devm_clk_get(&pdev->dev, "rtc"); |
| 496 | if (IS_ERR(rtc_clk)) { | 494 | if (IS_ERR(rtc_clk)) { |
diff --git a/drivers/rtc/rtc-snvs.c b/drivers/rtc/rtc-snvs.c index d5ec7854a651..40662e9dc0ab 100644 --- a/drivers/rtc/rtc-snvs.c +++ b/drivers/rtc/rtc-snvs.c | |||
| @@ -252,9 +252,9 @@ static int snvs_rtc_probe(struct platform_device *pdev) | |||
| 252 | return -ENOMEM; | 252 | return -ENOMEM; |
| 253 | 253 | ||
| 254 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 254 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 255 | data->ioaddr = devm_request_and_ioremap(&pdev->dev, res); | 255 | data->ioaddr = devm_ioremap_resource(&pdev->dev, res); |
| 256 | if (!data->ioaddr) | 256 | if (IS_ERR(data->ioaddr)) |
| 257 | return -EADDRNOTAVAIL; | 257 | return PTR_ERR(data->ioaddr); |
| 258 | 258 | ||
| 259 | data->irq = platform_get_irq(pdev, 0); | 259 | data->irq = platform_get_irq(pdev, 0); |
| 260 | if (data->irq < 0) | 260 | if (data->irq < 0) |
diff --git a/drivers/rtc/rtc-spear.c b/drivers/rtc/rtc-spear.c index c2121b5a01f2..a18c3192ed40 100644 --- a/drivers/rtc/rtc-spear.c +++ b/drivers/rtc/rtc-spear.c | |||
| @@ -385,11 +385,9 @@ static int spear_rtc_probe(struct platform_device *pdev) | |||
| 385 | return status; | 385 | return status; |
| 386 | } | 386 | } |
| 387 | 387 | ||
| 388 | config->ioaddr = devm_request_and_ioremap(&pdev->dev, res); | 388 | config->ioaddr = devm_ioremap_resource(&pdev->dev, res); |
| 389 | if (!config->ioaddr) { | 389 | if (IS_ERR(config->ioaddr)) |
| 390 | dev_err(&pdev->dev, "request-ioremap fail\n"); | 390 | return PTR_ERR(config->ioaddr); |
| 391 | return -ENOMEM; | ||
| 392 | } | ||
| 393 | 391 | ||
| 394 | config->clk = devm_clk_get(&pdev->dev, NULL); | 392 | config->clk = devm_clk_get(&pdev->dev, NULL); |
| 395 | if (IS_ERR(config->clk)) | 393 | if (IS_ERR(config->clk)) |
diff --git a/drivers/rtc/rtc-tegra.c b/drivers/rtc/rtc-tegra.c index c84ea6659f49..7c033756d6b5 100644 --- a/drivers/rtc/rtc-tegra.c +++ b/drivers/rtc/rtc-tegra.c | |||
| @@ -327,11 +327,9 @@ static int tegra_rtc_probe(struct platform_device *pdev) | |||
| 327 | return -EBUSY; | 327 | return -EBUSY; |
| 328 | } | 328 | } |
| 329 | 329 | ||
| 330 | info->rtc_base = devm_request_and_ioremap(&pdev->dev, res); | 330 | info->rtc_base = devm_ioremap_resource(&pdev->dev, res); |
| 331 | if (!info->rtc_base) { | 331 | if (IS_ERR(info->rtc_base)) |
| 332 | dev_err(&pdev->dev, "Unable to request mem region and grab IOs for device.\n"); | 332 | return PTR_ERR(info->rtc_base); |
| 333 | return -EBUSY; | ||
| 334 | } | ||
| 335 | 333 | ||
| 336 | info->tegra_rtc_irq = platform_get_irq(pdev, 0); | 334 | info->tegra_rtc_irq = platform_get_irq(pdev, 0); |
| 337 | if (info->tegra_rtc_irq <= 0) | 335 | if (info->tegra_rtc_irq <= 0) |
diff --git a/drivers/sbus/char/Kconfig b/drivers/sbus/char/Kconfig index 73cde85d04d8..5ba684f73ab8 100644 --- a/drivers/sbus/char/Kconfig +++ b/drivers/sbus/char/Kconfig | |||
| @@ -21,8 +21,7 @@ config OBP_FLASH | |||
| 21 | able to upgrade the OBP firmware, say Y here. | 21 | able to upgrade the OBP firmware, say Y here. |
| 22 | 22 | ||
| 23 | config TADPOLE_TS102_UCTRL | 23 | config TADPOLE_TS102_UCTRL |
| 24 | tristate "Tadpole TS102 Microcontroller support (EXPERIMENTAL)" | 24 | tristate "Tadpole TS102 Microcontroller support" |
| 25 | depends on EXPERIMENTAL | ||
| 26 | help | 25 | help |
| 27 | Say Y here to directly support the TS102 Microcontroller interface | 26 | Say Y here to directly support the TS102 Microcontroller interface |
| 28 | on the Tadpole Sparcbook 3. This device handles power-management | 27 | on the Tadpole Sparcbook 3. This device handles power-management |
| @@ -30,8 +29,8 @@ config TADPOLE_TS102_UCTRL | |||
| 30 | monitors and mice. | 29 | monitors and mice. |
| 31 | 30 | ||
| 32 | config SUN_JSFLASH | 31 | config SUN_JSFLASH |
| 33 | tristate "JavaStation OS Flash SIMM (EXPERIMENTAL)" | 32 | tristate "JavaStation OS Flash SIMM" |
| 34 | depends on EXPERIMENTAL && SPARC32 | 33 | depends on SPARC32 |
| 35 | help | 34 | help |
| 36 | If you say Y here, you will be able to boot from your JavaStation's | 35 | If you say Y here, you will be able to boot from your JavaStation's |
| 37 | Flash memory. | 36 | Flash memory. |
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 142f632e2a2e..d56b2534f3eb 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig | |||
| @@ -42,7 +42,7 @@ config SCSI_DMA | |||
| 42 | 42 | ||
| 43 | config SCSI_TGT | 43 | config SCSI_TGT |
| 44 | tristate "SCSI target support" | 44 | tristate "SCSI target support" |
| 45 | depends on SCSI && EXPERIMENTAL | 45 | depends on SCSI |
| 46 | ---help--- | 46 | ---help--- |
| 47 | If you want to use SCSI target mode drivers enable this option. | 47 | If you want to use SCSI target mode drivers enable this option. |
| 48 | If you choose M, the module will be called scsi_tgt. | 48 | If you choose M, the module will be called scsi_tgt. |
| @@ -1392,8 +1392,8 @@ config SCSI_SYM53C416 | |||
| 1392 | module will be called sym53c416. | 1392 | module will be called sym53c416. |
| 1393 | 1393 | ||
| 1394 | config SCSI_DC395x | 1394 | config SCSI_DC395x |
| 1395 | tristate "Tekram DC395(U/UW/F) and DC315(U) SCSI support (EXPERIMENTAL)" | 1395 | tristate "Tekram DC395(U/UW/F) and DC315(U) SCSI support" |
| 1396 | depends on PCI && SCSI && EXPERIMENTAL | 1396 | depends on PCI && SCSI |
| 1397 | ---help--- | 1397 | ---help--- |
| 1398 | This driver supports PCI SCSI host adapters based on the ASIC | 1398 | This driver supports PCI SCSI host adapters based on the ASIC |
| 1399 | TRM-S1040 chip, e.g Tekram DC395(U/UW/F) and DC315(U) variants. | 1399 | TRM-S1040 chip, e.g Tekram DC395(U/UW/F) and DC315(U) variants. |
| @@ -1618,8 +1618,8 @@ config GVP11_SCSI | |||
| 1618 | module will be called gvp11. | 1618 | module will be called gvp11. |
| 1619 | 1619 | ||
| 1620 | config SCSI_A4000T | 1620 | config SCSI_A4000T |
| 1621 | tristate "A4000T NCR53c710 SCSI support (EXPERIMENTAL)" | 1621 | tristate "A4000T NCR53c710 SCSI support" |
| 1622 | depends on AMIGA && SCSI && EXPERIMENTAL | 1622 | depends on AMIGA && SCSI |
| 1623 | select SCSI_SPI_ATTRS | 1623 | select SCSI_SPI_ATTRS |
| 1624 | help | 1624 | help |
| 1625 | If you have an Amiga 4000T and have SCSI devices connected to the | 1625 | If you have an Amiga 4000T and have SCSI devices connected to the |
| @@ -1629,8 +1629,8 @@ config SCSI_A4000T | |||
| 1629 | module will be called a4000t. | 1629 | module will be called a4000t. |
| 1630 | 1630 | ||
| 1631 | config SCSI_ZORRO7XX | 1631 | config SCSI_ZORRO7XX |
| 1632 | tristate "Zorro NCR53c710 SCSI support (EXPERIMENTAL)" | 1632 | tristate "Zorro NCR53c710 SCSI support" |
| 1633 | depends on ZORRO && SCSI && EXPERIMENTAL | 1633 | depends on ZORRO && SCSI |
| 1634 | select SCSI_SPI_ATTRS | 1634 | select SCSI_SPI_ATTRS |
| 1635 | help | 1635 | help |
| 1636 | Support for various NCR53c710-based SCSI controllers on Zorro | 1636 | Support for various NCR53c710-based SCSI controllers on Zorro |
| @@ -1807,8 +1807,8 @@ config SCSI_BFA_FC | |||
| 1807 | be called bfa. | 1807 | be called bfa. |
| 1808 | 1808 | ||
| 1809 | config SCSI_VIRTIO | 1809 | config SCSI_VIRTIO |
| 1810 | tristate "virtio-scsi support (EXPERIMENTAL)" | 1810 | tristate "virtio-scsi support" |
| 1811 | depends on EXPERIMENTAL && VIRTIO | 1811 | depends on VIRTIO |
| 1812 | help | 1812 | help |
| 1813 | This is the virtual HBA driver for virtio. If the kernel will | 1813 | This is the virtual HBA driver for virtio. If the kernel will |
| 1814 | be used in a virtual machine, say Y or M. | 1814 | be used in a virtual machine, say Y or M. |
diff --git a/drivers/scsi/arm/Kconfig b/drivers/scsi/arm/Kconfig index a8587f1f5e7e..cfd172a439c9 100644 --- a/drivers/scsi/arm/Kconfig +++ b/drivers/scsi/arm/Kconfig | |||
| @@ -64,19 +64,19 @@ config SCSI_POWERTECSCSI | |||
| 64 | you have one of these, say Y. If unsure, say N. | 64 | you have one of these, say Y. If unsure, say N. |
| 65 | 65 | ||
| 66 | comment "The following drivers are not fully supported" | 66 | comment "The following drivers are not fully supported" |
| 67 | depends on ARCH_ACORN && EXPERIMENTAL | 67 | depends on ARCH_ACORN |
| 68 | 68 | ||
| 69 | config SCSI_CUMANA_1 | 69 | config SCSI_CUMANA_1 |
| 70 | tristate "CumanaSCSI I support (EXPERIMENTAL)" | 70 | tristate "CumanaSCSI I support" |
| 71 | depends on ARCH_ACORN && EXPERIMENTAL && SCSI | 71 | depends on ARCH_ACORN && SCSI |
| 72 | select SCSI_SPI_ATTRS | 72 | select SCSI_SPI_ATTRS |
| 73 | help | 73 | help |
| 74 | This enables support for the Cumana SCSI I card. If you have an | 74 | This enables support for the Cumana SCSI I card. If you have an |
| 75 | Acorn system with one of these, say Y. If unsure, say N. | 75 | Acorn system with one of these, say Y. If unsure, say N. |
| 76 | 76 | ||
| 77 | config SCSI_OAK1 | 77 | config SCSI_OAK1 |
| 78 | tristate "Oak SCSI support (EXPERIMENTAL)" | 78 | tristate "Oak SCSI support" |
| 79 | depends on ARCH_ACORN && EXPERIMENTAL && SCSI | 79 | depends on ARCH_ACORN && SCSI |
| 80 | select SCSI_SPI_ATTRS | 80 | select SCSI_SPI_ATTRS |
| 81 | help | 81 | help |
| 82 | This enables support for the Oak SCSI card. If you have an Acorn | 82 | This enables support for the Oak SCSI card. If you have an Acorn |
diff --git a/drivers/scsi/device_handler/Kconfig b/drivers/scsi/device_handler/Kconfig index 67070257919f..69abd0ad48e2 100644 --- a/drivers/scsi/device_handler/Kconfig +++ b/drivers/scsi/device_handler/Kconfig | |||
| @@ -32,8 +32,8 @@ config SCSI_DH_EMC | |||
| 32 | If you have a EMC CLARiiON select y. Otherwise, say N. | 32 | If you have a EMC CLARiiON select y. Otherwise, say N. |
| 33 | 33 | ||
| 34 | config SCSI_DH_ALUA | 34 | config SCSI_DH_ALUA |
| 35 | tristate "SPC-3 ALUA Device Handler (EXPERIMENTAL)" | 35 | tristate "SPC-3 ALUA Device Handler" |
| 36 | depends on SCSI_DH && EXPERIMENTAL | 36 | depends on SCSI_DH |
| 37 | help | 37 | help |
| 38 | SCSI Device handler for generic SPC-3 Asymmetric Logical Unit | 38 | SCSI Device handler for generic SPC-3 Asymmetric Logical Unit |
| 39 | Access (ALUA). | 39 | Access (ALUA). |
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c index 593085a52275..df0c3c71ea43 100644 --- a/drivers/scsi/hosts.c +++ b/drivers/scsi/hosts.c | |||
| @@ -468,10 +468,10 @@ void scsi_unregister(struct Scsi_Host *shost) | |||
| 468 | } | 468 | } |
| 469 | EXPORT_SYMBOL(scsi_unregister); | 469 | EXPORT_SYMBOL(scsi_unregister); |
| 470 | 470 | ||
| 471 | static int __scsi_host_match(struct device *dev, void *data) | 471 | static int __scsi_host_match(struct device *dev, const void *data) |
| 472 | { | 472 | { |
| 473 | struct Scsi_Host *p; | 473 | struct Scsi_Host *p; |
| 474 | unsigned short *hostnum = (unsigned short *)data; | 474 | const unsigned short *hostnum = data; |
| 475 | 475 | ||
| 476 | p = class_to_shost(dev); | 476 | p = class_to_shost(dev); |
| 477 | return p->host_no == *hostnum; | 477 | return p->host_no == *hostnum; |
diff --git a/drivers/scsi/osd/osd_uld.c b/drivers/scsi/osd/osd_uld.c index 43754176a7b7..0fab6b5c7b82 100644 --- a/drivers/scsi/osd/osd_uld.c +++ b/drivers/scsi/osd/osd_uld.c | |||
| @@ -268,18 +268,11 @@ static inline bool _the_same_or_null(const u8 *a1, unsigned a1_len, | |||
| 268 | return 0 == memcmp(a1, a2, a1_len); | 268 | return 0 == memcmp(a1, a2, a1_len); |
| 269 | } | 269 | } |
| 270 | 270 | ||
| 271 | struct find_oud_t { | 271 | static int _match_odi(struct device *dev, const void *find_data) |
| 272 | const struct osd_dev_info *odi; | ||
| 273 | struct device *dev; | ||
| 274 | struct osd_uld_device *oud; | ||
| 275 | } ; | ||
| 276 | |||
| 277 | int _mach_odi(struct device *dev, void *find_data) | ||
| 278 | { | 272 | { |
| 279 | struct osd_uld_device *oud = container_of(dev, struct osd_uld_device, | 273 | struct osd_uld_device *oud = container_of(dev, struct osd_uld_device, |
| 280 | class_dev); | 274 | class_dev); |
| 281 | struct find_oud_t *fot = find_data; | 275 | const struct osd_dev_info *odi = find_data; |
| 282 | const struct osd_dev_info *odi = fot->odi; | ||
| 283 | 276 | ||
| 284 | if (_the_same_or_null(oud->odi.systemid, oud->odi.systemid_len, | 277 | if (_the_same_or_null(oud->odi.systemid, oud->odi.systemid_len, |
| 285 | odi->systemid, odi->systemid_len) && | 278 | odi->systemid, odi->systemid_len) && |
| @@ -287,7 +280,6 @@ int _mach_odi(struct device *dev, void *find_data) | |||
| 287 | odi->osdname, odi->osdname_len)) { | 280 | odi->osdname, odi->osdname_len)) { |
| 288 | OSD_DEBUG("found device sysid_len=%d osdname=%d\n", | 281 | OSD_DEBUG("found device sysid_len=%d osdname=%d\n", |
| 289 | odi->systemid_len, odi->osdname_len); | 282 | odi->systemid_len, odi->osdname_len); |
| 290 | fot->oud = oud; | ||
| 291 | return 1; | 283 | return 1; |
| 292 | } else { | 284 | } else { |
| 293 | return 0; | 285 | return 0; |
| @@ -301,19 +293,19 @@ int _mach_odi(struct device *dev, void *find_data) | |||
| 301 | */ | 293 | */ |
| 302 | struct osd_dev *osduld_info_lookup(const struct osd_dev_info *odi) | 294 | struct osd_dev *osduld_info_lookup(const struct osd_dev_info *odi) |
| 303 | { | 295 | { |
| 304 | struct find_oud_t find = {.odi = odi}; | 296 | struct device *dev = class_find_device(&osd_uld_class, NULL, odi, _match_odi); |
| 305 | 297 | if (likely(dev)) { | |
| 306 | find.dev = class_find_device(&osd_uld_class, NULL, &find, _mach_odi); | ||
| 307 | if (likely(find.dev)) { | ||
| 308 | struct osd_dev_handle *odh = kzalloc(sizeof(*odh), GFP_KERNEL); | 298 | struct osd_dev_handle *odh = kzalloc(sizeof(*odh), GFP_KERNEL); |
| 299 | struct osd_uld_device *oud = container_of(dev, | ||
| 300 | struct osd_uld_device, class_dev); | ||
| 309 | 301 | ||
| 310 | if (unlikely(!odh)) { | 302 | if (unlikely(!odh)) { |
| 311 | put_device(find.dev); | 303 | put_device(dev); |
| 312 | return ERR_PTR(-ENOMEM); | 304 | return ERR_PTR(-ENOMEM); |
| 313 | } | 305 | } |
| 314 | 306 | ||
| 315 | odh->od = find.oud->od; | 307 | odh->od = oud->od; |
| 316 | odh->oud = find.oud; | 308 | odh->oud = oud; |
| 317 | 309 | ||
| 318 | return &odh->od; | 310 | return &odh->od; |
| 319 | } | 311 | } |
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index 31969f2e13ce..59d427bf08e2 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c | |||
| @@ -183,10 +183,10 @@ static struct attribute_group iscsi_endpoint_group = { | |||
| 183 | 183 | ||
| 184 | #define ISCSI_MAX_EPID -1 | 184 | #define ISCSI_MAX_EPID -1 |
| 185 | 185 | ||
| 186 | static int iscsi_match_epid(struct device *dev, void *data) | 186 | static int iscsi_match_epid(struct device *dev, const void *data) |
| 187 | { | 187 | { |
| 188 | struct iscsi_endpoint *ep = iscsi_dev_to_endpoint(dev); | 188 | struct iscsi_endpoint *ep = iscsi_dev_to_endpoint(dev); |
| 189 | uint64_t *epid = (uint64_t *) data; | 189 | const uint64_t *epid = data; |
| 190 | 190 | ||
| 191 | return *epid == ep->id; | 191 | return *epid == ep->id; |
| 192 | } | 192 | } |
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index e79884e997ae..f80eee74a311 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig | |||
| @@ -88,7 +88,7 @@ config SPI_BFIN_SPORT | |||
| 88 | 88 | ||
| 89 | config SPI_AU1550 | 89 | config SPI_AU1550 |
| 90 | tristate "Au1550/Au1200/Au1300 SPI Controller" | 90 | tristate "Au1550/Au1200/Au1300 SPI Controller" |
| 91 | depends on MIPS_ALCHEMY && EXPERIMENTAL | 91 | depends on MIPS_ALCHEMY |
| 92 | select SPI_BITBANG | 92 | select SPI_BITBANG |
| 93 | help | 93 | help |
| 94 | If you say yes to this option, support will be included for the | 94 | If you say yes to this option, support will be included for the |
| @@ -188,7 +188,7 @@ config SPI_IMX | |||
| 188 | 188 | ||
| 189 | config SPI_LM70_LLP | 189 | config SPI_LM70_LLP |
| 190 | tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)" | 190 | tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)" |
| 191 | depends on PARPORT && EXPERIMENTAL | 191 | depends on PARPORT |
| 192 | select SPI_BITBANG | 192 | select SPI_BITBANG |
| 193 | help | 193 | help |
| 194 | This driver supports the NS LM70 LLP Evaluation Board, | 194 | This driver supports the NS LM70 LLP Evaluation Board, |
| @@ -204,7 +204,7 @@ config SPI_MPC52xx | |||
| 204 | 204 | ||
| 205 | config SPI_MPC52xx_PSC | 205 | config SPI_MPC52xx_PSC |
| 206 | tristate "Freescale MPC52xx PSC SPI controller" | 206 | tristate "Freescale MPC52xx PSC SPI controller" |
| 207 | depends on PPC_MPC52xx && EXPERIMENTAL | 207 | depends on PPC_MPC52xx |
| 208 | help | 208 | help |
| 209 | This enables using the Freescale MPC52xx Programmable Serial | 209 | This enables using the Freescale MPC52xx Programmable Serial |
| 210 | Controller in master SPI mode. | 210 | Controller in master SPI mode. |
| @@ -273,8 +273,8 @@ config SPI_OMAP_100K | |||
| 273 | OMAP SPI 100K master controller for omap7xx boards. | 273 | OMAP SPI 100K master controller for omap7xx boards. |
| 274 | 274 | ||
| 275 | config SPI_ORION | 275 | config SPI_ORION |
| 276 | tristate "Orion SPI master (EXPERIMENTAL)" | 276 | tristate "Orion SPI master" |
| 277 | depends on PLAT_ORION && EXPERIMENTAL | 277 | depends on PLAT_ORION |
| 278 | help | 278 | help |
| 279 | This enables using the SPI master controller on the Orion chips. | 279 | This enables using the SPI master controller on the Orion chips. |
| 280 | 280 | ||
| @@ -328,7 +328,7 @@ config SPI_RSPI | |||
| 328 | 328 | ||
| 329 | config SPI_S3C24XX | 329 | config SPI_S3C24XX |
| 330 | tristate "Samsung S3C24XX series SPI" | 330 | tristate "Samsung S3C24XX series SPI" |
| 331 | depends on ARCH_S3C24XX && EXPERIMENTAL | 331 | depends on ARCH_S3C24XX |
| 332 | select SPI_BITBANG | 332 | select SPI_BITBANG |
| 333 | help | 333 | help |
| 334 | SPI driver for Samsung S3C24XX series ARM SoCs | 334 | SPI driver for Samsung S3C24XX series ARM SoCs |
| @@ -443,7 +443,7 @@ config SPI_XCOMM | |||
| 443 | 443 | ||
| 444 | config SPI_XILINX | 444 | config SPI_XILINX |
| 445 | tristate "Xilinx SPI controller common module" | 445 | tristate "Xilinx SPI controller common module" |
| 446 | depends on HAS_IOMEM && EXPERIMENTAL | 446 | depends on HAS_IOMEM |
| 447 | select SPI_BITBANG | 447 | select SPI_BITBANG |
| 448 | help | 448 | help |
| 449 | This exposes the SPI controller IP from the Xilinx EDK. | 449 | This exposes the SPI controller IP from the Xilinx EDK. |
| @@ -455,7 +455,7 @@ config SPI_XILINX | |||
| 455 | 455 | ||
| 456 | config SPI_NUC900 | 456 | config SPI_NUC900 |
| 457 | tristate "Nuvoton NUC900 series SPI" | 457 | tristate "Nuvoton NUC900 series SPI" |
| 458 | depends on ARCH_W90X900 && EXPERIMENTAL | 458 | depends on ARCH_W90X900 |
| 459 | select SPI_BITBANG | 459 | select SPI_BITBANG |
| 460 | help | 460 | help |
| 461 | SPI driver for Nuvoton NUC900 series ARM SoCs | 461 | SPI driver for Nuvoton NUC900 series ARM SoCs |
| @@ -489,7 +489,6 @@ comment "SPI Protocol Masters" | |||
| 489 | 489 | ||
| 490 | config SPI_SPIDEV | 490 | config SPI_SPIDEV |
| 491 | tristate "User mode SPI device driver support" | 491 | tristate "User mode SPI device driver support" |
| 492 | depends on EXPERIMENTAL | ||
| 493 | help | 492 | help |
| 494 | This supports user mode SPI protocol drivers. | 493 | This supports user mode SPI protocol drivers. |
| 495 | 494 | ||
diff --git a/drivers/spi/spi-ep93xx.c b/drivers/spi/spi-ep93xx.c index aecbff16ad60..d7bac60253c9 100644 --- a/drivers/spi/spi-ep93xx.c +++ b/drivers/spi/spi-ep93xx.c | |||
| @@ -1085,10 +1085,9 @@ static int ep93xx_spi_probe(struct platform_device *pdev) | |||
| 1085 | 1085 | ||
| 1086 | espi->sspdr_phys = res->start + SSPDR; | 1086 | espi->sspdr_phys = res->start + SSPDR; |
| 1087 | 1087 | ||
| 1088 | espi->regs_base = devm_request_and_ioremap(&pdev->dev, res); | 1088 | espi->regs_base = devm_ioremap_resource(&pdev->dev, res); |
| 1089 | if (!espi->regs_base) { | 1089 | if (IS_ERR(espi->regs_base)) { |
| 1090 | dev_err(&pdev->dev, "failed to map resources\n"); | 1090 | error = PTR_ERR(espi->regs_base); |
| 1091 | error = -ENODEV; | ||
| 1092 | goto fail_put_clock; | 1091 | goto fail_put_clock; |
| 1093 | } | 1092 | } |
| 1094 | 1093 | ||
diff --git a/drivers/spi/spi-mxs.c b/drivers/spi/spi-mxs.c index e3d8b3197d22..22a0af0147fb 100644 --- a/drivers/spi/spi-mxs.c +++ b/drivers/spi/spi-mxs.c | |||
| @@ -541,9 +541,9 @@ static int mxs_spi_probe(struct platform_device *pdev) | |||
| 541 | if (!iores || irq_err < 0 || irq_dma < 0) | 541 | if (!iores || irq_err < 0 || irq_dma < 0) |
| 542 | return -EINVAL; | 542 | return -EINVAL; |
| 543 | 543 | ||
| 544 | base = devm_request_and_ioremap(&pdev->dev, iores); | 544 | base = devm_ioremap_resource(&pdev->dev, iores); |
| 545 | if (!base) | 545 | if (IS_ERR(base)) |
| 546 | return -EADDRNOTAVAIL; | 546 | return PTR_ERR(base); |
| 547 | 547 | ||
| 548 | pinctrl = devm_pinctrl_get_select_default(&pdev->dev); | 548 | pinctrl = devm_pinctrl_get_select_default(&pdev->dev); |
| 549 | if (IS_ERR(pinctrl)) | 549 | if (IS_ERR(pinctrl)) |
diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index 69945b014c96..893c3d78e426 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c | |||
| @@ -1222,10 +1222,9 @@ static int omap2_mcspi_probe(struct platform_device *pdev) | |||
| 1222 | r->end += regs_offset; | 1222 | r->end += regs_offset; |
| 1223 | mcspi->phys = r->start; | 1223 | mcspi->phys = r->start; |
| 1224 | 1224 | ||
| 1225 | mcspi->base = devm_request_and_ioremap(&pdev->dev, r); | 1225 | mcspi->base = devm_ioremap_resource(&pdev->dev, r); |
| 1226 | if (!mcspi->base) { | 1226 | if (IS_ERR(mcspi->base)) { |
| 1227 | dev_dbg(&pdev->dev, "can't ioremap MCSPI\n"); | 1227 | status = PTR_ERR(mcspi->base); |
| 1228 | status = -ENOMEM; | ||
| 1229 | goto free_master; | 1228 | goto free_master; |
| 1230 | } | 1229 | } |
| 1231 | 1230 | ||
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c index 7cfbe9d3381f..e862ab8853aa 100644 --- a/drivers/spi/spi-s3c64xx.c +++ b/drivers/spi/spi-s3c64xx.c | |||
| @@ -1241,10 +1241,9 @@ static int s3c64xx_spi_probe(struct platform_device *pdev) | |||
| 1241 | /* the spi->mode bits understood by this driver: */ | 1241 | /* the spi->mode bits understood by this driver: */ |
| 1242 | master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; | 1242 | master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; |
| 1243 | 1243 | ||
| 1244 | sdd->regs = devm_request_and_ioremap(&pdev->dev, mem_res); | 1244 | sdd->regs = devm_ioremap_resource(&pdev->dev, mem_res); |
| 1245 | if (sdd->regs == NULL) { | 1245 | if (IS_ERR(sdd->regs)) { |
| 1246 | dev_err(&pdev->dev, "Unable to remap IO\n"); | 1246 | ret = PTR_ERR(sdd->regs); |
| 1247 | ret = -ENXIO; | ||
| 1248 | goto err0; | 1247 | goto err0; |
| 1249 | } | 1248 | } |
| 1250 | 1249 | ||
diff --git a/drivers/spi/spi-sirf.c b/drivers/spi/spi-sirf.c index 6a5626d146b7..f59d4177b419 100644 --- a/drivers/spi/spi-sirf.c +++ b/drivers/spi/spi-sirf.c | |||
| @@ -534,10 +534,9 @@ static int spi_sirfsoc_probe(struct platform_device *pdev) | |||
| 534 | } | 534 | } |
| 535 | } | 535 | } |
| 536 | 536 | ||
| 537 | sspi->base = devm_request_and_ioremap(&pdev->dev, mem_res); | 537 | sspi->base = devm_ioremap_resource(&pdev->dev, mem_res); |
| 538 | if (!sspi->base) { | 538 | if (IS_ERR(sspi->base)) { |
| 539 | dev_err(&pdev->dev, "IO remap failed!\n"); | 539 | ret = PTR_ERR(sspi->base); |
| 540 | ret = -ENOMEM; | ||
| 541 | goto free_master; | 540 | goto free_master; |
| 542 | } | 541 | } |
| 543 | 542 | ||
diff --git a/drivers/spi/spi-tegra20-sflash.c b/drivers/spi/spi-tegra20-sflash.c index 9a42c158e245..8a61b27a9f2d 100644 --- a/drivers/spi/spi-tegra20-sflash.c +++ b/drivers/spi/spi-tegra20-sflash.c | |||
| @@ -516,11 +516,9 @@ static int tegra_sflash_probe(struct platform_device *pdev) | |||
| 516 | ret = -ENODEV; | 516 | ret = -ENODEV; |
| 517 | goto exit_free_master; | 517 | goto exit_free_master; |
| 518 | } | 518 | } |
| 519 | tsd->base = devm_request_and_ioremap(&pdev->dev, r); | 519 | tsd->base = devm_ioremap_resource(&pdev->dev, r); |
| 520 | if (!tsd->base) { | 520 | if (IS_ERR(tsd->base)) { |
| 521 | dev_err(&pdev->dev, | 521 | ret = PTR_ERR(tsd->base); |
| 522 | "Cannot request memregion/iomap dma address\n"); | ||
| 523 | ret = -EADDRNOTAVAIL; | ||
| 524 | goto exit_free_master; | 522 | goto exit_free_master; |
| 525 | } | 523 | } |
| 526 | 524 | ||
diff --git a/drivers/spi/spi-tegra20-slink.c b/drivers/spi/spi-tegra20-slink.c index 8d51db8dea6d..8458c4bf7172 100644 --- a/drivers/spi/spi-tegra20-slink.c +++ b/drivers/spi/spi-tegra20-slink.c | |||
| @@ -1169,11 +1169,9 @@ static int tegra_slink_probe(struct platform_device *pdev) | |||
| 1169 | goto exit_free_master; | 1169 | goto exit_free_master; |
| 1170 | } | 1170 | } |
| 1171 | tspi->phys = r->start; | 1171 | tspi->phys = r->start; |
| 1172 | tspi->base = devm_request_and_ioremap(&pdev->dev, r); | 1172 | tspi->base = devm_ioremap_resource(&pdev->dev, r); |
| 1173 | if (!tspi->base) { | 1173 | if (IS_ERR(tspi->base)) { |
| 1174 | dev_err(&pdev->dev, | 1174 | ret = PTR_ERR(tspi->base); |
| 1175 | "Cannot request memregion/iomap dma address\n"); | ||
| 1176 | ret = -EADDRNOTAVAIL; | ||
| 1177 | goto exit_free_master; | 1175 | goto exit_free_master; |
| 1178 | } | 1176 | } |
| 1179 | 1177 | ||
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 6f193b02a9e8..f996c600eb8c 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c | |||
| @@ -1251,10 +1251,10 @@ int spi_master_resume(struct spi_master *master) | |||
| 1251 | } | 1251 | } |
| 1252 | EXPORT_SYMBOL_GPL(spi_master_resume); | 1252 | EXPORT_SYMBOL_GPL(spi_master_resume); |
| 1253 | 1253 | ||
| 1254 | static int __spi_master_match(struct device *dev, void *data) | 1254 | static int __spi_master_match(struct device *dev, const void *data) |
| 1255 | { | 1255 | { |
| 1256 | struct spi_master *m; | 1256 | struct spi_master *m; |
| 1257 | u16 *bus_num = data; | 1257 | const u16 *bus_num = data; |
| 1258 | 1258 | ||
| 1259 | m = container_of(dev, struct spi_master, dev); | 1259 | m = container_of(dev, struct spi_master, dev); |
| 1260 | return m->bus_num == *bus_num; | 1260 | return m->bus_num == *bus_num; |
diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c index c5ceb9d90ea8..3d562da039db 100644 --- a/drivers/staging/iio/adc/mxs-lradc.c +++ b/drivers/staging/iio/adc/mxs-lradc.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | * GNU General Public License for more details. | 15 | * GNU General Public License for more details. |
| 16 | */ | 16 | */ |
| 17 | 17 | ||
| 18 | #include <linux/err.h> | ||
| 18 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
| 19 | #include <linux/device.h> | 20 | #include <linux/device.h> |
| 20 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
| @@ -487,9 +488,9 @@ static int mxs_lradc_probe(struct platform_device *pdev) | |||
| 487 | /* Grab the memory area */ | 488 | /* Grab the memory area */ |
| 488 | iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 489 | iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 489 | lradc->dev = &pdev->dev; | 490 | lradc->dev = &pdev->dev; |
| 490 | lradc->base = devm_request_and_ioremap(dev, iores); | 491 | lradc->base = devm_ioremap_resource(dev, iores); |
| 491 | if (!lradc->base) { | 492 | if (IS_ERR(lradc->base)) { |
| 492 | ret = -EADDRNOTAVAIL; | 493 | ret = PTR_ERR(lradc->base); |
| 493 | goto err_addr; | 494 | goto err_addr; |
| 494 | } | 495 | } |
| 495 | 496 | ||
diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c index 2830946860d1..492e0b61f1e7 100644 --- a/drivers/staging/nvec/nvec.c +++ b/drivers/staging/nvec/nvec.c | |||
| @@ -759,11 +759,9 @@ static int tegra_nvec_probe(struct platform_device *pdev) | |||
| 759 | return -ENODEV; | 759 | return -ENODEV; |
| 760 | } | 760 | } |
| 761 | 761 | ||
| 762 | base = devm_request_and_ioremap(&pdev->dev, res); | 762 | base = devm_ioremap_resource(&pdev->dev, res); |
| 763 | if (!base) { | 763 | if (IS_ERR(base)) |
| 764 | dev_err(&pdev->dev, "Can't ioremap I2C region\n"); | 764 | return PTR_ERR(base); |
| 765 | return -ENOMEM; | ||
| 766 | } | ||
| 767 | 765 | ||
| 768 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 766 | res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 769 | if (!res) { | 767 | if (!res) { |
diff --git a/drivers/staging/omap-thermal/omap-bandgap.c b/drivers/staging/omap-thermal/omap-bandgap.c index 8346e3450f83..21fd91bf97b5 100644 --- a/drivers/staging/omap-thermal/omap-bandgap.c +++ b/drivers/staging/omap-thermal/omap-bandgap.c | |||
| @@ -820,15 +820,12 @@ static struct omap_bandgap *omap_bandgap_build(struct platform_device *pdev) | |||
| 820 | res = platform_get_resource(pdev, IORESOURCE_MEM, i); | 820 | res = platform_get_resource(pdev, IORESOURCE_MEM, i); |
| 821 | if (!res) | 821 | if (!res) |
| 822 | break; | 822 | break; |
| 823 | chunk = devm_request_and_ioremap(&pdev->dev, res); | 823 | chunk = devm_ioremap_resource(&pdev->dev, res); |
| 824 | if (i == 0) | 824 | if (i == 0) |
| 825 | bg_ptr->base = chunk; | 825 | bg_ptr->base = chunk; |
| 826 | if (!chunk) { | 826 | if (IS_ERR(chunk)) |
| 827 | dev_err(&pdev->dev, | 827 | return ERR_CAST(chunk); |
| 828 | "failed to request the IO (%d:%pR).\n", | 828 | |
| 829 | i, res); | ||
| 830 | return ERR_PTR(-EADDRNOTAVAIL); | ||
| 831 | } | ||
| 832 | i++; | 829 | i++; |
| 833 | } while (res); | 830 | } while (res); |
| 834 | 831 | ||
diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c index 224751e9f5ff..bada1308318b 100644 --- a/drivers/thermal/exynos_thermal.c +++ b/drivers/thermal/exynos_thermal.c | |||
| @@ -866,11 +866,9 @@ static int exynos_tmu_probe(struct platform_device *pdev) | |||
| 866 | return -ENOENT; | 866 | return -ENOENT; |
| 867 | } | 867 | } |
| 868 | 868 | ||
| 869 | data->base = devm_request_and_ioremap(&pdev->dev, data->mem); | 869 | data->base = devm_ioremap_resource(&pdev->dev, data->mem); |
| 870 | if (!data->base) { | 870 | if (IS_ERR(data->base)) |
| 871 | dev_err(&pdev->dev, "Failed to ioremap memory\n"); | 871 | return PTR_ERR(data->base); |
| 872 | return -ENODEV; | ||
| 873 | } | ||
| 874 | 872 | ||
| 875 | ret = devm_request_irq(&pdev->dev, data->irq, exynos_tmu_irq, | 873 | ret = devm_request_irq(&pdev->dev, data->irq, exynos_tmu_irq, |
| 876 | IRQF_TRIGGER_RISING, "exynos-tmu", data); | 874 | IRQF_TRIGGER_RISING, "exynos-tmu", data); |
diff --git a/drivers/tty/serial/sccnxp.c b/drivers/tty/serial/sccnxp.c index 418b495e3233..e869eab180be 100644 --- a/drivers/tty/serial/sccnxp.c +++ b/drivers/tty/serial/sccnxp.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #define SUPPORT_SYSRQ | 15 | #define SUPPORT_SYSRQ |
| 16 | #endif | 16 | #endif |
| 17 | 17 | ||
| 18 | #include <linux/err.h> | ||
| 18 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| 19 | #include <linux/device.h> | 20 | #include <linux/device.h> |
| 20 | #include <linux/console.h> | 21 | #include <linux/console.h> |
| @@ -875,10 +876,9 @@ static int sccnxp_probe(struct platform_device *pdev) | |||
| 875 | goto err_out; | 876 | goto err_out; |
| 876 | } | 877 | } |
| 877 | 878 | ||
| 878 | membase = devm_request_and_ioremap(&pdev->dev, res); | 879 | membase = devm_ioremap_resource(&pdev->dev, res); |
| 879 | if (!membase) { | 880 | if (IS_ERR(membase)) { |
| 880 | dev_err(&pdev->dev, "Failed to ioremap\n"); | 881 | ret = PTR_ERR(membase); |
| 881 | ret = -EIO; | ||
| 882 | goto err_out; | 882 | goto err_out; |
| 883 | } | 883 | } |
| 884 | 884 | ||
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index da9fde850754..6b20fd66d4ad 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c | |||
| @@ -2906,9 +2906,9 @@ void do_SAK(struct tty_struct *tty) | |||
| 2906 | 2906 | ||
| 2907 | EXPORT_SYMBOL(do_SAK); | 2907 | EXPORT_SYMBOL(do_SAK); |
| 2908 | 2908 | ||
| 2909 | static int dev_match_devt(struct device *dev, void *data) | 2909 | static int dev_match_devt(struct device *dev, const void *data) |
| 2910 | { | 2910 | { |
| 2911 | dev_t *devt = data; | 2911 | const dev_t *devt = data; |
| 2912 | return dev->devt == *devt; | 2912 | return dev->devt == *devt; |
| 2913 | } | 2913 | } |
| 2914 | 2914 | ||
diff --git a/drivers/usb/chipidea/usbmisc_imx6q.c b/drivers/usb/chipidea/usbmisc_imx6q.c index 845efe29e6b9..a1bce391e825 100644 --- a/drivers/usb/chipidea/usbmisc_imx6q.c +++ b/drivers/usb/chipidea/usbmisc_imx6q.c | |||
| @@ -98,9 +98,9 @@ static int usbmisc_imx6q_probe(struct platform_device *pdev) | |||
| 98 | spin_lock_init(&data->lock); | 98 | spin_lock_init(&data->lock); |
| 99 | 99 | ||
| 100 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 100 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 101 | data->base = devm_request_and_ioremap(&pdev->dev, res); | 101 | data->base = devm_ioremap_resource(&pdev->dev, res); |
| 102 | if (!data->base) | 102 | if (IS_ERR(data->base)) |
| 103 | return -EADDRNOTAVAIL; | 103 | return PTR_ERR(data->base); |
| 104 | 104 | ||
| 105 | data->clk = devm_clk_get(&pdev->dev, NULL); | 105 | data->clk = devm_clk_get(&pdev->dev, NULL); |
| 106 | if (IS_ERR(data->clk)) { | 106 | if (IS_ERR(data->clk)) { |
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index f4a21f6f081f..0143ffa4e409 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
| @@ -1982,17 +1982,7 @@ static struct platform_driver at91_udc_driver = { | |||
| 1982 | }, | 1982 | }, |
| 1983 | }; | 1983 | }; |
| 1984 | 1984 | ||
| 1985 | static int __init udc_init_module(void) | 1985 | module_platform_driver_probe(at91_udc_driver, at91udc_probe); |
| 1986 | { | ||
| 1987 | return platform_driver_probe(&at91_udc_driver, at91udc_probe); | ||
| 1988 | } | ||
| 1989 | module_init(udc_init_module); | ||
| 1990 | |||
| 1991 | static void __exit udc_exit_module(void) | ||
| 1992 | { | ||
| 1993 | platform_driver_unregister(&at91_udc_driver); | ||
| 1994 | } | ||
| 1995 | module_exit(udc_exit_module); | ||
| 1996 | 1986 | ||
| 1997 | MODULE_DESCRIPTION("AT91 udc driver"); | 1987 | MODULE_DESCRIPTION("AT91 udc driver"); |
| 1998 | MODULE_AUTHOR("Thomas Rathbone, David Brownell"); | 1988 | MODULE_AUTHOR("Thomas Rathbone, David Brownell"); |
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c index a7aed84d98c9..bc19496bcec0 100644 --- a/drivers/usb/gadget/atmel_usba_udc.c +++ b/drivers/usb/gadget/atmel_usba_udc.c | |||
| @@ -2066,17 +2066,7 @@ static struct platform_driver udc_driver = { | |||
| 2066 | }, | 2066 | }, |
| 2067 | }; | 2067 | }; |
| 2068 | 2068 | ||
| 2069 | static int __init udc_init(void) | 2069 | module_platform_driver_probe(udc_driver, usba_udc_probe); |
| 2070 | { | ||
| 2071 | return platform_driver_probe(&udc_driver, usba_udc_probe); | ||
| 2072 | } | ||
| 2073 | module_init(udc_init); | ||
| 2074 | |||
| 2075 | static void __exit udc_exit(void) | ||
| 2076 | { | ||
| 2077 | platform_driver_unregister(&udc_driver); | ||
| 2078 | } | ||
| 2079 | module_exit(udc_exit); | ||
| 2080 | 2070 | ||
| 2081 | MODULE_DESCRIPTION("Atmel USBA UDC driver"); | 2071 | MODULE_DESCRIPTION("Atmel USBA UDC driver"); |
| 2082 | MODULE_AUTHOR("Haavard Skinnemoen (Atmel)"); | 2072 | MODULE_AUTHOR("Haavard Skinnemoen (Atmel)"); |
diff --git a/drivers/usb/gadget/bcm63xx_udc.c b/drivers/usb/gadget/bcm63xx_udc.c index 47a49931361e..8cc8253f1100 100644 --- a/drivers/usb/gadget/bcm63xx_udc.c +++ b/drivers/usb/gadget/bcm63xx_udc.c | |||
| @@ -2351,19 +2351,20 @@ static int bcm63xx_udc_probe(struct platform_device *pdev) | |||
| 2351 | dev_err(dev, "error finding USBD resource\n"); | 2351 | dev_err(dev, "error finding USBD resource\n"); |
| 2352 | return -ENXIO; | 2352 | return -ENXIO; |
| 2353 | } | 2353 | } |
| 2354 | udc->usbd_regs = devm_request_and_ioremap(dev, res); | 2354 | |
| 2355 | udc->usbd_regs = devm_ioremap_resource(dev, res); | ||
| 2356 | if (IS_ERR(udc->usbd_regs)) | ||
| 2357 | return PTR_ERR(udc->usbd_regs); | ||
| 2355 | 2358 | ||
| 2356 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); | 2359 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
| 2357 | if (!res) { | 2360 | if (!res) { |
| 2358 | dev_err(dev, "error finding IUDMA resource\n"); | 2361 | dev_err(dev, "error finding IUDMA resource\n"); |
| 2359 | return -ENXIO; | 2362 | return -ENXIO; |
| 2360 | } | 2363 | } |
| 2361 | udc->iudma_regs = devm_request_and_ioremap(dev, res); | ||
| 2362 | 2364 | ||
| 2363 | if (!udc->usbd_regs || !udc->iudma_regs) { | 2365 | udc->iudma_regs = devm_ioremap_resource(dev, res); |
| 2364 | dev_err(dev, "error requesting resources\n"); | 2366 | if (IS_ERR(udc->iudma_regs)) |
| 2365 | return -ENXIO; | 2367 | return PTR_ERR(udc->iudma_regs); |
| 2366 | } | ||
| 2367 | 2368 | ||
| 2368 | spin_lock_init(&udc->lock); | 2369 | spin_lock_init(&udc->lock); |
| 2369 | INIT_WORK(&udc->ep0_wq, bcm63xx_ep0_process); | 2370 | INIT_WORK(&udc->ep0_wq, bcm63xx_ep0_process); |
diff --git a/drivers/usb/gadget/fusb300_udc.c b/drivers/usb/gadget/fusb300_udc.c index 72cd5e6719db..fc7cb09ab52b 100644 --- a/drivers/usb/gadget/fusb300_udc.c +++ b/drivers/usb/gadget/fusb300_udc.c | |||
| @@ -1547,15 +1547,4 @@ static struct platform_driver fusb300_driver = { | |||
| 1547 | }, | 1547 | }, |
| 1548 | }; | 1548 | }; |
| 1549 | 1549 | ||
| 1550 | static int __init fusb300_udc_init(void) | 1550 | module_platform_driver_probe(fusb300_driver, fusb300_probe); |
| 1551 | { | ||
| 1552 | return platform_driver_probe(&fusb300_driver, fusb300_probe); | ||
| 1553 | } | ||
| 1554 | |||
| 1555 | module_init(fusb300_udc_init); | ||
| 1556 | |||
| 1557 | static void __exit fusb300_udc_cleanup(void) | ||
| 1558 | { | ||
| 1559 | platform_driver_unregister(&fusb300_driver); | ||
| 1560 | } | ||
| 1561 | module_exit(fusb300_udc_cleanup); | ||
diff --git a/drivers/usb/gadget/imx_udc.c b/drivers/usb/gadget/imx_udc.c index a0eb85794fd4..8efd7555fa21 100644 --- a/drivers/usb/gadget/imx_udc.c +++ b/drivers/usb/gadget/imx_udc.c | |||
| @@ -1556,17 +1556,7 @@ static struct platform_driver udc_driver = { | |||
| 1556 | .resume = imx_udc_resume, | 1556 | .resume = imx_udc_resume, |
| 1557 | }; | 1557 | }; |
| 1558 | 1558 | ||
| 1559 | static int __init udc_init(void) | 1559 | module_platform_driver_probe(udc_driver, imx_udc_probe); |
| 1560 | { | ||
| 1561 | return platform_driver_probe(&udc_driver, imx_udc_probe); | ||
| 1562 | } | ||
| 1563 | module_init(udc_init); | ||
| 1564 | |||
| 1565 | static void __exit udc_exit(void) | ||
| 1566 | { | ||
| 1567 | platform_driver_unregister(&udc_driver); | ||
| 1568 | } | ||
| 1569 | module_exit(udc_exit); | ||
| 1570 | 1560 | ||
| 1571 | MODULE_DESCRIPTION("IMX USB Device Controller driver"); | 1561 | MODULE_DESCRIPTION("IMX USB Device Controller driver"); |
| 1572 | MODULE_AUTHOR("Darius Augulis <augulis.darius@gmail.com>"); | 1562 | MODULE_AUTHOR("Darius Augulis <augulis.darius@gmail.com>"); |
diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c index dd1c9b1fe528..aa04089d6899 100644 --- a/drivers/usb/gadget/lpc32xx_udc.c +++ b/drivers/usb/gadget/lpc32xx_udc.c | |||
| @@ -3458,17 +3458,7 @@ static struct platform_driver lpc32xx_udc_driver = { | |||
| 3458 | }, | 3458 | }, |
| 3459 | }; | 3459 | }; |
| 3460 | 3460 | ||
| 3461 | static int __init udc_init_module(void) | 3461 | module_platform_driver_probe(lpc32xx_udc_driver, lpc32xx_udc_probe); |
| 3462 | { | ||
| 3463 | return platform_driver_probe(&lpc32xx_udc_driver, lpc32xx_udc_probe); | ||
| 3464 | } | ||
| 3465 | module_init(udc_init_module); | ||
| 3466 | |||
| 3467 | static void __exit udc_exit_module(void) | ||
| 3468 | { | ||
| 3469 | platform_driver_unregister(&lpc32xx_udc_driver); | ||
| 3470 | } | ||
| 3471 | module_exit(udc_exit_module); | ||
| 3472 | 3462 | ||
| 3473 | MODULE_DESCRIPTION("LPC32XX udc driver"); | 3463 | MODULE_DESCRIPTION("LPC32XX udc driver"); |
| 3474 | MODULE_AUTHOR("Kevin Wells <kevin.wells@nxp.com>"); | 3464 | MODULE_AUTHOR("Kevin Wells <kevin.wells@nxp.com>"); |
diff --git a/drivers/usb/gadget/m66592-udc.c b/drivers/usb/gadget/m66592-udc.c index b6401f1b56ce..dfce0cfe4e6f 100644 --- a/drivers/usb/gadget/m66592-udc.c +++ b/drivers/usb/gadget/m66592-udc.c | |||
| @@ -1753,14 +1753,4 @@ static struct platform_driver m66592_driver = { | |||
| 1753 | }, | 1753 | }, |
| 1754 | }; | 1754 | }; |
| 1755 | 1755 | ||
| 1756 | static int __init m66592_udc_init(void) | 1756 | module_platform_driver_probe(m66592_driver, m66592_probe); |
| 1757 | { | ||
| 1758 | return platform_driver_probe(&m66592_driver, m66592_probe); | ||
| 1759 | } | ||
| 1760 | module_init(m66592_udc_init); | ||
| 1761 | |||
| 1762 | static void __exit m66592_udc_cleanup(void) | ||
| 1763 | { | ||
| 1764 | platform_driver_unregister(&m66592_driver); | ||
| 1765 | } | ||
| 1766 | module_exit(m66592_udc_cleanup); | ||
diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c index d4ca9f1f7f24..d52e869ce202 100644 --- a/drivers/usb/gadget/pxa25x_udc.c +++ b/drivers/usb/gadget/pxa25x_udc.c | |||
| @@ -2100,6 +2100,8 @@ static int __init pxa25x_udc_probe(struct platform_device *pdev) | |||
| 2100 | int retval, irq; | 2100 | int retval, irq; |
| 2101 | u32 chiprev; | 2101 | u32 chiprev; |
| 2102 | 2102 | ||
| 2103 | pr_info("%s: version %s\n", driver_name, DRIVER_VERSION); | ||
| 2104 | |||
| 2103 | /* insist on Intel/ARM/XScale */ | 2105 | /* insist on Intel/ARM/XScale */ |
| 2104 | asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev)); | 2106 | asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev)); |
| 2105 | if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) { | 2107 | if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) { |
| @@ -2346,18 +2348,7 @@ static struct platform_driver udc_driver = { | |||
| 2346 | }, | 2348 | }, |
| 2347 | }; | 2349 | }; |
| 2348 | 2350 | ||
| 2349 | static int __init udc_init(void) | 2351 | module_platform_driver_probe(udc_driver, pxa25x_udc_probe); |
| 2350 | { | ||
| 2351 | pr_info("%s: version %s\n", driver_name, DRIVER_VERSION); | ||
| 2352 | return platform_driver_probe(&udc_driver, pxa25x_udc_probe); | ||
| 2353 | } | ||
| 2354 | module_init(udc_init); | ||
| 2355 | |||
| 2356 | static void __exit udc_exit(void) | ||
| 2357 | { | ||
| 2358 | platform_driver_unregister(&udc_driver); | ||
| 2359 | } | ||
| 2360 | module_exit(udc_exit); | ||
| 2361 | 2352 | ||
| 2362 | MODULE_DESCRIPTION(DRIVER_DESC); | 2353 | MODULE_DESCRIPTION(DRIVER_DESC); |
| 2363 | MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell"); | 2354 | MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell"); |
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c index 5a80751accb7..9a9fadd9095f 100644 --- a/drivers/usb/gadget/r8a66597-udc.c +++ b/drivers/usb/gadget/r8a66597-udc.c | |||
| @@ -2031,21 +2031,10 @@ static struct platform_driver r8a66597_driver = { | |||
| 2031 | .name = (char *) udc_name, | 2031 | .name = (char *) udc_name, |
| 2032 | }, | 2032 | }, |
| 2033 | }; | 2033 | }; |
| 2034 | MODULE_ALIAS("platform:r8a66597_udc"); | ||
| 2035 | |||
| 2036 | static int __init r8a66597_udc_init(void) | ||
| 2037 | { | ||
| 2038 | return platform_driver_probe(&r8a66597_driver, r8a66597_probe); | ||
| 2039 | } | ||
| 2040 | module_init(r8a66597_udc_init); | ||
| 2041 | 2034 | ||
| 2042 | static void __exit r8a66597_udc_cleanup(void) | 2035 | module_platform_driver_probe(r8a66597_driver, r8a66597_probe); |
| 2043 | { | ||
| 2044 | platform_driver_unregister(&r8a66597_driver); | ||
| 2045 | } | ||
| 2046 | module_exit(r8a66597_udc_cleanup); | ||
| 2047 | 2036 | ||
| 2048 | MODULE_DESCRIPTION("R8A66597 USB gadget driver"); | 2037 | MODULE_DESCRIPTION("R8A66597 USB gadget driver"); |
| 2049 | MODULE_LICENSE("GPL"); | 2038 | MODULE_LICENSE("GPL"); |
| 2050 | MODULE_AUTHOR("Yoshihiro Shimoda"); | 2039 | MODULE_AUTHOR("Yoshihiro Shimoda"); |
| 2051 | 2040 | MODULE_ALIAS("platform:r8a66597_udc"); | |
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c index 439c3f972f8c..de80fa644b5a 100644 --- a/drivers/usb/gadget/s3c-hsotg.c +++ b/drivers/usb/gadget/s3c-hsotg.c | |||
| @@ -3525,10 +3525,9 @@ static int s3c_hsotg_probe(struct platform_device *pdev) | |||
| 3525 | 3525 | ||
| 3526 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 3526 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 3527 | 3527 | ||
| 3528 | hsotg->regs = devm_request_and_ioremap(&pdev->dev, res); | 3528 | hsotg->regs = devm_ioremap_resource(&pdev->dev, res); |
| 3529 | if (!hsotg->regs) { | 3529 | if (IS_ERR(hsotg->regs)) { |
| 3530 | dev_err(dev, "cannot map registers\n"); | 3530 | ret = PTR_ERR(hsotg->regs); |
| 3531 | ret = -ENXIO; | ||
| 3532 | goto err_clk; | 3531 | goto err_clk; |
| 3533 | } | 3532 | } |
| 3534 | 3533 | ||
diff --git a/drivers/usb/gadget/s3c-hsudc.c b/drivers/usb/gadget/s3c-hsudc.c index 52379b11f080..94ca33bb990b 100644 --- a/drivers/usb/gadget/s3c-hsudc.c +++ b/drivers/usb/gadget/s3c-hsudc.c | |||
| @@ -1295,10 +1295,9 @@ static int s3c_hsudc_probe(struct platform_device *pdev) | |||
| 1295 | 1295 | ||
| 1296 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1296 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1297 | 1297 | ||
| 1298 | hsudc->regs = devm_request_and_ioremap(&pdev->dev, res); | 1298 | hsudc->regs = devm_ioremap_resource(&pdev->dev, res); |
| 1299 | if (!hsudc->regs) { | 1299 | if (IS_ERR(hsudc->regs)) { |
| 1300 | dev_err(dev, "error mapping device register area\n"); | 1300 | ret = PTR_ERR(hsudc->regs); |
| 1301 | ret = -EBUSY; | ||
| 1302 | goto err_res; | 1301 | goto err_res; |
| 1303 | } | 1302 | } |
| 1304 | 1303 | ||
diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c index 27639487f7ac..f3beac4d06b8 100644 --- a/drivers/usb/host/ehci-atmel.c +++ b/drivers/usb/host/ehci-atmel.c | |||
| @@ -143,10 +143,9 @@ static int ehci_atmel_drv_probe(struct platform_device *pdev) | |||
| 143 | hcd->rsrc_start = res->start; | 143 | hcd->rsrc_start = res->start; |
| 144 | hcd->rsrc_len = resource_size(res); | 144 | hcd->rsrc_len = resource_size(res); |
| 145 | 145 | ||
| 146 | hcd->regs = devm_request_and_ioremap(&pdev->dev, res); | 146 | hcd->regs = devm_ioremap_resource(&pdev->dev, res); |
| 147 | if (hcd->regs == NULL) { | 147 | if (IS_ERR(hcd->regs)) { |
| 148 | dev_dbg(&pdev->dev, "error mapping memory\n"); | 148 | retval = PTR_ERR(hcd->regs); |
| 149 | retval = -EFAULT; | ||
| 150 | goto fail_request_resource; | 149 | goto fail_request_resource; |
| 151 | } | 150 | } |
| 152 | 151 | ||
diff --git a/drivers/usb/host/ehci-grlib.c b/drivers/usb/host/ehci-grlib.c index 1fc89292f5d6..5d75de9729b6 100644 --- a/drivers/usb/host/ehci-grlib.c +++ b/drivers/usb/host/ehci-grlib.c | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 25 | * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | 28 | #include <linux/err.h> | |
| 29 | #include <linux/signal.h> | 29 | #include <linux/signal.h> |
| 30 | 30 | ||
| 31 | #include <linux/of_irq.h> | 31 | #include <linux/of_irq.h> |
| @@ -118,10 +118,9 @@ static int ehci_hcd_grlib_probe(struct platform_device *op) | |||
| 118 | goto err_irq; | 118 | goto err_irq; |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | hcd->regs = devm_request_and_ioremap(&op->dev, &res); | 121 | hcd->regs = devm_ioremap_resource(&op->dev, &res); |
| 122 | if (!hcd->regs) { | 122 | if (IS_ERR(hcd->regs)) { |
| 123 | pr_err("%s: devm_request_and_ioremap failed\n", __FILE__); | 123 | rv = PTR_ERR(hcd->regs); |
| 124 | rv = -ENOMEM; | ||
| 125 | goto err_ioremap; | 124 | goto err_ioremap; |
| 126 | } | 125 | } |
| 127 | 126 | ||
diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c index dedb80bb8d40..e2004de6ad3d 100644 --- a/drivers/usb/host/ehci-mxc.c +++ b/drivers/usb/host/ehci-mxc.c | |||
| @@ -85,10 +85,9 @@ static int ehci_mxc_drv_probe(struct platform_device *pdev) | |||
| 85 | hcd->rsrc_start = res->start; | 85 | hcd->rsrc_start = res->start; |
| 86 | hcd->rsrc_len = resource_size(res); | 86 | hcd->rsrc_len = resource_size(res); |
| 87 | 87 | ||
| 88 | hcd->regs = devm_request_and_ioremap(&pdev->dev, res); | 88 | hcd->regs = devm_ioremap_resource(&pdev->dev, res); |
| 89 | if (!hcd->regs) { | 89 | if (IS_ERR(hcd->regs)) { |
| 90 | dev_err(dev, "error mapping memory\n"); | 90 | ret = PTR_ERR(hcd->regs); |
| 91 | ret = -EFAULT; | ||
| 92 | goto err_alloc; | 91 | goto err_alloc; |
| 93 | } | 92 | } |
| 94 | 93 | ||
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c index 58fa0c90c7c7..ca7506390542 100644 --- a/drivers/usb/host/ehci-platform.c +++ b/drivers/usb/host/ehci-platform.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | * | 18 | * |
| 19 | * Licensed under the GNU/GPL. See COPYING for details. | 19 | * Licensed under the GNU/GPL. See COPYING for details. |
| 20 | */ | 20 | */ |
| 21 | #include <linux/err.h> | ||
| 21 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
| 22 | #include <linux/hrtimer.h> | 23 | #include <linux/hrtimer.h> |
| 23 | #include <linux/io.h> | 24 | #include <linux/io.h> |
| @@ -104,9 +105,9 @@ static int ehci_platform_probe(struct platform_device *dev) | |||
| 104 | hcd->rsrc_start = res_mem->start; | 105 | hcd->rsrc_start = res_mem->start; |
| 105 | hcd->rsrc_len = resource_size(res_mem); | 106 | hcd->rsrc_len = resource_size(res_mem); |
| 106 | 107 | ||
| 107 | hcd->regs = devm_request_and_ioremap(&dev->dev, res_mem); | 108 | hcd->regs = devm_ioremap_resource(&dev->dev, res_mem); |
| 108 | if (!hcd->regs) { | 109 | if (IS_ERR(hcd->regs)) { |
| 109 | err = -ENOMEM; | 110 | err = PTR_ERR(hcd->regs); |
| 110 | goto err_put_hcd; | 111 | goto err_put_hcd; |
| 111 | } | 112 | } |
| 112 | err = usb_add_hcd(hcd, irq, IRQF_SHARED); | 113 | err = usb_add_hcd(hcd, irq, IRQF_SHARED); |
diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c index 45aceefd0c2b..56dc732bf451 100644 --- a/drivers/usb/host/ehci-ppc-of.c +++ b/drivers/usb/host/ehci-ppc-of.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | * This file is licenced under the GPL. | 12 | * This file is licenced under the GPL. |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <linux/err.h> | ||
| 15 | #include <linux/signal.h> | 16 | #include <linux/signal.h> |
| 16 | 17 | ||
| 17 | #include <linux/of.h> | 18 | #include <linux/of.h> |
| @@ -121,10 +122,9 @@ static int ehci_hcd_ppc_of_probe(struct platform_device *op) | |||
| 121 | goto err_irq; | 122 | goto err_irq; |
| 122 | } | 123 | } |
| 123 | 124 | ||
| 124 | hcd->regs = devm_request_and_ioremap(&op->dev, &res); | 125 | hcd->regs = devm_ioremap_resource(&op->dev, &res); |
| 125 | if (!hcd->regs) { | 126 | if (IS_ERR(hcd->regs)) { |
| 126 | pr_err("%s: devm_request_and_ioremap failed\n", __FILE__); | 127 | rv = PTR_ERR(hcd->regs); |
| 127 | rv = -ENOMEM; | ||
| 128 | goto err_ioremap; | 128 | goto err_ioremap; |
| 129 | } | 129 | } |
| 130 | 130 | ||
diff --git a/drivers/usb/host/ehci-sead3.c b/drivers/usb/host/ehci-sead3.c index efad02d947f2..f55477c5a1be 100644 --- a/drivers/usb/host/ehci-sead3.c +++ b/drivers/usb/host/ehci-sead3.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 19 | * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 20 | */ | 20 | */ |
| 21 | 21 | ||
| 22 | #include <linux/err.h> | ||
| 22 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
| 23 | 24 | ||
| 24 | static int ehci_sead3_setup(struct usb_hcd *hcd) | 25 | static int ehci_sead3_setup(struct usb_hcd *hcd) |
| @@ -112,10 +113,9 @@ static int ehci_hcd_sead3_drv_probe(struct platform_device *pdev) | |||
| 112 | hcd->rsrc_start = res->start; | 113 | hcd->rsrc_start = res->start; |
| 113 | hcd->rsrc_len = resource_size(res); | 114 | hcd->rsrc_len = resource_size(res); |
| 114 | 115 | ||
| 115 | hcd->regs = devm_request_and_ioremap(&pdev->dev, res); | 116 | hcd->regs = devm_ioremap_resource(&pdev->dev, res); |
| 116 | if (!hcd->regs) { | 117 | if (IS_ERR(hcd->regs)) { |
| 117 | pr_debug("ioremap failed"); | 118 | ret = PTR_ERR(hcd->regs); |
| 118 | ret = -ENOMEM; | ||
| 119 | goto err1; | 119 | goto err1; |
| 120 | } | 120 | } |
| 121 | 121 | ||
diff --git a/drivers/usb/host/ehci-sh.c b/drivers/usb/host/ehci-sh.c index 0c90a24fa989..3565a300f401 100644 --- a/drivers/usb/host/ehci-sh.c +++ b/drivers/usb/host/ehci-sh.c | |||
| @@ -118,10 +118,9 @@ static int ehci_hcd_sh_probe(struct platform_device *pdev) | |||
| 118 | hcd->rsrc_start = res->start; | 118 | hcd->rsrc_start = res->start; |
| 119 | hcd->rsrc_len = resource_size(res); | 119 | hcd->rsrc_len = resource_size(res); |
| 120 | 120 | ||
| 121 | hcd->regs = devm_request_and_ioremap(&pdev->dev, res); | 121 | hcd->regs = devm_ioremap_resource(&pdev->dev, res); |
| 122 | if (hcd->regs == NULL) { | 122 | if (IS_ERR(hcd->regs)) { |
| 123 | dev_dbg(&pdev->dev, "error mapping memory\n"); | 123 | ret = PTR_ERR(hcd->regs); |
| 124 | ret = -ENXIO; | ||
| 125 | goto fail_request_resource; | 124 | goto fail_request_resource; |
| 126 | } | 125 | } |
| 127 | 126 | ||
diff --git a/drivers/usb/host/ehci-vt8500.c b/drivers/usb/host/ehci-vt8500.c index 11695d5b9d86..7ecf709610ba 100644 --- a/drivers/usb/host/ehci-vt8500.c +++ b/drivers/usb/host/ehci-vt8500.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | * | 16 | * |
| 17 | */ | 17 | */ |
| 18 | 18 | ||
| 19 | #include <linux/err.h> | ||
| 19 | #include <linux/of.h> | 20 | #include <linux/of.h> |
| 20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
| 21 | 22 | ||
| @@ -96,10 +97,9 @@ static int vt8500_ehci_drv_probe(struct platform_device *pdev) | |||
| 96 | hcd->rsrc_start = res->start; | 97 | hcd->rsrc_start = res->start; |
| 97 | hcd->rsrc_len = resource_size(res); | 98 | hcd->rsrc_len = resource_size(res); |
| 98 | 99 | ||
| 99 | hcd->regs = devm_request_and_ioremap(&pdev->dev, res); | 100 | hcd->regs = devm_ioremap_resource(&pdev->dev, res); |
| 100 | if (!hcd->regs) { | 101 | if (IS_ERR(hcd->regs)) { |
| 101 | pr_debug("ioremap failed"); | 102 | ret = PTR_ERR(hcd->regs); |
| 102 | ret = -ENOMEM; | ||
| 103 | goto err1; | 103 | goto err1; |
| 104 | } | 104 | } |
| 105 | 105 | ||
diff --git a/drivers/usb/host/ehci-xilinx-of.c b/drivers/usb/host/ehci-xilinx-of.c index 4f285e8e404a..d845e3bcfaff 100644 --- a/drivers/usb/host/ehci-xilinx-of.c +++ b/drivers/usb/host/ehci-xilinx-of.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | * | 25 | * |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | #include <linux/err.h> | ||
| 28 | #include <linux/signal.h> | 29 | #include <linux/signal.h> |
| 29 | 30 | ||
| 30 | #include <linux/of.h> | 31 | #include <linux/of.h> |
| @@ -159,10 +160,9 @@ static int ehci_hcd_xilinx_of_probe(struct platform_device *op) | |||
| 159 | goto err_irq; | 160 | goto err_irq; |
| 160 | } | 161 | } |
| 161 | 162 | ||
| 162 | hcd->regs = devm_request_and_ioremap(&op->dev, &res); | 163 | hcd->regs = devm_ioremap_resource(&op->dev, &res); |
| 163 | if (!hcd->regs) { | 164 | if (IS_ERR(hcd->regs)) { |
| 164 | pr_err("%s: devm_request_and_ioremap failed\n", __FILE__); | 165 | rv = PTR_ERR(hcd->regs); |
| 165 | rv = -ENOMEM; | ||
| 166 | goto err_irq; | 166 | goto err_irq; |
| 167 | } | 167 | } |
| 168 | 168 | ||
diff --git a/drivers/usb/host/ohci-nxp.c b/drivers/usb/host/ohci-nxp.c index 2344040c16d2..f4988fbe78e7 100644 --- a/drivers/usb/host/ohci-nxp.c +++ b/drivers/usb/host/ohci-nxp.c | |||
| @@ -306,10 +306,9 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev) | |||
| 306 | goto out8; | 306 | goto out8; |
| 307 | } | 307 | } |
| 308 | 308 | ||
| 309 | hcd->regs = devm_request_and_ioremap(&pdev->dev, res); | 309 | hcd->regs = devm_ioremap_resource(&pdev->dev, res); |
| 310 | if (!hcd->regs) { | 310 | if (IS_ERR(hcd->regs)) { |
| 311 | dev_err(&pdev->dev, "Failed to devm_request_and_ioremap\n"); | 311 | ret = PTR_ERR(hcd->regs); |
| 312 | ret = -ENOMEM; | ||
| 313 | goto out8; | 312 | goto out8; |
| 314 | } | 313 | } |
| 315 | hcd->rsrc_start = res->start; | 314 | hcd->rsrc_start = res->start; |
diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c index 084503b03fcf..c3e7287f7921 100644 --- a/drivers/usb/host/ohci-platform.c +++ b/drivers/usb/host/ohci-platform.c | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | * | 13 | * |
| 14 | * Licensed under the GNU/GPL. See COPYING for details. | 14 | * Licensed under the GNU/GPL. See COPYING for details. |
| 15 | */ | 15 | */ |
| 16 | #include <linux/err.h> | ||
| 16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
| 17 | #include <linux/usb/ohci_pdriver.h> | 18 | #include <linux/usb/ohci_pdriver.h> |
| 18 | 19 | ||
| @@ -127,9 +128,9 @@ static int ohci_platform_probe(struct platform_device *dev) | |||
| 127 | hcd->rsrc_start = res_mem->start; | 128 | hcd->rsrc_start = res_mem->start; |
| 128 | hcd->rsrc_len = resource_size(res_mem); | 129 | hcd->rsrc_len = resource_size(res_mem); |
| 129 | 130 | ||
| 130 | hcd->regs = devm_request_and_ioremap(&dev->dev, res_mem); | 131 | hcd->regs = devm_ioremap_resource(&dev->dev, res_mem); |
| 131 | if (!hcd->regs) { | 132 | if (IS_ERR(hcd->regs)) { |
| 132 | err = -ENOMEM; | 133 | err = PTR_ERR(hcd->regs); |
| 133 | goto err_put_hcd; | 134 | goto err_put_hcd; |
| 134 | } | 135 | } |
| 135 | err = usb_add_hcd(hcd, irq, IRQF_SHARED); | 136 | err = usb_add_hcd(hcd, irq, IRQF_SHARED); |
diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c index ad0f55269603..e125770b893c 100644 --- a/drivers/usb/host/ohci-s3c2410.c +++ b/drivers/usb/host/ohci-s3c2410.c | |||
| @@ -351,10 +351,9 @@ static int usb_hcd_s3c2410_probe(const struct hc_driver *driver, | |||
| 351 | hcd->rsrc_start = dev->resource[0].start; | 351 | hcd->rsrc_start = dev->resource[0].start; |
| 352 | hcd->rsrc_len = resource_size(&dev->resource[0]); | 352 | hcd->rsrc_len = resource_size(&dev->resource[0]); |
| 353 | 353 | ||
| 354 | hcd->regs = devm_request_and_ioremap(&dev->dev, &dev->resource[0]); | 354 | hcd->regs = devm_ioremap_resource(&dev->dev, &dev->resource[0]); |
| 355 | if (!hcd->regs) { | 355 | if (IS_ERR(hcd->regs)) { |
| 356 | dev_err(&dev->dev, "devm_request_and_ioremap failed\n"); | 356 | retval = PTR_ERR(hcd->regs); |
| 357 | retval = -ENOMEM; | ||
| 358 | goto err_put; | 357 | goto err_put; |
| 359 | } | 358 | } |
| 360 | 359 | ||
diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index f7d764de6fda..99f470d26a38 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c | |||
| @@ -500,10 +500,9 @@ static int dsps_create_musb_pdev(struct dsps_glue *glue, u8 id) | |||
| 500 | resources[0].end = resources[0].start + SZ_4 - 1; | 500 | resources[0].end = resources[0].start + SZ_4 - 1; |
| 501 | resources[0].flags = IORESOURCE_MEM; | 501 | resources[0].flags = IORESOURCE_MEM; |
| 502 | 502 | ||
| 503 | glue->usb_ctrl[id] = devm_request_and_ioremap(&pdev->dev, resources); | 503 | glue->usb_ctrl[id] = devm_ioremap_resource(&pdev->dev, resources); |
| 504 | if (glue->usb_ctrl[id] == NULL) { | 504 | if (IS_ERR(glue->usb_ctrl[id])) { |
| 505 | dev_err(dev, "Failed to obtain usb_ctrl%d memory\n", id); | 505 | ret = PTR_ERR(glue->usb_ctrl[id]); |
| 506 | ret = -ENODEV; | ||
| 507 | goto err0; | 506 | goto err0; |
| 508 | } | 507 | } |
| 509 | 508 | ||
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index da00af460794..acd5f9d71d03 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c | |||
| @@ -523,9 +523,7 @@ static int omap2430_probe(struct platform_device *pdev) | |||
| 523 | 523 | ||
| 524 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); | 524 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
| 525 | 525 | ||
| 526 | glue->control_otghs = devm_request_and_ioremap(&pdev->dev, res); | 526 | glue->control_otghs = devm_ioremap_resource(&pdev->dev, res); |
| 527 | if (glue->control_otghs == NULL) | ||
| 528 | dev_dbg(&pdev->dev, "Failed to obtain control memory\n"); | ||
| 529 | 527 | ||
| 530 | if (np) { | 528 | if (np) { |
| 531 | pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); | 529 | pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); |
diff --git a/drivers/usb/otg/gpio_vbus.c b/drivers/usb/otg/gpio_vbus.c index a67ffe22179a..a7d4ac591982 100644 --- a/drivers/usb/otg/gpio_vbus.c +++ b/drivers/usb/otg/gpio_vbus.c | |||
| @@ -409,17 +409,7 @@ static struct platform_driver gpio_vbus_driver = { | |||
| 409 | .remove = __exit_p(gpio_vbus_remove), | 409 | .remove = __exit_p(gpio_vbus_remove), |
| 410 | }; | 410 | }; |
| 411 | 411 | ||
| 412 | static int __init gpio_vbus_init(void) | 412 | module_platform_driver_probe(gpio_vbus_driver, gpio_vbus_probe); |
| 413 | { | ||
| 414 | return platform_driver_probe(&gpio_vbus_driver, gpio_vbus_probe); | ||
| 415 | } | ||
| 416 | module_init(gpio_vbus_init); | ||
| 417 | |||
| 418 | static void __exit gpio_vbus_exit(void) | ||
| 419 | { | ||
| 420 | platform_driver_unregister(&gpio_vbus_driver); | ||
| 421 | } | ||
| 422 | module_exit(gpio_vbus_exit); | ||
| 423 | 413 | ||
| 424 | MODULE_DESCRIPTION("simple GPIO controlled OTG transceiver driver"); | 414 | MODULE_DESCRIPTION("simple GPIO controlled OTG transceiver driver"); |
| 425 | MODULE_AUTHOR("Philipp Zabel"); | 415 | MODULE_AUTHOR("Philipp Zabel"); |
diff --git a/drivers/usb/otg/msm_otg.c b/drivers/usb/otg/msm_otg.c index 3b9f0d951132..749fbf41fb6f 100644 --- a/drivers/usb/otg/msm_otg.c +++ b/drivers/usb/otg/msm_otg.c | |||
| @@ -1756,18 +1756,7 @@ static struct platform_driver msm_otg_driver = { | |||
| 1756 | }, | 1756 | }, |
| 1757 | }; | 1757 | }; |
| 1758 | 1758 | ||
| 1759 | static int __init msm_otg_init(void) | 1759 | module_platform_driver_probe(msm_otg_driver, msm_otg_probe); |
| 1760 | { | ||
| 1761 | return platform_driver_probe(&msm_otg_driver, msm_otg_probe); | ||
| 1762 | } | ||
| 1763 | |||
| 1764 | static void __exit msm_otg_exit(void) | ||
| 1765 | { | ||
| 1766 | platform_driver_unregister(&msm_otg_driver); | ||
| 1767 | } | ||
| 1768 | |||
| 1769 | module_init(msm_otg_init); | ||
| 1770 | module_exit(msm_otg_exit); | ||
| 1771 | 1760 | ||
| 1772 | MODULE_LICENSE("GPL v2"); | 1761 | MODULE_LICENSE("GPL v2"); |
| 1773 | MODULE_DESCRIPTION("MSM USB transceiver driver"); | 1762 | MODULE_DESCRIPTION("MSM USB transceiver driver"); |
diff --git a/drivers/usb/otg/mxs-phy.c b/drivers/usb/otg/mxs-phy.c index 76302720055a..60df28a294b7 100644 --- a/drivers/usb/otg/mxs-phy.c +++ b/drivers/usb/otg/mxs-phy.c | |||
| @@ -115,9 +115,9 @@ static int mxs_phy_probe(struct platform_device *pdev) | |||
| 115 | return -ENOENT; | 115 | return -ENOENT; |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | base = devm_request_and_ioremap(&pdev->dev, res); | 118 | base = devm_ioremap_resource(&pdev->dev, res); |
| 119 | if (!base) | 119 | if (IS_ERR(base)) |
| 120 | return -EBUSY; | 120 | return PTR_ERR(base); |
| 121 | 121 | ||
| 122 | clk = devm_clk_get(&pdev->dev, NULL); | 122 | clk = devm_clk_get(&pdev->dev, NULL); |
| 123 | if (IS_ERR(clk)) { | 123 | if (IS_ERR(clk)) { |
diff --git a/drivers/usb/phy/mv_u3d_phy.c b/drivers/usb/phy/mv_u3d_phy.c index eaddbe3d4304..9d8599122aa9 100644 --- a/drivers/usb/phy/mv_u3d_phy.c +++ b/drivers/usb/phy/mv_u3d_phy.c | |||
| @@ -283,11 +283,9 @@ static int mv_u3d_phy_probe(struct platform_device *pdev) | |||
| 283 | return -ENODEV; | 283 | return -ENODEV; |
| 284 | } | 284 | } |
| 285 | 285 | ||
| 286 | phy_base = devm_request_and_ioremap(dev, res); | 286 | phy_base = devm_ioremap_resource(dev, res); |
| 287 | if (!phy_base) { | 287 | if (IS_ERR(phy_base)) |
| 288 | dev_err(dev, "%s: register mapping failed\n", __func__); | 288 | return PTR_ERR(phy_base); |
| 289 | return -ENXIO; | ||
| 290 | } | ||
| 291 | 289 | ||
| 292 | mv_u3d_phy = devm_kzalloc(dev, sizeof(*mv_u3d_phy), GFP_KERNEL); | 290 | mv_u3d_phy = devm_kzalloc(dev, sizeof(*mv_u3d_phy), GFP_KERNEL); |
| 293 | if (!mv_u3d_phy) | 291 | if (!mv_u3d_phy) |
diff --git a/drivers/usb/phy/omap-usb2.c b/drivers/usb/phy/omap-usb2.c index 26ae8f49225c..2fdb8ede5f1c 100644 --- a/drivers/usb/phy/omap-usb2.c +++ b/drivers/usb/phy/omap-usb2.c | |||
| @@ -168,11 +168,9 @@ static int omap_usb2_probe(struct platform_device *pdev) | |||
| 168 | 168 | ||
| 169 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); | 169 | res = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
| 170 | 170 | ||
| 171 | phy->control_dev = devm_request_and_ioremap(&pdev->dev, res); | 171 | phy->control_dev = devm_ioremap_resource(&pdev->dev, res); |
| 172 | if (phy->control_dev == NULL) { | 172 | if (IS_ERR(phy->control_dev)) |
| 173 | dev_err(&pdev->dev, "Failed to obtain io memory\n"); | 173 | return PTR_ERR(phy->control_dev); |
| 174 | return -ENXIO; | ||
| 175 | } | ||
| 176 | 174 | ||
| 177 | phy->is_suspended = 1; | 175 | phy->is_suspended = 1; |
| 178 | omap_usb_phy_power(phy, 0); | 176 | omap_usb_phy_power(phy, 0); |
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c index 38bce046f4d0..cfd205036aba 100644 --- a/drivers/usb/renesas_usbhs/common.c +++ b/drivers/usb/renesas_usbhs/common.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | 14 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| 15 | * | 15 | * |
| 16 | */ | 16 | */ |
| 17 | #include <linux/err.h> | ||
| 17 | #include <linux/io.h> | 18 | #include <linux/io.h> |
| 18 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| 19 | #include <linux/pm_runtime.h> | 20 | #include <linux/pm_runtime.h> |
| @@ -443,11 +444,9 @@ static int usbhs_probe(struct platform_device *pdev) | |||
| 443 | return -ENOMEM; | 444 | return -ENOMEM; |
| 444 | } | 445 | } |
| 445 | 446 | ||
| 446 | priv->base = devm_request_and_ioremap(&pdev->dev, res); | 447 | priv->base = devm_ioremap_resource(&pdev->dev, res); |
| 447 | if (!priv->base) { | 448 | if (IS_ERR(priv->base)) |
| 448 | dev_err(&pdev->dev, "ioremap error.\n"); | 449 | return PTR_ERR(priv->base); |
| 449 | return -ENOMEM; | ||
| 450 | } | ||
| 451 | 450 | ||
| 452 | /* | 451 | /* |
| 453 | * care platform info | 452 | * care platform info |
diff --git a/drivers/uwb/lc-rc.c b/drivers/uwb/lc-rc.c index 4d688c750801..3eca6ceb9844 100644 --- a/drivers/uwb/lc-rc.c +++ b/drivers/uwb/lc-rc.c | |||
| @@ -40,9 +40,9 @@ | |||
| 40 | 40 | ||
| 41 | #include "uwb-internal.h" | 41 | #include "uwb-internal.h" |
| 42 | 42 | ||
| 43 | static int uwb_rc_index_match(struct device *dev, void *data) | 43 | static int uwb_rc_index_match(struct device *dev, const void *data) |
| 44 | { | 44 | { |
| 45 | int *index = data; | 45 | const int *index = data; |
| 46 | struct uwb_rc *rc = dev_get_drvdata(dev); | 46 | struct uwb_rc *rc = dev_get_drvdata(dev); |
| 47 | 47 | ||
| 48 | if (rc->index == *index) | 48 | if (rc->index == *index) |
| @@ -334,9 +334,9 @@ void uwb_rc_rm(struct uwb_rc *rc) | |||
| 334 | } | 334 | } |
| 335 | EXPORT_SYMBOL_GPL(uwb_rc_rm); | 335 | EXPORT_SYMBOL_GPL(uwb_rc_rm); |
| 336 | 336 | ||
| 337 | static int find_rc_try_get(struct device *dev, void *data) | 337 | static int find_rc_try_get(struct device *dev, const void *data) |
| 338 | { | 338 | { |
| 339 | struct uwb_rc *target_rc = data; | 339 | const struct uwb_rc *target_rc = data; |
| 340 | struct uwb_rc *rc = dev_get_drvdata(dev); | 340 | struct uwb_rc *rc = dev_get_drvdata(dev); |
| 341 | 341 | ||
| 342 | if (rc == NULL) { | 342 | if (rc == NULL) { |
| @@ -386,9 +386,9 @@ static inline struct uwb_rc *uwb_rc_get(struct uwb_rc *rc) | |||
| 386 | return rc; | 386 | return rc; |
| 387 | } | 387 | } |
| 388 | 388 | ||
| 389 | static int find_rc_grandpa(struct device *dev, void *data) | 389 | static int find_rc_grandpa(struct device *dev, const void *data) |
| 390 | { | 390 | { |
| 391 | struct device *grandpa_dev = data; | 391 | const struct device *grandpa_dev = data; |
| 392 | struct uwb_rc *rc = dev_get_drvdata(dev); | 392 | struct uwb_rc *rc = dev_get_drvdata(dev); |
| 393 | 393 | ||
| 394 | if (rc->uwb_dev.dev.parent->parent == grandpa_dev) { | 394 | if (rc->uwb_dev.dev.parent->parent == grandpa_dev) { |
| @@ -419,7 +419,7 @@ struct uwb_rc *uwb_rc_get_by_grandpa(const struct device *grandpa_dev) | |||
| 419 | struct device *dev; | 419 | struct device *dev; |
| 420 | struct uwb_rc *rc = NULL; | 420 | struct uwb_rc *rc = NULL; |
| 421 | 421 | ||
| 422 | dev = class_find_device(&uwb_rc_class, NULL, (void *)grandpa_dev, | 422 | dev = class_find_device(&uwb_rc_class, NULL, grandpa_dev, |
| 423 | find_rc_grandpa); | 423 | find_rc_grandpa); |
| 424 | if (dev) | 424 | if (dev) |
| 425 | rc = dev_get_drvdata(dev); | 425 | rc = dev_get_drvdata(dev); |
| @@ -432,9 +432,9 @@ EXPORT_SYMBOL_GPL(uwb_rc_get_by_grandpa); | |||
| 432 | * | 432 | * |
| 433 | * @returns the pointer to the radio controller, properly referenced | 433 | * @returns the pointer to the radio controller, properly referenced |
| 434 | */ | 434 | */ |
| 435 | static int find_rc_dev(struct device *dev, void *data) | 435 | static int find_rc_dev(struct device *dev, const void *data) |
| 436 | { | 436 | { |
| 437 | struct uwb_dev_addr *addr = data; | 437 | const struct uwb_dev_addr *addr = data; |
| 438 | struct uwb_rc *rc = dev_get_drvdata(dev); | 438 | struct uwb_rc *rc = dev_get_drvdata(dev); |
| 439 | 439 | ||
| 440 | if (rc == NULL) { | 440 | if (rc == NULL) { |
| @@ -453,8 +453,7 @@ struct uwb_rc *uwb_rc_get_by_dev(const struct uwb_dev_addr *addr) | |||
| 453 | struct device *dev; | 453 | struct device *dev; |
| 454 | struct uwb_rc *rc = NULL; | 454 | struct uwb_rc *rc = NULL; |
| 455 | 455 | ||
| 456 | dev = class_find_device(&uwb_rc_class, NULL, (void *)addr, | 456 | dev = class_find_device(&uwb_rc_class, NULL, addr, find_rc_dev); |
| 457 | find_rc_dev); | ||
| 458 | if (dev) | 457 | if (dev) |
| 459 | rc = dev_get_drvdata(dev); | 458 | rc = dev_get_drvdata(dev); |
| 460 | 459 | ||
diff --git a/drivers/vhost/Kconfig b/drivers/vhost/Kconfig index 202bba6c997c..bf243177ffe1 100644 --- a/drivers/vhost/Kconfig +++ b/drivers/vhost/Kconfig | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config VHOST_NET | 1 | config VHOST_NET |
| 2 | tristate "Host kernel accelerator for virtio net (EXPERIMENTAL)" | 2 | tristate "Host kernel accelerator for virtio net" |
| 3 | depends on NET && EVENTFD && (TUN || !TUN) && (MACVTAP || !MACVTAP) && EXPERIMENTAL | 3 | depends on NET && EVENTFD && (TUN || !TUN) && (MACVTAP || !MACVTAP) |
| 4 | ---help--- | 4 | ---help--- |
| 5 | This kernel module can be loaded in host kernel to accelerate | 5 | This kernel module can be loaded in host kernel to accelerate |
| 6 | guest networking with virtio_net. Not to be confused with virtio_net | 6 | guest networking with virtio_net. Not to be confused with virtio_net |
diff --git a/drivers/vhost/Kconfig.tcm b/drivers/vhost/Kconfig.tcm index a9c6f76e3208..7e3aa28d999e 100644 --- a/drivers/vhost/Kconfig.tcm +++ b/drivers/vhost/Kconfig.tcm | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | config TCM_VHOST | 1 | config TCM_VHOST |
| 2 | tristate "TCM_VHOST fabric module (EXPERIMENTAL)" | 2 | tristate "TCM_VHOST fabric module" |
| 3 | depends on TARGET_CORE && EVENTFD && EXPERIMENTAL && m | 3 | depends on TARGET_CORE && EVENTFD && m |
| 4 | default n | 4 | default n |
| 5 | ---help--- | 5 | ---help--- |
| 6 | Say M here to enable the TCM_VHOST fabric module for use with virtio-scsi guests | 6 | Say M here to enable the TCM_VHOST fabric module for use with virtio-scsi guests |
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index e7068c508800..e4e1765b82f2 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
| @@ -1112,8 +1112,8 @@ config FB_RIVA_BACKLIGHT | |||
| 1112 | Say Y here if you want to control the backlight of your display. | 1112 | Say Y here if you want to control the backlight of your display. |
| 1113 | 1113 | ||
| 1114 | config FB_I740 | 1114 | config FB_I740 |
| 1115 | tristate "Intel740 support (EXPERIMENTAL)" | 1115 | tristate "Intel740 support" |
| 1116 | depends on EXPERIMENTAL && FB && PCI | 1116 | depends on FB && PCI |
| 1117 | select FB_MODE_HELPERS | 1117 | select FB_MODE_HELPERS |
| 1118 | select FB_CFB_FILLRECT | 1118 | select FB_CFB_FILLRECT |
| 1119 | select FB_CFB_COPYAREA | 1119 | select FB_CFB_COPYAREA |
| @@ -1124,8 +1124,8 @@ config FB_I740 | |||
| 1124 | This driver supports graphics cards based on Intel740 chip. | 1124 | This driver supports graphics cards based on Intel740 chip. |
| 1125 | 1125 | ||
| 1126 | config FB_I810 | 1126 | config FB_I810 |
| 1127 | tristate "Intel 810/815 support (EXPERIMENTAL)" | 1127 | tristate "Intel 810/815 support" |
| 1128 | depends on EXPERIMENTAL && FB && PCI && X86_32 && AGP_INTEL | 1128 | depends on FB && PCI && X86_32 && AGP_INTEL |
| 1129 | select FB_MODE_HELPERS | 1129 | select FB_MODE_HELPERS |
| 1130 | select FB_CFB_FILLRECT | 1130 | select FB_CFB_FILLRECT |
| 1131 | select FB_CFB_COPYAREA | 1131 | select FB_CFB_COPYAREA |
| @@ -1187,8 +1187,8 @@ config FB_CARILLO_RANCH | |||
| 1187 | This driver supports the LE80578 (Carillo Ranch) board | 1187 | This driver supports the LE80578 (Carillo Ranch) board |
| 1188 | 1188 | ||
| 1189 | config FB_INTEL | 1189 | config FB_INTEL |
| 1190 | tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM support (EXPERIMENTAL)" | 1190 | tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM support" |
| 1191 | depends on EXPERIMENTAL && FB && PCI && X86 && AGP_INTEL && EXPERT | 1191 | depends on FB && PCI && X86 && AGP_INTEL && EXPERT |
| 1192 | select FB_MODE_HELPERS | 1192 | select FB_MODE_HELPERS |
| 1193 | select FB_CFB_FILLRECT | 1193 | select FB_CFB_FILLRECT |
| 1194 | select FB_CFB_COPYAREA | 1194 | select FB_CFB_COPYAREA |
| @@ -1432,7 +1432,7 @@ config FB_ATY_CT | |||
| 1432 | is at <http://support.ati.com/products/pc/mach64/mach64.html>. | 1432 | is at <http://support.ati.com/products/pc/mach64/mach64.html>. |
| 1433 | 1433 | ||
| 1434 | config FB_ATY_GENERIC_LCD | 1434 | config FB_ATY_GENERIC_LCD |
| 1435 | bool "Mach64 generic LCD support (EXPERIMENTAL)" | 1435 | bool "Mach64 generic LCD support" |
| 1436 | depends on FB_ATY_CT | 1436 | depends on FB_ATY_CT |
| 1437 | help | 1437 | help |
| 1438 | Say Y if you have a laptop with an ATI Rage LT PRO, Rage Mobility, | 1438 | Say Y if you have a laptop with an ATI Rage LT PRO, Rage Mobility, |
| @@ -1479,7 +1479,7 @@ config FB_S3_DDC | |||
| 1479 | 1479 | ||
| 1480 | config FB_SAVAGE | 1480 | config FB_SAVAGE |
| 1481 | tristate "S3 Savage support" | 1481 | tristate "S3 Savage support" |
| 1482 | depends on FB && PCI && EXPERIMENTAL | 1482 | depends on FB && PCI |
| 1483 | select FB_MODE_HELPERS | 1483 | select FB_MODE_HELPERS |
| 1484 | select FB_CFB_FILLRECT | 1484 | select FB_CFB_FILLRECT |
| 1485 | select FB_CFB_COPYAREA | 1485 | select FB_CFB_COPYAREA |
| @@ -1633,15 +1633,15 @@ config FB_3DFX | |||
| 1633 | module will be called tdfxfb. | 1633 | module will be called tdfxfb. |
| 1634 | 1634 | ||
| 1635 | config FB_3DFX_ACCEL | 1635 | config FB_3DFX_ACCEL |
| 1636 | bool "3Dfx Acceleration functions (EXPERIMENTAL)" | 1636 | bool "3Dfx Acceleration functions" |
| 1637 | depends on FB_3DFX && EXPERIMENTAL | 1637 | depends on FB_3DFX |
| 1638 | ---help--- | 1638 | ---help--- |
| 1639 | This will compile the 3Dfx Banshee/Voodoo3/VSA-100 frame buffer | 1639 | This will compile the 3Dfx Banshee/Voodoo3/VSA-100 frame buffer |
| 1640 | device driver with acceleration functions. | 1640 | device driver with acceleration functions. |
| 1641 | 1641 | ||
| 1642 | config FB_3DFX_I2C | 1642 | config FB_3DFX_I2C |
| 1643 | bool "Enable DDC/I2C support" | 1643 | bool "Enable DDC/I2C support" |
| 1644 | depends on FB_3DFX && EXPERIMENTAL | 1644 | depends on FB_3DFX |
| 1645 | select FB_DDC | 1645 | select FB_DDC |
| 1646 | default y | 1646 | default y |
| 1647 | help | 1647 | help |
| @@ -1714,8 +1714,8 @@ config FB_ARK | |||
| 1714 | and ICS 5342 RAMDAC. | 1714 | and ICS 5342 RAMDAC. |
| 1715 | 1715 | ||
| 1716 | config FB_PM3 | 1716 | config FB_PM3 |
| 1717 | tristate "Permedia3 support (EXPERIMENTAL)" | 1717 | tristate "Permedia3 support" |
| 1718 | depends on FB && PCI && EXPERIMENTAL | 1718 | depends on FB && PCI |
| 1719 | select FB_CFB_FILLRECT | 1719 | select FB_CFB_FILLRECT |
| 1720 | select FB_CFB_COPYAREA | 1720 | select FB_CFB_COPYAREA |
| 1721 | select FB_CFB_IMAGEBLIT | 1721 | select FB_CFB_IMAGEBLIT |
diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c index 345f6660d4b3..c74e7aa46731 100644 --- a/drivers/video/backlight/backlight.c +++ b/drivers/video/backlight/backlight.c | |||
| @@ -371,7 +371,7 @@ void backlight_device_unregister(struct backlight_device *bd) | |||
| 371 | EXPORT_SYMBOL(backlight_device_unregister); | 371 | EXPORT_SYMBOL(backlight_device_unregister); |
| 372 | 372 | ||
| 373 | #ifdef CONFIG_OF | 373 | #ifdef CONFIG_OF |
| 374 | static int of_parent_match(struct device *dev, void *data) | 374 | static int of_parent_match(struct device *dev, const void *data) |
| 375 | { | 375 | { |
| 376 | return dev->parent && dev->parent->of_node == data; | 376 | return dev->parent && dev->parent->of_node == data; |
| 377 | } | 377 | } |
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig index e2c96d01d8f5..bc922c47d046 100644 --- a/drivers/video/console/Kconfig +++ b/drivers/video/console/Kconfig | |||
| @@ -46,7 +46,7 @@ config VGACON_SOFT_SCROLLBACK_SIZE | |||
| 46 | 46 | ||
| 47 | config MDA_CONSOLE | 47 | config MDA_CONSOLE |
| 48 | depends on !M68K && !PARISC && ISA | 48 | depends on !M68K && !PARISC && ISA |
| 49 | tristate "MDA text console (dual-headed) (EXPERIMENTAL)" | 49 | tristate "MDA text console (dual-headed)" |
| 50 | ---help--- | 50 | ---help--- |
| 51 | Say Y here if you have an old MDA or monochrome Hercules graphics | 51 | Say Y here if you have an old MDA or monochrome Hercules graphics |
| 52 | adapter in your system acting as a second head ( = video card). You | 52 | adapter in your system acting as a second head ( = video card). You |
diff --git a/drivers/video/exynos/exynos_dp_core.c b/drivers/video/exynos/exynos_dp_core.c index 2d0d144add1b..2ed97769aa6d 100644 --- a/drivers/video/exynos/exynos_dp_core.c +++ b/drivers/video/exynos/exynos_dp_core.c | |||
| @@ -1076,11 +1076,9 @@ static int exynos_dp_probe(struct platform_device *pdev) | |||
| 1076 | 1076 | ||
| 1077 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1077 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1078 | 1078 | ||
| 1079 | dp->reg_base = devm_request_and_ioremap(&pdev->dev, res); | 1079 | dp->reg_base = devm_ioremap_resource(&pdev->dev, res); |
| 1080 | if (!dp->reg_base) { | 1080 | if (IS_ERR(dp->reg_base)) |
| 1081 | dev_err(&pdev->dev, "failed to ioremap\n"); | 1081 | return PTR_ERR(dp->reg_base); |
| 1082 | return -ENOMEM; | ||
| 1083 | } | ||
| 1084 | 1082 | ||
| 1085 | dp->irq = platform_get_irq(pdev, 0); | 1083 | dp->irq = platform_get_irq(pdev, 0); |
| 1086 | if (dp->irq == -ENXIO) { | 1084 | if (dp->irq == -ENXIO) { |
diff --git a/drivers/video/geode/Kconfig b/drivers/video/geode/Kconfig index c5d8ba4b9fc3..21e351a14593 100644 --- a/drivers/video/geode/Kconfig +++ b/drivers/video/geode/Kconfig | |||
| @@ -2,14 +2,14 @@ | |||
| 2 | # Geode family framebuffer configuration | 2 | # Geode family framebuffer configuration |
| 3 | # | 3 | # |
| 4 | config FB_GEODE | 4 | config FB_GEODE |
| 5 | bool "AMD Geode family framebuffer support (EXPERIMENTAL)" | 5 | bool "AMD Geode family framebuffer support" |
| 6 | depends on FB && PCI && EXPERIMENTAL && X86 | 6 | depends on FB && PCI && X86 |
| 7 | ---help--- | 7 | ---help--- |
| 8 | Say 'Y' here to allow you to select framebuffer drivers for | 8 | Say 'Y' here to allow you to select framebuffer drivers for |
| 9 | the AMD Geode family of processors. | 9 | the AMD Geode family of processors. |
| 10 | 10 | ||
| 11 | config FB_GEODE_LX | 11 | config FB_GEODE_LX |
| 12 | tristate "AMD Geode LX framebuffer support (EXPERIMENTAL)" | 12 | tristate "AMD Geode LX framebuffer support" |
| 13 | depends on FB && FB_GEODE | 13 | depends on FB && FB_GEODE |
| 14 | select FB_CFB_FILLRECT | 14 | select FB_CFB_FILLRECT |
| 15 | select FB_CFB_COPYAREA | 15 | select FB_CFB_COPYAREA |
| @@ -24,8 +24,8 @@ config FB_GEODE_LX | |||
| 24 | If unsure, say N. | 24 | If unsure, say N. |
| 25 | 25 | ||
| 26 | config FB_GEODE_GX | 26 | config FB_GEODE_GX |
| 27 | tristate "AMD Geode GX framebuffer support (EXPERIMENTAL)" | 27 | tristate "AMD Geode GX framebuffer support" |
| 28 | depends on FB && FB_GEODE && EXPERIMENTAL | 28 | depends on FB && FB_GEODE |
| 29 | select FB_CFB_FILLRECT | 29 | select FB_CFB_FILLRECT |
| 30 | select FB_CFB_COPYAREA | 30 | select FB_CFB_COPYAREA |
| 31 | select FB_CFB_IMAGEBLIT | 31 | select FB_CFB_IMAGEBLIT |
| @@ -39,8 +39,8 @@ config FB_GEODE_GX | |||
| 39 | If unsure, say N. | 39 | If unsure, say N. |
| 40 | 40 | ||
| 41 | config FB_GEODE_GX1 | 41 | config FB_GEODE_GX1 |
| 42 | tristate "AMD Geode GX1 framebuffer support (EXPERIMENTAL)" | 42 | tristate "AMD Geode GX1 framebuffer support" |
| 43 | depends on FB && FB_GEODE && EXPERIMENTAL | 43 | depends on FB && FB_GEODE |
| 44 | select FB_CFB_FILLRECT | 44 | select FB_CFB_FILLRECT |
| 45 | select FB_CFB_COPYAREA | 45 | select FB_CFB_COPYAREA |
| 46 | select FB_CFB_IMAGEBLIT | 46 | select FB_CFB_IMAGEBLIT |
diff --git a/drivers/video/jz4740_fb.c b/drivers/video/jz4740_fb.c index d999bb5e0485..36979b4131ab 100644 --- a/drivers/video/jz4740_fb.c +++ b/drivers/video/jz4740_fb.c | |||
| @@ -660,9 +660,9 @@ static int jzfb_probe(struct platform_device *pdev) | |||
| 660 | } | 660 | } |
| 661 | 661 | ||
| 662 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 662 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 663 | jzfb->base = devm_request_and_ioremap(&pdev->dev, mem); | 663 | jzfb->base = devm_ioremap_resource(&pdev->dev, mem); |
| 664 | if (!jzfb->base) { | 664 | if (IS_ERR(jzfb->base)) { |
| 665 | ret = -EBUSY; | 665 | ret = PTR_ERR(jzfb->base); |
| 666 | goto err_framebuffer_release; | 666 | goto err_framebuffer_release; |
| 667 | } | 667 | } |
| 668 | 668 | ||
diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig index b48f95f0dfe2..e512581300fc 100644 --- a/drivers/video/omap/Kconfig +++ b/drivers/video/omap/Kconfig | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | config FB_OMAP | 1 | config FB_OMAP |
| 2 | tristate "OMAP frame buffer support (EXPERIMENTAL)" | 2 | tristate "OMAP frame buffer support" |
| 3 | depends on FB | 3 | depends on FB |
| 4 | depends on ARCH_OMAP1 | 4 | depends on ARCH_OMAP1 |
| 5 | select FB_CFB_FILLRECT | 5 | select FB_CFB_FILLRECT |
diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c index 769d0828581c..72923645dcce 100644 --- a/drivers/video/omap2/dss/hdmi.c +++ b/drivers/video/omap2/dss/hdmi.c | |||
| @@ -1080,11 +1080,9 @@ static int __init omapdss_hdmihw_probe(struct platform_device *pdev) | |||
| 1080 | } | 1080 | } |
| 1081 | 1081 | ||
| 1082 | /* Base address taken from platform */ | 1082 | /* Base address taken from platform */ |
| 1083 | hdmi.ip_data.base_wp = devm_request_and_ioremap(&pdev->dev, res); | 1083 | hdmi.ip_data.base_wp = devm_ioremap_resource(&pdev->dev, res); |
| 1084 | if (!hdmi.ip_data.base_wp) { | 1084 | if (IS_ERR(hdmi.ip_data.base_wp)) |
| 1085 | DSSERR("can't ioremap WP\n"); | 1085 | return PTR_ERR(hdmi.ip_data.base_wp); |
| 1086 | return -ENOMEM; | ||
| 1087 | } | ||
| 1088 | 1086 | ||
| 1089 | r = hdmi_get_clocks(pdev); | 1087 | r = hdmi_get_clocks(pdev); |
| 1090 | if (r) { | 1088 | if (r) { |
diff --git a/drivers/video/omap2/vrfb.c b/drivers/video/omap2/vrfb.c index 5d8fdac3b800..10560efeb35a 100644 --- a/drivers/video/omap2/vrfb.c +++ b/drivers/video/omap2/vrfb.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | 20 | ||
| 21 | /*#define DEBUG*/ | 21 | /*#define DEBUG*/ |
| 22 | 22 | ||
| 23 | #include <linux/err.h> | ||
| 23 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
| 24 | #include <linux/module.h> | 25 | #include <linux/module.h> |
| 25 | #include <linux/ioport.h> | 26 | #include <linux/ioport.h> |
| @@ -357,11 +358,9 @@ static int __init vrfb_probe(struct platform_device *pdev) | |||
| 357 | return -EINVAL; | 358 | return -EINVAL; |
| 358 | } | 359 | } |
| 359 | 360 | ||
| 360 | vrfb_base = devm_request_and_ioremap(&pdev->dev, mem); | 361 | vrfb_base = devm_ioremap_resource(&pdev->dev, mem); |
| 361 | if (!vrfb_base) { | 362 | if (IS_ERR(vrfb_base)) |
| 362 | dev_err(&pdev->dev, "can't ioremap vrfb memory\n"); | 363 | return PTR_ERR(vrfb_base); |
| 363 | return -ENOMEM; | ||
| 364 | } | ||
| 365 | 364 | ||
| 366 | num_ctxs = pdev->num_resources - 1; | 365 | num_ctxs = pdev->num_resources - 1; |
| 367 | 366 | ||
diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c index 9b57a235c9bc..968a62571df7 100644 --- a/drivers/video/s3c-fb.c +++ b/drivers/video/s3c-fb.c | |||
| @@ -1421,10 +1421,9 @@ static int s3c_fb_probe(struct platform_device *pdev) | |||
| 1421 | pm_runtime_enable(sfb->dev); | 1421 | pm_runtime_enable(sfb->dev); |
| 1422 | 1422 | ||
| 1423 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1423 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 1424 | sfb->regs = devm_request_and_ioremap(dev, res); | 1424 | sfb->regs = devm_ioremap_resource(dev, res); |
| 1425 | if (!sfb->regs) { | 1425 | if (IS_ERR(sfb->regs)) { |
| 1426 | dev_err(dev, "failed to map registers\n"); | 1426 | ret = PTR_ERR(sfb->regs); |
| 1427 | ret = -ENXIO; | ||
| 1428 | goto err_lcd_clk; | 1427 | goto err_lcd_clk; |
| 1429 | } | 1428 | } |
| 1430 | 1429 | ||
diff --git a/drivers/virtio/Kconfig b/drivers/virtio/Kconfig index 8d5bddb56cb1..c6683f2e396c 100644 --- a/drivers/virtio/Kconfig +++ b/drivers/virtio/Kconfig | |||
| @@ -8,8 +8,8 @@ config VIRTIO | |||
| 8 | menu "Virtio drivers" | 8 | menu "Virtio drivers" |
| 9 | 9 | ||
| 10 | config VIRTIO_PCI | 10 | config VIRTIO_PCI |
| 11 | tristate "PCI driver for virtio devices (EXPERIMENTAL)" | 11 | tristate "PCI driver for virtio devices" |
| 12 | depends on PCI && EXPERIMENTAL | 12 | depends on PCI |
| 13 | select VIRTIO | 13 | select VIRTIO |
| 14 | ---help--- | 14 | ---help--- |
| 15 | This drivers provides support for virtio based paravirtual device | 15 | This drivers provides support for virtio based paravirtual device |
| @@ -32,8 +32,8 @@ config VIRTIO_BALLOON | |||
| 32 | If unsure, say M. | 32 | If unsure, say M. |
| 33 | 33 | ||
| 34 | config VIRTIO_MMIO | 34 | config VIRTIO_MMIO |
| 35 | tristate "Platform bus driver for memory mapped virtio devices (EXPERIMENTAL)" | 35 | tristate "Platform bus driver for memory mapped virtio devices" |
| 36 | depends on HAS_IOMEM && EXPERIMENTAL | 36 | depends on HAS_IOMEM |
| 37 | select VIRTIO | 37 | select VIRTIO |
| 38 | ---help--- | 38 | ---help--- |
| 39 | This drivers provides support for memory mapped virtio | 39 | This drivers provides support for memory mapped virtio |
diff --git a/drivers/vlynq/Kconfig b/drivers/vlynq/Kconfig index d874b4f34136..e01162046598 100644 --- a/drivers/vlynq/Kconfig +++ b/drivers/vlynq/Kconfig | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | menu "TI VLYNQ" | 1 | menu "TI VLYNQ" |
| 2 | depends on AR7 && EXPERIMENTAL | 2 | depends on AR7 |
| 3 | 3 | ||
| 4 | config VLYNQ | 4 | config VLYNQ |
| 5 | bool "TI VLYNQ bus support" | 5 | bool "TI VLYNQ bus support" |
diff --git a/drivers/w1/masters/omap_hdq.c b/drivers/w1/masters/omap_hdq.c index 184dbce4abd1..db2390aed387 100644 --- a/drivers/w1/masters/omap_hdq.c +++ b/drivers/w1/masters/omap_hdq.c | |||
| @@ -560,11 +560,9 @@ static int omap_hdq_probe(struct platform_device *pdev) | |||
| 560 | return -ENXIO; | 560 | return -ENXIO; |
| 561 | } | 561 | } |
| 562 | 562 | ||
| 563 | hdq_data->hdq_base = devm_request_and_ioremap(dev, res); | 563 | hdq_data->hdq_base = devm_ioremap_resource(dev, res); |
| 564 | if (!hdq_data->hdq_base) { | 564 | if (IS_ERR(hdq_data->hdq_base)) |
| 565 | dev_dbg(&pdev->dev, "ioremap failed\n"); | 565 | return PTR_ERR(hdq_data->hdq_base); |
| 566 | return -ENOMEM; | ||
| 567 | } | ||
| 568 | 566 | ||
| 569 | hdq_data->hdq_usecount = 0; | 567 | hdq_data->hdq_usecount = 0; |
| 570 | mutex_init(&hdq_data->hdq_mutex); | 568 | mutex_init(&hdq_data->hdq_mutex); |
diff --git a/drivers/watchdog/ar7_wdt.c b/drivers/watchdog/ar7_wdt.c index 3003e2a9580b..2f3cc8fb471a 100644 --- a/drivers/watchdog/ar7_wdt.c +++ b/drivers/watchdog/ar7_wdt.c | |||
| @@ -285,11 +285,9 @@ static int ar7_wdt_probe(struct platform_device *pdev) | |||
| 285 | return -ENODEV; | 285 | return -ENODEV; |
| 286 | } | 286 | } |
| 287 | 287 | ||
| 288 | ar7_wdt = devm_request_and_ioremap(&pdev->dev, ar7_regs_wdt); | 288 | ar7_wdt = devm_ioremap_resource(&pdev->dev, ar7_regs_wdt); |
| 289 | if (!ar7_wdt) { | 289 | if (IS_ERR(ar7_wdt)) |
| 290 | pr_err("could not ioremap registers\n"); | 290 | return PTR_ERR(ar7_wdt); |
| 291 | return -ENXIO; | ||
| 292 | } | ||
| 293 | 291 | ||
| 294 | vbus_clk = clk_get(NULL, "vbus"); | 292 | vbus_clk = clk_get(NULL, "vbus"); |
| 295 | if (IS_ERR(vbus_clk)) { | 293 | if (IS_ERR(vbus_clk)) { |
diff --git a/drivers/watchdog/at32ap700x_wdt.c b/drivers/watchdog/at32ap700x_wdt.c index 2896430ce42c..7a715e3e6828 100644 --- a/drivers/watchdog/at32ap700x_wdt.c +++ b/drivers/watchdog/at32ap700x_wdt.c | |||
| @@ -436,17 +436,7 @@ static struct platform_driver at32_wdt_driver = { | |||
| 436 | .shutdown = at32_wdt_shutdown, | 436 | .shutdown = at32_wdt_shutdown, |
| 437 | }; | 437 | }; |
| 438 | 438 | ||
| 439 | static int __init at32_wdt_init(void) | 439 | module_platform_driver_probe(at32_wdt_driver, at32_wdt_probe); |
| 440 | { | ||
| 441 | return platform_driver_probe(&at32_wdt_driver, at32_wdt_probe); | ||
| 442 | } | ||
| 443 | module_init(at32_wdt_init); | ||
| 444 | |||
| 445 | static void __exit at32_wdt_exit(void) | ||
| 446 | { | ||
| 447 | platform_driver_unregister(&at32_wdt_driver); | ||
| 448 | } | ||
| 449 | module_exit(at32_wdt_exit); | ||
| 450 | 440 | ||
| 451 | MODULE_AUTHOR("Hans-Christian Egtvedt <egtvedt@samfundet.no>"); | 441 | MODULE_AUTHOR("Hans-Christian Egtvedt <egtvedt@samfundet.no>"); |
| 452 | MODULE_DESCRIPTION("Watchdog driver for Atmel AT32AP700X"); | 442 | MODULE_DESCRIPTION("Watchdog driver for Atmel AT32AP700X"); |
diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c index dc42e44b6bc1..c08933cc565e 100644 --- a/drivers/watchdog/at91sam9_wdt.c +++ b/drivers/watchdog/at91sam9_wdt.c | |||
| @@ -321,18 +321,7 @@ static struct platform_driver at91wdt_driver = { | |||
| 321 | }, | 321 | }, |
| 322 | }; | 322 | }; |
| 323 | 323 | ||
| 324 | static int __init at91sam_wdt_init(void) | 324 | module_platform_driver_probe(at91wdt_driver, at91wdt_probe); |
| 325 | { | ||
| 326 | return platform_driver_probe(&at91wdt_driver, at91wdt_probe); | ||
| 327 | } | ||
| 328 | |||
| 329 | static void __exit at91sam_wdt_exit(void) | ||
| 330 | { | ||
| 331 | platform_driver_unregister(&at91wdt_driver); | ||
| 332 | } | ||
| 333 | |||
| 334 | module_init(at91sam_wdt_init); | ||
| 335 | module_exit(at91sam_wdt_exit); | ||
| 336 | 325 | ||
| 337 | MODULE_AUTHOR("Renaud CERRATO <r.cerrato@til-technologies.fr>"); | 326 | MODULE_AUTHOR("Renaud CERRATO <r.cerrato@til-technologies.fr>"); |
| 338 | MODULE_DESCRIPTION("Watchdog driver for Atmel AT91SAM9x processors"); | 327 | MODULE_DESCRIPTION("Watchdog driver for Atmel AT91SAM9x processors"); |
diff --git a/drivers/watchdog/coh901327_wdt.c b/drivers/watchdog/coh901327_wdt.c index cb5da5c3ece2..b9b8a8be6f12 100644 --- a/drivers/watchdog/coh901327_wdt.c +++ b/drivers/watchdog/coh901327_wdt.c | |||
| @@ -451,17 +451,7 @@ static struct platform_driver coh901327_driver = { | |||
| 451 | .resume = coh901327_resume, | 451 | .resume = coh901327_resume, |
| 452 | }; | 452 | }; |
| 453 | 453 | ||
| 454 | static int __init coh901327_init(void) | 454 | module_platform_driver_probe(coh901327_driver, coh901327_probe); |
| 455 | { | ||
| 456 | return platform_driver_probe(&coh901327_driver, coh901327_probe); | ||
| 457 | } | ||
| 458 | module_init(coh901327_init); | ||
| 459 | |||
| 460 | static void __exit coh901327_exit(void) | ||
| 461 | { | ||
| 462 | platform_driver_unregister(&coh901327_driver); | ||
| 463 | } | ||
| 464 | module_exit(coh901327_exit); | ||
| 465 | 455 | ||
| 466 | MODULE_AUTHOR("Linus Walleij <linus.walleij@stericsson.com>"); | 456 | MODULE_AUTHOR("Linus Walleij <linus.walleij@stericsson.com>"); |
| 467 | MODULE_DESCRIPTION("COH 901 327 Watchdog"); | 457 | MODULE_DESCRIPTION("COH 901 327 Watchdog"); |
diff --git a/drivers/watchdog/dw_wdt.c b/drivers/watchdog/dw_wdt.c index a0eba3c40e25..203766989382 100644 --- a/drivers/watchdog/dw_wdt.c +++ b/drivers/watchdog/dw_wdt.c | |||
| @@ -301,9 +301,9 @@ static int dw_wdt_drv_probe(struct platform_device *pdev) | |||
| 301 | if (!mem) | 301 | if (!mem) |
| 302 | return -EINVAL; | 302 | return -EINVAL; |
| 303 | 303 | ||
| 304 | dw_wdt.regs = devm_request_and_ioremap(&pdev->dev, mem); | 304 | dw_wdt.regs = devm_ioremap_resource(&pdev->dev, mem); |
| 305 | if (!dw_wdt.regs) | 305 | if (IS_ERR(dw_wdt.regs)) |
| 306 | return -ENOMEM; | 306 | return PTR_ERR(dw_wdt.regs); |
| 307 | 307 | ||
| 308 | dw_wdt.clk = clk_get(&pdev->dev, NULL); | 308 | dw_wdt.clk = clk_get(&pdev->dev, NULL); |
| 309 | if (IS_ERR(dw_wdt.clk)) | 309 | if (IS_ERR(dw_wdt.clk)) |
diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c index 9a45d0294cf4..ff908823688c 100644 --- a/drivers/watchdog/imx2_wdt.c +++ b/drivers/watchdog/imx2_wdt.c | |||
| @@ -262,11 +262,9 @@ static int __init imx2_wdt_probe(struct platform_device *pdev) | |||
| 262 | return -ENODEV; | 262 | return -ENODEV; |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | imx2_wdt.base = devm_request_and_ioremap(&pdev->dev, res); | 265 | imx2_wdt.base = devm_ioremap_resource(&pdev->dev, res); |
| 266 | if (!imx2_wdt.base) { | 266 | if (IS_ERR(imx2_wdt.base)) |
| 267 | dev_err(&pdev->dev, "ioremap failed\n"); | 267 | return PTR_ERR(imx2_wdt.base); |
| 268 | return -ENOMEM; | ||
| 269 | } | ||
| 270 | 268 | ||
| 271 | imx2_wdt.clk = clk_get(&pdev->dev, NULL); | 269 | imx2_wdt.clk = clk_get(&pdev->dev, NULL); |
| 272 | if (IS_ERR(imx2_wdt.clk)) { | 270 | if (IS_ERR(imx2_wdt.clk)) { |
| @@ -342,17 +340,7 @@ static struct platform_driver imx2_wdt_driver = { | |||
| 342 | }, | 340 | }, |
| 343 | }; | 341 | }; |
| 344 | 342 | ||
| 345 | static int __init imx2_wdt_init(void) | 343 | module_platform_driver_probe(imx2_wdt_driver, imx2_wdt_probe); |
| 346 | { | ||
| 347 | return platform_driver_probe(&imx2_wdt_driver, imx2_wdt_probe); | ||
| 348 | } | ||
| 349 | module_init(imx2_wdt_init); | ||
| 350 | |||
| 351 | static void __exit imx2_wdt_exit(void) | ||
| 352 | { | ||
| 353 | platform_driver_unregister(&imx2_wdt_driver); | ||
| 354 | } | ||
| 355 | module_exit(imx2_wdt_exit); | ||
| 356 | 344 | ||
| 357 | MODULE_AUTHOR("Wolfram Sang"); | 345 | MODULE_AUTHOR("Wolfram Sang"); |
| 358 | MODULE_DESCRIPTION("Watchdog driver for IMX2 and later"); | 346 | MODULE_DESCRIPTION("Watchdog driver for IMX2 and later"); |
diff --git a/drivers/watchdog/jz4740_wdt.c b/drivers/watchdog/jz4740_wdt.c index a61408fa0c94..1cb25f69a96d 100644 --- a/drivers/watchdog/jz4740_wdt.c +++ b/drivers/watchdog/jz4740_wdt.c | |||
| @@ -171,9 +171,9 @@ static int jz4740_wdt_probe(struct platform_device *pdev) | |||
| 171 | watchdog_set_drvdata(jz4740_wdt, drvdata); | 171 | watchdog_set_drvdata(jz4740_wdt, drvdata); |
| 172 | 172 | ||
| 173 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 173 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 174 | drvdata->base = devm_request_and_ioremap(&pdev->dev, res); | 174 | drvdata->base = devm_ioremap_resource(&pdev->dev, res); |
| 175 | if (drvdata->base == NULL) { | 175 | if (IS_ERR(drvdata->base)) { |
| 176 | ret = -EBUSY; | 176 | ret = PTR_ERR(drvdata->base); |
| 177 | goto err_out; | 177 | goto err_out; |
| 178 | } | 178 | } |
| 179 | 179 | ||
diff --git a/drivers/watchdog/lantiq_wdt.c b/drivers/watchdog/lantiq_wdt.c index 79fe01b42339..088fd0c9d888 100644 --- a/drivers/watchdog/lantiq_wdt.c +++ b/drivers/watchdog/lantiq_wdt.c | |||
| @@ -197,11 +197,9 @@ ltq_wdt_probe(struct platform_device *pdev) | |||
| 197 | return -ENOENT; | 197 | return -ENOENT; |
| 198 | } | 198 | } |
| 199 | 199 | ||
| 200 | ltq_wdt_membase = devm_request_and_ioremap(&pdev->dev, res); | 200 | ltq_wdt_membase = devm_ioremap_resource(&pdev->dev, res); |
| 201 | if (!ltq_wdt_membase) { | 201 | if (IS_ERR(ltq_wdt_membase)) |
| 202 | dev_err(&pdev->dev, "cannot remap I/O memory region\n"); | 202 | return PTR_ERR(ltq_wdt_membase); |
| 203 | return -ENOMEM; | ||
| 204 | } | ||
| 205 | 203 | ||
| 206 | /* we do not need to enable the clock as it is always running */ | 204 | /* we do not need to enable the clock as it is always running */ |
| 207 | clk = clk_get_io(); | 205 | clk = clk_get_io(); |
diff --git a/drivers/watchdog/max63xx_wdt.c b/drivers/watchdog/max63xx_wdt.c index 773c661723ca..cc9d328086ed 100644 --- a/drivers/watchdog/max63xx_wdt.c +++ b/drivers/watchdog/max63xx_wdt.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | * another interface, some abstraction will have to be introduced. | 14 | * another interface, some abstraction will have to be introduced. |
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | #include <linux/err.h> | ||
| 17 | #include <linux/module.h> | 18 | #include <linux/module.h> |
| 18 | #include <linux/moduleparam.h> | 19 | #include <linux/moduleparam.h> |
| 19 | #include <linux/types.h> | 20 | #include <linux/types.h> |
| @@ -198,9 +199,9 @@ static int max63xx_wdt_probe(struct platform_device *pdev) | |||
| 198 | heartbeat = current_timeout->twd; | 199 | heartbeat = current_timeout->twd; |
| 199 | 200 | ||
| 200 | wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 201 | wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 201 | wdt_base = devm_request_and_ioremap(&pdev->dev, wdt_mem); | 202 | wdt_base = devm_ioremap_resource(&pdev->dev, wdt_mem); |
| 202 | if (!wdt_base) | 203 | if (IS_ERR(wdt_base)) |
| 203 | return -ENOMEM; | 204 | return PTR_ERR(wdt_base); |
| 204 | 205 | ||
| 205 | max63xx_wdt_dev.timeout = heartbeat; | 206 | max63xx_wdt_dev.timeout = heartbeat; |
| 206 | watchdog_set_nowayout(&max63xx_wdt_dev, nowayout); | 207 | watchdog_set_nowayout(&max63xx_wdt_dev, nowayout); |
diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c index dcba5dab6c29..de1f3fa1d787 100644 --- a/drivers/watchdog/pnx4008_wdt.c +++ b/drivers/watchdog/pnx4008_wdt.c | |||
| @@ -155,9 +155,9 @@ static int pnx4008_wdt_probe(struct platform_device *pdev) | |||
| 155 | heartbeat = DEFAULT_HEARTBEAT; | 155 | heartbeat = DEFAULT_HEARTBEAT; |
| 156 | 156 | ||
| 157 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 157 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 158 | wdt_base = devm_request_and_ioremap(&pdev->dev, r); | 158 | wdt_base = devm_ioremap_resource(&pdev->dev, r); |
| 159 | if (!wdt_base) | 159 | if (IS_ERR(wdt_base)) |
| 160 | return -EADDRINUSE; | 160 | return PTR_ERR(wdt_base); |
| 161 | 161 | ||
| 162 | wdt_clk = clk_get(&pdev->dev, NULL); | 162 | wdt_clk = clk_get(&pdev->dev, NULL); |
| 163 | if (IS_ERR(wdt_clk)) | 163 | if (IS_ERR(wdt_clk)) |
diff --git a/drivers/watchdog/txx9wdt.c b/drivers/watchdog/txx9wdt.c index 98e16373e640..88f23c5cfddb 100644 --- a/drivers/watchdog/txx9wdt.c +++ b/drivers/watchdog/txx9wdt.c | |||
| @@ -121,9 +121,9 @@ static int __init txx9wdt_probe(struct platform_device *dev) | |||
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | res = platform_get_resource(dev, IORESOURCE_MEM, 0); | 123 | res = platform_get_resource(dev, IORESOURCE_MEM, 0); |
| 124 | txx9wdt_reg = devm_request_and_ioremap(&dev->dev, res); | 124 | txx9wdt_reg = devm_ioremap_resource(&dev->dev, res); |
| 125 | if (!txx9wdt_reg) { | 125 | if (IS_ERR(txx9wdt_reg)) { |
| 126 | ret = -EBUSY; | 126 | ret = PTR_ERR(txx9wdt_reg); |
| 127 | goto exit; | 127 | goto exit; |
| 128 | } | 128 | } |
| 129 | 129 | ||
| @@ -172,18 +172,7 @@ static struct platform_driver txx9wdt_driver = { | |||
| 172 | }, | 172 | }, |
| 173 | }; | 173 | }; |
| 174 | 174 | ||
| 175 | static int __init watchdog_init(void) | 175 | module_platform_driver_probe(txx9wdt_driver, txx9wdt_probe); |
| 176 | { | ||
| 177 | return platform_driver_probe(&txx9wdt_driver, txx9wdt_probe); | ||
| 178 | } | ||
| 179 | |||
| 180 | static void __exit watchdog_exit(void) | ||
| 181 | { | ||
| 182 | platform_driver_unregister(&txx9wdt_driver); | ||
| 183 | } | ||
| 184 | |||
| 185 | module_init(watchdog_init); | ||
| 186 | module_exit(watchdog_exit); | ||
| 187 | 176 | ||
| 188 | MODULE_DESCRIPTION("TXx9 Watchdog Driver"); | 177 | MODULE_DESCRIPTION("TXx9 Watchdog Driver"); |
| 189 | MODULE_LICENSE("GPL"); | 178 | MODULE_LICENSE("GPL"); |
