diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 15:05:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 15:05:51 -0500 |
commit | 06991c28f37ad68e5c03777f5c3b679b56e3dac1 (patch) | |
tree | 4be75788e21c3c644fe6d39abf47693a171cf4f8 /drivers | |
parent | 460dc1eecf37263c8e3b17685ef236f0d236facb (diff) | |
parent | 74fef7a8fd1d2bd94f925d6638bb4c3049e7c381 (diff) |
Merge tag 'driver-core-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core patches from Greg Kroah-Hartman:
"Here is the big driver core merge for 3.9-rc1
There are two major series here, both of which touch lots of drivers
all over the kernel, and will cause you some merge conflicts:
- add a new function called devm_ioremap_resource() to properly be
able to check return values.
- remove CONFIG_EXPERIMENTAL
Other than those patches, there's not much here, some minor fixes and
updates"
Fix up trivial conflicts
* tag 'driver-core-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (221 commits)
base: memory: fix soft/hard_offline_page permissions
drivercore: Fix ordering between deferred_probe and exiting initcalls
backlight: fix class_find_device() arguments
TTY: mark tty_get_device call with the proper const values
driver-core: constify data for class_find_device()
firmware: Ignore abort check when no user-helper is used
firmware: Reduce ifdef CONFIG_FW_LOADER_USER_HELPER
firmware: Make user-mode helper optional
firmware: Refactoring for splitting user-mode helper code
Driver core: treat unregistered bus_types as having no devices
watchdog: Convert to devm_ioremap_resource()
thermal: Convert to devm_ioremap_resource()
spi: Convert to devm_ioremap_resource()
power: Convert to devm_ioremap_resource()
mtd: Convert to devm_ioremap_resource()
mmc: Convert to devm_ioremap_resource()
mfd: Convert to devm_ioremap_resource()
media: Convert to devm_ioremap_resource()
iommu: Convert to devm_ioremap_resource()
drm: Convert to devm_ioremap_resource()
...
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"); |