Merge 3.8-rc5 into driver-core-next
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 26 Jan 2013 05:06:30 +0000 (21:06 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 26 Jan 2013 05:06:30 +0000 (21:06 -0800)
This resolves a gpio driver merge issue pointed out in linux-next.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
359 files changed:
Documentation/CodingStyle
Documentation/DocBook/kernel-hacking.tmpl
Documentation/DocBook/kgdb.tmpl
Documentation/driver-model/devres.txt
Documentation/dynamic-debug-howto.txt
Documentation/intel_txt.txt
Documentation/laptops/thinkpad-acpi.txt
Documentation/zh_CN/CodingStyle
arch/alpha/Kconfig
arch/arm/Kconfig
arch/arm/Kconfig.debug
arch/arm/mach-omap2/gpmc.c
arch/arm/mach-s3c24xx/Kconfig
arch/arm/mach-tegra/tegra2_emc.c
arch/arm/plat-omap/dmtimer.c
arch/arm/plat-samsung/adc.c
arch/blackfin/Kconfig
arch/cris/arch-v32/drivers/Kconfig
arch/ia64/Kconfig
arch/ia64/kvm/Kconfig
arch/ia64/xen/Kconfig
arch/microblaze/platform/Kconfig.platform
arch/mips/Kconfig
arch/mips/jazz/Kconfig
arch/mips/lantiq/xway/dma.c
arch/mips/lantiq/xway/gptu.c
arch/mips/pci/pci-lantiq.c
arch/mips/sgi-ip27/Kconfig
arch/parisc/Kconfig
arch/powerpc/Kconfig
arch/powerpc/kvm/Kconfig
arch/powerpc/platforms/85xx/Kconfig
arch/powerpc/platforms/cell/Kconfig
arch/powerpc/platforms/ps3/Kconfig
arch/s390/Kconfig
arch/s390/kvm/Kconfig
arch/sh/Kconfig
arch/sh/Kconfig.cpu
arch/sh/mm/Kconfig
arch/tile/kvm/Kconfig
arch/um/Kconfig.net
arch/um/Kconfig.um
arch/x86/Kconfig
arch/x86/um/Kconfig
crypto/Kconfig
drivers/acpi/Kconfig
drivers/amba/tegra-ahb.c
drivers/ata/Kconfig
drivers/ata/pata_ep93xx.c
drivers/base/bus.c
drivers/base/core.c
drivers/base/dma-buf.c
drivers/block/paride/Kconfig
drivers/char/hw_random/exynos-rng.c
drivers/char/hw_random/omap-rng.c
drivers/char/hw_random/tx4939-rng.c
drivers/cpufreq/Kconfig.arm
drivers/cpufreq/Kconfig.x86
drivers/dma/dw_dmac.c
drivers/dma/imx-dma.c
drivers/dma/mmp_pdma.c
drivers/dma/mmp_tdma.c
drivers/dma/tegra20-apb-dma.c
drivers/edac/Kconfig
drivers/gpio/Kconfig
drivers/gpio/gpio-mvebu.c
drivers/gpio/gpio-mxs.c
drivers/gpio/gpio-spear-spics.c
drivers/gpio/gpio-stp-xway.c
drivers/gpio/gpio-tegra.c
drivers/gpu/drm/ast/Kconfig
drivers/gpu/drm/cirrus/Kconfig
drivers/gpu/drm/exynos/exynos_drm_fimc.c
drivers/gpu/drm/exynos/exynos_drm_fimd.c
drivers/gpu/drm/exynos/exynos_drm_g2d.c
drivers/gpu/drm/exynos/exynos_drm_gsc.c
drivers/gpu/drm/exynos/exynos_drm_rotator.c
drivers/gpu/drm/exynos/exynos_hdmi.c
drivers/gpu/drm/gma500/Kconfig
drivers/gpu/drm/mgag200/Kconfig
drivers/gpu/drm/tegra/dc.c
drivers/gpu/drm/tegra/hdmi.c
drivers/gpu/drm/tegra/host1x.c
drivers/gpu/drm/udl/Kconfig
drivers/i2c/Kconfig
drivers/i2c/busses/Kconfig
drivers/i2c/busses/i2c-at91.c
drivers/i2c/busses/i2c-imx.c
drivers/i2c/busses/i2c-ocores.c
drivers/i2c/busses/i2c-omap.c
drivers/i2c/busses/i2c-rcar.c
drivers/i2c/busses/i2c-s3c2410.c
drivers/i2c/busses/i2c-sirf.c
drivers/i2c/busses/i2c-stu300.c
drivers/i2c/busses/i2c-tegra.c
drivers/i2c/busses/i2c-xlr.c
drivers/i2c/muxes/Kconfig
drivers/ide/Kconfig
drivers/idle/Kconfig
drivers/iio/adc/at91_adc.c
drivers/input/keyboard/spear-keyboard.c
drivers/input/serio/arc_ps2.c
drivers/iommu/Kconfig
drivers/iommu/tegra-smmu.c
drivers/isdn/hisax/Kconfig
drivers/leds/Kconfig
drivers/lguest/Kconfig
drivers/macintosh/Kconfig
drivers/media/Kconfig
drivers/media/pci/cx25821/Kconfig
drivers/media/platform/Kconfig
drivers/media/platform/exynos-gsc/gsc-core.c
drivers/media/platform/mx2_emmaprp.c
drivers/media/platform/s3c-camif/camif-core.c
drivers/media/platform/s5p-fimc/Kconfig
drivers/media/platform/s5p-fimc/fimc-core.c
drivers/media/platform/s5p-fimc/fimc-lite.c
drivers/media/platform/s5p-fimc/mipi-csis.c
drivers/media/platform/s5p-g2d/g2d.c
drivers/media/platform/s5p-jpeg/jpeg-core.c
drivers/media/platform/s5p-mfc/s5p_mfc.c
drivers/media/platform/s5p-tv/Kconfig
drivers/media/platform/soc_camera/mx2_camera.c
drivers/media/usb/dvb-usb-v2/Kconfig
drivers/media/usb/pvrusb2/Kconfig
drivers/memory/emif.c
drivers/memory/tegra20-mc.c
drivers/memory/tegra30-mc.c
drivers/memstick/Kconfig
drivers/memstick/host/Kconfig
drivers/mfd/intel_msic.c
drivers/misc/atmel-ssc.c
drivers/mmc/core/Kconfig
drivers/mmc/host/Kconfig
drivers/mmc/host/dw_mmc-pltfm.c
drivers/mmc/host/mxs-mmc.c
drivers/mmc/host/sdhci-s3c.c
drivers/mtd/Kconfig
drivers/mtd/chips/Kconfig
drivers/mtd/devices/Kconfig
drivers/mtd/devices/spear_smi.c
drivers/mtd/maps/autcpu12-nvram.c
drivers/mtd/maps/lantiq-flash.c
drivers/mtd/nand/Kconfig
drivers/mtd/nand/fsmc_nand.c
drivers/mtd/nand/lpc32xx_mlc.c
drivers/mtd/nand/lpc32xx_slc.c
drivers/mtd/nand/mxc_nand.c
drivers/mtd/nand/s3c2410.c
drivers/mtd/nand/txx9ndfmc.c
drivers/net/Kconfig
drivers/net/ethernet/8390/Kconfig
drivers/net/ethernet/atheros/Kconfig
drivers/net/ethernet/dec/tulip/Kconfig
drivers/net/ethernet/fujitsu/Kconfig
drivers/net/ethernet/i825xx/Kconfig
drivers/net/ethernet/icplus/Kconfig
drivers/net/ethernet/intel/Kconfig
drivers/net/ethernet/microchip/Kconfig
drivers/net/ethernet/natsemi/Kconfig
drivers/net/ethernet/packetengines/Kconfig
drivers/net/ethernet/racal/Kconfig
drivers/net/ethernet/realtek/Kconfig
drivers/net/ethernet/seeq/Kconfig
drivers/net/ethernet/silan/Kconfig
drivers/net/ethernet/stmicro/stmmac/Kconfig
drivers/net/ethernet/sun/Kconfig
drivers/net/ethernet/ti/Kconfig
drivers/net/hippi/Kconfig
drivers/net/irda/Kconfig
drivers/net/ppp/Kconfig
drivers/net/team/Kconfig
drivers/net/usb/Kconfig
drivers/net/wan/Kconfig
drivers/net/wireless/Kconfig
drivers/net/wireless/ath/ath6kl/Kconfig
drivers/net/wireless/ath/carl9170/Kconfig
drivers/net/wireless/ath/wil6210/dbg_hexdump.h
drivers/net/wireless/b43/Kconfig
drivers/net/wireless/ipw2x00/Kconfig
drivers/net/wireless/p54/Kconfig
drivers/net/wireless/rt2x00/Kconfig
drivers/net/wireless/rtl818x/Kconfig
drivers/net/wireless/rtlwifi/Kconfig
drivers/net/wireless/zd1211rw/Kconfig
drivers/pcmcia/Kconfig
drivers/pinctrl/pinctrl-at91.c
drivers/pinctrl/pinctrl-bcm2835.c
drivers/pinctrl/pinctrl-coh901.c
drivers/pinctrl/pinctrl-exynos5440.c
drivers/pinctrl/pinctrl-falcon.c
drivers/pinctrl/pinctrl-imx.c
drivers/pinctrl/pinctrl-nomadik.c
drivers/pinctrl/pinctrl-pxa3xx.c
drivers/pinctrl/pinctrl-samsung.c
drivers/pinctrl/pinctrl-u300.c
drivers/pinctrl/pinctrl-xway.c
drivers/pinctrl/spear/pinctrl-plgpio.c
drivers/platform/x86/Kconfig
drivers/power/jz4740-battery.c
drivers/pwm/pwm-imx.c
drivers/pwm/pwm-lpc32xx.c
drivers/pwm/pwm-mxs.c
drivers/pwm/pwm-puv3.c
drivers/pwm/pwm-pxa.c
drivers/pwm/pwm-spear.c
drivers/pwm/pwm-tegra.c
drivers/pwm/pwm-tiecap.c
drivers/pwm/pwm-tiehrpwm.c
drivers/pwm/pwm-tipwmss.c
drivers/pwm/pwm-vt8500.c
drivers/remoteproc/Kconfig
drivers/rpmsg/Kconfig
drivers/rtc/rtc-s3c.c
drivers/rtc/rtc-snvs.c
drivers/rtc/rtc-spear.c
drivers/rtc/rtc-tegra.c
drivers/sbus/char/Kconfig
drivers/scsi/Kconfig
drivers/scsi/arm/Kconfig
drivers/scsi/device_handler/Kconfig
drivers/spi/Kconfig
drivers/spi/spi-ep93xx.c
drivers/spi/spi-mxs.c
drivers/spi/spi-omap2-mcspi.c
drivers/spi/spi-s3c64xx.c
drivers/spi/spi-sirf.c
drivers/spi/spi-tegra20-sflash.c
drivers/spi/spi-tegra20-slink.c
drivers/staging/iio/adc/mxs-lradc.c
drivers/staging/nvec/nvec.c
drivers/staging/omap-thermal/omap-bandgap.c
drivers/thermal/exynos_thermal.c
drivers/tty/serial/sccnxp.c
drivers/usb/chipidea/usbmisc_imx6q.c
drivers/usb/gadget/at91_udc.c
drivers/usb/gadget/atmel_usba_udc.c
drivers/usb/gadget/bcm63xx_udc.c
drivers/usb/gadget/fusb300_udc.c
drivers/usb/gadget/imx_udc.c
drivers/usb/gadget/lpc32xx_udc.c
drivers/usb/gadget/m66592-udc.c
drivers/usb/gadget/pxa25x_udc.c
drivers/usb/gadget/r8a66597-udc.c
drivers/usb/gadget/s3c-hsotg.c
drivers/usb/gadget/s3c-hsudc.c
drivers/usb/host/ehci-atmel.c
drivers/usb/host/ehci-grlib.c
drivers/usb/host/ehci-mxc.c
drivers/usb/host/ehci-platform.c
drivers/usb/host/ehci-ppc-of.c
drivers/usb/host/ehci-sead3.c
drivers/usb/host/ehci-sh.c
drivers/usb/host/ehci-vt8500.c
drivers/usb/host/ehci-xilinx-of.c
drivers/usb/host/ohci-nxp.c
drivers/usb/host/ohci-platform.c
drivers/usb/host/ohci-s3c2410.c
drivers/usb/musb/musb_dsps.c
drivers/usb/musb/omap2430.c
drivers/usb/otg/gpio_vbus.c
drivers/usb/otg/msm_otg.c
drivers/usb/otg/mxs-phy.c
drivers/usb/phy/mv_u3d_phy.c
drivers/usb/phy/omap-usb2.c
drivers/usb/renesas_usbhs/common.c
drivers/vhost/Kconfig
drivers/vhost/Kconfig.tcm
drivers/video/Kconfig
drivers/video/console/Kconfig
drivers/video/exynos/exynos_dp_core.c
drivers/video/geode/Kconfig
drivers/video/jz4740_fb.c
drivers/video/omap/Kconfig
drivers/video/omap2/dss/hdmi.c
drivers/video/omap2/vrfb.c
drivers/video/s3c-fb.c
drivers/virtio/Kconfig
drivers/vlynq/Kconfig
drivers/w1/masters/omap_hdq.c
drivers/watchdog/ar7_wdt.c
drivers/watchdog/at32ap700x_wdt.c
drivers/watchdog/at91sam9_wdt.c
drivers/watchdog/coh901327_wdt.c
drivers/watchdog/dw_wdt.c
drivers/watchdog/imx2_wdt.c
drivers/watchdog/jz4740_wdt.c
drivers/watchdog/lantiq_wdt.c
drivers/watchdog/max63xx_wdt.c
drivers/watchdog/pnx4008_wdt.c
drivers/watchdog/txx9wdt.c
fs/9p/Kconfig
fs/adfs/Kconfig
fs/affs/Kconfig
fs/afs/Kconfig
fs/befs/Kconfig
fs/bfs/Kconfig
fs/btrfs/Kconfig
fs/ceph/Kconfig
fs/cifs/Kconfig
fs/debugfs/inode.c
fs/ecryptfs/Kconfig
fs/efs/Kconfig
fs/hfs/Kconfig
fs/jffs2/Kconfig
fs/logfs/Kconfig
fs/nfsd/Kconfig
fs/nilfs2/Kconfig
fs/sysfs/mount.c
fs/ufs/Kconfig
fs/xfs/Kconfig
include/linux/debugfs.h
include/linux/device.h
include/linux/dynamic_debug.h
include/linux/platform_device.h
include/linux/printk.h
init/Kconfig
kernel/gcov/Kconfig
lib/Kconfig
lib/Kconfig.debug
lib/Kconfig.kgdb
lib/devres.c
lib/dynamic_debug.c
lib/hexdump.c
mm/Kconfig
net/9p/Kconfig
net/Kconfig
net/ceph/Kconfig
net/dccp/Kconfig
net/dccp/ccids/Kconfig
net/decnet/Kconfig
net/decnet/netfilter/Kconfig
net/ieee802154/Kconfig
net/ipv4/Kconfig
net/ipv4/netfilter/Kconfig
net/ipv6/Kconfig
net/l2tp/Kconfig
net/lapb/Kconfig
net/mac80211/Kconfig
net/mac802154/Kconfig
net/netfilter/Kconfig
net/rds/Kconfig
net/rxrpc/Kconfig
net/sctp/Kconfig
net/sunrpc/Kconfig
net/tipc/Kconfig
net/wanrouter/Kconfig
net/x25/Kconfig
net/xfrm/Kconfig
scripts/coccinelle/api/devm_ioremap_resource.cocci [new file with mode: 0644]
sound/soc/cirrus/ep93xx-ac97.c
sound/soc/cirrus/ep93xx-i2s.c
sound/soc/codecs/jz4740.c
sound/soc/fsl/imx-audmux.c
sound/soc/fsl/imx-ssi.c
sound/soc/kirkwood/kirkwood-i2s.c
sound/soc/mxs/mxs-saif.c
sound/soc/pxa/mmp-sspa.c
tools/lguest/lguest.txt

index 495e5ba..e00b8f0 100644 (file)
@@ -546,15 +546,7 @@ config AUDIT
          logging of avc messages output).  Does not do system-call
          auditing without CONFIG_AUDITSYSCALL.
 
-Features that might still be considered unstable should be defined as
-dependent on "EXPERIMENTAL":
-
-config SLUB
-       depends on EXPERIMENTAL && !ARCH_USES_SLAB_PAGE_STRUCT
-       bool "SLUB (Unqueued Allocator)"
-       ...
-
-while seriously dangerous features (such as write support for certain
+Seriously dangerous features (such as write support for certain
 filesystems) should advertise this prominently in their prompt string:
 
 config ADFS_FS_RW
index eee7142..22e0bd1 100644 (file)
@@ -1185,13 +1185,6 @@ static struct block_device_operations opt_fops = {
     </para>
 
     <para>
-     You may well want to make your CONFIG option only visible if
-     <symbol>CONFIG_EXPERIMENTAL</symbol> is enabled: this serves as a
-     warning to users.  There many other fancy things you can do: see
-     the various <filename>Kconfig</filename> files for ideas.
-    </para>
-
-    <para>
      In your description of the option, make sure you address both the
      expert user and the user who knows nothing about your feature.  Mention
      incompatibilities and issues here.  <emphasis> Definitely
index 4ee4ba3..f77358f 100644 (file)
   <sect1 id="CompileKGDB">
     <title>Kernel config options for kgdb</title>
     <para>
-    To enable <symbol>CONFIG_KGDB</symbol> you should first turn on
-    "Prompt for development and/or incomplete code/drivers"
-    (CONFIG_EXPERIMENTAL) in  "General setup", then under the
-    "Kernel debugging" select "KGDB: kernel debugger".
+    To enable <symbol>CONFIG_KGDB</symbol> you should look under
+    "Kernel debugging" and select "KGDB: kernel debugger".
     </para>
     <para>
     While it is not a hard requirement that you have symbols in your
index 43cff70..b467145 100644 (file)
@@ -266,7 +266,8 @@ IOMAP
   devm_ioremap()
   devm_ioremap_nocache()
   devm_iounmap()
-  devm_request_and_ioremap() : checks resource, requests region, ioremaps
+  devm_ioremap_resource() : checks resource, requests memory region, ioremaps
+  devm_request_and_ioremap() : obsoleted by devm_ioremap_resource()
   pcim_iomap()
   pcim_iounmap()
   pcim_iomap_table()   : array of mapped addresses indexed by BAR
@@ -288,3 +289,7 @@ PINCTRL
 PWM
   devm_pwm_get()
   devm_pwm_put()
+
+PHY
+  devm_usb_get_phy()
+  devm_usb_put_phy()
index 6e16849..72322c6 100644 (file)
@@ -6,8 +6,16 @@ This document describes how to use the dynamic debug (dyndbg) feature.
 
 Dynamic debug is designed to allow you to dynamically enable/disable
 kernel code to obtain additional kernel information.  Currently, if
-CONFIG_DYNAMIC_DEBUG is set, then all pr_debug()/dev_dbg() calls can
-be dynamically enabled per-callsite.
+CONFIG_DYNAMIC_DEBUG is set, then all pr_debug()/dev_dbg() and
+print_hex_dump_debug()/print_hex_dump_bytes() calls can be dynamically
+enabled per-callsite.
+
+If CONFIG_DYNAMIC_DEBUG is not set, print_hex_dump_debug() is just
+shortcut for print_hex_dump(KERN_DEBUG).
+
+For print_hex_dump_debug()/print_hex_dump_bytes(), format string is
+its 'prefix_str' argument, if it is constant string; or "hexdump"
+in case 'prefix_str' is build dynamically.
 
 Dynamic debug has even more useful features:
 
@@ -202,6 +210,9 @@ The flags are:
   t    Include thread ID in messages not generated from interrupt context
   _    No flags are set. (Or'd with others on input)
 
+For print_hex_dump_debug() and print_hex_dump_bytes(), only 'p' flag
+have meaning, other flags ignored.
+
 For display, the flags are preceded by '='
 (mnemonic: what the flags are currently equal to).
 
index 849de1a..91d89c5 100644 (file)
@@ -192,7 +192,7 @@ grub.conf needs to be modified as follows:
 
 The kernel option for enabling Intel TXT support is found under the
 Security top-level menu and is called "Enable Intel(R) Trusted
-Execution Technology (TXT)".  It is marked as EXPERIMENTAL and
+Execution Technology (TXT)".  It is considered EXPERIMENTAL and
 depends on the generic x86 support (to allow maximum flexibility in
 kernel build options), since the tboot code will detect whether the
 platform actually supports Intel TXT and thus whether any of the
index 9d66682..cf7bc6c 100644 (file)
@@ -1398,7 +1398,7 @@ Sysfs notes:
 EXPERIMENTAL: UWB
 -----------------
 
-This feature is marked EXPERIMENTAL because it has not been extensively
+This feature is considered EXPERIMENTAL because it has not been extensively
 tested and validated in various ThinkPad models yet.  The feature may not
 work as expected. USE WITH CAUTION! To use this feature, you need to supply
 the experimental=1 parameter when loading the module.
index ecd9307..654afd7 100644 (file)
@@ -462,13 +462,6 @@ config AUDIT
          logging of avc messages output).  Does not do system-call
          auditing without CONFIG_AUDITSYSCALL.
 
-仍然被认为不够稳定的功能应该被定义为依赖于“EXPERIMENTAL”:
-
-config SLUB
-       depends on EXPERIMENTAL && !ARCH_USES_SLAB_PAGE_STRUCT
-       bool "SLUB (Unqueued Allocator)"
-       ...
-
 而那些危险的功能(比如某些文件系统的写支持)应该在它们的提示字符串里显著的声明这
 一点:
 
index 9d5904c..3387aeb 100644 (file)
@@ -556,8 +556,7 @@ config NR_CPUS
           with working support have a maximum of 4 CPUs.
 
 config ARCH_DISCONTIGMEM_ENABLE
-       bool "Discontiguous Memory Support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "Discontiguous Memory Support"
        help
          Say Y to support efficient handling of discontiguous physical memory,
          for architectures which are either NUMA (Non-Uniform Memory Access)
index 67874b8..62c53dc 100644 (file)
@@ -1531,7 +1531,6 @@ config SMP
 
 config SMP_ON_UP
        bool "Allow booting SMP kernel on uniprocessor systems (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        depends on SMP && !XIP_KERNEL
        default y
        help
@@ -1719,7 +1718,7 @@ config AEABI
 
 config OABI_COMPAT
        bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)"
-       depends on AEABI && EXPERIMENTAL && !THUMB2_KERNEL
+       depends on AEABI && !THUMB2_KERNEL
        default y
        help
          This option preserves the old syscall interface along with the
@@ -1843,7 +1842,6 @@ config SECCOMP
 
 config CC_STACKPROTECTOR
        bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        help
          This option turns on the -fstack-protector GCC feature. This
          feature puts, at the beginning of functions, a canary value on
@@ -1860,7 +1858,7 @@ config XEN_DOM0
 
 config XEN
        bool "Xen guest support on ARM (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && ARM && OF
+       depends on ARM && OF
        depends on CPU_V7 && !CPU_V6
        help
          Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
@@ -1929,7 +1927,7 @@ config ZBOOT_ROM
 
 choice
        prompt "Include SD/MMC loader in zImage (EXPERIMENTAL)"
-       depends on ZBOOT_ROM && ARCH_SH7372 && EXPERIMENTAL
+       depends on ZBOOT_ROM && ARCH_SH7372
        default ZBOOT_ROM_NONE
        help
          Include experimental SD/MMC loading code in the ROM-able zImage.
@@ -1958,7 +1956,7 @@ endchoice
 
 config ARM_APPENDED_DTB
        bool "Use appended device tree blob to zImage (EXPERIMENTAL)"
-       depends on OF && !ZBOOT_ROM && EXPERIMENTAL
+       depends on OF && !ZBOOT_ROM
        help
          With this option, the boot code will look for a device tree binary
          (DTB) appended to zImage
@@ -2076,7 +2074,7 @@ config XIP_PHYS_ADDR
 
 config KEXEC
        bool "Kexec system call (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && (!SMP || HOTPLUG_CPU)
+       depends on (!SMP || HOTPLUG_CPU)
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
@@ -2098,7 +2096,6 @@ config ATAGS_PROC
 
 config CRASH_DUMP
        bool "Build kdump crash kernel (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        help
          Generate crash dump after being started by kexec. This should
          be normally only set in special crash dump kernels which are
@@ -2165,7 +2162,7 @@ config CPU_FREQ_S3C
 
 config CPU_FREQ_S3C24XX
        bool "CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL)"
-       depends on ARCH_S3C24XX && CPU_FREQ && EXPERIMENTAL
+       depends on ARCH_S3C24XX && CPU_FREQ
        select CPU_FREQ_S3C
        help
          This enables the CPUfreq driver for the Samsung S3C24XX family
@@ -2177,7 +2174,7 @@ config CPU_FREQ_S3C24XX
 
 config CPU_FREQ_S3C24XX_PLL
        bool "Support CPUfreq changing of PLL frequency (EXPERIMENTAL)"
-       depends on CPU_FREQ_S3C24XX && EXPERIMENTAL
+       depends on CPU_FREQ_S3C24XX
        help
          Compile in support for changing the PLL frequency from the
          S3C24XX series CPUfreq driver. The PLL takes time to settle
@@ -2240,7 +2237,7 @@ config FPE_NWFPE_XP
 
 config FPE_FASTFPE
        bool "FastFPE math emulation (EXPERIMENTAL)"
-       depends on (!AEABI || OABI_COMPAT) && !CPU_32v3 && EXPERIMENTAL
+       depends on (!AEABI || OABI_COMPAT) && !CPU_32v3
        ---help---
          Say Y here to include the FAST floating point emulator in the kernel.
          This is an experimental much faster emulator which now also has full
index 661030d..fc2a591 100644 (file)
@@ -32,7 +32,7 @@ config FRAME_POINTER
 
 config ARM_UNWIND
        bool "Enable stack unwinding support (EXPERIMENTAL)"
-       depends on AEABI && EXPERIMENTAL
+       depends on AEABI
        default y
        help
          This option enables stack unwinding support in the kernel
index 8033cb7..64bac53 100644 (file)
@@ -1134,11 +1134,9 @@ static int gpmc_probe(struct platform_device *pdev)
        phys_base = res->start;
        mem_size = resource_size(res);
 
-       gpmc_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!gpmc_base) {
-               dev_err(&pdev->dev, "error: request memory / ioremap\n");
-               return -EADDRNOTAVAIL;
-       }
+       gpmc_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(gpmc_base))
+               return PTR_ERR(gpmc_base);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (res == NULL)
index 25df14a..3445c4f 100644 (file)
@@ -291,8 +291,8 @@ config MACH_JIVE
          Say Y here if you are using the Logitech Jive.
 
 config MACH_JIVE_SHOW_BOOTLOADER
-       bool "Allow access to bootloader partitions in MTD (EXPERIMENTAL)"
-       depends on MACH_JIVE && EXPERIMENTAL
+       bool "Allow access to bootloader partitions in MTD"
+       depends on MACH_JIVE
 
 config MACH_S3C2413
        bool
index e18aa2f..ce7ce42 100644 (file)
@@ -312,11 +312,9 @@ static int tegra_emc_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       emc_regbase = devm_request_and_ioremap(&pdev->dev, res);
-       if (!emc_regbase) {
-               dev_err(&pdev->dev, "failed to remap registers\n");
-               return -ENOMEM;
-       }
+       emc_regbase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(emc_regbase))
+               return PTR_ERR(emc_regbase);
 
        pdata = pdev->dev.platform_data;
 
index 7b433f3..a0daa2f 100644 (file)
@@ -808,11 +808,9 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
                return  -ENOMEM;
        }
 
-       timer->io_base = devm_request_and_ioremap(dev, mem);
-       if (!timer->io_base) {
-               dev_err(dev, "%s: region already claimed.\n", __func__);
-               return -ENOMEM;
-       }
+       timer->io_base = devm_ioremap_resource(dev, mem);
+       if (IS_ERR(timer->io_base))
+               return PTR_ERR(timer->io_base);
 
        if (dev->of_node) {
                if (of_find_property(dev->of_node, "ti,timer-alwon", NULL))
index 2d676ab..ca07cb1 100644 (file)
@@ -386,11 +386,9 @@ static int s3c_adc_probe(struct platform_device *pdev)
                return -ENXIO;
        }
 
-       adc->regs = devm_request_and_ioremap(dev, regs);
-       if (!adc->regs) {
-               dev_err(dev, "failed to map registers\n");
-               return -ENXIO;
-       }
+       adc->regs = devm_ioremap_resource(dev, regs);
+       if (IS_ERR(adc->regs))
+               return PTR_ERR(adc->regs);
 
        ret = regulator_enable(adc->vdd);
        if (ret)
index b6f3ad5..ca33c8d 100644 (file)
@@ -562,8 +562,7 @@ choice
          accurate - This option is therefore marked experimental.
 
 config BFIN_KERNEL_CLOCK_MEMINIT_CALC
-       bool "Calculate Timings (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "Calculate Timings"
 
 config BFIN_KERNEL_CLOCK_MEMINIT_SPEC
        bool "Provide accurate Timings based on target SCLK"
@@ -1120,7 +1119,7 @@ endchoice
 
 comment "Memory Protection Unit"
 config MPU
-       bool "Enable the memory protection unit (EXPERIMENTAL)"
+       bool "Enable the memory protection unit"
        default n
        help
          Use the processor's MPU to protect applications from accessing
@@ -1442,7 +1441,6 @@ config BFIN_CPU_FREQ
 
 config CPU_VOLTAGE
        bool "CPU Voltage scaling"
-       depends on EXPERIMENTAL
        depends on CPU_FREQ
        default n
        help
index de43aad..af4a486 100644 (file)
@@ -680,7 +680,7 @@ config ETRAX_SPI_MMC_BOARD
 
 config SPI_ETRAX_SSER
        tristate
-       depends on SPI_MASTER && ETRAX_ARCH_V32 && EXPERIMENTAL
+       depends on SPI_MASTER && ETRAX_ARCH_V32
        select SPI_BITBANG
        help
          This enables using an synchronous serial (sser) port as a
@@ -689,7 +689,7 @@ config SPI_ETRAX_SSER
 
 config SPI_ETRAX_GPIO
        tristate
-       depends on SPI_MASTER && ETRAX_ARCH_V32 && EXPERIMENTAL
+       depends on SPI_MASTER && ETRAX_ARCH_V32
        select SPI_BITBANG
        help
          This enables using GPIO pins port as a SPI master controller
index 3279646..ceed9a7 100644 (file)
@@ -375,8 +375,8 @@ config NR_CPUS
          performance hit.
 
 config HOTPLUG_CPU
-       bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
-       depends on SMP && EXPERIMENTAL
+       bool "Support for hot-pluggable CPUs"
+       depends on SMP
        select HOTPLUG
        default n
        ---help---
@@ -555,8 +555,8 @@ config IA64_HP_AML_NFW
 source "drivers/sn/Kconfig"
 
 config KEXEC
-       bool "kexec system call (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
+       bool "kexec system call"
+       depends on !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
index e794752..2cd225f 100644 (file)
@@ -20,7 +20,7 @@ if VIRTUALIZATION
 config KVM
        tristate "Kernel-based Virtual Machine (KVM) support"
        depends on BROKEN
-       depends on HAVE_KVM && MODULES && EXPERIMENTAL
+       depends on HAVE_KVM && MODULES
        # for device assignment:
        depends on PCI
        depends on BROKEN
index 515e082..5d8a06b 100644 (file)
@@ -5,7 +5,7 @@
 config XEN
        bool "Xen hypervisor support"
        default y
-       depends on PARAVIRT && MCKINLEY && IA64_PAGE_SIZE_16KB && EXPERIMENTAL
+       depends on PARAVIRT && MCKINLEY && IA64_PAGE_SIZE_16KB
        select XEN_XENCOMM
        select NO_IDLE_HZ
        # followings are required to save/restore.
index 669c7ee..b174721 100644 (file)
@@ -20,7 +20,7 @@ endchoice
 
 config SELFMOD
        bool "Use self modified code for intc/timer"
-       depends on EXPERIMENTAL && NO_MMU
+       depends on NO_MMU
        default n
        help
          This choice enables self-modified code for interrupt controller
index 2ac626a..e96cf7a 100644 (file)
@@ -170,7 +170,7 @@ config MACH_DECSTATION
        select SYS_HAS_CPU_R3000
        select SYS_HAS_CPU_R4X00
        select SYS_SUPPORTS_32BIT_KERNEL
-       select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
+       select SYS_SUPPORTS_64BIT_KERNEL
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SYS_SUPPORTS_128HZ
        select SYS_SUPPORTS_256HZ
@@ -206,7 +206,7 @@ config MACH_JAZZ
        select ISA
        select SYS_HAS_CPU_R4X00
        select SYS_SUPPORTS_32BIT_KERNEL
-       select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
+       select SYS_SUPPORTS_64BIT_KERNEL
        select SYS_SUPPORTS_100HZ
        help
         This a family of machines based on the MIPS R4030 chipset which was
@@ -396,7 +396,6 @@ config PNX8550_STB810
 
 config PMC_MSP
        bool "PMC-Sierra MSP chipsets"
-       depends on EXPERIMENTAL
        select CEVT_R4K
        select CSRC_R4K
        select DMA_NONCOHERENT
@@ -495,8 +494,7 @@ config SGI_IP27
          here.
 
 config SGI_IP28
-       bool "SGI IP28 (Indigo2 R10k) (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "SGI IP28 (Indigo2 R10k)"
        select FW_ARC
        select FW_ARC64
        select BOOT_ELF64
@@ -554,7 +552,6 @@ config SGI_IP32
 
 config SIBYTE_CRHINE
        bool "Sibyte BCM91120C-CRhine"
-       depends on EXPERIMENTAL
        select BOOT_ELF32
        select DMA_COHERENT
        select SIBYTE_BCM1120
@@ -565,7 +562,6 @@ config SIBYTE_CRHINE
 
 config SIBYTE_CARMEL
        bool "Sibyte BCM91120x-Carmel"
-       depends on EXPERIMENTAL
        select BOOT_ELF32
        select DMA_COHERENT
        select SIBYTE_BCM1120
@@ -576,7 +572,6 @@ config SIBYTE_CARMEL
 
 config SIBYTE_CRHONE
        bool "Sibyte BCM91125C-CRhone"
-       depends on EXPERIMENTAL
        select BOOT_ELF32
        select DMA_COHERENT
        select SIBYTE_BCM1125
@@ -588,7 +583,6 @@ config SIBYTE_CRHONE
 
 config SIBYTE_RHONE
        bool "Sibyte BCM91125E-Rhone"
-       depends on EXPERIMENTAL
        select BOOT_ELF32
        select DMA_COHERENT
        select SIBYTE_BCM1125H
@@ -613,7 +607,6 @@ config SIBYTE_SWARM
 
 config SIBYTE_LITTLESUR
        bool "Sibyte BCM91250C2-LittleSur"
-       depends on EXPERIMENTAL
        select BOOT_ELF32
        select DMA_COHERENT
        select HAVE_PATA_PLATFORM
@@ -627,7 +620,6 @@ config SIBYTE_LITTLESUR
 
 config SIBYTE_SENTOSA
        bool "Sibyte BCM91250E-Sentosa"
-       depends on EXPERIMENTAL
        select BOOT_ELF32
        select DMA_COHERENT
        select NR_CPUS_DEFAULT_2
@@ -676,7 +668,7 @@ config SNI_RM
        select R5000_CPU_SCACHE
        select SYS_HAS_EARLY_PRINTK
        select SYS_SUPPORTS_32BIT_KERNEL
-       select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL
+       select SYS_SUPPORTS_64BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_HIGHMEM
        select SYS_SUPPORTS_LITTLE_ENDIAN
@@ -780,7 +772,6 @@ config CAVIUM_OCTEON_REFERENCE_BOARD
 
 config NLM_XLR_BOARD
        bool "Netlogic XLR/XLS based systems"
-       depends on EXPERIMENTAL
        select BOOT_ELF32
        select NLM_COMMON
        select SYS_HAS_CPU_XLR
@@ -809,7 +800,6 @@ config NLM_XLR_BOARD
 
 config NLM_XLP_BOARD
        bool "Netlogic XLP based systems"
-       depends on EXPERIMENTAL
        select BOOT_ELF32
        select NLM_COMMON
        select SYS_HAS_CPU_XLP
@@ -1375,7 +1365,6 @@ config CPU_R5500
 
 config CPU_R6000
        bool "R6000"
-       depends on EXPERIMENTAL
        depends on SYS_HAS_CPU_R6000
        select CPU_SUPPORTS_32BIT_KERNEL
        help
@@ -1393,7 +1382,6 @@ config CPU_NEVADA
 
 config CPU_R8000
        bool "R8000"
-       depends on EXPERIMENTAL
        depends on SYS_HAS_CPU_R8000
        select CPU_HAS_PREFETCH
        select CPU_SUPPORTS_64BIT_KERNEL
@@ -1768,7 +1756,7 @@ config PAGE_SIZE_4KB
 
 config PAGE_SIZE_8KB
        bool "8kB"
-       depends on (EXPERIMENTAL && CPU_R8000) || CPU_CAVIUM_OCTEON
+       depends on CPU_R8000 || CPU_CAVIUM_OCTEON
        help
          Using 8kB page size will result in higher performance kernel at
          the price of higher memory consumption.  This option is available
@@ -1795,7 +1783,7 @@ config PAGE_SIZE_32KB
 
 config PAGE_SIZE_64KB
        bool "64kB"
-       depends on EXPERIMENTAL && !CPU_R3000 && !CPU_TX39XX
+       depends on !CPU_R3000 && !CPU_TX39XX
        help
          Using 64kB page size will result in higher performance kernel at
          the price of higher memory consumption.  This option is available on
@@ -2312,8 +2300,7 @@ config HZ
 source "kernel/Kconfig.preempt"
 
 config KEXEC
-       bool "Kexec system call (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "Kexec system call"
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
index 1f372b0..fb1e072 100644 (file)
@@ -1,6 +1,6 @@
 config ACER_PICA_61
-       bool "Support for Acer PICA 1 chipset (EXPERIMENTAL)"
-       depends on MACH_JAZZ && EXPERIMENTAL
+       bool "Support for Acer PICA 1 chipset"
+       depends on MACH_JAZZ
        select DMA_NONCOHERENT
        select SYS_SUPPORTS_LITTLE_ENDIAN
        help
@@ -13,7 +13,7 @@ config MIPS_MAGNUM_4000
        bool "Support for MIPS Magnum 4000"
        depends on MACH_JAZZ
        select DMA_NONCOHERENT
-       select SYS_SUPPORTS_BIG_ENDIAN if EXPERIMENTAL
+       select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_LITTLE_ENDIAN
        help
          This is a machine with a R4000 100 MHz CPU. To compile a Linux
index e44a186..08f7ebd 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/module.h>
 #include <linux/clk.h>
+#include <linux/err.h>
 
 #include <lantiq_soc.h>
 #include <xway_dma.h>
@@ -223,8 +224,8 @@ ltq_dma_init(struct platform_device *pdev)
                panic("Failed to get dma resource");
 
        /* remap dma register range */
-       ltq_dma_membase = devm_request_and_ioremap(&pdev->dev, res);
-       if (!ltq_dma_membase)
+       ltq_dma_membase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ltq_dma_membase))
                panic("Failed to remap dma resource");
 
        /* power up and reset the dma engine */
index e30b1ed..9861c86 100644 (file)
@@ -150,11 +150,9 @@ static int gptu_probe(struct platform_device *pdev)
        }
 
        /* remap gptu register range */
-       gptu_membase = devm_request_and_ioremap(&pdev->dev, res);
-       if (!gptu_membase) {
-               dev_err(&pdev->dev, "Failed to remap resource\n");
-               return -ENOMEM;
-       }
+       gptu_membase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(gptu_membase))
+               return PTR_ERR(gptu_membase);
 
        /* enable our clock */
        clk = clk_get(&pdev->dev, NULL);
index 9568178..910fb4c 100644 (file)
@@ -214,13 +214,13 @@ static int ltq_pci_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       ltq_pci_membase = devm_request_and_ioremap(&pdev->dev, res_bridge);
-       ltq_pci_mapped_cfg = devm_request_and_ioremap(&pdev->dev, res_cfg);
+       ltq_pci_membase = devm_ioremap_resource(&pdev->dev, res_bridge);
+       if (IS_ERR(ltq_pci_membase))
+               return PTR_ERR(ltq_pci_membase);
 
-       if (!ltq_pci_membase || !ltq_pci_mapped_cfg) {
-               dev_err(&pdev->dev, "failed to remap resources\n");
-               return -ENOMEM;
-       }
+       ltq_pci_mapped_cfg = devm_ioremap_resource(&pdev->dev, res_cfg);
+       if (IS_ERR(ltq_pci_mapped_cfg))
+               return PTR_ERR(ltq_pci_mapped_cfg);
 
        ltq_pci_startup(pdev);
 
index 4b2ea28..4d8705a 100644 (file)
@@ -13,7 +13,6 @@ config SGI_SN_M_MODE
 
 config SGI_SN_N_MODE
        bool "IP27 N-Mode"
-       depends on EXPERIMENTAL
        help
          The nodes of Origin, Onyx, Fuel and Tezro systems can be configured
          in either N-Modes which allows for more nodes or M-Mode which allows
index b77feff..416309b 100644 (file)
@@ -194,12 +194,12 @@ config PARISC_PAGE_SIZE_4KB
          If you don't know what to do, choose 4KB.
 
 config PARISC_PAGE_SIZE_16KB
-       bool "16KB (EXPERIMENTAL)"
-       depends on PA8X00 && EXPERIMENTAL
+       bool "16KB"
+       depends on PA8X00
 
 config PARISC_PAGE_SIZE_64KB
-       bool "64KB (EXPERIMENTAL)"
-       depends on PA8X00 && EXPERIMENTAL
+       bool "64KB"
+       depends on PA8X00
 
 endchoice
 
index 17903f1..e027f04 100644 (file)
@@ -334,7 +334,7 @@ config SWIOTLB
 
 config HOTPLUG_CPU
        bool "Support for enabling/disabling CPUs"
-       depends on SMP && HOTPLUG && EXPERIMENTAL && (PPC_PSERIES || \
+       depends on SMP && HOTPLUG && (PPC_PSERIES || \
        PPC_PMAC || PPC_POWERNV || (PPC_85xx && !PPC_E500MC))
        ---help---
          Say Y here to be able to disable and re-enable individual
@@ -356,8 +356,8 @@ config ARCH_ENABLE_MEMORY_HOTREMOVE
        def_bool y
 
 config KEXEC
-       bool "kexec system call (EXPERIMENTAL)"
-       depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP)) && EXPERIMENTAL
+       bool "kexec system call"
+       depends on (PPC_BOOK3S || FSL_BOOKE || (44x && !SMP))
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
@@ -852,8 +852,8 @@ config LOWMEM_CAM_NUM
        default 3
 
 config DYNAMIC_MEMSTART
-       bool "Enable page aligned dynamic load address for kernel (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || 44x)
+       bool "Enable page aligned dynamic load address for kernel"
+       depends on ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || 44x)
        select NONSTATIC_KERNEL
        help
          This option enables the kernel to be loaded at any page aligned
@@ -870,8 +870,8 @@ config DYNAMIC_MEMSTART
          This option is overridden by CONFIG_RELOCATABLE
 
 config RELOCATABLE
-       bool "Build a relocatable kernel (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && 44x
+       bool "Build a relocatable kernel"
+       depends on ADVANCED_OPTIONS && FLATMEM && 44x
        select NONSTATIC_KERNEL
        help
          This builds a kernel image that is capable of running at the
index 4730c95..63c67ec 100644 (file)
@@ -41,7 +41,7 @@ config KVM_BOOK3S_PR
 
 config KVM_BOOK3S_32
        tristate "KVM support for PowerPC book3s_32 processors"
-       depends on EXPERIMENTAL && PPC_BOOK3S_32 && !SMP && !PTE_64BIT
+       depends on PPC_BOOK3S_32 && !SMP && !PTE_64BIT
        select KVM
        select KVM_BOOK3S_32_HANDLER
        select KVM_BOOK3S_PR
@@ -56,7 +56,7 @@ config KVM_BOOK3S_32
 
 config KVM_BOOK3S_64
        tristate "KVM support for PowerPC book3s_64 processors"
-       depends on EXPERIMENTAL && PPC_BOOK3S_64
+       depends on PPC_BOOK3S_64
        select KVM_BOOK3S_64_HANDLER
        select KVM
        ---help---
@@ -97,7 +97,7 @@ config KVM_BOOKE_HV
 
 config KVM_440
        bool "KVM support for PowerPC 440 processors"
-       depends on EXPERIMENTAL && 44x
+       depends on 44x
        select KVM
        select KVM_MMIO
        ---help---
@@ -122,7 +122,7 @@ config KVM_EXIT_TIMING
 
 config KVM_E500V2
        bool "KVM support for PowerPC E500v2 processors"
-       depends on EXPERIMENTAL && E500 && !PPC_E500MC
+       depends on E500 && !PPC_E500MC
        select KVM
        select KVM_MMIO
        select MMU_NOTIFIER
@@ -137,7 +137,7 @@ config KVM_E500V2
 
 config KVM_E500MC
        bool "KVM support for PowerPC E500MC/E5500 processors"
-       depends on EXPERIMENTAL && PPC_E500MC
+       depends on PPC_E500MC
        select KVM
        select KVM_MMIO
        select KVM_BOOKE_HV
index 02d02a0..92ab60a 100644 (file)
@@ -277,7 +277,6 @@ config P5040_DS
 
 config PPC_QEMU_E500
        bool "QEMU generic e500 platform"
-       depends on EXPERIMENTAL
        select DEFAULT_UIMAGE
        help
          This option enables support for running as a QEMU guest using
index 2e7ff0c..53aaefe 100644 (file)
@@ -124,7 +124,7 @@ config CBE_CPUFREQ
 
 config CBE_CPUFREQ_PMI_ENABLE
        bool "CBE frequency scaling using PMI interface"
-       depends on CBE_CPUFREQ && EXPERIMENTAL
+       depends on CBE_CPUFREQ
        default n
        help
          Select this, if you want to use the PMI interface
index 46b7f02..e87c194 100644 (file)
@@ -48,7 +48,7 @@ config PS3_HTAB_SIZE
          system will have optimal runtime performance.
 
 config PS3_DYNAMIC_DMA
-       depends on PPC_PS3 && EXPERIMENTAL
+       depends on PPC_PS3
        bool "PS3 Platform dynamic DMA page table management"
        default n
        help
index b5ea38c..76e7315 100644 (file)
@@ -718,8 +718,8 @@ source "arch/s390/kvm/Kconfig"
 
 config S390_GUEST
        def_bool y
-       prompt "s390 support for virtio devices (EXPERIMENTAL)"
-       depends on 64BIT && EXPERIMENTAL
+       prompt "s390 support for virtio devices"
+       depends on 64BIT
        select VIRTUALIZATION
        select VIRTIO
        select VIRTIO_CONSOLE
index b58dd86..60f9f8a 100644 (file)
@@ -18,7 +18,7 @@ if VIRTUALIZATION
 config KVM
        def_tristate y
        prompt "Kernel-based Virtual Machine (KVM) support"
-       depends on HAVE_KVM && EXPERIMENTAL
+       depends on HAVE_KVM
        select PREEMPT_NOTIFIERS
        select ANON_INODES
        select HAVE_KVM_CPU_RELAX_INTERCEPT
index babc2b8..4765379 100644 (file)
@@ -648,7 +648,7 @@ source kernel/Kconfig.hz
 
 config KEXEC
        bool "kexec system call (EXPERIMENTAL)"
-       depends on SUPERH32 && EXPERIMENTAL && MMU
+       depends on SUPERH32 && MMU
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
@@ -665,7 +665,7 @@ config KEXEC
 
 config CRASH_DUMP
        bool "kernel crash dumps (EXPERIMENTAL)"
-       depends on SUPERH32 && EXPERIMENTAL && BROKEN_ON_SMP
+       depends on SUPERH32 && BROKEN_ON_SMP
        help
          Generate crash dump after being started by kexec.
          This should be normally only set in special crash dump kernels
@@ -679,7 +679,7 @@ config CRASH_DUMP
 
 config KEXEC_JUMP
        bool "kexec jump (EXPERIMENTAL)"
-       depends on SUPERH32 && KEXEC && HIBERNATION && EXPERIMENTAL
+       depends on SUPERH32 && KEXEC && HIBERNATION
        help
          Jump between original kernel and kexeced kernel and invoke
          code via KEXEC
@@ -713,7 +713,7 @@ config SECCOMP
 
 config CC_STACKPROTECTOR
        bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
-       depends on SUPERH32 && EXPERIMENTAL
+       depends on SUPERH32
        help
          This option turns on the -fstack-protector GCC feature. This
          feature puts, at the beginning of functions, a canary value on
@@ -764,7 +764,7 @@ config NR_CPUS
 
 config HOTPLUG_CPU
        bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
-       depends on SMP && HOTPLUG && EXPERIMENTAL
+       depends on SMP && HOTPLUG
        help
          Say Y here to experiment with turning CPUs off and on.  CPUs
          can be controlled through /sys/devices/system/cpu.
@@ -843,7 +843,7 @@ config ENTRY_OFFSET
 
 config ROMIMAGE_MMCIF
        bool "Include MMCIF loader in romImage (EXPERIMENTAL)"
-       depends on CPU_SUBTYPE_SH7724 && EXPERIMENTAL
+       depends on CPU_SUBTYPE_SH7724
        help
          Say Y here to include experimental MMCIF loading code in
          romImage. With this enabled it is possible to write the romImage
@@ -929,7 +929,6 @@ source "fs/Kconfig.binfmt"
 endmenu
 
 menu "Power management options (EXPERIMENTAL)"
-depends on EXPERIMENTAL
 
 source "kernel/power/Kconfig"
 
index 770ff2d..05b518e 100644 (file)
@@ -33,7 +33,7 @@ config SH64_FPU_DENORM_FLUSH
 config SH_FPU_EMU
        def_bool n
        prompt "FPU emulation support"
-       depends on !SH_FPU && EXPERIMENTAL
+       depends on !SH_FPU
        help
          Selecting this option will enable support for software FPU emulation.
          Most SH-3 users will want to say Y here, whereas most SH-4 users will
@@ -68,7 +68,6 @@ config SH_STORE_QUEUES
 
 config SPECULATIVE_EXECUTION
        bool "Speculative subroutine return"
-       depends on EXPERIMENTAL
        depends on CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785 || CPU_SUBTYPE_SH7786
        help
          This enables support for a speculative instruction fetch for
index 0f7c852..5a43a87 100644 (file)
@@ -83,7 +83,7 @@ config 32BIT
 
 config PMB
        bool "Support 32-bit physical addressing through PMB"
-       depends on MMU && EXPERIMENTAL && CPU_SH4A && !CPU_SH4AL_DSP
+       depends on MMU && CPU_SH4A && !CPU_SH4AL_DSP
        select 32BIT
        select UNCACHED_MAPPING
        help
@@ -110,7 +110,7 @@ config VSYSCALL
 
 config NUMA
        bool "Non Uniform Memory Access (NUMA) Support"
-       depends on MMU && SYS_SUPPORTS_NUMA && EXPERIMENTAL
+       depends on MMU && SYS_SUPPORTS_NUMA
        select ARCH_WANT_NUMA_VARIABLE_LOCALITY
        default n
        help
index 669fcdb..2298cb1 100644 (file)
@@ -18,7 +18,7 @@ if VIRTUALIZATION
 
 config KVM
        tristate "Kernel-based Virtual Machine (KVM) support"
-       depends on HAVE_KVM && MODULES && EXPERIMENTAL
+       depends on HAVE_KVM && MODULES
        select PREEMPT_NOTIFIERS
        select ANON_INODES
        ---help---
index 3160b1a..820a56f 100644 (file)
@@ -157,7 +157,7 @@ config UML_NET_MCAST
 
 config UML_NET_PCAP
        bool "pcap transport"
-       depends on UML_NET && EXPERIMENTAL
+       depends on UML_NET
        help
        The pcap transport makes a pcap packet stream on the host look
        like an ethernet device inside UML.  This is useful for making
index bf87f25..a7520c9 100644 (file)
@@ -45,8 +45,8 @@ config HOSTFS
           say Y or M here; otherwise say N.
 
 config HPPFS
-       tristate "HoneyPot ProcFS (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && PROC_FS
+       tristate "HoneyPot ProcFS"
+       depends on PROC_FS
        help
          hppfs (HoneyPot ProcFS) is a filesystem which allows UML /proc
          entries to be overridden, removed, or fabricated from the host.
@@ -96,7 +96,7 @@ config MAGIC_SYSRQ
          unless you really know what this hack does.
 
 config SMP
-       bool "Symmetric multi-processing support (EXPERIMENTAL)"
+       bool "Symmetric multi-processing support"
        default n
        depends on BROKEN
        help
@@ -126,7 +126,7 @@ config NR_CPUS
        default "32"
 
 config HIGHMEM
-       bool "Highmem support (EXPERIMENTAL)"
+       bool "Highmem support"
        depends on !64BIT && BROKEN
        default n
        help
index 79795af..3ac0e64 100644 (file)
@@ -222,7 +222,7 @@ config ARCH_SUPPORTS_DEBUG_PAGEALLOC
 
 config HAVE_INTEL_TXT
        def_bool y
-       depends on EXPERIMENTAL && INTEL_IOMMU && ACPI
+       depends on INTEL_IOMMU && ACPI
 
 config X86_32_SMP
        def_bool y
@@ -617,7 +617,7 @@ config PARAVIRT
 
 config PARAVIRT_SPINLOCKS
        bool "Paravirtualization layer for spinlocks"
-       depends on PARAVIRT && SMP && EXPERIMENTAL
+       depends on PARAVIRT && SMP
        ---help---
          Paravirtualized spinlocks allow a pvops backend to replace the
          spinlock implementation with something virtualization-friendly
@@ -729,7 +729,7 @@ config GART_IOMMU
 config CALGARY_IOMMU
        bool "IBM Calgary IOMMU support"
        select SWIOTLB
-       depends on X86_64 && PCI && EXPERIMENTAL
+       depends on X86_64 && PCI
        ---help---
          Support for hardware IOMMUs in IBM's xSeries x366 and x460
          systems. Needed to run systems with more than 3GB of memory
@@ -771,7 +771,7 @@ config IOMMU_HELPER
 
 config MAXSMP
        bool "Enable Maximum number of SMP Processors and NUMA Nodes"
-       depends on X86_64 && SMP && DEBUG_KERNEL && EXPERIMENTAL
+       depends on X86_64 && SMP && DEBUG_KERNEL
        select CPUMASK_OFFSTACK
        ---help---
          Enable maximum number of CPUS and NUMA Nodes for this architecture.
@@ -1107,7 +1107,6 @@ config HIGHMEM64G
 endchoice
 
 choice
-       depends on EXPERIMENTAL
        prompt "Memory split" if EXPERT
        default VMSPLIT_3G
        depends on X86_32
@@ -1184,7 +1183,7 @@ config DIRECT_GBPAGES
 config NUMA
        bool "Numa Memory Allocation and Scheduler Support"
        depends on SMP
-       depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL)
+       depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI))
        default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP)
        ---help---
          Enable NUMA (Non Uniform Memory Access) support.
@@ -1279,7 +1278,7 @@ config ARCH_DISCONTIGMEM_DEFAULT
 
 config ARCH_SPARSEMEM_ENABLE
        def_bool y
-       depends on X86_64 || NUMA || (EXPERIMENTAL && X86_32) || X86_32_NON_STANDARD
+       depends on X86_64 || NUMA || X86_32 || X86_32_NON_STANDARD
        select SPARSEMEM_STATIC if X86_32
        select SPARSEMEM_VMEMMAP_ENABLE if X86_64
 
@@ -1593,8 +1592,7 @@ config CRASH_DUMP
          For more details see Documentation/kdump/kdump.txt
 
 config KEXEC_JUMP
-       bool "kexec jump (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "kexec jump"
        depends on KEXEC && HIBERNATION
        ---help---
          Jump between original kernel and kexeced kernel and invoke
@@ -2037,7 +2035,7 @@ config PCI_MMCONFIG
 
 config PCI_CNB20LE_QUIRK
        bool "Read CNB20LE Host Bridge Windows" if EXPERT
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          Read the PCI windows out of the CNB20LE host bridge. This allows
          PCI hotplug to work on systems with the CNB20LE chipset which do
@@ -2231,8 +2229,8 @@ config IA32_AOUT
          Support old a.out binaries in the 32bit emulation.
 
 config X86_X32
-       bool "x32 ABI for 64-bit mode (EXPERIMENTAL)"
-       depends on X86_64 && IA32_EMULATION && EXPERIMENTAL
+       bool "x32 ABI for 64-bit mode"
+       depends on X86_64 && IA32_EMULATION
        ---help---
          Include code to run binaries for the x32 native 32-bit ABI
          for 64-bit processors.  An x32 process gets access to the
index 53c90fd..21a13ce 100644 (file)
@@ -37,9 +37,8 @@ config RWSEM_GENERIC_SPINLOCK
        def_bool !RWSEM_XCHGADD_ALGORITHM
 
 config 3_LEVEL_PGTABLES
-       bool "Three-level pagetables (EXPERIMENTAL)" if !64BIT
+       bool "Three-level pagetables" if !64BIT
        default 64BIT
-       depends on EXPERIMENTAL
        help
        Three-level pagetables will let UML have more than 4G of physical
        memory.  All the memory that can't be mapped directly will be treated
index 4641d95..3f37520 100644 (file)
@@ -134,8 +134,8 @@ config CRYPTO_NULL
          These are 'Null' algorithms, used by IPsec, which do nothing.
 
 config CRYPTO_PCRYPT
-       tristate "Parallel crypto engine (EXPERIMENTAL)"
-       depends on SMP && EXPERIMENTAL
+       tristate "Parallel crypto engine"
+       depends on SMP
        select PADATA
        select CRYPTO_MANAGER
        select CRYPTO_AEAD
@@ -292,7 +292,6 @@ config CRYPTO_HMAC
 
 config CRYPTO_XCBC
        tristate "XCBC support"
-       depends on EXPERIMENTAL
        select CRYPTO_HASH
        select CRYPTO_MANAGER
        help
@@ -303,7 +302,6 @@ config CRYPTO_XCBC
 
 config CRYPTO_VMAC
        tristate "VMAC support"
-       depends on EXPERIMENTAL
        select CRYPTO_HASH
        select CRYPTO_MANAGER
        help
@@ -932,8 +930,7 @@ config CRYPTO_KHAZAD
          <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
 
 config CRYPTO_SALSA20
-       tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "Salsa20 stream cipher algorithm"
        select CRYPTO_BLKCIPHER
        help
          Salsa20 stream cipher algorithm.
@@ -945,9 +942,8 @@ config CRYPTO_SALSA20
          Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
 
 config CRYPTO_SALSA20_586
-       tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
+       tristate "Salsa20 stream cipher algorithm (i586)"
        depends on (X86 || UML_X86) && !64BIT
-       depends on EXPERIMENTAL
        select CRYPTO_BLKCIPHER
        help
          Salsa20 stream cipher algorithm.
@@ -959,9 +955,8 @@ config CRYPTO_SALSA20_586
          Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
 
 config CRYPTO_SALSA20_X86_64
-       tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
+       tristate "Salsa20 stream cipher algorithm (x86_64)"
        depends on (X86 || UML_X86) && 64BIT
-       depends on EXPERIMENTAL
        select CRYPTO_BLKCIPHER
        help
          Salsa20 stream cipher algorithm.
index 38c5078..7ec178e 100644 (file)
@@ -176,7 +176,6 @@ config ACPI_FAN
 
 config ACPI_DOCK
        bool "Dock"
-       depends on EXPERIMENTAL
        help
          This driver supports ACPI-controlled docking stations and removable
          drive bays such as the IBM Ultrabay and the Dell Module Bay.
@@ -202,7 +201,7 @@ config ACPI_PROCESSOR
          the module will be called processor.
 config ACPI_IPMI
        tristate "IPMI"
-       depends on EXPERIMENTAL && IPMI_SI && IPMI_HANDLER
+       depends on IPMI_SI && IPMI_HANDLER
        default n
        help
          This driver enables the ACPI to access the BMC controller. And it
@@ -214,14 +213,13 @@ config ACPI_IPMI
 
 config ACPI_HOTPLUG_CPU
        bool
-       depends on EXPERIMENTAL && ACPI_PROCESSOR && HOTPLUG_CPU
+       depends on ACPI_PROCESSOR && HOTPLUG_CPU
        select ACPI_CONTAINER
        default y
 
 config ACPI_PROCESSOR_AGGREGATOR
        tristate "Processor Aggregator"
        depends on ACPI_PROCESSOR
-       depends on EXPERIMENTAL
        depends on X86
        help
          ACPI 4.0 defines processor Aggregator, which enables OS to perform
@@ -337,8 +335,7 @@ config X86_PM_TIMER
          systems require this timer. 
 
 config ACPI_CONTAINER
-       tristate "Container and Module Devices (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "Container and Module Devices"
        default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU || ACPI_HOTPLUG_IO)
        help
          This driver supports ACPI Container and Module devices (IDs
index 536c166..ab92785 100644 (file)
@@ -20,6 +20,7 @@
  *
  */
 
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
@@ -257,9 +258,9 @@ static int tegra_ahb_probe(struct platform_device *pdev)
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!res)
                return -ENODEV;
-       ahb->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!ahb->regs)
-               return -EBUSY;
+       ahb->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ahb->regs))
+               return PTR_ERR(ahb->regs);
 
        ahb->dev = &pdev->dev;
        platform_set_drvdata(pdev, ahb);
index e08d322..cdadce2 100644 (file)
@@ -163,7 +163,7 @@ config SATA_QSTOR
 
 config SATA_SX4
        tristate "Promise SATA SX4 support (Experimental)"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          This option enables support for Promise Serial ATA SX4.
 
@@ -390,7 +390,7 @@ config PATA_CS5530
 
 config PATA_CS5535
        tristate "CS5535 PATA support (Experimental)"
-       depends on PCI && X86 && !X86_64 && EXPERIMENTAL
+       depends on PCI && X86 && !X86_64
        help
          This option enables support for the NatSemi/AMD CS5535
          companion chip used with the Geode processor family.
@@ -408,7 +408,7 @@ config PATA_CS5536
 
 config PATA_CYPRESS
        tristate "Cypress CY82C693 PATA support (Very Experimental)"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          This option enables support for the Cypress/Contaq CY82C693
          chipset found in some Alpha systems
@@ -496,7 +496,7 @@ config PATA_IMX
 
 config PATA_IT8213
        tristate "IT8213 PATA support (Experimental)"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          This option enables support for the ITE 821 PATA
           controllers via the new ATA layer.
@@ -589,7 +589,7 @@ config PATA_OLDPIIX
 
 config PATA_OPTIDMA
        tristate "OPTI FireStar PATA support (Very Experimental)"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          This option enables DMA/PIO support for the later OPTi
          controllers found on some old motherboards and in some
@@ -616,7 +616,7 @@ config PATA_PDC_OLD
 
 config PATA_RADISYS
        tristate "RADISYS 82600 PATA support (Experimental)"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          This option enables support for the RADISYS 82600
          PATA controllers via the new ATA layer
@@ -687,7 +687,7 @@ config PATA_SIS
 
 config PATA_TOSHIBA
        tristate "Toshiba Piccolo support (Experimental)"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          Support for the Toshiba Piccolo controllers. Currently only the
          primary channel is supported by this driver.
@@ -738,7 +738,7 @@ comment "PIO-only SFF controllers"
 
 config PATA_AT32
        tristate "Atmel AVR32 PATA support (Experimental)"
-       depends on AVR32 && PLATFORM_AT32AP && EXPERIMENTAL
+       depends on AVR32 && PLATFORM_AT32AP
        help
          This option enables support for the IDE devices on the
          Atmel AT32AP platform.
@@ -755,7 +755,7 @@ config PATA_AT91
 
 config PATA_CMD640_PCI
        tristate "CMD640 PCI PATA support (Experimental)"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          This option enables support for the CMD640 PCI IDE
          interface chip. Only the primary channel is currently
@@ -801,7 +801,7 @@ config PATA_NS87410
 
 config PATA_OPTI
        tristate "OPTI621/6215 PATA support (Very Experimental)"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          This option enables full PIO support for the early Opti ATA
          controllers found on some old motherboards.
@@ -881,7 +881,7 @@ config PATA_SAMSUNG_CF
 
 config PATA_WINBOND_VLB
        tristate "Winbond W83759A VLB PATA support (Experimental)"
-       depends on ISA && EXPERIMENTAL
+       depends on ISA
        select PATA_LEGACY
        help
          Support for the Winbond W83759A controller on Vesa Local Bus
@@ -909,7 +909,7 @@ config ATA_GENERIC
 
 config PATA_LEGACY
        tristate "Legacy ISA PATA support (Experimental)"
-       depends on (ISA || PCI) && EXPERIMENTAL
+       depends on (ISA || PCI)
        help
          This option enables support for ISA/VLB/PCI bus legacy PATA
          ports and allows them to be accessed via the new ATA layer.
index 556222f..c1bfaf4 100644 (file)
@@ -31,6 +31,7 @@
  *   Copyright (C) 2006 Tower Technologies
  */
 
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -937,9 +938,9 @@ static int ep93xx_pata_probe(struct platform_device *pdev)
                goto err_rel_gpio;
        }
 
-       ide_base = devm_request_and_ioremap(&pdev->dev, mem_res);
-       if (!ide_base) {
-               err = -ENXIO;
+       ide_base = devm_ioremap_resource(&pdev->dev, mem_res);
+       if (IS_ERR(ide_base)) {
+               err = PTR_ERR(ide_base);
                goto err_rel_gpio;
        }
 
index 24eb078..f9d3132 100644 (file)
@@ -700,12 +700,12 @@ int bus_add_driver(struct device_driver *drv)
        if (error)
                goto out_unregister;
 
+       klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers);
        if (drv->bus->p->drivers_autoprobe) {
                error = driver_attach(drv);
                if (error)
                        goto out_unregister;
        }
-       klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers);
        module_add_driver(drv->owner, drv);
 
        error = driver_create_file(drv, &driver_attr_uevent);
index a235085..27603a6 100644 (file)
@@ -1685,8 +1685,6 @@ EXPORT_SYMBOL_GPL(device_destroy);
  */
 int device_rename(struct device *dev, const char *new_name)
 {
-       char *old_class_name = NULL;
-       char *new_class_name = NULL;
        char *old_device_name = NULL;
        int error;
 
@@ -1717,8 +1715,6 @@ int device_rename(struct device *dev, const char *new_name)
 out:
        put_device(dev);
 
-       kfree(new_class_name);
-       kfree(old_class_name);
        kfree(old_device_name);
 
        return error;
index a3f79c4..ff5b745 100644 (file)
@@ -134,15 +134,14 @@ EXPORT_SYMBOL_GPL(dma_buf_export);
  */
 int dma_buf_fd(struct dma_buf *dmabuf, int flags)
 {
-       int error, fd;
+       int fd;
 
        if (!dmabuf || !dmabuf->file)
                return -EINVAL;
 
-       error = get_unused_fd_flags(flags);
-       if (error < 0)
-               return error;
-       fd = error;
+       fd = get_unused_fd_flags(flags);
+       if (fd < 0)
+               return fd;
 
        fd_install(fd, dmabuf->file);
 
index 28cf308..efefb5a 100644 (file)
@@ -205,8 +205,8 @@ config PARIDE_EPAT
          support.
 
 config PARIDE_EPATC8
-       bool "Support c7/c8 chips (EXPERIMENTAL)"
-       depends on PARIDE_EPAT && EXPERIMENTAL
+       bool "Support c7/c8 chips"
+       depends on PARIDE_EPAT
        help
          This option enables support for the newer Shuttle EP1284 (aka c7 and
          c8) chip. You need this if you are using any recent Imation SuperDisk
index 48bbfec..4673fc4 100644 (file)
@@ -104,6 +104,7 @@ static int exynos_read(struct hwrng *rng, void *buf,
 static int exynos_rng_probe(struct platform_device *pdev)
 {
        struct exynos_rng *exynos_rng;
+       struct resource *res;
 
        exynos_rng = devm_kzalloc(&pdev->dev, sizeof(struct exynos_rng),
                                        GFP_KERNEL);
@@ -120,10 +121,10 @@ static int exynos_rng_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       exynos_rng->mem = devm_request_and_ioremap(&pdev->dev,
-                       platform_get_resource(pdev, IORESOURCE_MEM, 0));
-       if (!exynos_rng->mem)
-               return -EBUSY;
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       exynos_rng->mem = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(exynos_rng->mem))
+               return PTR_ERR(exynos_rng->mem);
 
        platform_set_drvdata(pdev, exynos_rng);
 
index d8c54e2..749dc16 100644 (file)
@@ -124,9 +124,9 @@ static int omap_rng_probe(struct platform_device *pdev)
                goto err_ioremap;
        }
 
-       priv->base = devm_request_and_ioremap(&pdev->dev, priv->mem_res);
-       if (!priv->base) {
-               ret = -ENOMEM;
+       priv->base = devm_ioremap_resource(&pdev->dev, priv->mem_res);
+       if (IS_ERR(priv->base)) {
+               ret = PTR_ERR(priv->base);
                goto err_ioremap;
        }
        dev_set_drvdata(&pdev->dev, priv);
index de473ef..3099198 100644 (file)
@@ -7,6 +7,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  */
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
@@ -115,9 +116,9 @@ static int __init tx4939_rng_probe(struct platform_device *dev)
        rngdev = devm_kzalloc(&dev->dev, sizeof(*rngdev), GFP_KERNEL);
        if (!rngdev)
                return -ENOMEM;
-       rngdev->base = devm_request_and_ioremap(&dev->dev, r);
-       if (!rngdev->base)
-               return -EBUSY;
+       rngdev->base = devm_ioremap_resource(&dev->dev, r);
+       if (IS_ERR(rngdev->base))
+               return PTR_ERR(rngdev->base);
 
        rngdev->rng.name = dev_name(&dev->dev);
        rngdev->rng.data_present = tx4939_rng_data_present;
index a0b3661..ee0ef07 100644 (file)
@@ -21,8 +21,8 @@ config ARM_S3C2416_CPUFREQ
          If in doubt, say N.
 
 config ARM_S3C2416_CPUFREQ_VCORESCALE
-       bool "Allow voltage scaling for S3C2416 arm core (EXPERIMENTAL)"
-       depends on ARM_S3C2416_CPUFREQ && REGULATOR && EXPERIMENTAL
+       bool "Allow voltage scaling for S3C2416 arm core"
+       depends on ARM_S3C2416_CPUFREQ && REGULATOR
        help
          Enable CPU voltage scaling when entering the dvs mode.
          It uses information gathered through existing hardware and
index 7227cd7..4ea4e2b 100644 (file)
@@ -174,7 +174,7 @@ config X86_SPEEDSTEP_ICH
 config X86_SPEEDSTEP_SMI
        tristate "Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)"
        select CPU_FREQ_TABLE
-       depends on X86_32 && EXPERIMENTAL
+       depends on X86_32
        help
          This adds the CPUFreq driver for certain mobile Intel Pentium III
          (Coppermine), all mobile Intel Pentium III-M (Tualatin)
@@ -206,7 +206,7 @@ config X86_P4_CLOCKMOD
 
 config X86_CPUFREQ_NFORCE2
        tristate "nVidia nForce2 FSB changing"
-       depends on X86_32 && EXPERIMENTAL
+       depends on X86_32
        help
          This adds the CPUFreq driver for FSB changing on nVidia nForce2
          platforms.
@@ -242,7 +242,7 @@ config X86_LONGHAUL
 config X86_E_POWERSAVER
        tristate "VIA C7 Enhanced PowerSaver (DANGEROUS)"
        select CPU_FREQ_TABLE
-       depends on X86_32 && EXPERIMENTAL
+       depends on X86_32
        help
          This adds the CPUFreq driver for VIA C7 processors.  However, this driver
          does not have any safeguards to prevent operating the CPU out of spec
index 3e8ba02..b33d1f6 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/delay.h>
 #include <linux/dmaengine.h>
 #include <linux/dma-mapping.h>
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
@@ -1489,9 +1490,9 @@ static int dw_probe(struct platform_device *pdev)
        if (irq < 0)
                return irq;
 
-       regs = devm_request_and_ioremap(&pdev->dev, io);
-       if (!regs)
-               return -EBUSY;
+       regs = devm_ioremap_resource(&pdev->dev, io);
+       if (IS_ERR(regs))
+               return PTR_ERR(regs);
 
        dw_params = dma_read_byaddr(regs, DW_PARAMS);
        autocfg = dw_params >> DW_PARAMS_EN & 0x1;
index a7dcf78..70b8975 100644 (file)
@@ -14,6 +14,7 @@
  * http://www.opensource.org/licenses/gpl-license.html
  * http://www.gnu.org/copyleft/gpl.html
  */
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/types.h>
 #include <linux/mm.h>
@@ -1010,9 +1011,9 @@ static int __init imxdma_probe(struct platform_device *pdev)
        imxdma->devtype = pdev->id_entry->driver_data;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       imxdma->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!imxdma->base)
-               return -EADDRNOTAVAIL;
+       imxdma->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(imxdma->base))
+               return PTR_ERR(imxdma->base);
 
        irq = platform_get_irq(pdev, 0);
        if (irq < 0)
index c6d98c0..dc74665 100644 (file)
@@ -5,6 +5,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/types.h>
@@ -782,9 +783,9 @@ static int mmp_pdma_probe(struct platform_device *op)
        if (!iores)
                return -EINVAL;
 
-       pdev->base = devm_request_and_ioremap(pdev->dev, iores);
-       if (!pdev->base)
-               return -EADDRNOTAVAIL;
+       pdev->base = devm_ioremap_resource(pdev->dev, iores);
+       if (IS_ERR(pdev->base))
+               return PTR_ERR(pdev->base);
 
        of_id = of_match_device(mmp_pdma_dt_ids, pdev->dev);
        if (of_id)
index a9f1cd5..43d5a6c 100644 (file)
@@ -9,6 +9,7 @@
  *
  */
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/types.h>
@@ -547,9 +548,9 @@ static int mmp_tdma_probe(struct platform_device *pdev)
        if (!iores)
                return -EINVAL;
 
-       tdev->base = devm_request_and_ioremap(&pdev->dev, iores);
-       if (!tdev->base)
-               return -EADDRNOTAVAIL;
+       tdev->base = devm_ioremap_resource(&pdev->dev, iores);
+       if (IS_ERR(tdev->base))
+               return PTR_ERR(tdev->base);
 
        INIT_LIST_HEAD(&tdev->device.channels);
 
index 3cad856..58c1896 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/delay.h>
 #include <linux/dmaengine.h>
 #include <linux/dma-mapping.h>
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
@@ -1240,12 +1241,9 @@ static int tegra_dma_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       tdma->base_addr = devm_request_and_ioremap(&pdev->dev, res);
-       if (!tdma->base_addr) {
-               dev_err(&pdev->dev,
-                       "Cannot request memregion/iomap dma address\n");
-               return -EADDRNOTAVAIL;
-       }
+       tdma->base_addr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(tdma->base_addr))
+               return PTR_ERR(tdma->base_addr);
 
        tdma->dma_clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(tdma->dma_clk)) {
index 6671992..acb709b 100644 (file)
@@ -158,7 +158,7 @@ config EDAC_I3000
 
 config EDAC_I3200
        tristate "Intel 3200"
-       depends on EDAC_MM_EDAC && PCI && X86 && EXPERIMENTAL
+       depends on EDAC_MM_EDAC && PCI && X86
        help
          Support for error detection and correction on the Intel
          3200 and 3210 server chipsets.
@@ -224,7 +224,7 @@ config EDAC_I7300
 config EDAC_SBRIDGE
        tristate "Intel Sandy-Bridge Integrated MC"
        depends on EDAC_MM_EDAC && PCI && X86_64 && X86_MCE_INTEL
-       depends on PCI_MMCONFIG && EXPERIMENTAL
+       depends on PCI_MMCONFIG
        help
          Support for error detection and correction the Intel
          Sandy Bridge Integrated Memory Controller.
index 682de75..4c54586 100644 (file)
@@ -66,7 +66,7 @@ config DEBUG_GPIO
 
 config GPIO_SYSFS
        bool "/sys/class/gpio/... (sysfs interface)"
-       depends on SYSFS && EXPERIMENTAL
+       depends on SYSFS
        help
          Say Y here to add a sysfs interface for GPIOs.
 
index 6819d63..7472182 100644 (file)
@@ -33,6 +33,7 @@
  *   interrupts.
  */
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/gpio.h>
 #include <linux/irq.h>
@@ -544,11 +545,9 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
        mvchip->chip.of_node = np;
 
        spin_lock_init(&mvchip->lock);
-       mvchip->membase = devm_request_and_ioremap(&pdev->dev, res);
-       if (! mvchip->membase) {
-               dev_err(&pdev->dev, "Cannot ioremap\n");
-               return -ENOMEM;
-       }
+       mvchip->membase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(mvchip->membase))
+               return PTR_ERR(mvchip->membase);
 
        /* The Armada XP has a second range of registers for the
         * per-CPU registers */
@@ -559,11 +558,10 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
                        return -ENODEV;
                }
 
-               mvchip->percpu_membase = devm_request_and_ioremap(&pdev->dev, res);
-               if (! mvchip->percpu_membase) {
-                       dev_err(&pdev->dev, "Cannot ioremap\n");
-                       return -ENOMEM;
-               }
+               mvchip->percpu_membase = devm_ioremap_resource(&pdev->dev,
+                                                              res);
+               if (IS_ERR(mvchip->percpu_membase)) 
+                       return PTR_ERR(mvchip->percpu_membase);
        }
 
        /*
index fa2a63c..45d97c4 100644 (file)
@@ -20,6 +20,7 @@
  * MA  02110-1301, USA.
  */
 
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
@@ -253,12 +254,14 @@ static int mxs_gpio_probe(struct platform_device *pdev)
                        parent = of_get_parent(np);
                        base = of_iomap(parent, 0);
                        of_node_put(parent);
+                       if (!base)
+                               return -EADDRNOTAVAIL;
                } else {
                        iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-                       base = devm_request_and_ioremap(&pdev->dev, iores);
+                       base = devm_ioremap_resource(&pdev->dev, iores);
+                       if (IS_ERR(base))
+                               return PTR_ERR(base);
                }
-               if (!base)
-                       return -EADDRNOTAVAIL;
        }
        port->base = base;
 
index 5f45fc4..7a4bf7c 100644 (file)
@@ -140,11 +140,9 @@ static int spics_gpio_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       spics->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!spics->base) {
-               dev_err(&pdev->dev, "request and ioremap fail\n");
-               return -ENOMEM;
-       }
+       spics->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(spics->base))
+               return PTR_ERR(spics->base);
 
        if (of_property_read_u32(np, "st-spics,peripcfg-reg",
                                &spics->perip_cfg))
index 85841ee..c20e051 100644 (file)
@@ -214,11 +214,10 @@ static int xway_stp_probe(struct platform_device *pdev)
        if (!chip)
                return -ENOMEM;
 
-       chip->virt = devm_request_and_ioremap(&pdev->dev, res);
-       if (!chip->virt) {
-               dev_err(&pdev->dev, "failed to remap STP memory\n");
-               return -ENOMEM;
-       }
+       chip->virt = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(chip->virt))
+               return PTR_ERR(chip->virt);
+       
        chip->gc.dev = &pdev->dev;
        chip->gc.label = "stp-xway";
        chip->gc.direction_output = xway_stp_dir_out;
index 63cb643..414ad91 100644 (file)
@@ -17,6 +17,7 @@
  *
  */
 
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/irq.h>
 #include <linux/interrupt.h>
@@ -450,11 +451,9 @@ static int tegra_gpio_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!regs) {
-               dev_err(&pdev->dev, "Couldn't ioremap regs\n");
-               return -ENODEV;
-       }
+       regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(regs))
+               return PTR_ERR(regs);
 
        for (i = 0; i < tegra_gpio_bank_count; i++) {
                for (j = 0; j < 4; j++) {
index a277b12..da4a51e 100644 (file)
@@ -1,6 +1,6 @@
 config DRM_AST
        tristate "AST server chips"
-       depends on DRM && PCI && EXPERIMENTAL
+       depends on DRM && PCI
        select DRM_TTM
        select FB_SYS_COPYAREA
        select FB_SYS_FILLRECT
index fc154dd..bf67b22 100644 (file)
@@ -1,6 +1,6 @@
 config DRM_CIRRUS_QEMU
        tristate "Cirrus driver for QEMU emulated device"
-       depends on DRM && PCI && EXPERIMENTAL
+       depends on DRM && PCI
        select FB_SYS_FILLRECT
        select FB_SYS_COPYAREA
        select FB_SYS_IMAGEBLIT
index 67a83e6..411f69b 100644 (file)
@@ -1785,11 +1785,9 @@ static int fimc_probe(struct platform_device *pdev)
 
        /* resource memory */
        ctx->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       ctx->regs = devm_request_and_ioremap(dev, ctx->regs_res);
-       if (!ctx->regs) {
-               dev_err(dev, "failed to map registers.\n");
-               return -ENXIO;
-       }
+       ctx->regs = devm_ioremap_resource(dev, ctx->regs_res);
+       if (IS_ERR(ctx->regs))
+               return PTR_ERR(ctx->regs);
 
        /* resource irq */
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
index 9537761..36493ce 100644 (file)
@@ -913,11 +913,9 @@ static int fimd_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       ctx->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!ctx->regs) {
-               dev_err(dev, "failed to map registers\n");
-               return -ENXIO;
-       }
+       ctx->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ctx->regs))
+               return PTR_ERR(ctx->regs);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (!res) {
index 36c3905..7329abd 100644 (file)
@@ -1136,10 +1136,9 @@ static int g2d_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       g2d->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!g2d->regs) {
-               dev_err(dev, "failed to remap I/O memory\n");
-               ret = -ENXIO;
+       g2d->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(g2d->regs)) {
+               ret = PTR_ERR(g2d->regs);
                goto err_put_clk;
        }
 
index 8140753..7841c3b 100644 (file)
@@ -1692,11 +1692,9 @@ static int gsc_probe(struct platform_device *pdev)
 
        /* resource memory */
        ctx->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       ctx->regs = devm_request_and_ioremap(dev, ctx->regs_res);
-       if (!ctx->regs) {
-               dev_err(dev, "failed to map registers.\n");
-               return -ENXIO;
-       }
+       ctx->regs = devm_ioremap_resource(dev, ctx->regs_res);
+       if (IS_ERR(ctx->regs))
+               return PTR_ERR(ctx->regs);
 
        /* resource irq */
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
index e9e83ef..a6da774 100644 (file)
@@ -656,11 +656,9 @@ static int rotator_probe(struct platform_device *pdev)
                                platform_get_device_id(pdev)->driver_data;
 
        rot->regs_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       rot->regs = devm_request_and_ioremap(dev, rot->regs_res);
-       if (!rot->regs) {
-               dev_err(dev, "failed to map register\n");
-               return -ENXIO;
-       }
+       rot->regs = devm_ioremap_resource(dev, rot->regs_res);
+       if (IS_ERR(rot->regs))
+               return PTR_ERR(rot->regs);
 
        rot->irq = platform_get_irq(pdev, 0);
        if (rot->irq < 0) {
index 41ff79d..d4c3f3d 100644 (file)
@@ -2526,11 +2526,9 @@ static int hdmi_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       hdata->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!hdata->regs) {
-               DRM_ERROR("failed to map registers\n");
-               return -ENXIO;
-       }
+       hdata->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hdata->regs))
+               return PTR_ERR(hdata->regs);
 
        ret = devm_gpio_request(&pdev->dev, hdata->hpd_gpio, "HPD");
        if (ret) {
index 42e665c..1188f0f 100644 (file)
@@ -1,6 +1,6 @@
 config DRM_GMA500
        tristate "Intel GMA5/600 KMS Framebuffer"
-       depends on DRM && PCI && X86 && EXPERIMENTAL
+       depends on DRM && PCI && X86
        select FB_CFB_COPYAREA
         select FB_CFB_FILLRECT
         select FB_CFB_IMAGEBLIT
index d630134..b487cde 100644 (file)
@@ -1,6 +1,6 @@
 config DRM_MGAG200
        tristate "Kernel modesetting driver for MGA G200 server engines"
-       depends on DRM && PCI && EXPERIMENTAL
+       depends on DRM && PCI
        select FB_SYS_FILLRECT
        select FB_SYS_COPYAREA
        select FB_SYS_IMAGEBLIT
index 656b2e3..d365c6d 100644 (file)
@@ -764,11 +764,9 @@ static int tegra_dc_probe(struct platform_device *pdev)
                return -ENXIO;
        }
 
-       dc->regs = devm_request_and_ioremap(&pdev->dev, regs);
-       if (!dc->regs) {
-               dev_err(&pdev->dev, "failed to remap registers\n");
-               return -ENXIO;
-       }
+       dc->regs = devm_ioremap_resource(&pdev->dev, regs);
+       if (IS_ERR(dc->regs))
+               return PTR_ERR(dc->regs);
 
        dc->irq = platform_get_irq(pdev, 0);
        if (dc->irq < 0) {
index e060c7e..266af78 100644 (file)
@@ -1259,9 +1259,9 @@ static int tegra_hdmi_probe(struct platform_device *pdev)
        if (!regs)
                return -ENXIO;
 
-       hdmi->regs = devm_request_and_ioremap(&pdev->dev, regs);
-       if (!hdmi->regs)
-               return -EADDRNOTAVAIL;
+       hdmi->regs = devm_ioremap_resource(&pdev->dev, regs);
+       if (IS_ERR(hdmi->regs))
+               return PTR_ERR(hdmi->regs);
 
        err = platform_get_irq(pdev, 0);
        if (err < 0)
index 5d17b11..92e25a7 100644 (file)
@@ -139,9 +139,9 @@ static int tegra_host1x_probe(struct platform_device *pdev)
 
        host1x->irq = err;
 
-       host1x->regs = devm_request_and_ioremap(&pdev->dev, regs);
-       if (!host1x->regs) {
-               err = -EADDRNOTAVAIL;
+       host1x->regs = devm_ioremap_resource(&pdev->dev, regs);
+       if (IS_ERR(host1x->regs)) {
+               err = PTR_ERR(host1x->regs);
                goto err;
        }
 
index 56e0bf3..6222af1 100644 (file)
@@ -1,6 +1,6 @@
 config DRM_UDL
        tristate "DisplayLink"
-       depends on DRM && EXPERIMENTAL
+       depends on DRM
        depends on USB_ARCH_HAS_HCD
        select DRM_USB
        select FB_SYS_FILLRECT
index 2f8c76b..46cde09 100644 (file)
@@ -89,7 +89,7 @@ source drivers/i2c/busses/Kconfig
 
 config I2C_STUB
        tristate "I2C/SMBus Test Stub"
-       depends on EXPERIMENTAL && m
+       depends on m
        default 'n'
        help
          This module may be useful to developers of SMBus client drivers,
index bdca511..9b94a78 100644 (file)
@@ -22,7 +22,7 @@ config I2C_ALI1535
 
 config I2C_ALI1563
        tristate "ALI 1563"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        help
          If you say yes to this option, support will be included for the SMB
          Host controller on Acer Labs Inc. (ALI) M1563 South Bridges.  The SMB
@@ -56,7 +56,7 @@ config I2C_AMD756
 
 config I2C_AMD756_S4882
        tristate "SMBus multiplexing on the Tyan S4882"
-       depends on I2C_AMD756 && X86 && EXPERIMENTAL
+       depends on I2C_AMD756 && X86
        help
          Enabling this option will add specific SMBus support for the Tyan
          S4882 motherboard.  On this 4-CPU board, the SMBus is multiplexed
@@ -164,7 +164,7 @@ config I2C_NFORCE2
 
 config I2C_NFORCE2_S4985
        tristate "SMBus multiplexing on the Tyan S4985"
-       depends on I2C_NFORCE2 && X86 && EXPERIMENTAL
+       depends on I2C_NFORCE2 && X86
        help
          Enabling this option will add specific SMBus support for the Tyan
          S4985 motherboard.  On this 4-CPU board, the SMBus is multiplexed
@@ -215,7 +215,7 @@ config I2C_SIS96X
 
 config I2C_VIA
        tristate "VIA VT82C586B"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        select I2C_ALGOBIT
        help
          If you say yes to this option, support will be included for the VIA
@@ -267,7 +267,7 @@ comment "Mac SMBus host controller drivers"
 
 config I2C_HYDRA
        tristate "CHRP Apple Hydra Mac I/O I2C interface"
-       depends on PCI && PPC_CHRP && EXPERIMENTAL
+       depends on PCI && PPC_CHRP
        select I2C_ALGOBIT
        help
          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)"
 
 config I2C_AT91
        tristate "Atmel AT91 I2C Two-Wire interface (TWI)"
-       depends on ARCH_AT91 && EXPERIMENTAL
+       depends on ARCH_AT91
        help
          This supports the use of the I2C interface on Atmel AT91
          processors.
@@ -519,7 +519,6 @@ config I2C_NUC900
 
 config I2C_OCORES
        tristate "OpenCores I2C Controller"
-       depends on EXPERIMENTAL
        help
          If you say yes to this option, support will be included for the
          OpenCores I2C controller. For details see
@@ -712,7 +711,7 @@ config I2C_OCTEON
 
 config I2C_XILINX
        tristate "Xilinx I2C Controller"
-       depends on EXPERIMENTAL && HAS_IOMEM
+       depends on HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          Xilinx I2C controller.
@@ -803,7 +802,6 @@ config I2C_PARPORT_LIGHT
 
 config I2C_TAOS_EVM
        tristate "TAOS evaluation module"
-       depends on EXPERIMENTAL
        select SERIO
        select SERIO_SERPORT
        default n
index 2bfc04d..ebc2241 100644 (file)
@@ -723,9 +723,9 @@ static int at91_twi_probe(struct platform_device *pdev)
        if (!dev->pdata)
                return -ENODEV;
 
-       dev->base = devm_request_and_ioremap(&pdev->dev, mem);
-       if (!dev->base)
-               return -EBUSY;
+       dev->base = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(dev->base))
+               return PTR_ERR(dev->base);
 
        dev->irq = platform_get_irq(pdev, 0);
        if (dev->irq < 0)
index b973474..a71ece6 100644 (file)
@@ -511,9 +511,9 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!base)
-               return -EBUSY;
+       base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(base))
+               return PTR_ERR(base);
 
        i2c_imx = devm_kzalloc(&pdev->dev, sizeof(struct imx_i2c_struct),
                                GFP_KERNEL);
index a873d0a..a337d08 100644 (file)
@@ -12,6 +12,7 @@
  * kind, whether express or implied.
  */
 
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -364,9 +365,9 @@ static int ocores_i2c_probe(struct platform_device *pdev)
        if (!i2c)
                return -ENOMEM;
 
-       i2c->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!i2c->base)
-               return -EADDRNOTAVAIL;
+       i2c->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(i2c->base))
+               return PTR_ERR(i2c->base);
 
        pdata = pdev->dev.platform_data;
        if (pdata) {
index 4cc2f05..3ee1886 100644 (file)
@@ -1103,11 +1103,9 @@ omap_i2c_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       dev->base = devm_request_and_ioremap(&pdev->dev, mem);
-       if (!dev->base) {
-               dev_err(&pdev->dev, "I2C region already claimed\n");
-               return -ENOMEM;
-       }
+       dev->base = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(dev->base))
+               return PTR_ERR(dev->base);
 
        match = of_match_device(of_match_ptr(omap_i2c_of_match), &pdev->dev);
        if (match) {
index 9bd4d73..4ba4a95 100644 (file)
@@ -642,11 +642,9 @@ static int rcar_i2c_probe(struct platform_device *pdev)
        if (ret < 0)
                return ret;
 
-       priv->io = devm_request_and_ioremap(dev, res);
-       if (!priv->io) {
-               dev_err(dev, "cannot ioremap\n");
-               return -ENODEV;
-       }
+       priv->io = devm_ioremap_resource(dev, res);
+       if (IS_ERR(priv->io))
+               return PTR_ERR(priv->io);
 
        priv->irq = platform_get_irq(pdev, 0);
        init_waitqueue_head(&priv->wait);
index a290d08..c807a6d 100644 (file)
@@ -1042,11 +1042,10 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
                goto err_clk;
        }
 
-       i2c->regs = devm_request_and_ioremap(&pdev->dev, res);
+       i2c->regs = devm_ioremap_resource(&pdev->dev, res);
 
-       if (i2c->regs == NULL) {
-               dev_err(&pdev->dev, "cannot map IO\n");
-               ret = -ENXIO;
+       if (IS_ERR(i2c->regs)) {
+               ret = PTR_ERR(i2c->regs);
                goto err_clk;
        }
 
index e03381a..5a7ad24 100644 (file)
@@ -309,10 +309,9 @@ static int i2c_sirfsoc_probe(struct platform_device *pdev)
                goto out;
        }
 
-       siic->base = devm_request_and_ioremap(&pdev->dev, mem_res);
-       if (siic->base == NULL) {
-               dev_err(&pdev->dev, "IO remap failed!\n");
-               err = -ENOMEM;
+       siic->base = devm_ioremap_resource(&pdev->dev, mem_res);
+       if (IS_ERR(siic->base)) {
+               err = PTR_ERR(siic->base);
                goto out;
        }
 
index 580a0c0..60195b5 100644 (file)
@@ -888,11 +888,11 @@ stu300_probe(struct platform_device *pdev)
        if (!res)
                return -ENOENT;
 
-       dev->virtbase = devm_request_and_ioremap(&pdev->dev, res);
+       dev->virtbase = devm_ioremap_resource(&pdev->dev, res);
        dev_dbg(&pdev->dev, "initialize bus device I2C%d on virtual "
                "base %p\n", bus_nr, dev->virtbase);
-       if (!dev->virtbase)
-               return -ENOMEM;
+       if (IS_ERR(dev->virtbase))
+               return PTR_ERR(dev->virtbase);
 
        dev->irq = platform_get_irq(pdev, 0);
        ret = devm_request_irq(&pdev->dev, dev->irq, stu300_irh, 0, NAME, dev);
index 7b38877..1fb3009 100644 (file)
@@ -669,11 +669,9 @@ static int tegra_i2c_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!base) {
-               dev_err(&pdev->dev, "Cannot request/ioremap I2C registers\n");
-               return -EADDRNOTAVAIL;
-       }
+       base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(base))
+               return PTR_ERR(base);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (!res) {
index a005265..93f029e 100644 (file)
@@ -7,6 +7,7 @@
  * warranty of any kind, whether express or implied.
  */
 
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/slab.h>
@@ -225,11 +226,9 @@ static int xlr_i2c_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       priv->iobase = devm_request_and_ioremap(&pdev->dev, res);
-       if (!priv->iobase) {
-               dev_err(&pdev->dev, "devm_request_and_ioremap failed\n");
-               return -EBUSY;
-       }
+       priv->iobase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(priv->iobase))
+               return PTR_ERR(priv->iobase);
 
        priv->adap.dev.parent = &pdev->dev;
        priv->adap.owner        = THIS_MODULE;
index a0edd98..0be5b83 100644 (file)
@@ -19,7 +19,6 @@ config I2C_MUX_GPIO
 
 config I2C_MUX_PCA9541
        tristate "NXP PCA9541 I2C Master Selector"
-       depends on EXPERIMENTAL
        help
          If you say yes here you get support for the NXP PCA9541
          I2C Master Selector.
@@ -29,7 +28,6 @@ config I2C_MUX_PCA9541
 
 config I2C_MUX_PCA954x
        tristate "Philips PCA954x I2C Mux/switches"
-       depends on EXPERIMENTAL
        help
          If you say yes here you get support for the Philips PCA954x
          I2C mux/switch devices.
index 5a26584..3c4417a 100644 (file)
@@ -322,8 +322,7 @@ config BLK_DEV_GENERIC
           which otherwise might not be supported.
 
 config BLK_DEV_OPTI621
-       tristate "OPTi 82C621 chipset enhanced support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "OPTi 82C621 chipset enhanced support"
        select BLK_DEV_IDEPCI
        help
          This is a driver for the OPTi 82C621 EIDE controller.
@@ -417,7 +416,6 @@ config BLK_DEV_CY82C693
 
 config BLK_DEV_CS5520
        tristate "Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        select BLK_DEV_IDEDMA_PCI
        help
          Include support for PIO tuning and virtual DMA on the Cyrix MediaGX
@@ -761,8 +759,8 @@ config BLK_DEV_GAYLE
          use Gayle IDE interfaces on the Zorro expansion bus.
 
 config BLK_DEV_BUDDHA
-       tristate "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"
-       depends on ZORRO && EXPERIMENTAL
+       tristate "Buddha/Catweasel/X-Surf IDE interface support"
+       depends on ZORRO
        help
          This is the IDE driver for the IDE interfaces on the Buddha, Catweasel
          and X-Surf expansion boards.  It supports up to two interfaces on the
index 8489eb5..4732dfc 100644 (file)
@@ -18,7 +18,6 @@ config I7300_IDLE_IOAT_CHANNEL
 config I7300_IDLE
        tristate "Intel chipset idle memory power saving driver"
        select I7300_IDLE_IOAT_CHANNEL
-       depends on EXPERIMENTAL
        help
          Enable memory power savings when idle with certain Intel server
          chipsets. The chipset must have I/O AT support, such as the
index a526c0e..83c836b 100644 (file)
@@ -557,9 +557,9 @@ static int at91_adc_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       st->reg_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!st->reg_base) {
-               ret = -ENOMEM;
+       st->reg_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(st->reg_base)) {
+               ret = PTR_ERR(st->reg_base);
                goto error_free_device;
        }
 
index 695d237..cb1e8f6 100644 (file)
@@ -228,11 +228,9 @@ static int spear_kbd_probe(struct platform_device *pdev)
                kbd->suspended_rate = pdata->suspended_rate;
        }
 
-       kbd->io_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!kbd->io_base) {
-               dev_err(&pdev->dev, "request-ioremap failed for kbd_region\n");
-               return -ENOMEM;
-       }
+       kbd->io_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(kbd->io_base))
+               return PTR_ERR(kbd->io_base);
 
        kbd->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(kbd->clk))
index b571eb3..c52e3e5 100644 (file)
@@ -8,6 +8,7 @@
  * Driver is originally developed by Pavel Sokolov <psokolov@synopsys.com>
  */
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>
 #include <linux/input.h>
@@ -206,9 +207,9 @@ static int arc_ps2_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       arc_ps2->addr = devm_request_and_ioremap(&pdev->dev, res);
-       if (!arc_ps2->addr)
-               return -EBUSY;
+       arc_ps2->addr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(arc_ps2->addr))
+               return PTR_ERR(arc_ps2->addr);
 
        dev_info(&pdev->dev, "irq = %d, address = 0x%p, ports = %i\n",
                 irq, arc_ps2->addr, ARC_PS2_PORTS);
index e39f9db..0106898 100644 (file)
@@ -65,8 +65,8 @@ config AMD_IOMMU_STATS
          If unsure, say N.
 
 config AMD_IOMMU_V2
-       tristate "AMD IOMMU Version 2 driver (EXPERIMENTAL)"
-       depends on AMD_IOMMU && PROFILING && EXPERIMENTAL
+       tristate "AMD IOMMU Version 2 driver"
+       depends on AMD_IOMMU && PROFILING
        select MMU_NOTIFIER
        ---help---
          This option enables support for the AMD IOMMUv2 features of the IOMMU
@@ -119,8 +119,8 @@ config INTEL_IOMMU_FLOPPY_WA
          16MiB to make floppy (an ISA device) work.
 
 config IRQ_REMAP
-       bool "Support for Interrupt Remapping (EXPERIMENTAL)"
-       depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI && EXPERIMENTAL
+       bool "Support for Interrupt Remapping"
+       depends on X86_64 && X86_IO_APIC && PCI_MSI && ACPI
        select DMAR_TABLE
        ---help---
          Supports Interrupt remapping for IO-APIC and MSI devices.
index fc17889..f08dbcd 100644 (file)
@@ -19,6 +19,7 @@
 
 #define pr_fmt(fmt)    "%s(): " fmt, __func__
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/spinlock.h>
@@ -1176,9 +1177,9 @@ static int tegra_smmu_probe(struct platform_device *pdev)
                res = platform_get_resource(pdev, IORESOURCE_MEM, i);
                if (!res)
                        return -ENODEV;
-               smmu->regs[i] = devm_request_and_ioremap(&pdev->dev, res);
-               if (!smmu->regs[i])
-                       return -EBUSY;
+               smmu->regs[i] = devm_ioremap_resource(&pdev->dev, res);
+               if (IS_ERR(smmu->regs[i]))
+                       return PTR_ERR(smmu->regs[i]);
        }
 
        err = of_get_dma_window(dev->of_node, NULL, 0, NULL, &base, &size);
index 70ecd0c..5313c9e 100644 (file)
@@ -389,8 +389,8 @@ config HISAX_TELES_CS
 comment "HiSax sub driver modules"
 
 config HISAX_ST5481
-       tristate "ST5481 USB ISDN modem (EXPERIMENTAL)"
-       depends on USB && EXPERIMENTAL
+       tristate "ST5481 USB ISDN modem"
+       depends on USB
        select ISDN_HDLC
        select CRC_CCITT
        select BITREVERSE
@@ -399,20 +399,19 @@ config HISAX_ST5481
          e.g. the BeWan Gazel 128 USB
 
 config HISAX_HFCUSB
-       tristate "HFC USB based ISDN modems (EXPERIMENTAL)"
-       depends on USB && EXPERIMENTAL
+       tristate "HFC USB based ISDN modems"
+       depends on USB
        help
          This enables the driver for HFC USB based ISDN modems.
 
 config HISAX_HFC4S8S
-       tristate "HFC-4S/8S based ISDN cards (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "HFC-4S/8S based ISDN cards"
        help
          This enables the driver for HFC-4S/8S based ISDN cards.
 
 config HISAX_FRITZ_PCIPNP
-       tristate "AVM Fritz!Card PCI/PCIv2/PnP support (EXPERIMENTAL)"
-       depends on PCI && EXPERIMENTAL
+       tristate "AVM Fritz!Card PCI/PCIv2/PnP support"
+       depends on PCI
        help
          This enables the driver for the AVM Fritz!Card PCI,
          Fritz!Card PCI v2 and Fritz!Card PnP.
index b58bc8a..4469b44 100644 (file)
@@ -154,7 +154,7 @@ config LEDS_HP6XX
 config LEDS_PCA9532
        tristate "LED driver for PCA9532 dimmer"
        depends on LEDS_CLASS
-       depends on I2C && INPUT && EXPERIMENTAL
+       depends on I2C && INPUT
        help
          This option enables support for NXP pca9532
          LED controller. It is generally only useful
index 34ae49d..6cdcdb0 100644 (file)
@@ -1,6 +1,6 @@
 config LGUEST
        tristate "Linux hypervisor example code"
-       depends on X86_32 && EXPERIMENTAL && EVENTFD
+       depends on X86_32 && EVENTFD
        select HVC_DRIVER
        ---help---
          This is a very simple module which allows you to run
index a555da6..696238b 100644 (file)
@@ -278,7 +278,7 @@ config PMAC_RACKMETER
 
 config SENSORS_AMS
        tristate "Apple Motion Sensor driver"
-       depends on PPC_PMAC && !PPC64 && INPUT && ((ADB_PMU && I2C = y) || (ADB_PMU && !I2C) || I2C) && EXPERIMENTAL
+       depends on PPC_PMAC && !PPC64 && INPUT && ((ADB_PMU && I2C = y) || (ADB_PMU && !I2C) || I2C)
        select INPUT_POLLDEV
        help
          Support for the motion sensor included in PowerBooks. Includes
index 4ef0d80..8567a7a 100644 (file)
@@ -79,8 +79,7 @@ config MEDIA_RC_SUPPORT
 #
 
 config MEDIA_CONTROLLER
-       bool "Media Controller API (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "Media Controller API"
        depends on MEDIA_CAMERA_SUPPORT
        ---help---
          Enable the media controller API used to query media devices internal
@@ -100,8 +99,8 @@ config VIDEO_DEV
        default y
 
 config VIDEO_V4L2_SUBDEV_API
-       bool "V4L2 sub-device userspace API (EXPERIMENTAL)"
-       depends on VIDEO_DEV && MEDIA_CONTROLLER && EXPERIMENTAL
+       bool "V4L2 sub-device userspace API"
+       depends on VIDEO_DEV && MEDIA_CONTROLLER
        ---help---
          Enables the V4L2 sub-device pad-level userspace API used to configure
          video format, size and frame rate between hardware blocks.
index 5f6b542..4017c94 100644 (file)
@@ -18,7 +18,7 @@ config VIDEO_CX25821
 
 config VIDEO_CX25821_ALSA
        tristate "Conexant 25821 DMA audio support"
-       depends on VIDEO_CX25821 && SND && EXPERIMENTAL
+       depends on VIDEO_CX25821 && SND
        select SND_PCM
        ---help---
          This is a video4linux driver for direct (DMA) audio on
index 3dcfea6..3324112 100644 (file)
@@ -98,8 +98,8 @@ config VIDEO_OMAP2
          This is a v4l2 driver for the TI OMAP2 camera capture interface
 
 config VIDEO_OMAP3
-       tristate "OMAP 3 Camera support (EXPERIMENTAL)"
-       depends on OMAP_IOVMM && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3 && EXPERIMENTAL
+       tristate "OMAP 3 Camera support"
+       depends on OMAP_IOVMM && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
        ---help---
          Driver for an OMAP 3 camera controller.
 
@@ -169,8 +169,8 @@ config VIDEO_SAMSUNG_S5P_G2D
          2d graphics accelerator.
 
 config VIDEO_SAMSUNG_S5P_JPEG
-       tristate "Samsung S5P/Exynos4 JPEG codec driver (EXPERIMENTAL)"
-       depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P && EXPERIMENTAL
+       tristate "Samsung S5P/Exynos4 JPEG codec driver"
+       depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P
        select VIDEOBUF2_DMA_CONTIG
        select V4L2_MEM2MEM_DEV
        ---help---
index 2b1b9f3..c1a0713 100644 (file)
@@ -1098,11 +1098,9 @@ static int gsc_probe(struct platform_device *pdev)
        mutex_init(&gsc->lock);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       gsc->regs = devm_request_and_ioremap(dev, res);
-       if (!gsc->regs) {
-               dev_err(dev, "failed to map registers\n");
-               return -ENOENT;
-       }
+       gsc->regs = devm_ioremap_resource(dev, res);
+       if (IS_ERR(gsc->regs))
+               return PTR_ERR(gsc->regs);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (!res) {
index 6b155d7..4b9e0a2 100644 (file)
@@ -941,9 +941,9 @@ static int emmaprp_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, pcdev);
 
-       pcdev->base_emma = devm_request_and_ioremap(&pdev->dev, res_emma);
-       if (!pcdev->base_emma) {
-               ret = -ENXIO;
+       pcdev->base_emma = devm_ioremap_resource(&pdev->dev, res_emma);
+       if (IS_ERR(pcdev->base_emma)) {
+               ret = PTR_ERR(pcdev->base_emma);
                goto rel_vdev;
        }
 
index e2716c3..09a8c9c 100644 (file)
@@ -433,11 +433,9 @@ static int s3c_camif_probe(struct platform_device *pdev)
 
        mres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       camif->io_base = devm_request_and_ioremap(dev, mres);
-       if (!camif->io_base) {
-               dev_err(dev, "failed to obtain I/O memory\n");
-               return -ENOENT;
-       }
+       camif->io_base = devm_ioremap_resource(dev, mres);
+       if (IS_ERR(camif->io_base))
+               return PTR_ERR(camif->io_base);
 
        ret = camif_request_irqs(pdev, camif);
        if (ret < 0)
index c16b20d..f997a52 100644 (file)
@@ -2,7 +2,6 @@
 config VIDEO_SAMSUNG_S5P_FIMC
        bool "Samsung S5P/EXYNOS SoC camera interface driver (experimental)"
        depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && PLAT_S5P && PM_RUNTIME
-       depends on EXPERIMENTAL
        help
          Say Y here to enable camera host interface devices for
          Samsung S5P and EXYNOS SoC series.
index 545b46a..acc0f84 100644 (file)
@@ -909,11 +909,9 @@ static int fimc_probe(struct platform_device *pdev)
        mutex_init(&fimc->lock);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       fimc->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (fimc->regs == NULL) {
-               dev_err(&pdev->dev, "Failed to obtain io memory\n");
-               return -ENOENT;
-       }
+       fimc->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(fimc->regs))
+               return PTR_ERR(fimc->regs);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (res == NULL) {
index ed67220..67db9f8 100644 (file)
@@ -1426,11 +1426,9 @@ static int fimc_lite_probe(struct platform_device *pdev)
        mutex_init(&fimc->lock);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       fimc->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (fimc->regs == NULL) {
-               dev_err(&pdev->dev, "Failed to obtain io memory\n");
-               return -ENOENT;
-       }
+       fimc->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(fimc->regs))
+               return PTR_ERR(fimc->regs);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (res == NULL) {
index ec3fa7d..7abae01 100644 (file)
@@ -686,11 +686,9 @@ static int s5pcsis_probe(struct platform_device *pdev)
        }
 
        mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       state->regs = devm_request_and_ioremap(&pdev->dev, mem_res);
-       if (state->regs == NULL) {
-               dev_err(&pdev->dev, "Failed to request and remap io memory\n");
-               return -ENXIO;
-       }
+       state->regs = devm_ioremap_resource(&pdev->dev, mem_res);
+       if (IS_ERR(state->regs))
+               return PTR_ERR(state->regs);
 
        state->irq = platform_get_irq(pdev, 0);
        if (state->irq < 0) {
index 1bfbc32..6ed259f 100644 (file)
@@ -708,11 +708,9 @@ static int g2d_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       dev->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (dev->regs == NULL) {
-                       dev_err(&pdev->dev, "Failed to obtain io memory\n");
-                       return -ENOENT;
-       }
+       dev->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(dev->regs))
+               return PTR_ERR(dev->regs);
 
        dev->clk = clk_get(&pdev->dev, "sclk_fimg2d");
        if (IS_ERR_OR_NULL(dev->clk)) {
index 17983c4..3b02375 100644 (file)
@@ -1325,11 +1325,9 @@ static int s5p_jpeg_probe(struct platform_device *pdev)
        /* memory-mapped registers */
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       jpeg->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (jpeg->regs == NULL) {
-               dev_err(&pdev->dev, "Failed to obtain io memory\n");
-               return -ENOENT;
-       }
+       jpeg->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(jpeg->regs))
+               return PTR_ERR(jpeg->regs);
 
        /* interrupt service routine registration */
        jpeg->irq = ret = platform_get_irq(pdev, 0);
index 681bc6b..8b7fbc7 100644 (file)
@@ -1047,11 +1047,9 @@ static int s5p_mfc_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       dev->regs_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (dev->regs_base == NULL) {
-               dev_err(&pdev->dev, "Failed to obtain io memory\n");
-               return -ENOENT;
-       }
+       dev->regs_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(dev->regs_base))
+               return PTR_ERR(dev->regs_base);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (res == NULL) {
index ea11a51..7b659bd 100644 (file)
@@ -7,9 +7,8 @@
 # Licensed under GPL
 
 config VIDEO_SAMSUNG_S5P_TV
-       bool "Samsung TV driver for S5P platform (experimental)"
+       bool "Samsung TV driver for S5P platform"
        depends on PLAT_S5P && PM_RUNTIME
-       depends on EXPERIMENTAL
        default n
        ---help---
          Say Y here to enable selecting the TV output devices for
index 8bda2c9..1abdc7d 100644 (file)
@@ -1707,9 +1707,9 @@ static int mx27_camera_emma_init(struct platform_device *pdev)
                goto out;
        }
 
-       pcdev->base_emma = devm_request_and_ioremap(pcdev->dev, res_emma);
-       if (!pcdev->base_emma) {
-               err = -EADDRNOTAVAIL;
+       pcdev->base_emma = devm_ioremap_resource(pcdev->dev, res_emma);
+       if (IS_ERR(pcdev->base_emma)) {
+               err = PTR_ERR(pcdev->base_emma);
                goto out;
        }
 
@@ -1824,9 +1824,9 @@ static int mx2_camera_probe(struct platform_device *pdev)
        INIT_LIST_HEAD(&pcdev->discard);
        spin_lock_init(&pcdev->lock);
 
-       pcdev->base_csi = devm_request_and_ioremap(&pdev->dev, res_csi);
-       if (!pcdev->base_csi) {
-               err = -EADDRNOTAVAIL;
+       pcdev->base_csi = devm_ioremap_resource(&pdev->dev, res_csi);
+       if (IS_ERR(pcdev->base_csi)) {
+               err = PTR_ERR(pcdev->base_csi);
                goto exit;
        }
 
index 834bfec..7a622db 100644 (file)
@@ -134,7 +134,7 @@ config DVB_USB_MXL111SF
 
 config DVB_USB_RTL28XXU
        tristate "Realtek RTL28xxU DVB USB support"
-       depends on DVB_USB_V2 && EXPERIMENTAL
+       depends on DVB_USB_V2
        select DVB_RTL2830
        select DVB_RTL2832
        select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT
index 32b11c1..60a2604 100644 (file)
@@ -17,9 +17,9 @@ config VIDEO_PVRUSB2
          module will be called pvrusb2
 
 config VIDEO_PVRUSB2_SYSFS
-       bool "pvrusb2 sysfs support (EXPERIMENTAL)"
+       bool "pvrusb2 sysfs support"
        default y
-       depends on VIDEO_PVRUSB2 && SYSFS && EXPERIMENTAL
+       depends on VIDEO_PVRUSB2 && SYSFS
        ---help---
          This option enables the operation of a sysfs based
          interface for query and control of the pvrusb2 driver.
@@ -33,9 +33,9 @@ config VIDEO_PVRUSB2_SYSFS
          Note: This feature is experimental and subject to change.
 
 config VIDEO_PVRUSB2_DVB
-       bool "pvrusb2 ATSC/DVB support (EXPERIMENTAL)"
+       bool "pvrusb2 ATSC/DVB support"
        default y
-       depends on VIDEO_PVRUSB2 && DVB_CORE && EXPERIMENTAL
+       depends on VIDEO_PVRUSB2 && DVB_CORE
        select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT
        select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
        select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
index 06d31c9..df08736 100644 (file)
@@ -10,6 +10,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/reboot.h>
 #include <linux/platform_data/emif_plat.h>
@@ -1468,12 +1469,9 @@ static int __init_or_module emif_probe(struct platform_device *pdev)
                goto error;
        }
 
-       emif->base = devm_request_and_ioremap(emif->dev, res);
-       if (!emif->base) {
-               dev_err(emif->dev, "%s: devm_request_and_ioremap() failed\n",
-                       __func__);
+       emif->base = devm_ioremap_resource(emif->dev, res);
+       if (IS_ERR(emif->base))
                goto error;
-       }
 
        irq = platform_get_irq(pdev, 0);
        if (irq < 0) {
index 186f27d..2ca5f28 100644 (file)
@@ -17,6 +17,7 @@
  * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/ratelimit.h>
@@ -216,9 +217,9 @@ static int tegra20_mc_probe(struct platform_device *pdev)
                res = platform_get_resource(pdev, IORESOURCE_MEM, i);
                if (!res)
                        return -ENODEV;
-               mc->regs[i] = devm_request_and_ioremap(&pdev->dev, res);
-               if (!mc->regs[i])
-                       return -EBUSY;
+               mc->regs[i] = devm_ioremap_resource(&pdev->dev, res);
+               if (IS_ERR(mc->regs[i]))
+                       return PTR_ERR(mc->regs[i]);
        }
 
        irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
index 0b7ab93..0b97598 100644 (file)
@@ -17,6 +17,7 @@
  * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/ratelimit.h>
@@ -336,9 +337,9 @@ static int tegra30_mc_probe(struct platform_device *pdev)
                res = platform_get_resource(pdev, IORESOURCE_MEM, i);
                if (!res)
                        return -ENODEV;
-               mc->regs[i] = devm_request_and_ioremap(&pdev->dev, res);
-               if (!mc->regs[i])
-                       return -EBUSY;
+               mc->regs[i] = devm_ioremap_resource(&pdev->dev, res);
+               if (IS_ERR(mc->regs[i]))
+                       return PTR_ERR(mc->regs[i]);
        }
 
        irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
index f0ca41c..1314605 100644 (file)
@@ -3,7 +3,7 @@
 #
 
 menuconfig MEMSTICK
-       tristate "Sony MemoryStick card support (EXPERIMENTAL)"
+       tristate "Sony MemoryStick card support"
        help
          Sony MemoryStick is a proprietary storage/extension card protocol.
 
index 4f7a17f..1b37cf8 100644 (file)
@@ -5,8 +5,8 @@
 comment "MemoryStick Host Controller Drivers"
 
 config MEMSTICK_TIFM_MS
-       tristate "TI Flash Media MemoryStick Interface support  (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && PCI
+       tristate "TI Flash Media MemoryStick Interface support "
+       depends on PCI
        select TIFM_CORE
        help
          Say Y here if you want to be able to access MemoryStick cards with
@@ -21,8 +21,8 @@ config MEMSTICK_TIFM_MS
          module will be called tifm_ms.
 
 config MEMSTICK_JMICRON_38X
-       tristate "JMicron JMB38X MemoryStick interface support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && PCI
+       tristate "JMicron JMB38X MemoryStick interface support"
+       depends on PCI
 
        help
          Say Y here if you want to be able to access MemoryStick cards with
@@ -32,8 +32,8 @@ config MEMSTICK_JMICRON_38X
          module will be called jmb38x_ms.
 
 config MEMSTICK_R592
-       tristate "Ricoh R5C592 MemoryStick interface support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && PCI
+       tristate "Ricoh R5C592 MemoryStick interface support"
+       depends on PCI
 
        help
          Say Y here if you want to be able to access MemoryStick cards with
index ab8d0b2..1804331 100644 (file)
@@ -9,6 +9,7 @@
  * published by the Free Software Foundation.
  */
 
+#include <linux/err.h>
 #include <linux/gpio.h>
 #include <linux/io.h>
 #include <linux/module.h>
@@ -424,11 +425,9 @@ static int intel_msic_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       msic->irq_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!msic->irq_base) {
-               dev_err(&pdev->dev, "failed to map SRAM memory\n");
-               return -ENOMEM;
-       }
+       msic->irq_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(msic->irq_base))
+               return PTR_ERR(msic->irq_base);
 
        platform_set_drvdata(pdev, msic);
 
index 3c09cbb..c208238 100644 (file)
@@ -159,11 +159,9 @@ static int ssc_probe(struct platform_device *pdev)
                return -ENXIO;
        }
 
-       ssc->regs = devm_request_and_ioremap(&pdev->dev, regs);
-       if (!ssc->regs) {
-               dev_dbg(&pdev->dev, "ioremap failed\n");
-               return -EINVAL;
-       }
+       ssc->regs = devm_ioremap_resource(&pdev->dev, regs);
+       if (IS_ERR(ssc->regs))
+               return PTR_ERR(ssc->regs);
 
        ssc->phybase = regs->start;
 
index ef10387..269d072 100644 (file)
@@ -18,8 +18,7 @@ config MMC_UNSAFE_RESUME
          module parameter "removable=0" or "removable=1".
 
 config MMC_CLKGATE
-       bool "MMC host clock gating (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "MMC host clock gating"
        help
          This will attempt to aggressively gate the clock to the MMC card.
          This is done to save power due to gating off the logic and bus
index 8d13c65..cc8a8fa 100644 (file)
@@ -69,7 +69,7 @@ config MMC_SDHCI_PCI
          If unsure, say N.
 
 config MMC_RICOH_MMC
-       bool "Ricoh MMC Controller Disabler  (EXPERIMENTAL)"
+       bool "Ricoh MMC Controller Disabler"
        depends on MMC_SDHCI_PCI
        help
          This adds a pci quirk to disable Ricoh MMC Controller. This
@@ -186,9 +186,6 @@ config MMC_SDHCI_S3C
          often referrered to as the HSMMC block in some of the Samsung S3C
          range of SoC.
 
-         Note, due to the problems with DMA, the DMA support is only
-         available with CONFIG_EXPERIMENTAL is selected.
-
          If you have a controller with this interface, say Y or M here.
 
          If unsure, say N.
@@ -233,7 +230,7 @@ config MMC_SDHCI_SPEAR
 
 config MMC_SDHCI_S3C_DMA
        bool "DMA support on S3C SDHCI"
-       depends on MMC_SDHCI_S3C && EXPERIMENTAL
+       depends on MMC_SDHCI_S3C
        help
          Enable DMA support on the Samsung S3C SDHCI glue. The DMA
          has proved to be problematic if the controller encounters
@@ -330,8 +327,8 @@ config MMC_MXS
          If unsure, say N.
 
 config MMC_TIFM_SD
-       tristate "TI Flash Media MMC/SD Interface support  (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && PCI
+       tristate "TI Flash Media MMC/SD Interface support"
+       depends on PCI
        select TIFM_CORE
        help
          Say Y here if you want to be able to access MMC/SD cards with
@@ -410,8 +407,7 @@ config MMC_S3C_PIO
          the S3C MCI driver.
 
 config MMC_S3C_DMA
-       bool "Use DMA transfers only (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "Use DMA transfers only"
        help
          Use DMA to transfer data between memory and the hardare.
 
@@ -420,7 +416,7 @@ config MMC_S3C_DMA
          option is useful.
 
 config MMC_S3C_PIODMA
-       bool "Support for both PIO and DMA (EXPERIMENTAL)"
+       bool "Support for both PIO and DMA"
        help
          Compile both the PIO and DMA transfer routines into the
          driver and let the platform select at run-time which one
@@ -431,8 +427,8 @@ config MMC_S3C_PIODMA
 endchoice
 
 config MMC_SDRICOH_CS
-       tristate "MMC/SD driver for Ricoh Bay1Controllers (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && PCI && PCMCIA
+       tristate "MMC/SD driver for Ricoh Bay1Controllers"
+       depends on PCI && PCMCIA
        help
          Say Y here if your Notebook reports a Ricoh Bay1Controller PCMCIA
          card whenever you insert a MMC or SD card into the card slot.
index 5e1fb1d..41c27b7 100644 (file)
@@ -10,6 +10,7 @@
  * (at your option) any later version.
  */
 
+#include <linux/err.h>
 #include <linux/interrupt.h>
 #include <linux/module.h>
 #include <linux/io.h>
@@ -46,9 +47,9 @@ int dw_mci_pltfm_register(struct platform_device *pdev,
        host->dev = &pdev->dev;
        host->irq_flags = 0;
        host->pdata = pdev->dev.platform_data;
-       host->regs = devm_request_and_ioremap(&pdev->dev, regs);
-       if (!host->regs)
-               return -ENOMEM;
+       host->regs = devm_ioremap_resource(&pdev->dev, regs);
+       if (IS_ERR(host->regs))
+               return PTR_ERR(host->regs);
 
        if (drv_data && drv_data->init) {
                ret = drv_data->init(host);
index 206fe49..5b66555 100644 (file)
@@ -614,9 +614,9 @@ static int mxs_mmc_probe(struct platform_device *pdev)
        host = mmc_priv(mmc);
        ssp = &host->ssp;
        ssp->dev = &pdev->dev;
-       ssp->base = devm_request_and_ioremap(&pdev->dev, iores);
-       if (!ssp->base) {
-               ret = -EADDRNOTAVAIL;
+       ssp->base = devm_ioremap_resource(&pdev->dev, iores);
+       if (IS_ERR(ssp->base)) {
+               ret = PTR_ERR(ssp->base);
                goto out_mmc_free;
        }
 
index 82a8de1..a0c6214 100644 (file)
@@ -651,10 +651,9 @@ static int sdhci_s3c_probe(struct platform_device *pdev)
 #endif
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       host->ioaddr = devm_request_and_ioremap(&pdev->dev, res);
-       if (!host->ioaddr) {
-               dev_err(dev, "failed to map registers\n");
-               ret = -ENXIO;
+       host->ioaddr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(host->ioaddr)) {
+               ret = PTR_ERR(host->ioaddr);
                goto err_req_regs;
        }
 
index 73fcbbe..03f2eb5 100644 (file)
@@ -291,7 +291,7 @@ config SSFDC
 
 config SM_FTL
        tristate "SmartMedia/xD new translation layer"
-       depends on EXPERIMENTAL && BLOCK
+       depends on BLOCK
        select MTD_BLKDEVS
        select MTD_NAND_ECC
        help
index e469b01..c219e3d 100644 (file)
@@ -225,7 +225,7 @@ config MTD_ABSENT
 
 config MTD_XIP
        bool "XIP aware MTD support"
-       depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && EXPERIMENTAL && ARCH_MTD_XIP
+       depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && ARCH_MTD_XIP
        default y if XIP_KERNEL
        help
          This allows MTD support to work with flash memory which is also
index 27f80cd..c187342 100644 (file)
@@ -52,7 +52,7 @@ config MTD_MS02NV
 
 config MTD_DATAFLASH
        tristate "Support for AT45xxx DataFlash"
-       depends on SPI_MASTER && EXPERIMENTAL
+       depends on SPI_MASTER
        help
          This enables access to AT45xxx DataFlash chips, using SPI.
          Sometimes DataFlash chips are packaged inside MMC-format
@@ -81,7 +81,7 @@ config MTD_DATAFLASH_OTP
 
 config MTD_M25P80
        tristate "Support most SPI Flash chips (AT26DF, M25P, W25X, ...)"
-       depends on SPI_MASTER && EXPERIMENTAL
+       depends on SPI_MASTER
        help
          This enables access to most modern SPI flash chips, used for
          program and data storage.   Series supported include Atmel AT26DF,
index 2aabd96..8a82b8b 100644 (file)
@@ -949,10 +949,9 @@ static int spear_smi_probe(struct platform_device *pdev)
 
        smi_base = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       dev->io_base = devm_request_and_ioremap(&pdev->dev, smi_base);
-       if (!dev->io_base) {
-               ret = -EIO;
-               dev_err(&pdev->dev, "devm_request_and_ioremap fail\n");
+       dev->io_base = devm_ioremap_resource(&pdev->dev, smi_base);
+       if (IS_ERR(dev->io_base)) {
+               ret = PTR_ERR(dev->io_base);
                goto err;
        }
 
index a2dc2ae..c3525d2 100644 (file)
@@ -16,6 +16,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include <linux/err.h>
 #include <linux/sizes.h>
 
 #include <linux/types.h>
@@ -55,12 +56,10 @@ static int autcpu12_nvram_probe(struct platform_device *pdev)
        priv->map.bankwidth     = 4;
        priv->map.phys          = res->start;
        priv->map.size          = resource_size(res);
-       priv->map.virt          = devm_request_and_ioremap(&pdev->dev, res);
+       priv->map.virt = devm_ioremap_resource(&pdev->dev, res);
        strcpy((char *)priv->map.name, res->name);
-       if (!priv->map.virt) {
-               dev_err(&pdev->dev, "failed to remap mem resource\n");
-               return -EBUSY;
-       }
+       if (IS_ERR(priv->map.virt))
+               return PTR_ERR(priv->map.virt);
 
        simple_map_init(&priv->map);
 
index 3c3c791..d1da6ed 100644 (file)
@@ -7,6 +7,7 @@
  *  Copyright (C) 2010 John Crispin <blogic@openwrt.org>
  */
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
@@ -136,10 +137,9 @@ ltq_mtd_probe(struct platform_device *pdev)
        ltq_mtd->map = kzalloc(sizeof(struct map_info), GFP_KERNEL);
        ltq_mtd->map->phys = ltq_mtd->res->start;
        ltq_mtd->map->size = resource_size(ltq_mtd->res);
-       ltq_mtd->map->virt = devm_request_and_ioremap(&pdev->dev, ltq_mtd->res);
-       if (!ltq_mtd->map->virt) {
-               dev_err(&pdev->dev, "failed to remap mem resource\n");
-               err = -EBUSY;
+       ltq_mtd->map->virt = devm_ioremap_resource(&pdev->dev, ltq_mtd->res);
+       if (IS_ERR(ltq_mtd->map->virt)) {
+               err = PTR_ERR(ltq_mtd->map->virt);
                goto err_out;
        }
 
index 5819eb5..81bf5e5 100644 (file)
@@ -260,8 +260,7 @@ config MTD_NAND_S3C2410_CLKSTOP
          approximately 5mA of power when there is nothing happening.
 
 config MTD_NAND_DISKONCHIP
-       tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation) (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation)"
        depends on HAS_IOMEM
        select REED_SOLOMON
        select REED_SOLOMON_DEC16
@@ -331,8 +330,8 @@ config MTD_NAND_DISKONCHIP_BBTWRITE
          parameter "inftl_bbt_write=1".
 
 config MTD_NAND_DOCG4
-       tristate "Support for DiskOnChip G4 (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && HAS_IOMEM
+       tristate "Support for DiskOnChip G4"
+       depends on HAS_IOMEM
        select BCH
        select BITREVERSE
        help
index 67e62d3..c543cc0 100644 (file)
@@ -937,42 +937,35 @@ static int __init fsmc_nand_probe(struct platform_device *pdev)
        if (!res)
                return -EINVAL;
 
-       host->data_va = devm_request_and_ioremap(&pdev->dev, res);
-       if (!host->data_va) {
-               dev_err(&pdev->dev, "data ioremap failed\n");
-               return -ENOMEM;
-       }
+       host->data_va = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(host->data_va))
+               return PTR_ERR(host->data_va);
+       
        host->data_pa = (dma_addr_t)res->start;
 
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nand_addr");
        if (!res)
                return -EINVAL;
 
-       host->addr_va = devm_request_and_ioremap(&pdev->dev, res);
-       if (!host->addr_va) {
-               dev_err(&pdev->dev, "ale ioremap failed\n");
-               return -ENOMEM;
-       }
+       host->addr_va = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(host->addr_va))
+               return PTR_ERR(host->addr_va);
 
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nand_cmd");
        if (!res)
                return -EINVAL;
 
-       host->cmd_va = devm_request_and_ioremap(&pdev->dev, res);
-       if (!host->cmd_va) {
-               dev_err(&pdev->dev, "ale ioremap failed\n");
-               return -ENOMEM;
-       }
+       host->cmd_va = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(host->cmd_va))
+               return PTR_ERR(host->cmd_va);
 
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "fsmc_regs");
        if (!res)
                return -EINVAL;
 
-       host->regs_va = devm_request_and_ioremap(&pdev->dev, res);
-       if (!host->regs_va) {
-               dev_err(&pdev->dev, "regs ioremap failed\n");
-               return -ENOMEM;
-       }
+       host->regs_va = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(host->regs_va))
+               return PTR_ERR(host->regs_va);
 
        host->clk = clk_get(&pdev->dev, NULL);
        if (IS_ERR(host->clk)) {
index f182bef..0ca22ae 100644 (file)
@@ -677,11 +677,10 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)
                return -ENXIO;
        }
 
-       host->io_base = devm_request_and_ioremap(&pdev->dev, rc);
-       if (host->io_base == NULL) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               return -EIO;
-       }
+       host->io_base = devm_ioremap_resource(&pdev->dev, rc);
+       if (IS_ERR(host->io_base))
+               return PTR_ERR(host->io_base);
+       
        host->io_base_phy = rc->start;
 
        mtd = &host->mtd;
index 030b78c..be94ed5 100644 (file)
@@ -778,11 +778,9 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)
        }
        host->io_base_dma = rc->start;
 
-       host->io_base = devm_request_and_ioremap(&pdev->dev, rc);
-       if (host->io_base == NULL) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               return -ENOMEM;
-       }
+       host->io_base = devm_ioremap_resource(&pdev->dev, rc);
+       if (IS_ERR(host->io_base))
+               return PTR_ERR(host->io_base);
 
        if (pdev->dev.of_node)
                host->ncfg = lpc32xx_parse_dt(&pdev->dev);
index 45204e4..60ac5b9 100644 (file)
@@ -1437,9 +1437,9 @@ static int mxcnd_probe(struct platform_device *pdev)
                res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
                if (!res)
                        return -ENODEV;
-               host->regs_ip = devm_request_and_ioremap(&pdev->dev, res);
-               if (!host->regs_ip)
-                       return -ENOMEM;
+               host->regs_ip = devm_ioremap_resource(&pdev->dev, res);
+               if (IS_ERR(host->regs_ip))
+                       return PTR_ERR(host->regs_ip);
 
                res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
        } else {
@@ -1449,9 +1449,9 @@ static int mxcnd_probe(struct platform_device *pdev)
        if (!res)
                return -ENODEV;
 
-       host->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!host->base)
-               return -ENOMEM;
+       host->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(host->base))
+               return PTR_ERR(host->base);
 
        host->main_area0 = host->base;
 
index df954b4..d65afd2 100644 (file)
@@ -952,10 +952,9 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)
        info->platform  = plat;
        info->cpu_type  = cpu_type;
 
-       info->regs      = devm_request_and_ioremap(&pdev->dev, res);
-       if (info->regs == NULL) {
-               dev_err(&pdev->dev, "cannot reserve register region\n");
-               err = -EIO;
+       info->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(info->regs)) {
+               err = PTR_ERR(info->regs);
                goto exit_error;
        }
 
index e3d7266..e1e8748 100644 (file)
@@ -9,6 +9,7 @@
  * (C) Copyright TOSHIBA CORPORATION 2004-2007
  * All Rights Reserved.
  */
+#include <linux/err.h>
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/module.h>
@@ -286,9 +287,9 @@ static int __init txx9ndfmc_probe(struct platform_device *dev)
        drvdata = devm_kzalloc(&dev->dev, sizeof(*drvdata), GFP_KERNEL);
        if (!drvdata)
                return -ENOMEM;
-       drvdata->base = devm_request_and_ioremap(&dev->dev, res);
-       if (!drvdata->base)
-               return -EBUSY;
+       drvdata->base = devm_ioremap_resource(&dev->dev, res);
+       if (IS_ERR(drvdata->base))
+               return PTR_ERR(drvdata->base);
 
        hold = plat->hold ?: 20; /* tDH */
        spw = plat->spw ?: 90; /* max(tREADID, tWP, tRP) */
index 6a70184..2334190 100644 (file)
@@ -123,8 +123,7 @@ config IFB
 source "drivers/net/team/Kconfig"
 
 config MACVLAN
-       tristate "MAC-VLAN support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "MAC-VLAN support"
        ---help---
          This allows one to create virtual interfaces that map packets to
          or from specific MAC addresses to a particular interface.
@@ -138,7 +137,7 @@ config MACVLAN
          will be called macvlan.
 
 config MACVTAP
-       tristate "MAC-VLAN based tap driver (EXPERIMENTAL)"
+       tristate "MAC-VLAN based tap driver"
        depends on MACVLAN
        help
          This adds a specialized tap character device driver that is based
@@ -234,8 +233,8 @@ config VETH
          versa.
 
 config VIRTIO_NET
-       tristate "Virtio network driver (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && VIRTIO
+       tristate "Virtio network driver"
+       depends on VIRTIO
        ---help---
          This is the virtual network driver for virtio.  It can be used with
          lguest or QEMU based VMMs (like KVM or Xen).  Say Y or M.
index e1219e0..8e15bd4 100644 (file)
@@ -5,10 +5,7 @@
 config NET_VENDOR_8390
        bool "National Semi-conductor 8390 devices"
        default y
-       depends on NET_VENDOR_NATSEMI && (AMIGA_PCMCIA || PCI || SUPERH || \
-                  ISA || MCA || EISA || MAC || M32R || MACH_TX49XX || \
-                  MCA_LEGACY || H8300 || ARM || MIPS || ZORRO || PCMCIA || \
-                  EXPERIMENTAL)
+       depends on NET_VENDOR_NATSEMI
        ---help---
          If you have a network (Ethernet) card belonging to this class, say Y
          and read the Ethernet-HOWTO, available from
@@ -34,8 +31,8 @@ config EL2
          will be called 3c503.
 
 config AC3200
-       tristate "Ansel Communications EISA 3200 support (EXPERIMENTAL)"
-       depends on PCI && (ISA || EISA) && EXPERIMENTAL
+       tristate "Ansel Communications EISA 3200 support"
+       depends on PCI && (ISA || EISA)
        select CRC32
        ---help---
          If you have a network (Ethernet) card of this type, say Y and read
@@ -87,8 +84,8 @@ config E2100
          will be called e2100.
 
 config ES3210
-       tristate "Racal-Interlan EISA ES3210 support (EXPERIMENTAL)"
-       depends on PCI && EISA && EXPERIMENTAL
+       tristate "Racal-Interlan EISA ES3210 support"
+       depends on PCI && EISA
        select CRC32
        ---help---
          If you have a network (Ethernet) card of this type, say Y and read
@@ -141,8 +138,8 @@ config ARM_ETHERH
          should say Y to this option if you wish to use it with Linux.
 
 config LNE390
-       tristate "Mylex EISA LNE390A/B support (EXPERIMENTAL)"
-       depends on PCI && EISA && EXPERIMENTAL
+       tristate "Mylex EISA LNE390A/B support"
+       depends on PCI && EISA
        select CRC32
        ---help---
          If you have a network (Ethernet) card of this type, say Y and read
@@ -227,8 +224,8 @@ config APNE
          will be called apne.
 
 config NE3210
-       tristate "Novell/Eagle/Microdyne NE3210 EISA support (EXPERIMENTAL)"
-       depends on PCI && EISA && EXPERIMENTAL
+       tristate "Novell/Eagle/Microdyne NE3210 EISA support"
+       depends on PCI && EISA
        select CRC32
        ---help---
          If you have a network (Ethernet) card of this type, say Y and read
index 1ed886d..36d6abd 100644 (file)
@@ -44,8 +44,8 @@ config ATL1
          will be called atl1.
 
 config ATL1E
-       tristate "Atheros L1E Gigabit Ethernet support (EXPERIMENTAL)"
-       depends on PCI && EXPERIMENTAL
+       tristate "Atheros L1E Gigabit Ethernet support"
+       depends on PCI
        select CRC32
        select NET_CORE
        select MII
@@ -56,8 +56,8 @@ config ATL1E
          will be called atl1e.
 
 config ATL1C
-       tristate "Atheros L1C Gigabit Ethernet support (EXPERIMENTAL)"
-       depends on PCI && EXPERIMENTAL
+       tristate "Atheros L1C Gigabit Ethernet support"
+       depends on PCI
        select CRC32
        select NET_CORE
        select MII
index 1203be0..0c37fb2 100644 (file)
@@ -57,8 +57,8 @@ config TULIP
          be called tulip.
 
 config TULIP_MWI
-       bool "New bus configuration (EXPERIMENTAL)"
-       depends on TULIP && EXPERIMENTAL
+       bool "New bus configuration"
+       depends on TULIP
        ---help---
          This configures your Tulip card specifically for the card and
          system cache line size type you are using.
index dffee9d..b96ebc7 100644 (file)
@@ -5,7 +5,7 @@
 config NET_VENDOR_FUJITSU
        bool "Fujitsu devices"
        default y
-       depends on ISA || PCMCIA || ((ISA || MCA_LEGACY) && EXPERIMENTAL)
+       depends on ISA || PCMCIA
        ---help---
          If you have a network (Ethernet) card belonging to this class, say Y
          and read the Ethernet-HOWTO, available from
index 959faf7..dedfa3a 100644 (file)
@@ -5,9 +5,7 @@
 config NET_VENDOR_I825XX
        bool "Intel (82586/82593/82596) devices"
        default y
-       depends on NET_VENDOR_INTEL && (ISA || ISA_DMA_API || ARM || \
-                  ARCH_ACORN || MCA || MCA_LEGACY || SNI_RM || SUN3 || \
-                  GSC || BVME6000 || MVME16x || EXPERIMENTAL)
+       depends on NET_VENDOR_INTEL
        ---help---
          If you have a network (Ethernet) card belonging to this class, say Y
          and read the Ethernet-HOWTO, available from
@@ -33,8 +31,8 @@ config ELPLUS
          will be called 3c505.
 
 config EL16
-       tristate "3c507 \"EtherLink 16\" support (EXPERIMENTAL)"
-       depends on ISA && EXPERIMENTAL
+       tristate "3c507 \"EtherLink 16\" support"
+       depends on ISA
        ---help---
          If you have a network (Ethernet) card of this type, say Y and read
          the Ethernet-HOWTO, available from
@@ -149,8 +147,8 @@ config SUN3_82586
          VME boards.
 
 config ZNET
-       tristate "Zenith Z-Note support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && ISA_DMA_API && X86
+       tristate "Zenith Z-Note support"
+       depends on ISA_DMA_API && X86
        ---help---
          The Zenith Z-Note notebook computer has a built-in network
          (Ethernet) card, and this is the Linux driver for it. Note that the
index 3aff81d..5119ef1 100644 (file)
@@ -4,7 +4,7 @@
 
 config IP1000
        tristate "IP1000 Gigabit Ethernet support"
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        select NET_CORE
        select MII
        ---help---
index ddee406..6c78633 100644 (file)
@@ -5,11 +5,6 @@
 config NET_VENDOR_INTEL
        bool "Intel devices"
        default y
-       depends on PCI || PCI_MSI || ISA || ISA_DMA_API || ARM || \
-                  ARCH_ACORN || MCA || MCA_LEGACY || SNI_RM || SUN3 || \
-                  GSC || BVME6000 || MVME16x || \
-                  (ARM && ARCH_IXP4XX && IXP4XX_NPE && IXP4XX_QMGR) || \
-                  EXPERIMENTAL
        ---help---
          If you have a network (Ethernet) card belonging to this class, say Y
          and read the Ethernet-HOWTO, available from
index 8163fd0..afaf0c0 100644 (file)
@@ -5,7 +5,7 @@
 config NET_VENDOR_MICROCHIP
        bool "Microchip devices"
        default y
-       depends on SPI && EXPERIMENTAL
+       depends on SPI
        ---help---
          If you have a network (Ethernet) card belonging to this class, say Y
          and read the Ethernet-HOWTO, available from
@@ -20,7 +20,7 @@ if NET_VENDOR_MICROCHIP
 
 config ENC28J60
        tristate "ENC28J60 support"
-       depends on SPI && EXPERIMENTAL
+       depends on SPI
        select CRC32
        ---help---
          Support for the Microchip EN28J60 ethernet chip.
index f157334..a100860 100644 (file)
@@ -5,9 +5,6 @@
 config NET_VENDOR_NATSEMI
        bool "National Semi-conductor devices"
        default y
-       depends on AMIGA_PCMCIA || ARM || EISA || EXPERIMENTAL || H8300 || \
-                  ISA || M32R || MAC || MACH_JAZZ || MACH_TX49XX || MIPS || \
-                  PCI || PCMCIA || SUPERH || XTENSA_PLATFORM_XT2000 || ZORRO
        ---help---
          If you have a network (Ethernet) card belonging to this class, say Y
          and read the Ethernet-HOWTO, available from
index 8f29feb..cbbeca3 100644 (file)
@@ -32,8 +32,8 @@ config HAMACHI
          called hamachi.
 
 config YELLOWFIN
-       tristate "Packet Engines Yellowfin Gigabit-NIC support (EXPERIMENTAL)"
-       depends on PCI && EXPERIMENTAL
+       tristate "Packet Engines Yellowfin Gigabit-NIC support"
+       depends on PCI
        select CRC32
        ---help---
          Say Y here if you have a Packet Engines G-NIC PCI Gigabit Ethernet
index 01969e0..53c6af1 100644 (file)
@@ -19,8 +19,8 @@ config NET_VENDOR_RACAL
 if NET_VENDOR_RACAL
 
 config NI5010
-       tristate "NI5010 support (EXPERIMENTAL)"
-       depends on ISA && EXPERIMENTAL && BROKEN_ON_SMP
+       tristate "NI5010 support"
+       depends on ISA && BROKEN_ON_SMP
        ---help---
          If you have a network (Ethernet) card of this type, say Y and read
          the Ethernet-HOWTO, available from
index 5821966..783fa8b 100644 (file)
@@ -34,8 +34,8 @@ config ATP
          will be called atp.
 
 config 8139CP
-       tristate "RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)"
-       depends on PCI && EXPERIMENTAL
+       tristate "RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support"
+       depends on PCI
        select CRC32
        select NET_CORE
        select MII
index 29f1853..2366fa0 100644 (file)
@@ -6,7 +6,6 @@ config NET_VENDOR_SEEQ
        bool "SEEQ devices"
        default y
        depends on HAS_IOMEM
-       depends on (ARM && ARCH_ACORN) || SGI_HAS_SEEQ || EXPERIMENTAL
        ---help---
          If you have a network (Ethernet) card belonging to this class, say Y
          and read the Ethernet-HOWTO, available from
@@ -27,8 +26,7 @@ config ARM_ETHER3
          should say Y to this option if you wish to use it with Linux.
 
 config SEEQ8005
-       tristate "SEEQ8005 support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "SEEQ8005 support"
        ---help---
          This is a driver for the SEEQ 8005 network (Ethernet) card.  If this
          is for you, read the Ethernet-HOWTO, available from
index ae1ce17..3409b3f 100644 (file)
@@ -5,7 +5,7 @@
 config NET_VENDOR_SILAN
        bool "Silan devices"
        default y
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        ---help---
          If you have a network (Ethernet) card belonging to this class, say Y
          and read the Ethernet-HOWTO, available from
@@ -19,8 +19,8 @@ config NET_VENDOR_SILAN
 if NET_VENDOR_SILAN
 
 config SC92031
-       tristate "Silan SC92031 PCI Fast Ethernet Adapter driver (EXPERIMENTAL)"
-       depends on PCI && EXPERIMENTAL
+       tristate "Silan SC92031 PCI Fast Ethernet Adapter driver"
+       depends on PCI
        select CRC32
        ---help---
          This is a driver for the Fast Ethernet PCI network cards based on
index 1164930..c0ea838 100644 (file)
@@ -26,8 +26,8 @@ config STMMAC_PLATFORM
          If unsure, say N.
 
 config STMMAC_PCI
-       bool "STMMAC PCI bus support (EXPERIMENTAL)"
-       depends on STMMAC_ETH && PCI && EXPERIMENTAL
+       bool "STMMAC PCI bus support"
+       depends on STMMAC_ETH && PCI
        ---help---
          This is to select the Synopsys DWMAC available on PCI devices,
          if you have a controller with this interface, say Y or M here.
index 57bfd85..ae3a355 100644 (file)
@@ -32,8 +32,8 @@ config HAPPYMEAL
          will be called sunhme.
 
 config SUNBMAC
-       tristate "Sun BigMAC 10/100baseT support (EXPERIMENTAL)"
-       depends on SBUS && EXPERIMENTAL
+       tristate "Sun BigMAC 10/100baseT support"
+       depends on SBUS
        select CRC32
        ---help---
          This driver supports the "be" interface available as an Sbus option.
index 4426151..de71b1e 100644 (file)
@@ -88,8 +88,8 @@ config TLAN
          Please email feedback to <torben.mathiasen@compaq.com>.
 
 config CPMAC
-       tristate "TI AR7 CPMAC Ethernet support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && AR7
+       tristate "TI AR7 CPMAC Ethernet support"
+       depends on AR7
        select PHYLIB
        ---help---
          TI AR7 CPMAC Ethernet support
index 95eb34f..f71515d 100644 (file)
@@ -3,8 +3,8 @@
 #
 
 config HIPPI
-       bool "HIPPI driver support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && INET && PCI
+       bool "HIPPI driver support"
+       depends on INET && PCI
        ---help---
          HIgh Performance Parallel Interface (HIPPI) is a 800Mbit/sec and
          1600Mbit/sec dual-simplex switched or point-to-point network. HIPPI
@@ -18,7 +18,7 @@ config HIPPI
 if HIPPI
 
 config ROADRUNNER
-       tristate "Essential RoadRunner HIPPI PCI adapter support (EXPERIMENTAL)"
+       tristate "Essential RoadRunner HIPPI PCI adapter support"
        depends on PCI
        ---help---
          Say Y here if this is your PCI HIPPI network card.
@@ -27,7 +27,7 @@ config ROADRUNNER
          will be called rrunner.  If unsure, say N.
 
 config ROADRUNNER_LARGE_RINGS
-       bool "Use large TX/RX rings (EXPERIMENTAL)"
+       bool "Use large TX/RX rings"
        depends on ROADRUNNER
        ---help---
          If you say Y here, the RoadRunner driver will preallocate up to 2 MB
index 5952054..59e9d9e 100644 (file)
@@ -140,7 +140,7 @@ config LITELINK_DONGLE
 
 config MA600_DONGLE
        tristate "Mobile Action MA600 dongle"
-       depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL
+       depends on IRTTY_SIR && DONGLE && IRDA
        help
          Say Y here if you want to build support for the Mobile Action MA600
          dongle.  To compile it as a module, choose M here. The MA600 dongle
@@ -153,7 +153,7 @@ config MA600_DONGLE
 
 config GIRBIL_DONGLE
        tristate "Greenwich GIrBIL dongle"
-       depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL
+       depends on IRTTY_SIR && DONGLE && IRDA
        help
          Say Y here if you want to build support for the Greenwich GIrBIL
          dongle.  If you want to compile it as a module, choose M here.
@@ -164,7 +164,7 @@ config GIRBIL_DONGLE
 
 config MCP2120_DONGLE
        tristate "Microchip MCP2120"
-       depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL
+       depends on IRTTY_SIR && DONGLE && IRDA
        help
          Say Y here if you want to build support for the Microchip MCP2120
          dongle.  If you want to compile it as a module, choose M here.
@@ -178,7 +178,7 @@ config MCP2120_DONGLE
 
 config OLD_BELKIN_DONGLE
        tristate "Old Belkin dongle"
-       depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL
+       depends on IRTTY_SIR && DONGLE && IRDA
        help
          Say Y here if you want to build support for the Adaptec Airport 1000
          and 2000 dongles.  If you want to compile it as a module, choose
@@ -187,7 +187,7 @@ config OLD_BELKIN_DONGLE
 
 config ACT200L_DONGLE
        tristate "ACTiSYS IR-200L dongle"
-       depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL
+       depends on IRTTY_SIR && DONGLE && IRDA
        help
          Say Y here if you want to build support for the ACTiSYS IR-200L
          dongle. If you want to compile it as a module, choose M here.
@@ -198,7 +198,7 @@ config ACT200L_DONGLE
 
 config KINGSUN_DONGLE
        tristate "KingSun/DonShine DS-620 IrDA-USB dongle"
-       depends on IRDA && USB && EXPERIMENTAL
+       depends on IRDA && USB
        help
          Say Y or M here if you want to build support for the KingSun/DonShine
          DS-620 IrDA-USB bridge device driver.
@@ -212,14 +212,14 @@ config KINGSUN_DONGLE
 
 config EP7211_DONGLE
        tristate "Cirrus Logic clps711x I/R support"
-       depends on IRTTY_SIR && ARCH_CLPS711X && IRDA && EXPERIMENTAL
+       depends on IRTTY_SIR && ARCH_CLPS711X && IRDA
        help
          Say Y here if you want to build support for the Cirrus logic
          EP7211 chipset's infrared module.
 
 config KSDAZZLE_DONGLE
-       tristate "KingSun Dazzle IrDA-USB dongle (EXPERIMENTAL)"
-       depends on IRDA && USB && EXPERIMENTAL
+       tristate "KingSun Dazzle IrDA-USB dongle"
+       depends on IRDA && USB
        help
          Say Y or M here if you want to build support for the KingSun Dazzle
          IrDA-USB bridge device driver.
@@ -232,8 +232,8 @@ config KSDAZZLE_DONGLE
          ksdazzle-sir.
 
 config KS959_DONGLE
-       tristate "KingSun KS-959 IrDA-USB dongle (EXPERIMENTAL)"
-       depends on IRDA && USB && EXPERIMENTAL
+       tristate "KingSun KS-959 IrDA-USB dongle"
+       depends on IRDA && USB
        help
          Say Y or M here if you want to build support for the KingSun KS-959
          IrDA-USB bridge device driver.
@@ -264,8 +264,8 @@ config USB_IRDA
          you will need both USB and IrDA support in your kernel...
 
 config SIGMATEL_FIR
-       tristate "SigmaTel STIr4200 bridge (EXPERIMENTAL)"
-       depends on IRDA && USB && EXPERIMENTAL
+       tristate "SigmaTel STIr4200 bridge"
+       depends on IRDA && USB
        select CRC32
        ---help---
          Say Y here if you want to build support for the SigmaTel STIr4200
@@ -331,8 +331,8 @@ config SMC_IRCC_FIR
          smsc-ircc2.o.
 
 config ALI_FIR
-       tristate "ALi M5123 FIR (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && IRDA && ISA_DMA_API
+       tristate "ALi M5123 FIR"
+       depends on IRDA && ISA_DMA_API
        help
          Say Y here if you want to build support for the ALi M5123 FIR
          Controller.  The ALi M5123 FIR Controller is embedded in ALi M1543C,
@@ -343,8 +343,8 @@ config ALI_FIR
          ali-ircc.
 
 config VLSI_FIR
-       tristate "VLSI 82C147 SIR/MIR/FIR (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && IRDA && PCI
+       tristate "VLSI 82C147 SIR/MIR/FIR"
+       depends on IRDA && PCI
        help
          Say Y here if you want to build support for the VLSI 82C147
          PCI-IrDA Controller. This controller is used by the HP OmniBook 800
@@ -387,7 +387,7 @@ config PXA_FICP
 
 config MCS_FIR
        tristate "MosChip MCS7780 IrDA-USB dongle"
-       depends on IRDA && USB && EXPERIMENTAL
+       depends on IRDA && USB
        select CRC32
        help
          Say Y or M here if you want to build support for the MosChip
index 872df3e..278dea0 100644 (file)
@@ -82,8 +82,8 @@ config PPP_FILTER
          If unsure, say N.
 
 config PPP_MPPE
-       tristate "PPP MPPE compression (encryption) (EXPERIMENTAL)"
-       depends on PPP && EXPERIMENTAL
+       tristate "PPP MPPE compression (encryption)"
+       depends on PPP
        select CRYPTO
        select CRYPTO_SHA1
        select CRYPTO_ARC4
@@ -96,8 +96,8 @@ config PPP_MPPE
          configuring PPTP clients and servers to utilize this method.
 
 config PPP_MULTILINK
-       bool "PPP multilink support (EXPERIMENTAL)"
-       depends on PPP && EXPERIMENTAL
+       bool "PPP multilink support"
+       depends on PPP
        ---help---
          PPP multilink is a protocol (defined in RFC 1990) which allows you
          to combine several (logical or physical) lines into one logical PPP
@@ -118,8 +118,8 @@ config PPPOATM
          changes its encapsulation unilaterally.
 
 config PPPOE
-       tristate "PPP over Ethernet (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && PPP
+       tristate "PPP over Ethernet"
+       depends on PPP
        ---help---
          Support for PPP over Ethernet.
 
@@ -130,8 +130,8 @@ config PPPOE
          the heading "Kernel mode PPPoE").
 
 config PPTP
-       tristate "PPP over IPv4 (PPTP) (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && PPP && NET_IPGRE_DEMUX
+       tristate "PPP over IPv4 (PPTP)"
+       depends on PPP && NET_IPGRE_DEMUX
        ---help---
          Support for PPP over IPv4.(Point-to-Point Tunneling Protocol)
 
@@ -141,8 +141,8 @@ config PPTP
          utilize this module.
 
 config PPPOL2TP
-       tristate "PPP over L2TP (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && L2TP && PPP
+       tristate "PPP over L2TP"
+       depends on L2TP && PPP
        ---help---
          Support for PPP-over-L2TP socket family. L2TP is a protocol
          used by ISPs and enterprises to tunnel PPP traffic over UDP
index 6b08bd4..c3011af 100644 (file)
@@ -1,6 +1,5 @@
 menuconfig NET_TEAM
-       tristate "Ethernet team driver support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "Ethernet team driver support"
        ---help---
          This allows one to create virtual interfaces that teams together
          multiple ethernet devices.
index ef97621..3a44a5d 100644 (file)
@@ -8,8 +8,7 @@ menu "USB Network Adapters"
        depends on USB && NET
 
 config USB_CATC
-       tristate "USB CATC NetMate-based Ethernet device support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "USB CATC NetMate-based Ethernet device support"
        select CRC32
        ---help---
          Say Y if you want to use one of the following 10Mbps USB Ethernet
@@ -83,8 +82,7 @@ config USB_PEGASUS
          module will be called pegasus.
 
 config USB_RTL8150
-       tristate "USB RTL8150 based ethernet device support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "USB RTL8150 based ethernet device support"
        select NET_CORE
        select MII
        help
@@ -188,7 +186,7 @@ config USB_NET_CDCETHER
 
 config USB_NET_CDC_EEM
        tristate "CDC EEM support"
-       depends on USB_USBNET && EXPERIMENTAL
+       depends on USB_USBNET
        help
          This option supports devices conforming to the Communication Device
          Class (CDC) Ethernet Emulation Model, a specification that's easy to
@@ -287,7 +285,7 @@ config USB_NET_PLUSB
        tristate "Prolific PL-2301/2302/25A1 based cables"
        # if the handshake/init/reset problems, from original 'plusb',
        # are ever resolved ... then remove "experimental"
-       depends on USB_USBNET && EXPERIMENTAL
+       depends on USB_USBNET
        help
          Choose this option if you're using a host-to-host cable
          with one of these chips.
@@ -301,8 +299,8 @@ config USB_NET_MCS7830
          adapters marketed under the DeLOCK brand.
 
 config USB_NET_RNDIS_HOST
-       tristate "Host for RNDIS and ActiveSync devices (EXPERIMENTAL)"
-       depends on USB_USBNET && EXPERIMENTAL
+       tristate "Host for RNDIS and ActiveSync devices"
+       depends on USB_USBNET
        select USB_NET_CDCETHER
        help
          This option enables hosting "Remote NDIS" USB networking links,
@@ -380,7 +378,7 @@ config USB_EPSON2888
 
 config USB_KC2190
        boolean "KT Technology KC2190 based cables (InstaNet)"
-       depends on USB_NET_CDC_SUBSET && EXPERIMENTAL
+       depends on USB_NET_CDC_SUBSET
        help
          Choose this option if you're using a host-to-host cable
          with one of these chips.
index d58431e..c0cd88d 100644 (file)
@@ -375,7 +375,7 @@ config WAN_ROUTER_DRIVERS
          If unsure, say N.
 
 config CYCLADES_SYNC
-       tristate "Cyclom 2X(tm) cards (EXPERIMENTAL)"
+       tristate "Cyclom 2X(tm) cards"
        depends on WAN_ROUTER_DRIVERS && (PCI || ISA)
        ---help---
          Cyclom 2X from Cyclades Corporation <http://www.avocent.com/> is an
@@ -403,7 +403,7 @@ config CYCLADES_SYNC
          module will be called cyclomx.
 
 config CYCLOMX_X25
-       bool "Cyclom 2X X.25 support (EXPERIMENTAL)"
+       bool "Cyclom 2X X.25 support"
        depends on CYCLADES_SYNC
        help
          Connect a Cyclom 2X card to an X.25 network.
@@ -412,7 +412,7 @@ config CYCLOMX_X25
 
 # X.25 network drivers
 config LAPBETHER
-       tristate "LAPB over Ethernet driver (EXPERIMENTAL)"
+       tristate "LAPB over Ethernet driver"
        depends on LAPB && X25
        ---help---
          Driver for a pseudo device (typically called /dev/lapb0) which allows
@@ -428,7 +428,7 @@ config LAPBETHER
          If unsure, say N.
 
 config X25_ASY
-       tristate "X.25 async driver (EXPERIMENTAL)"
+       tristate "X.25 async driver"
        depends on LAPB && X25
        ---help---
          Send and receive X.25 frames over regular asynchronous serial
index 28aa05f..f8f0156 100644 (file)
@@ -138,7 +138,7 @@ config AIRO_CS
 
 config PCMCIA_WL3501
        tristate "Planet WL3501 PCMCIA cards"
-       depends on EXPERIMENTAL && PCMCIA
+       depends on PCMCIA
        select WIRELESS_EXT
        select WEXT_SPY
        help
@@ -148,7 +148,7 @@ config PCMCIA_WL3501
 
 config PRISM54
        tristate 'Intersil Prism GT/Duette/Indigo PCI/Cardbus (DEPRECATED)'
-       depends on PCI && EXPERIMENTAL
+       depends on PCI
        select WIRELESS_EXT
        select WEXT_SPY
        select WEXT_PRIV
@@ -187,7 +187,7 @@ config USB_ZD1201
 
 config USB_NET_RNDIS_WLAN
        tristate "Wireless RNDIS USB support"
-       depends on USB && EXPERIMENTAL
+       depends on USB
        depends on CFG80211
        select USB_USBNET
        select USB_NET_CDCETHER
@@ -217,7 +217,7 @@ source "drivers/net/wireless/rtl818x/Kconfig"
 
 config ADM8211
        tristate "ADMtek ADM8211 support"
-       depends on MAC80211 && PCI && EXPERIMENTAL
+       depends on MAC80211 && PCI
        select CRC32
        select EEPROM_93CX6
        ---help---
@@ -257,7 +257,7 @@ config MAC80211_HWSIM
 
 config MWL8K
        tristate "Marvell 88W8xxx PCI/PCIe Wireless support"
-       depends on MAC80211 && PCI && EXPERIMENTAL
+       depends on MAC80211 && PCI
        ---help---
          This driver supports Marvell TOPDOG 802.11 wireless cards.
 
index 26c4b72..630c83d 100644 (file)
@@ -18,7 +18,6 @@ config ATH6KL_USB
        depends on ATH6KL
        depends on USB
        depends on CFG80211
-       depends on EXPERIMENTAL
        ---help---
          This module adds support for wireless adapters based on
          Atheros AR6004 chipset running over USB. This is still under
index 13a2045..1a796e5 100644 (file)
@@ -1,6 +1,6 @@
 config CARL9170
        tristate "Linux Community AR9170 802.11n USB support"
-       depends on USB && MAC80211 && EXPERIMENTAL
+       depends on USB && MAC80211
        select ATH_COMMON
        select FW_LOADER
        select CRC32
index 6a315ba..e5712f0 100644 (file)
@@ -1,25 +1,15 @@
 #ifndef WIL_DBG_HEXDUMP_H_
 #define WIL_DBG_HEXDUMP_H_
 
-#if defined(CONFIG_DYNAMIC_DEBUG)
-#define wil_dynamic_hex_dump(prefix_str, prefix_type, rowsize, \
-                            groupsize, buf, len, ascii)        \
-do {                                                           \
-       DEFINE_DYNAMIC_DEBUG_METADATA(descriptor,               \
-               __builtin_constant_p(prefix_str) ? prefix_str : "hexdump");\
-       if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT))  \
-               print_hex_dump(KERN_DEBUG, prefix_str,          \
-                              prefix_type, rowsize, groupsize, \
-                              buf, len, ascii);                \
-} while (0)
+#include <linux/printk.h>
+#include <linux/dynamic_debug.h>
 
+#if defined(CONFIG_DYNAMIC_DEBUG)
 #define wil_print_hex_dump_debug(prefix_str, prefix_type, rowsize,     \
                                 groupsize, buf, len, ascii)            \
-       wil_dynamic_hex_dump(prefix_str, prefix_type, rowsize,          \
+       dynamic_hex_dump(prefix_str, prefix_type, rowsize,              \
                             groupsize, buf, len, ascii)
 
-#define print_hex_dump_bytes(prefix_str, prefix_type, buf, len)        \
-       wil_dynamic_hex_dump(prefix_str, prefix_type, 16, 1, buf, len, true)
 #else /* defined(CONFIG_DYNAMIC_DEBUG) */
 #define wil_print_hex_dump_debug(prefix_str, prefix_type, rowsize,     \
                                 groupsize, buf, len, ascii)            \
index 7a28d21..287c6b6 100644 (file)
@@ -78,8 +78,8 @@ config B43_PCMCIA
          If unsure, say N.
 
 config B43_SDIO
-       bool "Broadcom 43xx SDIO device support (EXPERIMENTAL)"
-       depends on B43 && SSB_SDIOHOST_POSSIBLE && EXPERIMENTAL
+       bool "Broadcom 43xx SDIO device support"
+       depends on B43 && SSB_SDIOHOST_POSSIBLE
        select SSB_SDIOHOST
        ---help---
          Broadcom 43xx device support for Soft-MAC SDIO devices.
@@ -109,8 +109,8 @@ config B43_PIO
        default y
 
 config B43_PHY_N
-       bool "Support for 802.11n (N-PHY) devices (EXPERIMENTAL)"
-       depends on B43 && EXPERIMENTAL
+       bool "Support for 802.11n (N-PHY) devices"
+       depends on B43
        ---help---
          Support for the N-PHY.
 
@@ -130,8 +130,8 @@ config B43_PHY_LP
          (802.11a support is optional, and currently disabled).
 
 config B43_PHY_HT
-       bool "Support for HT-PHY (high throughput) devices (EXPERIMENTAL)"
-       depends on B43 && EXPERIMENTAL
+       bool "Support for HT-PHY (high throughput) devices"
+       depends on B43
        ---help---
          Support for the HT-PHY.
 
index 2715b10..91c0cb3 100644 (file)
@@ -137,7 +137,7 @@ config IPW2200_PROMISCUOUS
 
 config IPW2200_QOS
         bool "Enable QoS support"
-        depends on IPW2200 && EXPERIMENTAL
+        depends on IPW2200
 
 config IPW2200_DEBUG
        bool "Enable full debugging output in IPW2200 module."
index 0ec55b5..15ea36b 100644 (file)
@@ -1,6 +1,6 @@
 config P54_COMMON
        tristate "Softmac Prism54 support"
-       depends on MAC80211 && EXPERIMENTAL
+       depends on MAC80211
        select FW_LOADER
        select CRC_CCITT
        ---help---
index c7548da..44d6ead 100644 (file)
@@ -82,7 +82,6 @@ config RT2800PCI_RT33XX
 
 config RT2800PCI_RT35XX
        bool "rt2800pci - Include support for rt35xx devices (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        default y
        ---help---
          This adds support for rt35xx wireless chipset family to the
@@ -92,7 +91,6 @@ config RT2800PCI_RT35XX
 
 config RT2800PCI_RT53XX
        bool "rt2800pci - Include support for rt53xx devices (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        default y
        ---help---
          This adds support for rt53xx wireless chipset family to the
@@ -101,7 +99,6 @@ config RT2800PCI_RT53XX
 
 config RT2800PCI_RT3290
        bool "rt2800pci - Include support for rt3290 devices (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        default y
        ---help---
          This adds support for rt3290 wireless chipset family to the
@@ -159,7 +156,6 @@ config RT2800USB_RT33XX
 
 config RT2800USB_RT35XX
        bool "rt2800usb - Include support for rt35xx devices (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        default y
        ---help---
          This adds support for rt35xx wireless chipset family to the
@@ -168,7 +164,6 @@ config RT2800USB_RT35XX
 
 config RT2800USB_RT53XX
        bool "rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
        ---help---
          This adds support for rt53xx wireless chipset family to the
          rt2800usb driver.
index 17d80fe..3033217 100644 (file)
@@ -3,7 +3,7 @@
 #
 config RTL8180
        tristate "Realtek 8180/8185 PCI support"
-       depends on MAC80211 && PCI && EXPERIMENTAL
+       depends on MAC80211 && PCI
        select EEPROM_93CX6
        ---help---
          This is a driver for RTL8180 and RTL8185 based cards.
index 21b1bbb..a60a031 100644 (file)
@@ -34,7 +34,7 @@ config RTL8192DE
 
 config RTL8723AE
        tristate "Realtek RTL8723AE PCIe Wireless Network Adapter"
-       depends on MAC80211 && PCI && EXPERIMENTAL
+       depends on MAC80211 && PCI
        select FW_LOADER
        select RTLWIFI
        ---help---
index 5f80969..96c8e1d 100644 (file)
@@ -1,6 +1,6 @@
 config ZD1211RW
        tristate "ZyDAS ZD1211/ZD1211B USB-wireless support"
-       depends on USB && MAC80211 && EXPERIMENTAL
+       depends on USB && MAC80211
        select FW_LOADER
        ---help---
          This is an experimental driver for the ZyDAS ZD1211/ZD1211B wireless
index 8fd255f..b90f85b 100644 (file)
@@ -36,8 +36,8 @@ config PCMCIA
           If unsure, say Y.
 
 config PCMCIA_LOAD_CIS
-       bool "Load CIS updates from userspace (EXPERIMENTAL)"
-       depends on PCMCIA && EXPERIMENTAL
+       bool "Load CIS updates from userspace"
+       depends on PCMCIA
        select FW_LOADER
        default y
        help
index 471c71f..75933a6 100644 (file)
@@ -1503,10 +1503,9 @@ static int at91_gpio_probe(struct platform_device *pdev)
                goto err;
        }
 
-       at91_chip->regbase = devm_request_and_ioremap(&pdev->dev, res);
-       if (!at91_chip->regbase) {
-               dev_err(&pdev->dev, "failed to map registers, ignoring.\n");
-               ret = -EBUSY;
+       at91_chip->regbase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(at91_chip->regbase)) {
+               ret = PTR_ERR(at91_chip->regbase);
                goto err;
        }
 
index d347b9f..4eb6d2c 100644 (file)
@@ -959,9 +959,9 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev)
                return err;
        }
 
-       pc->base = devm_request_and_ioremap(dev, &iomem);
-       if (!pc->base)
-               return -EADDRNOTAVAIL;
+       pc->base = devm_ioremap_resource(dev, &iomem);
+       if (IS_ERR(pc->base))
+               return PTR_ERR(pc->base);
 
        pc->gpio_chip = bcm2835_gpio_chip;
        pc->gpio_chip.dev = dev;
index fbb3715..8b7e7bc 100644 (file)
@@ -715,11 +715,9 @@ static int __init u300_gpio_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       gpio->base = devm_request_and_ioremap(&pdev->dev, memres);
-       if (!gpio->base) {
-               dev_err(gpio->dev, "could not get remap memory\n");
-               return -ENOMEM;
-       }
+       gpio->base = devm_ioremap_resource(&pdev->dev, memres);
+       if (IS_ERR(gpio->base))
+               return PTR_ERR(gpio->base);
 
        gpio->clk = devm_clk_get(gpio->dev, NULL);
        if (IS_ERR(gpio->clk)) {
index de05b64..5e77242 100644 (file)
@@ -866,11 +866,9 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       priv->reg_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!priv->reg_base) {
-               dev_err(dev, "ioremap failed\n");
-               return -ENODEV;
-       }
+       priv->reg_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(priv->reg_base))
+               return PTR_ERR(priv->reg_base);
 
        ret = exynos5440_gpiolib_register(pdev, priv);
        if (ret)
index 8ed20e8..a5d9d56 100644 (file)
@@ -411,14 +411,11 @@ static int pinctrl_falcon_probe(struct platform_device *pdev)
                        dev_err(&ppdev->dev, "failed to get clock\n");
                        return PTR_ERR(falcon_info.clk[*bank]);
                }
-               falcon_info.membase[*bank] =
-                               devm_request_and_ioremap(&pdev->dev, &res);
-               if (!falcon_info.membase[*bank]) {
-                       dev_err(&pdev->dev,
-                               "Failed to remap memory for bank %d\n",
-                               *bank);
-                       return -ENOMEM;
-               }
+               falcon_info.membase[*bank] = devm_ioremap_resource(&pdev->dev,
+                                                                  &res);
+               if (IS_ERR(falcon_info.membase[*bank]))
+                       return PTR_ERR(falcon_info.membase[*bank]);
+               
                avail = pad_r32(falcon_info.membase[*bank],
                                        LTQ_PADC_AVAIL);
                pins = fls(avail);
index 43a6f1f..4cebb9c 100644 (file)
@@ -584,9 +584,9 @@ int imx_pinctrl_probe(struct platform_device *pdev,
        if (!res)
                return -ENOENT;
 
-       ipctl->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!ipctl->base)
-               return -EBUSY;
+       ipctl->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ipctl->base))
+               return PTR_ERR(ipctl->base);
 
        imx_pinctrl_desc.name = dev_name(&pdev->dev);
        imx_pinctrl_desc.pins = info->pins;
index 1bb16ff..96e7cfb 100644 (file)
@@ -1367,9 +1367,9 @@ static int nmk_gpio_probe(struct platform_device *dev)
                goto out;
        }
 
-       base = devm_request_and_ioremap(&dev->dev, res);
-       if (!base) {
-               ret = -ENOMEM;
+       base = devm_ioremap_resource(&dev->dev, res);
+       if (IS_ERR(base)) {
+               ret = PTR_ERR(base);
                goto out;
        }
 
index 51f8a38..1f49bb0 100644 (file)
@@ -11,6 +11,7 @@
  *
  */
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/device.h>
 #include <linux/io.h>
@@ -187,9 +188,9 @@ int pxa3xx_pinctrl_register(struct platform_device *pdev,
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!res)
                return -ENOENT;
-       info->virt_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!info->virt_base)
-               return -ENOMEM;
+       info->virt_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(info->virt_base))
+               return PTR_ERR(info->virt_base);
        info->pctrl = pinctrl_register(desc, &pdev->dev, info);
        if (!info->pctrl) {
                dev_err(&pdev->dev, "failed to register PXA pinmux driver\n");
index fd7b24c..7e6669c 100644 (file)
@@ -917,11 +917,9 @@ static int samsung_pinctrl_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       drvdata->virt_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!drvdata->virt_base) {
-               dev_err(dev, "ioremap failed\n");
-               return -ENODEV;
-       }
+       drvdata->virt_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(drvdata->virt_base))
+               return PTR_ERR(drvdata->virt_base);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (res)
index 718ec57..2b57725 100644 (file)
@@ -1078,9 +1078,9 @@ static int u300_pmx_probe(struct platform_device *pdev)
        if (!res)
                return -ENOENT;
 
-       upmx->virtbase = devm_request_and_ioremap(&pdev->dev, res);
-       if (!upmx->virtbase)
-               return -ENOMEM;
+       upmx->virtbase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(upmx->virtbase))
+               return PTR_ERR(upmx->virtbase);
 
        upmx->pctl = pinctrl_register(&u300_pmx_desc, &pdev->dev, upmx);
        if (!upmx->pctl) {
index 5f0eb04..ae8f3a0 100644 (file)
@@ -9,6 +9,7 @@
  *  Copyright (C) 2012 John Crispin <blogic@openwrt.org>
  */
 
+#include <linux/err.h>
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/of_platform.h>
@@ -687,11 +688,9 @@ static int pinmux_xway_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Failed to get resource\n");
                return -ENOENT;
        }
-       xway_info.membase[0] = devm_request_and_ioremap(&pdev->dev, res);
-       if (!xway_info.membase[0]) {
-               dev_err(&pdev->dev, "Failed to remap resource\n");
-               return -ENOMEM;
-       }
+       xway_info.membase[0] = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(xway_info.membase[0]))
+               return PTR_ERR(xway_info.membase[0]);
 
        match = of_match_device(xway_match, &pdev->dev);
        if (match)
index 3cf4ecd..295b349 100644 (file)
@@ -540,11 +540,9 @@ static int plgpio_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       plgpio->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!plgpio->base) {
-               dev_err(&pdev->dev, "request and ioremap fail\n");
-               return -ENOMEM;
-       }
+       plgpio->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(plgpio->base))
+               return PTR_ERR(plgpio->base);
 
        ret = plgpio_probe_dt(pdev, plgpio);
        if (ret) {
index c86bae8..7ab0b2f 100644 (file)
@@ -80,10 +80,9 @@ config ASUS_LAPTOP
          If you have an ACPI-compatible ASUS laptop, say Y or M here.
 
 config DELL_LAPTOP
-       tristate "Dell Laptop Extras (EXPERIMENTAL)"
+       tristate "Dell Laptop Extras"
        depends on X86
        depends on DCDBAS
-       depends on EXPERIMENTAL
        depends on BACKLIGHT_CLASS_DEVICE
        depends on RFKILL || RFKILL = n
        depends on SERIO_I8042
@@ -171,9 +170,8 @@ config AMILO_RFKILL
          laptops.
 
 config TC1100_WMI
-       tristate "HP Compaq TC1100 Tablet WMI Extras (EXPERIMENTAL)"
+       tristate "HP Compaq TC1100 Tablet WMI Extras"
        depends on !X86_64
-       depends on EXPERIMENTAL
        depends on ACPI
        depends on ACPI_WMI
        ---help---
index bf91489..c675553 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/io.h>
 
 #include <linux/delay.h>
+#include <linux/err.h>
 #include <linux/gpio.h>
 #include <linux/mfd/core.h>
 #include <linux/power_supply.h>
@@ -266,9 +267,9 @@ static int jz_battery_probe(struct platform_device *pdev)
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       jz_battery->base = devm_request_and_ioremap(&pdev->dev, mem);
-       if (!jz_battery->base)
-               return -EBUSY;
+       jz_battery->base = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(jz_battery->base))
+               return PTR_ERR(jz_battery->base);
 
        battery = &jz_battery->battery;
        battery->name = pdata->info.name;
index 65a86bd..3f5677b 100644 (file)
@@ -274,9 +274,9 @@ static int imx_pwm_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       imx->mmio_base = devm_request_and_ioremap(&pdev->dev, r);
-       if (imx->mmio_base == NULL)
-               return -EADDRNOTAVAIL;
+       imx->mmio_base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(imx->mmio_base))
+               return PTR_ERR(imx->mmio_base);
 
        data = of_id->data;
        imx->config = data->config;
index 1410644..b3f0d0d 100644 (file)
@@ -110,9 +110,9 @@ static int lpc32xx_pwm_probe(struct platform_device *pdev)
        if (!res)
                return -EINVAL;
 
-       lpc32xx->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!lpc32xx->base)
-               return -EADDRNOTAVAIL;
+       lpc32xx->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(lpc32xx->base))
+               return PTR_ERR(lpc32xx->base);
 
        lpc32xx->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(lpc32xx->clk))
index 7ec345f..a53d309 100644 (file)
@@ -139,9 +139,9 @@ static int mxs_pwm_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       mxs->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!mxs->base)
-               return -EADDRNOTAVAIL;
+       mxs->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(mxs->base))
+               return PTR_ERR(mxs->base);
 
        pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
        if (IS_ERR(pinctrl))
index b882f60..db964e6 100644 (file)
@@ -123,9 +123,9 @@ static int pwm_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       puv3->base = devm_request_and_ioremap(&pdev->dev, r);
-       if (puv3->base == NULL)
-               return -EADDRNOTAVAIL;
+       puv3->base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(puv3->base))
+               return PTR_ERR(puv3->base);
 
        puv3->chip.dev = &pdev->dev;
        puv3->chip.ops = &puv3_pwm_ops;
index f32fc4e..20370e6 100644 (file)
@@ -165,9 +165,9 @@ static int pwm_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       pwm->mmio_base = devm_request_and_ioremap(&pdev->dev, r);
-       if (pwm->mmio_base == NULL)
-               return -EADDRNOTAVAIL;
+       pwm->mmio_base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(pwm->mmio_base))
+               return PTR_ERR(pwm->mmio_base);
 
        ret = pwmchip_add(&pwm->chip);
        if (ret < 0) {
index 83b21d9..69a2d9e 100644 (file)
@@ -192,9 +192,9 @@ static int spear_pwm_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!pc->mmio_base)
-               return -EADDRNOTAVAIL;
+       pc->mmio_base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(pc->mmio_base))
+               return PTR_ERR(pc->mmio_base);
 
        pc->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(pc->clk))
index 30c0e2b..71900e8 100644 (file)
@@ -186,9 +186,9 @@ static int tegra_pwm_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       pwm->mmio_base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!pwm->mmio_base)
-               return -EADDRNOTAVAIL;
+       pwm->mmio_base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(pwm->mmio_base))
+               return PTR_ERR(pwm->mmio_base);
 
        platform_set_drvdata(pdev, pwm);
 
index 5cf016d..27a67d6 100644 (file)
@@ -238,9 +238,9 @@ static int ecap_pwm_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!pc->mmio_base)
-               return -EADDRNOTAVAIL;
+       pc->mmio_base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(pc->mmio_base))
+               return PTR_ERR(pc->mmio_base);
 
        ret = pwmchip_add(&pc->chip);
        if (ret < 0) {
index 72a6dd4..5a13995 100644 (file)
@@ -453,9 +453,9 @@ static int ehrpwm_pwm_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       pc->mmio_base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!pc->mmio_base)
-               return  -EADDRNOTAVAIL;
+       pc->mmio_base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(pc->mmio_base))
+               return PTR_ERR(pc->mmio_base);
 
        /* Acquire tbclk for Time Base EHRPWM submodule */
        pc->tbclk = devm_clk_get(&pdev->dev, "tbclk");
index 3448a1c..17cbc59 100644 (file)
@@ -75,9 +75,9 @@ static int pwmss_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       info->mmio_base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!info->mmio_base)
-               return -EADDRNOTAVAIL;
+       info->mmio_base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(info->mmio_base))
+               return PTR_ERR(info->mmio_base);
 
        pm_runtime_enable(&pdev->dev);
        pm_runtime_get_sync(&pdev->dev);
index b0ba2d4..f9de9b2 100644 (file)
@@ -178,9 +178,9 @@ static int vt8500_pwm_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       chip->base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!chip->base)
-               return -EADDRNOTAVAIL;
+       chip->base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(chip->base))
+               return PTR_ERR(chip->base);
 
        ret = clk_prepare(chip->clk);
        if (ret < 0) {
index 96ce101..0b24108 100644 (file)
@@ -1,16 +1,14 @@
-menu "Remoteproc drivers (EXPERIMENTAL)"
+menu "Remoteproc drivers"
 
 # REMOTEPROC gets selected by whoever wants it
 config REMOTEPROC
        tristate
-       depends on EXPERIMENTAL
        depends on HAS_DMA
        select FW_CONFIG
        select VIRTIO
 
 config OMAP_REMOTEPROC
        tristate "OMAP remoteproc support"
-       depends on EXPERIMENTAL
        depends on HAS_DMA
        depends on ARCH_OMAP4
        depends on OMAP_IOMMU
@@ -32,7 +30,6 @@ config OMAP_REMOTEPROC
 
 config STE_MODEM_RPROC
        tristate "STE-Modem remoteproc support"
-       depends on EXPERIMENTAL
        depends on HAS_DMA
        select REMOTEPROC
        default n
index 2bd911f..f6e0ea6 100644 (file)
@@ -1,9 +1,8 @@
-menu "Rpmsg drivers (EXPERIMENTAL)"
+menu "Rpmsg drivers"
 
 # RPMSG always gets selected by whoever wants it
 config RPMSG
        tristate
        select VIRTIO
-       depends on EXPERIMENTAL
 
 endmenu
index 4046514..0c397ac 100644 (file)
@@ -486,11 +486,9 @@ static int s3c_rtc_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       s3c_rtc_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (s3c_rtc_base == NULL) {
-               dev_err(&pdev->dev, "failed to ioremap memory region\n");
-               return -EINVAL;
-       }
+       s3c_rtc_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(s3c_rtc_base))
+               return PTR_ERR(s3c_rtc_base);
 
        rtc_clk = devm_clk_get(&pdev->dev, "rtc");
        if (IS_ERR(rtc_clk)) {
index d5ec785..40662e9 100644 (file)
@@ -252,9 +252,9 @@ static int snvs_rtc_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       data->ioaddr = devm_request_and_ioremap(&pdev->dev, res);
-       if (!data->ioaddr)
-               return -EADDRNOTAVAIL;
+       data->ioaddr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(data->ioaddr))
+               return PTR_ERR(data->ioaddr);
 
        data->irq = platform_get_irq(pdev, 0);
        if (data->irq < 0)
index c2121b5..a18c319 100644 (file)
@@ -385,11 +385,9 @@ static int spear_rtc_probe(struct platform_device *pdev)
                return status;
        }
 
-       config->ioaddr = devm_request_and_ioremap(&pdev->dev, res);
-       if (!config->ioaddr) {
-               dev_err(&pdev->dev, "request-ioremap fail\n");
-               return -ENOMEM;
-       }
+       config->ioaddr = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(config->ioaddr))
+               return PTR_ERR(config->ioaddr);
 
        config->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(config->clk))
index c84ea66..7c03375 100644 (file)
@@ -327,11 +327,9 @@ static int tegra_rtc_probe(struct platform_device *pdev)
                return -EBUSY;
        }
 
-       info->rtc_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!info->rtc_base) {
-               dev_err(&pdev->dev, "Unable to request mem region and grab IOs for device.\n");
-               return -EBUSY;
-       }
+       info->rtc_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(info->rtc_base))
+               return PTR_ERR(info->rtc_base);
 
        info->tegra_rtc_irq = platform_get_irq(pdev, 0);
        if (info->tegra_rtc_irq <= 0)
index 73cde85..5ba684f 100644 (file)
@@ -21,8 +21,7 @@ config OBP_FLASH
          able to upgrade the OBP firmware, say Y here.
 
 config TADPOLE_TS102_UCTRL
-       tristate "Tadpole TS102 Microcontroller support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "Tadpole TS102 Microcontroller support"
        help
          Say Y here to directly support the TS102 Microcontroller interface
          on the Tadpole Sparcbook 3.  This device handles power-management
@@ -30,8 +29,8 @@ config TADPOLE_TS102_UCTRL
          monitors and mice.
 
 config SUN_JSFLASH
-       tristate "JavaStation OS Flash SIMM (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && SPARC32
+       tristate "JavaStation OS Flash SIMM"
+       depends on SPARC32
        help
          If you say Y here, you will be able to boot from your JavaStation's
          Flash memory.
index 142f632..d56b253 100644 (file)
@@ -42,7 +42,7 @@ config SCSI_DMA
 
 config SCSI_TGT
        tristate "SCSI target support"
-       depends on SCSI && EXPERIMENTAL
+       depends on SCSI
        ---help---
          If you want to use SCSI target mode drivers enable this option.
          If you choose M, the module will be called scsi_tgt.
@@ -1392,8 +1392,8 @@ config SCSI_SYM53C416
          module will be called sym53c416.
 
 config SCSI_DC395x
-       tristate "Tekram DC395(U/UW/F) and DC315(U) SCSI support (EXPERIMENTAL)"
-       depends on PCI && SCSI && EXPERIMENTAL
+       tristate "Tekram DC395(U/UW/F) and DC315(U) SCSI support"
+       depends on PCI && SCSI
        ---help---
          This driver supports PCI SCSI host adapters based on the ASIC
          TRM-S1040 chip, e.g Tekram DC395(U/UW/F) and DC315(U) variants.
@@ -1618,8 +1618,8 @@ config GVP11_SCSI
          module will be called gvp11.
 
 config SCSI_A4000T
-       tristate "A4000T NCR53c710 SCSI support (EXPERIMENTAL)"
-       depends on AMIGA && SCSI && EXPERIMENTAL
+       tristate "A4000T NCR53c710 SCSI support"
+       depends on AMIGA && SCSI
        select SCSI_SPI_ATTRS
        help
          If you have an Amiga 4000T and have SCSI devices connected to the
@@ -1629,8 +1629,8 @@ config SCSI_A4000T
          module will be called a4000t.
 
 config SCSI_ZORRO7XX
-       tristate "Zorro NCR53c710 SCSI support (EXPERIMENTAL)"
-       depends on ZORRO && SCSI && EXPERIMENTAL
+       tristate "Zorro NCR53c710 SCSI support"
+       depends on ZORRO && SCSI
        select SCSI_SPI_ATTRS
        help
          Support for various NCR53c710-based SCSI controllers on Zorro
@@ -1807,8 +1807,8 @@ config SCSI_BFA_FC
          be called bfa.
 
 config SCSI_VIRTIO
-       tristate "virtio-scsi support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && VIRTIO
+       tristate "virtio-scsi support"
+       depends on VIRTIO
        help
           This is the virtual HBA driver for virtio.  If the kernel will
           be used in a virtual machine, say Y or M.
index a8587f1..cfd172a 100644 (file)
@@ -64,19 +64,19 @@ config SCSI_POWERTECSCSI
          you have one of these, say Y. If unsure, say N.
 
 comment "The following drivers are not fully supported"
-       depends on ARCH_ACORN && EXPERIMENTAL
+       depends on ARCH_ACORN
 
 config SCSI_CUMANA_1
-       tristate "CumanaSCSI I support (EXPERIMENTAL)"
-       depends on ARCH_ACORN && EXPERIMENTAL && SCSI
+       tristate "CumanaSCSI I support"
+       depends on ARCH_ACORN && SCSI
        select SCSI_SPI_ATTRS
        help
          This enables support for the Cumana SCSI I card. If you have an
          Acorn system with one of these, say Y. If unsure, say N.
 
 config SCSI_OAK1
-       tristate "Oak SCSI support (EXPERIMENTAL)"
-       depends on ARCH_ACORN && EXPERIMENTAL && SCSI
+       tristate "Oak SCSI support"
+       depends on ARCH_ACORN && SCSI
        select SCSI_SPI_ATTRS
        help
          This enables support for the Oak SCSI card. If you have an Acorn
index 6707025..69abd0a 100644 (file)
@@ -32,8 +32,8 @@ config SCSI_DH_EMC
        If you have a EMC CLARiiON select y. Otherwise, say N.
 
 config SCSI_DH_ALUA
-       tristate "SPC-3 ALUA Device Handler (EXPERIMENTAL)"
-       depends on SCSI_DH && EXPERIMENTAL
+       tristate "SPC-3 ALUA Device Handler"
+       depends on SCSI_DH
        help
          SCSI Device handler for generic SPC-3 Asymmetric Logical Unit
          Access (ALUA).
index 2e188e1..3105ea2 100644 (file)
@@ -88,7 +88,7 @@ config SPI_BFIN_SPORT
 
 config SPI_AU1550
        tristate "Au1550/Au1200/Au1300 SPI Controller"
-       depends on MIPS_ALCHEMY && EXPERIMENTAL
+       depends on MIPS_ALCHEMY
        select SPI_BITBANG
        help
          If you say yes to this option, support will be included for the
@@ -188,7 +188,7 @@ config SPI_IMX
 
 config SPI_LM70_LLP
        tristate "Parallel port adapter for LM70 eval board (DEVELOPMENT)"
-       depends on PARPORT && EXPERIMENTAL
+       depends on PARPORT
        select SPI_BITBANG
        help
          This driver supports the NS LM70 LLP Evaluation Board,
@@ -204,7 +204,7 @@ config SPI_MPC52xx
 
 config SPI_MPC52xx_PSC
        tristate "Freescale MPC52xx PSC SPI controller"
-       depends on PPC_MPC52xx && EXPERIMENTAL
+       depends on PPC_MPC52xx
        help
          This enables using the Freescale MPC52xx Programmable Serial
          Controller in master SPI mode.
@@ -273,8 +273,8 @@ config SPI_OMAP_100K
          OMAP SPI 100K master controller for omap7xx boards.
 
 config SPI_ORION
-       tristate "Orion SPI master (EXPERIMENTAL)"
-       depends on PLAT_ORION && EXPERIMENTAL
+       tristate "Orion SPI master"
+       depends on PLAT_ORION
        help
          This enables using the SPI master controller on the Orion chips.
 
@@ -299,7 +299,7 @@ config SPI_PPC4xx
 
 config SPI_PXA2XX
        tristate "PXA2xx SSP SPI master"
-       depends on (ARCH_PXA || (X86_32 && PCI)) && EXPERIMENTAL
+       depends on (ARCH_PXA || (X86_32 && PCI))
        select PXA_SSP if ARCH_PXA
        help
          This enables using a PXA2xx or Sodaville SSP port as a SPI master
@@ -317,7 +317,7 @@ config SPI_RSPI
 
 config SPI_S3C24XX
        tristate "Samsung S3C24XX series SPI"
-       depends on ARCH_S3C24XX && EXPERIMENTAL
+       depends on ARCH_S3C24XX
        select SPI_BITBANG
        help
          SPI driver for Samsung S3C24XX series ARM SoCs
@@ -432,7 +432,7 @@ config SPI_XCOMM
 
 config SPI_XILINX
        tristate "Xilinx SPI controller common module"
-       depends on HAS_IOMEM && EXPERIMENTAL
+       depends on HAS_IOMEM
        select SPI_BITBANG
        help
          This exposes the SPI controller IP from the Xilinx EDK.
@@ -444,7 +444,7 @@ config SPI_XILINX
 
 config SPI_NUC900
        tristate "Nuvoton NUC900 series SPI"
-       depends on ARCH_W90X900 && EXPERIMENTAL
+       depends on ARCH_W90X900
        select SPI_BITBANG
        help
          SPI driver for Nuvoton NUC900 series ARM SoCs
@@ -478,7 +478,6 @@ comment "SPI Protocol Masters"
 
 config SPI_SPIDEV
        tristate "User mode SPI device driver support"
-       depends on EXPERIMENTAL
        help
          This supports user mode SPI protocol drivers.
 
index acb1e19..2e31f32 100644 (file)
@@ -1085,10 +1085,9 @@ static int ep93xx_spi_probe(struct platform_device *pdev)
 
        espi->sspdr_phys = res->start + SSPDR;
 
-       espi->regs_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!espi->regs_base) {
-               dev_err(&pdev->dev, "failed to map resources\n");
-               error = -ENODEV;
+       espi->regs_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(espi->regs_base)) {
+               error = PTR_ERR(espi->regs_base);
                goto fail_put_clock;
        }
 
index a3ede24..b735988 100644 (file)
@@ -538,9 +538,9 @@ static int mxs_spi_probe(struct platform_device *pdev)
        if (!iores || irq_err < 0 || irq_dma < 0)
                return -EINVAL;
 
-       base = devm_request_and_ioremap(&pdev->dev, iores);
-       if (!base)
-               return -EADDRNOTAVAIL;
+       base = devm_ioremap_resource(&pdev->dev, iores);
+       if (IS_ERR(base))
+               return PTR_ERR(base);
 
        pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
        if (IS_ERR(pinctrl))
index b610f52..71a9482 100644 (file)
@@ -1204,10 +1204,9 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
        r->end += regs_offset;
        mcspi->phys = r->start;
 
-       mcspi->base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!mcspi->base) {
-               dev_dbg(&pdev->dev, "can't ioremap MCSPI\n");
-               status = -ENOMEM;
+       mcspi->base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(mcspi->base)) {
+               status = PTR_ERR(mcspi->base);
                goto free_master;
        }
 
index ad93231..3d4a7c4 100644 (file)
@@ -1276,10 +1276,9 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev)
        /* the spi->mode bits understood by this driver: */
        master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
 
-       sdd->regs = devm_request_and_ioremap(&pdev->dev, mem_res);
-       if (sdd->regs == NULL) {
-               dev_err(&pdev->dev, "Unable to remap IO\n");
-               ret = -ENXIO;
+       sdd->regs = devm_ioremap_resource(&pdev->dev, mem_res);
+       if (IS_ERR(sdd->regs)) {
+               ret = PTR_ERR(sdd->regs);
                goto err1;
        }
 
index e0f43a5..78c8842 100644 (file)
@@ -535,10 +535,9 @@ static int spi_sirfsoc_probe(struct platform_device *pdev)
                }
        }
 
-       sspi->base = devm_request_and_ioremap(&pdev->dev, mem_res);
-       if (!sspi->base) {
-               dev_err(&pdev->dev, "IO remap failed!\n");
-               ret = -ENOMEM;
+       sspi->base = devm_ioremap_resource(&pdev->dev, mem_res);
+       if (IS_ERR(sspi->base)) {
+               ret = PTR_ERR(sspi->base);
                goto free_master;
        }
 
index 448a8cc..69c9d23 100644 (file)
@@ -508,11 +508,9 @@ static int tegra_sflash_probe(struct platform_device *pdev)
                ret = -ENODEV;
                goto exit_free_master;
        }
-       tsd->base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!tsd->base) {
-               dev_err(&pdev->dev,
-                       "Cannot request memregion/iomap dma address\n");
-               ret = -EADDRNOTAVAIL;
+       tsd->base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(tsd->base)) {
+               ret = PTR_ERR(tsd->base);
                goto exit_free_master;
        }
 
index 651167f..96bd6c2 100644 (file)
@@ -1172,11 +1172,9 @@ static int tegra_slink_probe(struct platform_device *pdev)
                goto exit_free_master;
        }
        tspi->phys = r->start;
-       tspi->base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!tspi->base) {
-               dev_err(&pdev->dev,
-                       "Cannot request memregion/iomap dma address\n");
-               ret = -EADDRNOTAVAIL;
+       tspi->base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(tspi->base)) {
+               ret = PTR_ERR(tspi->base);
                goto exit_free_master;
        }
 
index c5ceb9d..3d562da 100644 (file)
@@ -15,6 +15,7 @@
  * GNU General Public License for more details.
  */
 
+#include <linux/err.h>
 #include <linux/interrupt.h>
 #include <linux/device.h>
 #include <linux/kernel.h>
@@ -487,9 +488,9 @@ static int mxs_lradc_probe(struct platform_device *pdev)
        /* Grab the memory area */
        iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        lradc->dev = &pdev->dev;
-       lradc->base = devm_request_and_ioremap(dev, iores);
-       if (!lradc->base) {
-               ret = -EADDRNOTAVAIL;
+       lradc->base = devm_ioremap_resource(dev, iores);
+       if (IS_ERR(lradc->base)) {
+               ret = PTR_ERR(lradc->base);
                goto err_addr;
        }
 
index 2830946..492e0b6 100644 (file)
@@ -759,11 +759,9 @@ static int tegra_nvec_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!base) {
-               dev_err(&pdev->dev, "Can't ioremap I2C region\n");
-               return -ENOMEM;
-       }
+       base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(base))
+               return PTR_ERR(base);
 
        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (!res) {
index 8346e34..21fd91b 100644 (file)
@@ -820,15 +820,12 @@ static struct omap_bandgap *omap_bandgap_build(struct platform_device *pdev)
                res = platform_get_resource(pdev, IORESOURCE_MEM, i);
                if (!res)
                        break;
-               chunk = devm_request_and_ioremap(&pdev->dev, res);
+               chunk = devm_ioremap_resource(&pdev->dev, res);
                if (i == 0)
                        bg_ptr->base = chunk;
-               if (!chunk) {
-                       dev_err(&pdev->dev,
-                               "failed to request the IO (%d:%pR).\n",
-                               i, res);
-                       return ERR_PTR(-EADDRNOTAVAIL);
-               }
+               if (IS_ERR(chunk))
+                       return ERR_CAST(chunk);
+               
                i++;
        } while (res);
 
index 224751e..bada130 100644 (file)
@@ -866,11 +866,9 @@ static int exynos_tmu_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       data->base = devm_request_and_ioremap(&pdev->dev, data->mem);
-       if (!data->base) {
-               dev_err(&pdev->dev, "Failed to ioremap memory\n");
-               return -ENODEV;
-       }
+       data->base = devm_ioremap_resource(&pdev->dev, data->mem);
+       if (IS_ERR(data->base))
+               return PTR_ERR(data->base);
 
        ret = devm_request_irq(&pdev->dev, data->irq, exynos_tmu_irq,
                IRQF_TRIGGER_RISING, "exynos-tmu", data);
index 418b495..e869eab 100644 (file)
@@ -15,6 +15,7 @@
 #define SUPPORT_SYSRQ
 #endif
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/device.h>
 #include <linux/console.h>
@@ -875,10 +876,9 @@ static int sccnxp_probe(struct platform_device *pdev)
                goto err_out;
        }
 
-       membase = devm_request_and_ioremap(&pdev->dev, res);
-       if (!membase) {
-               dev_err(&pdev->dev, "Failed to ioremap\n");
-               ret = -EIO;
+       membase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(membase)) {
+               ret = PTR_ERR(membase);
                goto err_out;
        }
 
index 845efe2..a1bce39 100644 (file)
@@ -98,9 +98,9 @@ static int usbmisc_imx6q_probe(struct platform_device *pdev)
        spin_lock_init(&data->lock);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       data->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!data->base)
-               return -EADDRNOTAVAIL;
+       data->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(data->base))
+               return PTR_ERR(data->base);
 
        data->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(data->clk)) {
index f4a21f6..0143ffa 100644 (file)
@@ -1982,17 +1982,7 @@ static struct platform_driver at91_udc_driver = {
        },
 };
 
-static int __init udc_init_module(void)
-{
-       return platform_driver_probe(&at91_udc_driver, at91udc_probe);
-}
-module_init(udc_init_module);
-
-static void __exit udc_exit_module(void)
-{
-       platform_driver_unregister(&at91_udc_driver);
-}
-module_exit(udc_exit_module);
+module_platform_driver_probe(at91_udc_driver, at91udc_probe);
 
 MODULE_DESCRIPTION("AT91 udc driver");
 MODULE_AUTHOR("Thomas Rathbone, David Brownell");
index a7aed84..bc19496 100644 (file)
@@ -2066,17 +2066,7 @@ static struct platform_driver udc_driver = {
        },
 };
 
-static int __init udc_init(void)
-{
-       return platform_driver_probe(&udc_driver, usba_udc_probe);
-}
-module_init(udc_init);
-
-static void __exit udc_exit(void)
-{
-       platform_driver_unregister(&udc_driver);
-}
-module_exit(udc_exit);
+module_platform_driver_probe(udc_driver, usba_udc_probe);
 
 MODULE_DESCRIPTION("Atmel USBA UDC driver");
 MODULE_AUTHOR("Haavard Skinnemoen (Atmel)");
index 47a4993..8cc8253 100644 (file)
@@ -2351,19 +2351,20 @@ static int bcm63xx_udc_probe(struct platform_device *pdev)
                dev_err(dev, "error finding USBD resource\n");
                return -ENXIO;
        }
-       udc->usbd_regs = devm_request_and_ioremap(dev, res);
+
+       udc->usbd_regs = devm_ioremap_resource(dev, res);
+       if (IS_ERR(udc->usbd_regs))
+               return PTR_ERR(udc->usbd_regs);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
        if (!res) {
                dev_err(dev, "error finding IUDMA resource\n");
                return -ENXIO;
        }
-       udc->iudma_regs = devm_request_and_ioremap(dev, res);
 
-       if (!udc->usbd_regs || !udc->iudma_regs) {
-               dev_err(dev, "error requesting resources\n");
-               return -ENXIO;
-       }
+       udc->iudma_regs = devm_ioremap_resource(dev, res);
+       if (IS_ERR(udc->iudma_regs))
+               return PTR_ERR(udc->iudma_regs);
 
        spin_lock_init(&udc->lock);
        INIT_WORK(&udc->ep0_wq, bcm63xx_ep0_process);
index 72cd5e6..fc7cb09 100644 (file)
@@ -1547,15 +1547,4 @@ static struct platform_driver fusb300_driver = {
        },
 };
 
-static int __init fusb300_udc_init(void)
-{
-       return platform_driver_probe(&fusb300_driver, fusb300_probe);
-}
-
-module_init(fusb300_udc_init);
-
-static void __exit fusb300_udc_cleanup(void)
-{
-       platform_driver_unregister(&fusb300_driver);
-}
-module_exit(fusb300_udc_cleanup);
+module_platform_driver_probe(fusb300_driver, fusb300_probe);
index a0eb857..8efd755 100644 (file)
@@ -1556,17 +1556,7 @@ static struct platform_driver udc_driver = {
        .resume         = imx_udc_resume,
 };
 
-static int __init udc_init(void)
-{
-       return platform_driver_probe(&udc_driver, imx_udc_probe);
-}
-module_init(udc_init);
-
-static void __exit udc_exit(void)
-{
-       platform_driver_unregister(&udc_driver);
-}
-module_exit(udc_exit);
+module_platform_driver_probe(udc_driver, imx_udc_probe);
 
 MODULE_DESCRIPTION("IMX USB Device Controller driver");
 MODULE_AUTHOR("Darius Augulis <augulis.darius@gmail.com>");
index dd1c9b1..aa04089 100644 (file)
@@ -3458,17 +3458,7 @@ static struct platform_driver lpc32xx_udc_driver = {
        },
 };
 
-static int __init udc_init_module(void)
-{
-       return platform_driver_probe(&lpc32xx_udc_driver, lpc32xx_udc_probe);
-}
-module_init(udc_init_module);
-
-static void __exit udc_exit_module(void)
-{
-       platform_driver_unregister(&lpc32xx_udc_driver);
-}
-module_exit(udc_exit_module);
+module_platform_driver_probe(lpc32xx_udc_driver, lpc32xx_udc_probe);
 
 MODULE_DESCRIPTION("LPC32XX udc driver");
 MODULE_AUTHOR("Kevin Wells <kevin.wells@nxp.com>");
index b6401f1..dfce0cf 100644 (file)
@@ -1753,14 +1753,4 @@ static struct platform_driver m66592_driver = {
        },
 };
 
-static int __init m66592_udc_init(void)
-{
-       return platform_driver_probe(&m66592_driver, m66592_probe);
-}
-module_init(m66592_udc_init);
-
-static void __exit m66592_udc_cleanup(void)
-{
-       platform_driver_unregister(&m66592_driver);
-}
-module_exit(m66592_udc_cleanup);
+module_platform_driver_probe(m66592_driver, m66592_probe);
index d4ca9f1..d52e869 100644 (file)
@@ -2100,6 +2100,8 @@ static int __init pxa25x_udc_probe(struct platform_device *pdev)
        int retval, irq;
        u32 chiprev;
 
+       pr_info("%s: version %s\n", driver_name, DRIVER_VERSION);
+
        /* insist on Intel/ARM/XScale */
        asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev));
        if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) {
@@ -2346,18 +2348,7 @@ static struct platform_driver udc_driver = {
        },
 };
 
-static int __init udc_init(void)
-{
-       pr_info("%s: version %s\n", driver_name, DRIVER_VERSION);
-       return platform_driver_probe(&udc_driver, pxa25x_udc_probe);
-}
-module_init(udc_init);
-
-static void __exit udc_exit(void)
-{
-       platform_driver_unregister(&udc_driver);
-}
-module_exit(udc_exit);
+module_platform_driver_probe(udc_driver, pxa25x_udc_probe);
 
 MODULE_DESCRIPTION(DRIVER_DESC);
 MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell");
index 5a80751..9a9fadd 100644 (file)
@@ -2031,21 +2031,10 @@ static struct platform_driver r8a66597_driver = {
                .name = (char *) udc_name,
        },
 };
-MODULE_ALIAS("platform:r8a66597_udc");
-
-static int __init r8a66597_udc_init(void)
-{
-       return platform_driver_probe(&r8a66597_driver, r8a66597_probe);
-}
-module_init(r8a66597_udc_init);
 
-static void __exit r8a66597_udc_cleanup(void)
-{
-       platform_driver_unregister(&r8a66597_driver);
-}
-module_exit(r8a66597_udc_cleanup);
+module_platform_driver_probe(r8a66597_driver, r8a66597_probe);
 
 MODULE_DESCRIPTION("R8A66597 USB gadget driver");
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Yoshihiro Shimoda");
-
+MODULE_ALIAS("platform:r8a66597_udc");
index 439c3f9..de80fa6 100644 (file)
@@ -3525,10 +3525,9 @@ static int s3c_hsotg_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       hsotg->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!hsotg->regs) {
-               dev_err(dev, "cannot map registers\n");
-               ret = -ENXIO;
+       hsotg->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hsotg->regs)) {
+               ret = PTR_ERR(hsotg->regs);
                goto err_clk;
        }
 
index 52379b1..94ca33b 100644 (file)
@@ -1295,10 +1295,9 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       hsudc->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!hsudc->regs) {
-               dev_err(dev, "error mapping device register area\n");
-               ret = -EBUSY;
+       hsudc->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hsudc->regs)) {
+               ret = PTR_ERR(hsudc->regs);
                goto err_res;
        }
 
index 2763948..f3beac4 100644 (file)
@@ -143,10 +143,9 @@ static int ehci_atmel_drv_probe(struct platform_device *pdev)
        hcd->rsrc_start = res->start;
        hcd->rsrc_len = resource_size(res);
 
-       hcd->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (hcd->regs == NULL) {
-               dev_dbg(&pdev->dev, "error mapping memory\n");
-               retval = -EFAULT;
+       hcd->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hcd->regs)) {
+               retval = PTR_ERR(hcd->regs);
                goto fail_request_resource;
        }
 
index 1fc8929..5d75de9 100644 (file)
@@ -25,7 +25,7 @@
  * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-
+#include <linux/err.h>
 #include <linux/signal.h>
 
 #include <linux/of_irq.h>
@@ -118,10 +118,9 @@ static int ehci_hcd_grlib_probe(struct platform_device *op)
                goto err_irq;
        }
 
-       hcd->regs = devm_request_and_ioremap(&op->dev, &res);
-       if (!hcd->regs) {
-               pr_err("%s: devm_request_and_ioremap failed\n", __FILE__);
-               rv = -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&op->dev, &res);
+       if (IS_ERR(hcd->regs)) {
+               rv = PTR_ERR(hcd->regs);
                goto err_ioremap;
        }
 
index dedb80b..e2004de 100644 (file)
@@ -85,10 +85,9 @@ static int ehci_mxc_drv_probe(struct platform_device *pdev)
        hcd->rsrc_start = res->start;
        hcd->rsrc_len = resource_size(res);
 
-       hcd->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!hcd->regs) {
-               dev_err(dev, "error mapping memory\n");
-               ret = -EFAULT;
+       hcd->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hcd->regs)) {
+               ret = PTR_ERR(hcd->regs);
                goto err_alloc;
        }
 
index 58fa0c9..ca75063 100644 (file)
@@ -18,6 +18,7 @@
  *
  * Licensed under the GNU/GPL. See COPYING for details.
  */
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/hrtimer.h>
 #include <linux/io.h>
@@ -104,9 +105,9 @@ static int ehci_platform_probe(struct platform_device *dev)
        hcd->rsrc_start = res_mem->start;
        hcd->rsrc_len = resource_size(res_mem);
 
-       hcd->regs = devm_request_and_ioremap(&dev->dev, res_mem);
-       if (!hcd->regs) {
-               err = -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&dev->dev, res_mem);
+       if (IS_ERR(hcd->regs)) {
+               err = PTR_ERR(hcd->regs);
                goto err_put_hcd;
        }
        err = usb_add_hcd(hcd, irq, IRQF_SHARED);
index 45aceef..56dc732 100644 (file)
@@ -12,6 +12,7 @@
  * This file is licenced under the GPL.
  */
 
+#include <linux/err.h>
 #include <linux/signal.h>
 
 #include <linux/of.h>
@@ -121,10 +122,9 @@ static int ehci_hcd_ppc_of_probe(struct platform_device *op)
                goto err_irq;
        }
 
-       hcd->regs = devm_request_and_ioremap(&op->dev, &res);
-       if (!hcd->regs) {
-               pr_err("%s: devm_request_and_ioremap failed\n", __FILE__);
-               rv = -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&op->dev, &res);
+       if (IS_ERR(hcd->regs)) {
+               rv = PTR_ERR(hcd->regs);
                goto err_ioremap;
        }
 
index efad02d..f55477c 100644 (file)
@@ -19,6 +19,7 @@
  * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include <linux/err.h>
 #include <linux/platform_device.h>
 
 static int ehci_sead3_setup(struct usb_hcd *hcd)
@@ -112,10 +113,9 @@ static int ehci_hcd_sead3_drv_probe(struct platform_device *pdev)
        hcd->rsrc_start = res->start;
        hcd->rsrc_len = resource_size(res);
 
-       hcd->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!hcd->regs) {
-               pr_debug("ioremap failed");
-               ret = -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hcd->regs)) {
+               ret = PTR_ERR(hcd->regs);
                goto err1;
        }
 
index 0c90a24..3565a30 100644 (file)
@@ -118,10 +118,9 @@ static int ehci_hcd_sh_probe(struct platform_device *pdev)
        hcd->rsrc_start = res->start;
        hcd->rsrc_len = resource_size(res);
 
-       hcd->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (hcd->regs == NULL) {
-               dev_dbg(&pdev->dev, "error mapping memory\n");
-               ret = -ENXIO;
+       hcd->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hcd->regs)) {
+               ret = PTR_ERR(hcd->regs);
                goto fail_request_resource;
        }
 
index 11695d5..7ecf709 100644 (file)
@@ -16,6 +16,7 @@
  *
  */
 
+#include <linux/err.h>
 #include <linux/of.h>
 #include <linux/platform_device.h>
 
@@ -96,10 +97,9 @@ static int vt8500_ehci_drv_probe(struct platform_device *pdev)
        hcd->rsrc_start = res->start;
        hcd->rsrc_len = resource_size(res);
 
-       hcd->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!hcd->regs) {
-               pr_debug("ioremap failed");
-               ret = -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hcd->regs)) {
+               ret = PTR_ERR(hcd->regs);
                goto err1;
        }
 
index 4f285e8..d845e3b 100644 (file)
@@ -25,6 +25,7 @@
  *
  */
 
+#include <linux/err.h>
 #include <linux/signal.h>
 
 #include <linux/of.h>
@@ -159,10 +160,9 @@ static int ehci_hcd_xilinx_of_probe(struct platform_device *op)
                goto err_irq;
        }
 
-       hcd->regs = devm_request_and_ioremap(&op->dev, &res);
-       if (!hcd->regs) {
-               pr_err("%s: devm_request_and_ioremap failed\n", __FILE__);
-               rv = -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&op->dev, &res);
+       if (IS_ERR(hcd->regs)) {
+               rv = PTR_ERR(hcd->regs);
                goto err_irq;
        }
 
index 2344040..f4988fb 100644 (file)
@@ -306,10 +306,9 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev)
                goto out8;
        }
 
-       hcd->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!hcd->regs) {
-               dev_err(&pdev->dev, "Failed to devm_request_and_ioremap\n");
-               ret =  -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hcd->regs)) {
+               ret = PTR_ERR(hcd->regs);
                goto out8;
        }
        hcd->rsrc_start = res->start;
index 084503b..c3e7287 100644 (file)
@@ -13,6 +13,7 @@
  *
  * Licensed under the GNU/GPL. See COPYING for details.
  */
+#include <linux/err.h>
 #include <linux/platform_device.h>
 #include <linux/usb/ohci_pdriver.h>
 
@@ -127,9 +128,9 @@ static int ohci_platform_probe(struct platform_device *dev)
        hcd->rsrc_start = res_mem->start;
        hcd->rsrc_len = resource_size(res_mem);
 
-       hcd->regs = devm_request_and_ioremap(&dev->dev, res_mem);
-       if (!hcd->regs) {
-               err = -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&dev->dev, res_mem);
+       if (IS_ERR(hcd->regs)) {
+               err = PTR_ERR(hcd->regs);
                goto err_put_hcd;
        }
        err = usb_add_hcd(hcd, irq, IRQF_SHARED);
index ad0f552..e125770 100644 (file)
@@ -351,10 +351,9 @@ static int usb_hcd_s3c2410_probe(const struct hc_driver *driver,
        hcd->rsrc_start = dev->resource[0].start;
        hcd->rsrc_len   = resource_size(&dev->resource[0]);
 
-       hcd->regs = devm_request_and_ioremap(&dev->dev, &dev->resource[0]);
-       if (!hcd->regs) {
-               dev_err(&dev->dev, "devm_request_and_ioremap failed\n");
-               retval = -ENOMEM;
+       hcd->regs = devm_ioremap_resource(&dev->dev, &dev->resource[0]);
+       if (IS_ERR(hcd->regs)) {
+               retval = PTR_ERR(hcd->regs);
                goto err_put;
        }
 
index f7d764d..99f470d 100644 (file)
@@ -500,10 +500,9 @@ static int dsps_create_musb_pdev(struct dsps_glue *glue, u8 id)
        resources[0].end = resources[0].start + SZ_4 - 1;
        resources[0].flags = IORESOURCE_MEM;
 
-       glue->usb_ctrl[id] = devm_request_and_ioremap(&pdev->dev, resources);
-       if (glue->usb_ctrl[id] == NULL) {
-               dev_err(dev, "Failed to obtain usb_ctrl%d memory\n", id);
-               ret = -ENODEV;
+       glue->usb_ctrl[id] = devm_ioremap_resource(&pdev->dev, resources);
+       if (IS_ERR(glue->usb_ctrl[id])) {
+               ret = PTR_ERR(glue->usb_ctrl[id]);
                goto err0;
        }
 
index da00af4..acd5f9d 100644 (file)
@@ -523,9 +523,7 @@ static int omap2430_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
 
-       glue->control_otghs = devm_request_and_ioremap(&pdev->dev, res);
-       if (glue->control_otghs == NULL)
-               dev_dbg(&pdev->dev, "Failed to obtain control memory\n");
+       glue->control_otghs = devm_ioremap_resource(&pdev->dev, res);
 
        if (np) {
                pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
index a67ffe2..a7d4ac5 100644 (file)
@@ -409,17 +409,7 @@ static struct platform_driver gpio_vbus_driver = {
        .remove  = __exit_p(gpio_vbus_remove),
 };
 
-static int __init gpio_vbus_init(void)
-{
-       return platform_driver_probe(&gpio_vbus_driver, gpio_vbus_probe);
-}
-module_init(gpio_vbus_init);
-
-static void __exit gpio_vbus_exit(void)
-{
-       platform_driver_unregister(&gpio_vbus_driver);
-}
-module_exit(gpio_vbus_exit);
+module_platform_driver_probe(gpio_vbus_driver, gpio_vbus_probe);
 
 MODULE_DESCRIPTION("simple GPIO controlled OTG transceiver driver");
 MODULE_AUTHOR("Philipp Zabel");
index 3b9f0d9..749fbf4 100644 (file)
@@ -1756,18 +1756,7 @@ static struct platform_driver msm_otg_driver = {
        },
 };
 
-static int __init msm_otg_init(void)
-{
-       return platform_driver_probe(&msm_otg_driver, msm_otg_probe);
-}
-
-static void __exit msm_otg_exit(void)
-{
-       platform_driver_unregister(&msm_otg_driver);
-}
-
-module_init(msm_otg_init);
-module_exit(msm_otg_exit);
+module_platform_driver_probe(msm_otg_driver, msm_otg_probe);
 
 MODULE_LICENSE("GPL v2");
 MODULE_DESCRIPTION("MSM USB transceiver driver");
index 7630272..60df28a 100644 (file)
@@ -115,9 +115,9 @@ static int mxs_phy_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!base)
-               return -EBUSY;
+       base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(base))
+               return PTR_ERR(base);
 
        clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(clk)) {
index eaddbe3..9d85991 100644 (file)
@@ -283,11 +283,9 @@ static int mv_u3d_phy_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       phy_base = devm_request_and_ioremap(dev, res);
-       if (!phy_base) {
-               dev_err(dev, "%s: register mapping failed\n", __func__);
-               return -ENXIO;
-       }
+       phy_base = devm_ioremap_resource(dev, res);
+       if (IS_ERR(phy_base))
+               return PTR_ERR(phy_base);
 
        mv_u3d_phy = devm_kzalloc(dev, sizeof(*mv_u3d_phy), GFP_KERNEL);
        if (!mv_u3d_phy)
index 26ae8f4..2fdb8ed 100644 (file)
@@ -168,11 +168,9 @@ static int omap_usb2_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
 
-       phy->control_dev = devm_request_and_ioremap(&pdev->dev, res);
-       if (phy->control_dev == NULL) {
-               dev_err(&pdev->dev, "Failed to obtain io memory\n");
-               return -ENXIO;
-       }
+       phy->control_dev = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(phy->control_dev))
+               return PTR_ERR(phy->control_dev);
 
        phy->is_suspended       = 1;
        omap_usb_phy_power(phy, 0);
index 38bce04..cfd2050 100644 (file)
@@ -14,6 +14,7 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  *
  */
+#include <linux/err.h>
 #include <linux/io.h>
 #include <linux/module.h>
 #include <linux/pm_runtime.h>
@@ -443,11 +444,9 @@ static int usbhs_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       priv->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!priv->base) {
-               dev_err(&pdev->dev, "ioremap error.\n");
-               return -ENOMEM;
-       }
+       priv->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(priv->base))
+               return PTR_ERR(priv->base);
 
        /*
         * care platform info
index 202bba6..bf24317 100644 (file)
@@ -1,6 +1,6 @@
 config VHOST_NET
-       tristate "Host kernel accelerator for virtio net (EXPERIMENTAL)"
-       depends on NET && EVENTFD && (TUN || !TUN) && (MACVTAP || !MACVTAP) && EXPERIMENTAL
+       tristate "Host kernel accelerator for virtio net"
+       depends on NET && EVENTFD && (TUN || !TUN) && (MACVTAP || !MACVTAP)
        ---help---
          This kernel module can be loaded in host kernel to accelerate
          guest networking with virtio_net. Not to be confused with virtio_net
index a9c6f76..7e3aa28 100644 (file)
@@ -1,6 +1,6 @@
 config TCM_VHOST
-       tristate "TCM_VHOST fabric module (EXPERIMENTAL)"
-       depends on TARGET_CORE && EVENTFD && EXPERIMENTAL && m
+       tristate "TCM_VHOST fabric module"
+       depends on TARGET_CORE && EVENTFD && m
        default n
        ---help---
        Say M here to enable the TCM_VHOST fabric module for use with virtio-scsi guests
index e7068c5..e4e1765 100644 (file)
@@ -1112,8 +1112,8 @@ config FB_RIVA_BACKLIGHT
          Say Y here if you want to control the backlight of your display.
 
 config FB_I740
-       tristate "Intel740 support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && FB && PCI
+       tristate "Intel740 support"
+       depends on FB && PCI
        select FB_MODE_HELPERS
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
@@ -1124,8 +1124,8 @@ config FB_I740
          This driver supports graphics cards based on Intel740 chip.
 
 config FB_I810
-       tristate "Intel 810/815 support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && FB && PCI && X86_32 && AGP_INTEL
+       tristate "Intel 810/815 support"
+       depends on FB && PCI && X86_32 && AGP_INTEL
        select FB_MODE_HELPERS
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
@@ -1187,8 +1187,8 @@ config FB_CARILLO_RANCH
          This driver supports the LE80578 (Carillo Ranch) board
 
 config FB_INTEL
-       tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && FB && PCI && X86 && AGP_INTEL && EXPERT
+       tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM support"
+       depends on FB && PCI && X86 && AGP_INTEL && EXPERT
        select FB_MODE_HELPERS
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
@@ -1432,7 +1432,7 @@ config FB_ATY_CT
          is at <http://support.ati.com/products/pc/mach64/mach64.html>.
 
 config FB_ATY_GENERIC_LCD
-       bool "Mach64 generic LCD support (EXPERIMENTAL)"
+       bool "Mach64 generic LCD support"
        depends on FB_ATY_CT
        help
          Say Y if you have a laptop with an ATI Rage LT PRO, Rage Mobility,
@@ -1479,7 +1479,7 @@ config FB_S3_DDC
 
 config FB_SAVAGE
        tristate "S3 Savage support"
-       depends on FB && PCI && EXPERIMENTAL
+       depends on FB && PCI
        select FB_MODE_HELPERS
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
@@ -1633,15 +1633,15 @@ config FB_3DFX
          module will be called tdfxfb.
 
 config FB_3DFX_ACCEL
-       bool "3Dfx Acceleration functions (EXPERIMENTAL)"
-       depends on FB_3DFX && EXPERIMENTAL
+       bool "3Dfx Acceleration functions"
+       depends on FB_3DFX
        ---help---
        This will compile the 3Dfx Banshee/Voodoo3/VSA-100 frame buffer
        device driver with acceleration functions.
 
 config FB_3DFX_I2C
        bool "Enable DDC/I2C support"
-       depends on FB_3DFX && EXPERIMENTAL
+       depends on FB_3DFX
        select FB_DDC
        default y
        help
@@ -1714,8 +1714,8 @@ config FB_ARK
          and ICS 5342 RAMDAC.
 
 config FB_PM3
-       tristate "Permedia3 support (EXPERIMENTAL)"
-       depends on FB && PCI && EXPERIMENTAL
+       tristate "Permedia3 support"
+       depends on FB && PCI
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
index e2c96d0..bc922c4 100644 (file)
@@ -46,7 +46,7 @@ config VGACON_SOFT_SCROLLBACK_SIZE
 
 config MDA_CONSOLE
        depends on !M68K && !PARISC && ISA
-       tristate "MDA text console (dual-headed) (EXPERIMENTAL)"
+       tristate "MDA text console (dual-headed)"
        ---help---
          Say Y here if you have an old MDA or monochrome Hercules graphics
          adapter in your system acting as a second head ( = video card). You
index 4ef18e2..7aae0bf 100644 (file)
@@ -1076,11 +1076,9 @@ static int exynos_dp_probe(struct platform_device *pdev)
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       dp->reg_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!dp->reg_base) {
-               dev_err(&pdev->dev, "failed to ioremap\n");
-               return -ENOMEM;
-       }
+       dp->reg_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(dp->reg_base))
+               return PTR_ERR(dp->reg_base);
 
        dp->irq = platform_get_irq(pdev, 0);
        if (dp->irq == -ENXIO) {
index c5d8ba4..21e351a 100644 (file)
@@ -2,14 +2,14 @@
 # Geode family framebuffer configuration
 #
 config FB_GEODE
-       bool "AMD Geode family framebuffer support (EXPERIMENTAL)"
-       depends on FB && PCI && EXPERIMENTAL && X86
+       bool "AMD Geode family framebuffer support"
+       depends on FB && PCI && X86
        ---help---
          Say 'Y' here to allow you to select framebuffer drivers for
          the AMD Geode family of processors.
 
 config FB_GEODE_LX
-       tristate "AMD Geode LX framebuffer support (EXPERIMENTAL)"
+       tristate "AMD Geode LX framebuffer support"
        depends on FB && FB_GEODE
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
@@ -24,8 +24,8 @@ config FB_GEODE_LX
          If unsure, say N.
 
 config FB_GEODE_GX
-       tristate "AMD Geode GX framebuffer support (EXPERIMENTAL)"
-       depends on FB && FB_GEODE && EXPERIMENTAL
+       tristate "AMD Geode GX framebuffer support"
+       depends on FB && FB_GEODE
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
@@ -39,8 +39,8 @@ config FB_GEODE_GX
          If unsure, say N.
 
 config FB_GEODE_GX1
-       tristate "AMD Geode GX1 framebuffer support (EXPERIMENTAL)"
-       depends on FB && FB_GEODE && EXPERIMENTAL
+       tristate "AMD Geode GX1 framebuffer support"
+       depends on FB && FB_GEODE
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
index d999bb5..36979b4 100644 (file)
@@ -660,9 +660,9 @@ static int jzfb_probe(struct platform_device *pdev)
        }
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       jzfb->base = devm_request_and_ioremap(&pdev->dev, mem);
-       if (!jzfb->base) {
-               ret = -EBUSY;
+       jzfb->base = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(jzfb->base)) {
+               ret = PTR_ERR(jzfb->base);
                goto err_framebuffer_release;
        }
 
index b48f95f..e512581 100644 (file)
@@ -1,5 +1,5 @@
 config FB_OMAP
-       tristate "OMAP frame buffer support (EXPERIMENTAL)"
+       tristate "OMAP frame buffer support"
        depends on FB
        depends on ARCH_OMAP1
        select FB_CFB_FILLRECT
index 769d082..7292364 100644 (file)
@@ -1080,11 +1080,9 @@ static int __init omapdss_hdmihw_probe(struct platform_device *pdev)
        }
 
        /* Base address taken from platform */
-       hdmi.ip_data.base_wp = devm_request_and_ioremap(&pdev->dev, res);
-       if (!hdmi.ip_data.base_wp) {
-               DSSERR("can't ioremap WP\n");
-               return -ENOMEM;
-       }
+       hdmi.ip_data.base_wp = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(hdmi.ip_data.base_wp))
+               return PTR_ERR(hdmi.ip_data.base_wp);
 
        r = hdmi_get_clocks(pdev);
        if (r) {
index 5d8fdac..10560ef 100644 (file)
@@ -20,6 +20,7 @@
 
 /*#define DEBUG*/
 
+#include <linux/err.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/ioport.h>
@@ -357,11 +358,9 @@ static int __init vrfb_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       vrfb_base = devm_request_and_ioremap(&pdev->dev, mem);
-       if (!vrfb_base) {
-               dev_err(&pdev->dev, "can't ioremap vrfb memory\n");
-               return -ENOMEM;
-       }
+       vrfb_base = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(vrfb_base))
+               return PTR_ERR(vrfb_base);
 
        num_ctxs = pdev->num_resources - 1;
 
index 9b57a23..968a625 100644 (file)
@@ -1421,10 +1421,9 @@ static int s3c_fb_probe(struct platform_device *pdev)
        pm_runtime_enable(sfb->dev);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       sfb->regs = devm_request_and_ioremap(dev, res);
-       if (!sfb->regs) {
-               dev_err(dev, "failed to map registers\n");
-               ret = -ENXIO;
+       sfb->regs = devm_ioremap_resource(dev, res);
+       if (IS_ERR(sfb->regs)) {
+               ret = PTR_ERR(sfb->regs);
                goto err_lcd_clk;
        }
 
index 8d5bddb..c6683f2 100644 (file)
@@ -8,8 +8,8 @@ config VIRTIO
 menu "Virtio drivers"
 
 config VIRTIO_PCI
-       tristate "PCI driver for virtio devices (EXPERIMENTAL)"
-       depends on PCI && EXPERIMENTAL
+       tristate "PCI driver for virtio devices"
+       depends on PCI
        select VIRTIO
        ---help---
          This drivers provides support for virtio based paravirtual device
@@ -32,8 +32,8 @@ config VIRTIO_BALLOON
         If unsure, say M.
 
  config VIRTIO_MMIO
-       tristate "Platform bus driver for memory mapped virtio devices (EXPERIMENTAL)"
-       depends on HAS_IOMEM && EXPERIMENTAL
+       tristate "Platform bus driver for memory mapped virtio devices"
+       depends on HAS_IOMEM
        select VIRTIO
        ---help---
         This drivers provides support for memory mapped virtio
index d874b4f..e011620 100644 (file)
@@ -1,5 +1,5 @@
 menu "TI VLYNQ"
-       depends on AR7 && EXPERIMENTAL
+       depends on AR7
 
 config VLYNQ
        bool "TI VLYNQ bus support"
index 184dbce..db2390a 100644 (file)
@@ -560,11 +560,9 @@ static int omap_hdq_probe(struct platform_device *pdev)
                return -ENXIO;
        }
 
-       hdq_data->hdq_base = devm_request_and_ioremap(dev, res);
-       if (!hdq_data->hdq_base) {
-               dev_dbg(&pdev->dev, "ioremap failed\n");
-               return -ENOMEM;
-       }
+       hdq_data->hdq_base = devm_ioremap_resource(dev, res);
+       if (IS_ERR(hdq_data->hdq_base))
+               return PTR_ERR(hdq_data->hdq_base);
 
        hdq_data->hdq_usecount = 0;
        mutex_init(&hdq_data->hdq_mutex);
index 3003e2a..2f3cc8f 100644 (file)
@@ -285,11 +285,9 @@ static int ar7_wdt_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       ar7_wdt = devm_request_and_ioremap(&pdev->dev, ar7_regs_wdt);
-       if (!ar7_wdt) {
-               pr_err("could not ioremap registers\n");
-               return -ENXIO;
-       }
+       ar7_wdt = devm_ioremap_resource(&pdev->dev, ar7_regs_wdt);
+       if (IS_ERR(ar7_wdt))
+               return PTR_ERR(ar7_wdt);
 
        vbus_clk = clk_get(NULL, "vbus");
        if (IS_ERR(vbus_clk)) {
index 2896430..7a715e3 100644 (file)
@@ -436,17 +436,7 @@ static struct platform_driver at32_wdt_driver = {
        .shutdown       = at32_wdt_shutdown,
 };
 
-static int __init at32_wdt_init(void)
-{
-       return platform_driver_probe(&at32_wdt_driver, at32_wdt_probe);
-}
-module_init(at32_wdt_init);
-
-static void __exit at32_wdt_exit(void)
-{
-       platform_driver_unregister(&at32_wdt_driver);
-}
-module_exit(at32_wdt_exit);
+module_platform_driver_probe(at32_wdt_driver, at32_wdt_probe);
 
 MODULE_AUTHOR("Hans-Christian Egtvedt <egtvedt@samfundet.no>");
 MODULE_DESCRIPTION("Watchdog driver for Atmel AT32AP700X");
index dc42e44..c08933c 100644 (file)
@@ -321,18 +321,7 @@ static struct platform_driver at91wdt_driver = {
        },
 };
 
-static int __init at91sam_wdt_init(void)
-{
-       return platform_driver_probe(&at91wdt_driver, at91wdt_probe);
-}
-
-static void __exit at91sam_wdt_exit(void)
-{
-       platform_driver_unregister(&at91wdt_driver);
-}
-
-module_init(at91sam_wdt_init);
-module_exit(at91sam_wdt_exit);
+module_platform_driver_probe(at91wdt_driver, at91wdt_probe);
 
 MODULE_AUTHOR("Renaud CERRATO <r.cerrato@til-technologies.fr>");
 MODULE_DESCRIPTION("Watchdog driver for Atmel AT91SAM9x processors");
index cb5da5c..b9b8a8b 100644 (file)
@@ -451,17 +451,7 @@ static struct platform_driver coh901327_driver = {
        .resume         = coh901327_resume,
 };
 
-static int __init coh901327_init(void)
-{
-       return platform_driver_probe(&coh901327_driver, coh901327_probe);
-}
-module_init(coh901327_init);
-
-static void __exit coh901327_exit(void)
-{
-       platform_driver_unregister(&coh901327_driver);
-}
-module_exit(coh901327_exit);
+module_platform_driver_probe(coh901327_driver, coh901327_probe);
 
 MODULE_AUTHOR("Linus Walleij <linus.walleij@stericsson.com>");
 MODULE_DESCRIPTION("COH 901 327 Watchdog");
index a0eba3c..2037669 100644 (file)
@@ -301,9 +301,9 @@ static int dw_wdt_drv_probe(struct platform_device *pdev)
        if (!mem)
                return -EINVAL;
 
-       dw_wdt.regs = devm_request_and_ioremap(&pdev->dev, mem);
-       if (!dw_wdt.regs)
-               return -ENOMEM;
+       dw_wdt.regs = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(dw_wdt.regs))
+               return PTR_ERR(dw_wdt.regs);
 
        dw_wdt.clk = clk_get(&pdev->dev, NULL);
        if (IS_ERR(dw_wdt.clk))
index 9a45d02..ff90882 100644 (file)
@@ -262,11 +262,9 @@ static int __init imx2_wdt_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       imx2_wdt.base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!imx2_wdt.base) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               return -ENOMEM;
-       }
+       imx2_wdt.base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(imx2_wdt.base))
+               return PTR_ERR(imx2_wdt.base);
 
        imx2_wdt.clk = clk_get(&pdev->dev, NULL);
        if (IS_ERR(imx2_wdt.clk)) {
@@ -342,17 +340,7 @@ static struct platform_driver imx2_wdt_driver = {
        },
 };
 
-static int __init imx2_wdt_init(void)
-{
-       return platform_driver_probe(&imx2_wdt_driver, imx2_wdt_probe);
-}
-module_init(imx2_wdt_init);
-
-static void __exit imx2_wdt_exit(void)
-{
-       platform_driver_unregister(&imx2_wdt_driver);
-}
-module_exit(imx2_wdt_exit);
+module_platform_driver_probe(imx2_wdt_driver, imx2_wdt_probe);
 
 MODULE_AUTHOR("Wolfram Sang");
 MODULE_DESCRIPTION("Watchdog driver for IMX2 and later");
index a61408f..1cb25f6 100644 (file)
@@ -171,9 +171,9 @@ static int jz4740_wdt_probe(struct platform_device *pdev)
        watchdog_set_drvdata(jz4740_wdt, drvdata);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       drvdata->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (drvdata->base == NULL) {
-               ret = -EBUSY;
+       drvdata->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(drvdata->base)) {
+               ret = PTR_ERR(drvdata->base);
                goto err_out;
        }
 
index 79fe01b..088fd0c 100644 (file)
@@ -197,11 +197,9 @@ ltq_wdt_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       ltq_wdt_membase = devm_request_and_ioremap(&pdev->dev, res);
-       if (!ltq_wdt_membase) {
-               dev_err(&pdev->dev, "cannot remap I/O memory region\n");
-               return -ENOMEM;
-       }
+       ltq_wdt_membase = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ltq_wdt_membase))
+               return PTR_ERR(ltq_wdt_membase);
 
        /* we do not need to enable the clock as it is always running */
        clk = clk_get_io();
index 773c661..cc9d328 100644 (file)
@@ -14,6 +14,7 @@
  * another interface, some abstraction will have to be introduced.
  */
 
+#include <linux/err.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/types.h>
@@ -198,9 +199,9 @@ static int max63xx_wdt_probe(struct platform_device *pdev)
        heartbeat = current_timeout->twd;
 
        wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       wdt_base = devm_request_and_ioremap(&pdev->dev, wdt_mem);
-       if (!wdt_base)
-               return -ENOMEM;
+       wdt_base = devm_ioremap_resource(&pdev->dev, wdt_mem);
+       if (IS_ERR(wdt_base))
+               return PTR_ERR(wdt_base);
 
        max63xx_wdt_dev.timeout = heartbeat;
        watchdog_set_nowayout(&max63xx_wdt_dev, nowayout);
index dcba5da..de1f3fa 100644 (file)
@@ -155,9 +155,9 @@ static int pnx4008_wdt_probe(struct platform_device *pdev)
                heartbeat = DEFAULT_HEARTBEAT;
 
        r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       wdt_base = devm_request_and_ioremap(&pdev->dev, r);
-       if (!wdt_base)
-               return -EADDRINUSE;
+       wdt_base = devm_ioremap_resource(&pdev->dev, r);
+       if (IS_ERR(wdt_base))
+               return PTR_ERR(wdt_base);
 
        wdt_clk = clk_get(&pdev->dev, NULL);
        if (IS_ERR(wdt_clk))
index 98e1637..88f23c5 100644 (file)
@@ -121,9 +121,9 @@ static int __init txx9wdt_probe(struct platform_device *dev)
        }
 
        res = platform_get_resource(dev, IORESOURCE_MEM, 0);
-       txx9wdt_reg = devm_request_and_ioremap(&dev->dev, res);
-       if (!txx9wdt_reg) {
-               ret = -EBUSY;
+       txx9wdt_reg = devm_ioremap_resource(&dev->dev, res);
+       if (IS_ERR(txx9wdt_reg)) {
+               ret = PTR_ERR(txx9wdt_reg);
                goto exit;
        }
 
@@ -172,18 +172,7 @@ static struct platform_driver txx9wdt_driver = {
        },
 };
 
-static int __init watchdog_init(void)
-{
-       return platform_driver_probe(&txx9wdt_driver, txx9wdt_probe);
-}
-
-static void __exit watchdog_exit(void)
-{
-       platform_driver_unregister(&txx9wdt_driver);
-}
-
-module_init(watchdog_init);
-module_exit(watchdog_exit);
+module_platform_driver_probe(txx9wdt_driver, txx9wdt_probe);
 
 MODULE_DESCRIPTION("TXx9 Watchdog Driver");
 MODULE_LICENSE("GPL");
index 0a93dc1..55abfd6 100644 (file)
@@ -11,8 +11,7 @@ config 9P_FS
 
 if 9P_FS
 config 9P_FSCACHE
-       bool "Enable 9P client caching support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "Enable 9P client caching support"
        depends on 9P_FS=m && FSCACHE || 9P_FS=y && FSCACHE=y
        help
          Choose Y here to enable persistent, read-only local
index e55182a..c5a7787 100644 (file)
@@ -1,6 +1,6 @@
 config ADFS_FS
-       tristate "ADFS file system support (EXPERIMENTAL)"
-       depends on BLOCK && EXPERIMENTAL
+       tristate "ADFS file system support"
+       depends on BLOCK
        help
          The Acorn Disc Filing System is the standard file system of the
          RiscOS operating system which runs on Acorn's ARM-based Risc PC
index cfad9af..a04d9e8 100644 (file)
@@ -1,6 +1,6 @@
 config AFFS_FS
-       tristate "Amiga FFS file system support (EXPERIMENTAL)"
-       depends on BLOCK && EXPERIMENTAL
+       tristate "Amiga FFS file system support"
+       depends on BLOCK
        help
          The Fast File System (FFS) is the common file system used on hard
          disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20).  Say Y
index 8f975f2..ebba3b1 100644 (file)
@@ -1,6 +1,6 @@
 config AFS_FS
-       tristate "Andrew File System support (AFS) (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       tristate "Andrew File System support (AFS)"
+       depends on INET
        select AF_RXRPC
        select DNS_RESOLVER
        help
@@ -22,8 +22,7 @@ config AFS_DEBUG
          If unsure, say N.
 
 config AFS_FSCACHE
-       bool "Provide AFS client caching support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "Provide AFS client caching support"
        depends on AFS_FS=m && FSCACHE || AFS_FS=y && FSCACHE=y
        help
          Say Y here if you want AFS data to be cached locally on disk through
index 7835d30..edc5cc2 100644 (file)
@@ -1,6 +1,6 @@
 config BEFS_FS
-       tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)"
-       depends on BLOCK && EXPERIMENTAL
+       tristate "BeOS file system (BeFS) support (read only)"
+       depends on BLOCK
        select NLS
        help
          The BeOS File System (BeFS) is the native file system of Be, Inc's
index c2336c6..3728a64 100644 (file)
@@ -1,6 +1,6 @@
 config BFS_FS
-       tristate "BFS file system support (EXPERIMENTAL)"
-       depends on BLOCK && EXPERIMENTAL
+       tristate "BFS file system support"
+       depends on BLOCK
        help
          Boot File System (BFS) is a file system used under SCO UnixWare to
          allow the bootloader access to the kernel image and other important
index d33f01c..ccd25ba 100644 (file)
@@ -1,6 +1,5 @@
 config BTRFS_FS
-       tristate "Btrfs filesystem (EXPERIMENTAL) Unstable disk format"
-       depends on EXPERIMENTAL
+       tristate "Btrfs filesystem Unstable disk format"
        select LIBCRC32C
        select ZLIB_INFLATE
        select ZLIB_DEFLATE
index 9eb134e..49bc782 100644 (file)
@@ -1,6 +1,6 @@
 config CEPH_FS
-        tristate "Ceph distributed file system (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       tristate "Ceph distributed file system"
+       depends on INET
        select CEPH_LIB
        select LIBCRC32C
        select CRYPTO_AES
index 21ff76c..2906ee2 100644 (file)
@@ -155,14 +155,14 @@ config CIFS_DFS_UPCALL
            points. If unsure, say N.
 
 config CIFS_NFSD_EXPORT
-         bool "Allow nfsd to export CIFS file system (EXPERIMENTAL)"
-         depends on CIFS && EXPERIMENTAL && BROKEN
+         bool "Allow nfsd to export CIFS file system"
+         depends on CIFS && BROKEN
          help
           Allows NFS server to export a CIFS mounted share (nfsd over cifs)
 
 config CIFS_SMB2
-       bool "SMB2 network file system support (EXPERIMENTAL)"
-       depends on CIFS && EXPERIMENTAL && INET
+       bool "SMB2 network file system support"
+       depends on CIFS && INET
        select NLS
        select KEYS
        select FSCACHE
index a5f12b7..0c4f80b 100644 (file)
@@ -322,7 +322,6 @@ static struct dentry *__create_file(const char *name, umode_t mode,
        if (!parent)
                parent = debugfs_mount->mnt_root;
 
-       dentry = NULL;
        mutex_lock(&parent->d_inode->i_mutex);
        dentry = lookup_one_len(name, parent, strlen(name));
        if (!IS_ERR(dentry)) {
index cc16562..e15ef38 100644 (file)
@@ -1,6 +1,6 @@
 config ECRYPT_FS
-       tristate "eCrypt filesystem layer support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && KEYS && CRYPTO && (ENCRYPTED_KEYS || ENCRYPTED_KEYS=n)
+       tristate "eCrypt filesystem layer support"
+       depends on KEYS && CRYPTO && (ENCRYPTED_KEYS || ENCRYPTED_KEYS=n)
        select CRYPTO_ECB
        select CRYPTO_CBC
        select CRYPTO_MD5
index 6ebfc1c..d020e3c 100644 (file)
@@ -1,6 +1,6 @@
 config EFS_FS
-       tristate "EFS file system support (read only) (EXPERIMENTAL)"
-       depends on BLOCK && EXPERIMENTAL
+       tristate "EFS file system support (read only)"
+       depends on BLOCK
        help
          EFS is an older file system used for non-ISO9660 CD-ROMs and hard
          disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer
index b77c5bc..998e3a6 100644 (file)
@@ -1,6 +1,6 @@
 config HFS_FS
-       tristate "Apple Macintosh file system support (EXPERIMENTAL)"
-       depends on BLOCK && EXPERIMENTAL
+       tristate "Apple Macintosh file system support"
+       depends on BLOCK
        select NLS
        help
          If you say Y here, you will be able to mount Macintosh-formatted
index 6ae169c..d8bb6c4 100644 (file)
@@ -50,8 +50,8 @@ config JFFS2_FS_WBUF_VERIFY
          write-buffer, and check for errors.
 
 config JFFS2_SUMMARY
-       bool "JFFS2 summary support (EXPERIMENTAL)"
-       depends on JFFS2_FS && EXPERIMENTAL
+       bool "JFFS2 summary support"
+       depends on JFFS2_FS
        default n
        help
          This feature makes it possible to use summary information
@@ -63,8 +63,8 @@ config JFFS2_SUMMARY
          If unsure, say 'N'.
 
 config JFFS2_FS_XATTR
-       bool "JFFS2 XATTR support (EXPERIMENTAL)"
-       depends on JFFS2_FS && EXPERIMENTAL
+       bool "JFFS2 XATTR support"
+       depends on JFFS2_FS
        default n
        help
          Extended attributes are name:value pairs associated with inodes by
@@ -173,7 +173,7 @@ config JFFS2_CMODE_PRIORITY
          successful one.
 
 config JFFS2_CMODE_SIZE
-       bool "size (EXPERIMENTAL)"
+       bool "size"
        help
          Tries all compressors and chooses the one which has the smallest
          result.
index daf9a9b..09ed066 100644 (file)
@@ -1,6 +1,6 @@
 config LOGFS
-       tristate "LogFS file system (EXPERIMENTAL)"
-       depends on (MTD || BLOCK) && EXPERIMENTAL
+       tristate "LogFS file system"
+       depends on (MTD || BLOCK)
        select ZLIB_INFLATE
        select ZLIB_DEFLATE
        select CRC32
index 8df1ea4..430b687 100644 (file)
@@ -65,8 +65,8 @@ config NFSD_V3_ACL
          If unsure, say N.
 
 config NFSD_V4
-       bool "NFS server support for NFS version 4 (EXPERIMENTAL)"
-       depends on NFSD && PROC_FS && EXPERIMENTAL
+       bool "NFS server support for NFS version 4"
+       depends on NFSD && PROC_FS
        select NFSD_V3
        select FS_POSIX_ACL
        select SUNRPC_GSS
index 251da07..80da8eb 100644 (file)
@@ -1,6 +1,5 @@
 config NILFS2_FS
-       tristate "NILFS2 file system support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "NILFS2 file system support"
        select CRC32
        help
          NILFS2 is a log-structured file system (LFS) supporting continuous
index db940a9..8d924b5 100644 (file)
@@ -10,7 +10,7 @@
  * Please see Documentation/filesystems/sysfs.txt for more information.
  */
 
-#define DEBUG 
+#define DEBUG
 
 #include <linux/fs.h>
 #include <linux/mount.h>
index e4f10a4..0bf6e16 100644 (file)
@@ -29,7 +29,7 @@ config UFS_FS
 
 config UFS_FS_WRITE
        bool "UFS file system write support (DANGEROUS)"
-       depends on UFS_FS && EXPERIMENTAL
+       depends on UFS_FS
        help
          Say Y here if you want to try writing to UFS partitions. This is
          experimental, so you should back up your UFS partitions beforehand.
index 5a7ffe5..cc33aaf 100644 (file)
@@ -70,8 +70,8 @@ config XFS_RT
          If unsure, say N.
 
 config XFS_DEBUG
-       bool "XFS Debugging support (EXPERIMENTAL)"
-       depends on XFS_FS && EXPERIMENTAL
+       bool "XFS Debugging support"
+       depends on XFS_FS
        help
          Say Y here to get an XFS build with many debugging features,
          including ASSERT checks, function wrappers around macros,
index 66c434f..63f2465 100644 (file)
@@ -33,7 +33,7 @@ struct debugfs_reg32 {
 };
 
 struct debugfs_regset32 {
-       struct debugfs_reg32 *regs;
+       const struct debugfs_reg32 *regs;
        int nregs;
        void __iomem *base;
 };
index 43dcda9..251f33b 100644 (file)
@@ -573,6 +573,7 @@ extern int devres_release_group(struct device *dev, void *id);
 extern void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp);
 extern void devm_kfree(struct device *dev, void *p);
 
+void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res);
 void __iomem *devm_request_and_ioremap(struct device *dev,
                        struct resource *res);
 
index 6dd4787..2fe93b2 100644 (file)
@@ -95,6 +95,17 @@ do {                                                         \
                                     ##__VA_ARGS__);            \
 } while (0)
 
+#define dynamic_hex_dump(prefix_str, prefix_type, rowsize,     \
+                        groupsize, buf, len, ascii)            \
+do {                                                           \
+       DEFINE_DYNAMIC_DEBUG_METADATA(descriptor,               \
+               __builtin_constant_p(prefix_str) ? prefix_str : "hexdump");\
+       if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT))  \
+               print_hex_dump(KERN_DEBUG, prefix_str,          \
+                              prefix_type, rowsize, groupsize, \
+                              buf, len, ascii);                \
+} while (0)
+
 #else
 
 #include <linux/string.h>
index a9ded9a..c082c71 100644 (file)
@@ -204,6 +204,24 @@ static inline void platform_set_drvdata(struct platform_device *pdev, void *data
        module_driver(__platform_driver, platform_driver_register, \
                        platform_driver_unregister)
 
+/* module_platform_driver_probe() - Helper macro for drivers that don't do
+ * anything special in module init/exit.  This eliminates a lot of
+ * boilerplate.  Each module may only use this macro once, and
+ * calling it replaces module_init() and module_exit()
+ */
+#define module_platform_driver_probe(__platform_driver, __platform_probe) \
+static int __init __platform_driver##_init(void) \
+{ \
+       return platform_driver_probe(&(__platform_driver), \
+                                    __platform_probe);    \
+} \
+module_init(__platform_driver##_init); \
+static void __exit __platform_driver##_exit(void) \
+{ \
+       platform_driver_unregister(&(__platform_driver)); \
+} \
+module_exit(__platform_driver##_exit);
+
 extern struct platform_device *platform_create_bundle(struct platform_driver *driver,
                                        int (*probe)(struct platform_device *),
                                        struct resource *res, unsigned int n_res,
index 9afc01e..02c95cf 100644 (file)
@@ -321,8 +321,13 @@ extern void hex_dump_to_buffer(const void *buf, size_t len,
 extern void print_hex_dump(const char *level, const char *prefix_str,
                           int prefix_type, int rowsize, int groupsize,
                           const void *buf, size_t len, bool ascii);
+#if defined(CONFIG_DYNAMIC_DEBUG)
+#define print_hex_dump_bytes(prefix_str, prefix_type, buf, len)        \
+       dynamic_hex_dump(prefix_str, prefix_type, 16, 1, buf, len, true)
+#else
 extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
                                 const void *buf, size_t len);
+#endif /* defined(CONFIG_DYNAMIC_DEBUG) */
 #else
 static inline void print_hex_dump(const char *level, const char *prefix_str,
                                  int prefix_type, int rowsize, int groupsize,
@@ -336,4 +341,16 @@ static inline void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
 
 #endif
 
+#if defined(CONFIG_DYNAMIC_DEBUG)
+#define print_hex_dump_debug(prefix_str, prefix_type, rowsize, \
+                            groupsize, buf, len, ascii)        \
+       dynamic_hex_dump(prefix_str, prefix_type, rowsize,      \
+                        groupsize, buf, len, ascii)
+#else
+#define print_hex_dump_debug(prefix_str, prefix_type, rowsize,         \
+                            groupsize, buf, len, ascii)                \
+       print_hex_dump(KERN_DEBUG, prefix_str, prefix_type, rowsize,    \
+                      groupsize, buf, len, ascii)
+#endif /* defined(CONFIG_DYNAMIC_DEBUG) */
+
 #endif
index be8b7f5..a966690 100644 (file)
@@ -33,35 +33,8 @@ config BUILDTIME_EXTABLE_SORT
 menu "General setup"
 
 config EXPERIMENTAL
-       bool "Prompt for development and/or incomplete code/drivers"
-       ---help---
-         Some of the various things that Linux supports (such as network
-         drivers, file systems, network protocols, etc.) can be in a state
-         of development where the functionality, stability, or the level of
-         testing is not yet high enough for general use. This is usually
-         known as the "alpha-test" phase among developers. If a feature is
-         currently in alpha-test, then the developers usually discourage
-         uninformed widespread use of this feature by the general public to
-         avoid "Why doesn't this work?" type mail messages. However, active
-         testing and use of these systems is welcomed. Just be aware that it
-         may not meet the normal level of reliability or it may fail to work
-         in some special cases. Detailed bug reports from people familiar
-         with the kernel internals are usually welcomed by the developers
-         (before submitting bug reports, please read the documents
-         <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
-         <file:Documentation/BUG-HUNTING>, and
-         <file:Documentation/oops-tracing.txt> in the kernel source).
-
-         This option will also make obsoleted drivers available. These are
-         drivers that have been replaced by something else, and/or are
-         scheduled to be removed in a future kernel release.
-
-         Unless you intend to help test and develop a feature or driver that
-         falls into this category, or you have a situation that requires
-         using these features, you should probably say N here, which will
-         cause the configurator to present you with fewer choices. If
-         you say Y here, you will be offered the choice of using features or
-         drivers that are currently considered to be in the alpha-test phase.
+       bool
+       default y
 
 config BROKEN
        bool
@@ -247,7 +220,7 @@ config SYSVIPC_SYSCTL
 
 config POSIX_MQUEUE
        bool "POSIX Message Queues"
-       depends on NET && EXPERIMENTAL
+       depends on NET
        ---help---
          POSIX variant of message queues is a part of IPC. In POSIX message
          queues every message has a priority which decides about succession
@@ -393,7 +366,7 @@ config BSD_PROCESS_ACCT_V3
          at <http://www.gnu.org/software/acct/>.
 
 config TASKSTATS
-       bool "Export task/process statistics through netlink (EXPERIMENTAL)"
+       bool "Export task/process statistics through netlink"
        depends on NET
        default n
        help
@@ -406,7 +379,7 @@ config TASKSTATS
          Say N if unsure.
 
 config TASK_DELAY_ACCT
-       bool "Enable per-task delay accounting (EXPERIMENTAL)"
+       bool "Enable per-task delay accounting"
        depends on TASKSTATS
        help
          Collect information on time spent by a task waiting for system
@@ -417,7 +390,7 @@ config TASK_DELAY_ACCT
          Say N if unsure.
 
 config TASK_XACCT
-       bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
+       bool "Enable extended accounting over taskstats"
        depends on TASKSTATS
        help
          Collect extended task accounting data and send the data
@@ -426,7 +399,7 @@ config TASK_XACCT
          Say N if unsure.
 
 config TASK_IO_ACCOUNTING
-       bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
+       bool "Enable per-task storage I/O accounting"
        depends on TASK_XACCT
        help
          Collect information on the number of bytes of storage I/O which this
@@ -880,8 +853,8 @@ config MEMCG_SWAP_ENABLED
          select this option (if, for some reason, they need to disable it
          then swapaccount=0 does the trick).
 config MEMCG_KMEM
-       bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
-       depends on MEMCG && EXPERIMENTAL
+       bool "Memory Resource Controller Kernel Memory accounting"
+       depends on MEMCG
        depends on SLUB || SLAB
        help
          The Kernel Memory extension for Memory Resource Controller can limit
@@ -893,7 +866,7 @@ config MEMCG_KMEM
 
 config CGROUP_HUGETLB
        bool "HugeTLB Resource Controller for Control Groups"
-       depends on RESOURCE_COUNTERS && HUGETLB_PAGE && EXPERIMENTAL
+       depends on RESOURCE_COUNTERS && HUGETLB_PAGE
        default n
        help
          Provides a cgroup Resource Controller for HugeTLB pages.
@@ -932,7 +905,6 @@ config FAIR_GROUP_SCHED
 
 config CFS_BANDWIDTH
        bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
-       depends on EXPERIMENTAL
        depends on FAIR_GROUP_SCHED
        default n
        help
@@ -944,7 +916,6 @@ config CFS_BANDWIDTH
 
 config RT_GROUP_SCHED
        bool "Group scheduling for SCHED_RR/FIFO"
-       depends on EXPERIMENTAL
        depends on CGROUP_SCHED
        default n
        help
@@ -1026,8 +997,7 @@ config IPC_NS
          different IPC objects in different namespaces.
 
 config USER_NS
-       bool "User namespace (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "User namespace"
        depends on UIDGID_CONVERTED
        select UIDGID_STRICT_TYPE_CHECKS
 
@@ -1608,7 +1578,7 @@ config MODULE_UNLOAD
 
 config MODULE_FORCE_UNLOAD
        bool "Forced module unloading"
-       depends on MODULE_UNLOAD && EXPERIMENTAL
+       depends on MODULE_UNLOAD
        help
          This option allows you to force a module to unload, even if the
          kernel believes it is unsafe: the kernel will remove the module
index a920281..d4da55d 100644 (file)
@@ -35,7 +35,7 @@ config GCOV_KERNEL
 config GCOV_PROFILE_ALL
        bool "Profile entire Kernel"
        depends on GCOV_KERNEL
-       depends on SUPERH || S390 || X86 || (PPC && EXPERIMENTAL) || MICROBLAZE
+       depends on SUPERH || S390 || X86 || PPC || MICROBLAZE
        default n
        ---help---
        This options activates profiling for the entire kernel.
index 75cdb77..3958dc4 100644 (file)
@@ -322,7 +322,7 @@ config CPUMASK_OFFSTACK
 
 config DISABLE_OBSOLETE_CPUMASK_FUNCTIONS
        bool "Disable obsolete cpumask functions" if DEBUG_PER_CPU_MAPS
-       depends on EXPERIMENTAL && BROKEN
+       depends on BROKEN
 
 config CPU_RMAP
        bool
index 67604e5..849ecae 100644 (file)
@@ -455,7 +455,7 @@ config HAVE_DEBUG_KMEMLEAK
 
 config DEBUG_KMEMLEAK
        bool "Kernel memory leak detector"
-       depends on DEBUG_KERNEL && EXPERIMENTAL && HAVE_DEBUG_KMEMLEAK
+       depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
        select DEBUG_FS
        select STACKTRACE if STACKTRACE_SUPPORT
        select KALLSYMS
index 43cb93f..77439eb 100644 (file)
@@ -5,7 +5,7 @@ config HAVE_ARCH_KGDB
 menuconfig KGDB
        bool "KGDB: kernel debugger"
        depends on HAVE_ARCH_KGDB
-       depends on DEBUG_KERNEL && EXPERIMENTAL
+       depends on DEBUG_KERNEL
        help
          If you say Y here, it will be possible to remotely debug the
          kernel using gdb.  It is recommended but not required, that
index 80b9c76..88ad759 100644 (file)
@@ -1,3 +1,4 @@
+#include <linux/err.h>
 #include <linux/pci.h>
 #include <linux/io.h>
 #include <linux/gfp.h>
@@ -86,22 +87,24 @@ void devm_iounmap(struct device *dev, void __iomem *addr)
 EXPORT_SYMBOL(devm_iounmap);
 
 /**
- * devm_request_and_ioremap() - Check, request region, and ioremap resource
- * @dev: Generic device to handle the resource for
+ * devm_ioremap_resource() - check, request region, and ioremap resource
+ * @dev: generic device to handle the resource for
  * @res: resource to be handled
  *
- * Takes all necessary steps to ioremap a mem resource. Uses managed device, so
- * everything is undone on driver detach. Checks arguments, so you can feed
- * it the result from e.g. platform_get_resource() directly. Returns the
- * remapped pointer or NULL on error. Usage example:
+ * Checks that a resource is a valid memory region, requests the memory region
+ * and ioremaps it either as cacheable or as non-cacheable memory depending on
+ * the resource's flags. All operations are managed and will be undone on
+ * driver detach.
+ *
+ * Returns a pointer to the remapped memory or an ERR_PTR() encoded error code
+ * on failure. Usage example:
  *
  *     res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- *     base = devm_request_and_ioremap(&pdev->dev, res);
- *     if (!base)
- *             return -EADDRNOTAVAIL;
+ *     base = devm_ioremap_resource(&pdev->dev, res);
+ *     if (IS_ERR(base))
+ *             return PTR_ERR(base);
  */
-void __iomem *devm_request_and_ioremap(struct device *dev,
-                       struct resource *res)
+void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res)
 {
        resource_size_t size;
        const char *name;
@@ -111,7 +114,7 @@ void __iomem *devm_request_and_ioremap(struct device *dev,
 
        if (!res || resource_type(res) != IORESOURCE_MEM) {
                dev_err(dev, "invalid resource\n");
-               return NULL;
+               return ERR_PTR(-EINVAL);
        }
 
        size = resource_size(res);
@@ -119,7 +122,7 @@ void __iomem *devm_request_and_ioremap(struct device *dev,
 
        if (!devm_request_mem_region(dev, res->start, size, name)) {
                dev_err(dev, "can't request region for resource %pR\n", res);
-               return NULL;
+               return ERR_PTR(-EBUSY);
        }
 
        if (res->flags & IORESOURCE_CACHEABLE)
@@ -130,10 +133,39 @@ void __iomem *devm_request_and_ioremap(struct device *dev,
        if (!dest_ptr) {
                dev_err(dev, "ioremap failed for resource %pR\n", res);
                devm_release_mem_region(dev, res->start, size);
+               dest_ptr = ERR_PTR(-ENOMEM);
        }
 
        return dest_ptr;
 }
+EXPORT_SYMBOL(devm_ioremap_resource);
+
+/**
+ * devm_request_and_ioremap() - Check, request region, and ioremap resource
+ * @dev: Generic device to handle the resource for
+ * @res: resource to be handled
+ *
+ * Takes all necessary steps to ioremap a mem resource. Uses managed device, so
+ * everything is undone on driver detach. Checks arguments, so you can feed
+ * it the result from e.g. platform_get_resource() directly. Returns the
+ * remapped pointer or NULL on error. Usage example:
+ *
+ *     res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ *     base = devm_request_and_ioremap(&pdev->dev, res);
+ *     if (!base)
+ *             return -EADDRNOTAVAIL;
+ */
+void __iomem *devm_request_and_ioremap(struct device *device,
+                                      struct resource *res)
+{
+       void __iomem *dest_ptr;
+
+       dest_ptr = devm_ioremap_resource(device, res);
+       if (IS_ERR(dest_ptr))
+               return NULL;
+
+       return dest_ptr;
+}
 EXPORT_SYMBOL(devm_request_and_ioremap);
 
 #ifdef CONFIG_HAS_IOPORT
index 1db1fc6..5276b99 100644 (file)
@@ -59,7 +59,7 @@ struct ddebug_iter {
 
 static DEFINE_MUTEX(ddebug_lock);
 static LIST_HEAD(ddebug_tables);
-static int verbose = 0;
+static int verbose;
 module_param(verbose, int, 0644);
 
 /* Return the path relative to source root */
@@ -100,24 +100,32 @@ static char *ddebug_describe_flags(struct _ddebug *dp, char *buf,
        return buf;
 }
 
-#define vpr_info(fmt, ...) \
-       if (verbose) do { pr_info(fmt, ##__VA_ARGS__); } while (0)
-
-#define vpr_info_dq(q, msg)                                    \
+#define vpr_info(fmt, ...)                                     \
 do {                                                           \
-       /* trim last char off format print */                   \
-       vpr_info("%s: func=\"%s\" file=\"%s\" "                 \
-               "module=\"%s\" format=\"%.*s\" "                \
-               "lineno=%u-%u",                                 \
-               msg,                                            \
-               q->function ? q->function : "",                 \
-               q->filename ? q->filename : "",                 \
-               q->module ? q->module : "",                     \
-               (int)(q->format ? strlen(q->format) - 1 : 0),   \
-               q->format ? q->format : "",                     \
-               q->first_lineno, q->last_lineno);               \
+       if (verbose)                                            \
+               pr_info(fmt, ##__VA_ARGS__);                    \
 } while (0)
 
+static void vpr_info_dq(const struct ddebug_query *query, const char *msg)
+{
+       /* trim any trailing newlines */
+       int fmtlen = 0;
+
+       if (query->format) {
+               fmtlen = strlen(query->format);
+               while (fmtlen && query->format[fmtlen - 1] == '\n')
+                       fmtlen--;
+       }
+
+       vpr_info("%s: func=\"%s\" file=\"%s\" module=\"%s\" format=\"%.*s\" lineno=%u-%u\n",
+                msg,
+                query->function ? query->function : "",
+                query->filename ? query->filename : "",
+                query->module ? query->module : "",
+                fmtlen, query->format ? query->format : "",
+                query->first_lineno, query->last_lineno);
+}
+
 /*
  * Search the tables for _ddebug's which match the given `query' and
  * apply the `flags' and `mask' to them.  Returns number of matching
@@ -141,7 +149,7 @@ static int ddebug_change(const struct ddebug_query *query,
                if (query->module && strcmp(query->module, dt->mod_name))
                        continue;
 
-               for (i = 0 ; i < dt->num_ddebugs ; i++) {
+               for (i = 0; i < dt->num_ddebugs; i++) {
                        struct _ddebug *dp = &dt->ddebugs[i];
 
                        /* match against the source filename */
@@ -176,10 +184,10 @@ static int ddebug_change(const struct ddebug_query *query,
                                continue;
                        dp->flags = newflags;
                        vpr_info("changed %s:%d [%s]%s =%s\n",
-                               trim_prefix(dp->filename), dp->lineno,
-                               dt->mod_name, dp->function,
-                               ddebug_describe_flags(dp, flagbuf,
-                                               sizeof(flagbuf)));
+                                trim_prefix(dp->filename), dp->lineno,
+                                dt->mod_name, dp->function,
+                                ddebug_describe_flags(dp, flagbuf,
+                                                      sizeof(flagbuf)));
                }
        }
        mutex_unlock(&ddebug_lock);
@@ -213,19 +221,23 @@ static int ddebug_tokenize(char *buf, char *words[], int maxwords)
                /* find `end' of word, whitespace separated or quoted */
                if (*buf == '"' || *buf == '\'') {
                        int quote = *buf++;
-                       for (end = buf ; *end && *end != quote ; end++)
+                       for (end = buf; *end && *end != quote; end++)
                                ;
-                       if (!*end)
+                       if (!*end) {
+                               pr_err("unclosed quote: %s\n", buf);
                                return -EINVAL; /* unclosed quote */
+                       }
                } else {
-                       for (end = buf ; *end && !isspace(*end) ; end++)
+                       for (end = buf; *end && !isspace(*end); end++)
                                ;
                        BUG_ON(end == buf);
                }
 
                /* `buf' is start of word, `end' is one past its end */
-               if (nwords == maxwords)
+               if (nwords == maxwords) {
+                       pr_err("too many words, legal max <=%d\n", maxwords);
                        return -EINVAL; /* ran out of words[] before bytes */
+               }
                if (*end)
                        *end++ = '\0';  /* terminate the word */
                words[nwords++] = buf;
@@ -235,7 +247,7 @@ static int ddebug_tokenize(char *buf, char *words[], int maxwords)
        if (verbose) {
                int i;
                pr_info("split into words:");
-               for (i = 0 ; i < nwords ; i++)
+               for (i = 0; i < nwords; i++)
                        pr_cont(" \"%s\"", words[i]);
                pr_cont("\n");
        }
@@ -257,7 +269,11 @@ static inline int parse_lineno(const char *str, unsigned int *val)
                return 0;
        }
        *val = simple_strtoul(str, &end, 10);
-       return end == NULL || end == str || *end != '\0' ? -EINVAL : 0;
+       if (end == NULL || end == str || *end != '\0') {
+               pr_err("bad line-number: %s\n", str);
+               return -EINVAL;
+       }
+       return 0;
 }
 
 /*
@@ -286,11 +302,11 @@ static char *unescape(char *str)
                                in += 2;
                                continue;
                        } else if (isodigit(in[1]) &&
-                                isodigit(in[2]) &&
-                                isodigit(in[3])) {
-                               *out++ = ((in[1] - '0')<<6) |
-                                         ((in[2] - '0')<<3) |
-                                         (in[3] - '0');
+                                  isodigit(in[2]) &&
+                                  isodigit(in[3])) {
+                               *out++ = (((in[1] - '0') << 6) |
+                                         ((in[2] - '0') << 3) |
+                                         (in[3] - '0'));
                                in += 4;
                                continue;
                        }
@@ -308,8 +324,8 @@ static int check_set(const char **dest, char *src, char *name)
 
        if (*dest) {
                rc = -EINVAL;
-               pr_err("match-spec:%s val:%s overridden by %s",
-                       name, *dest, src);
+               pr_err("match-spec:%s val:%s overridden by %s\n",
+                      name, *dest, src);
        }
        *dest = src;
        return rc;
@@ -337,40 +353,46 @@ static int ddebug_parse_query(char *words[], int nwords,
        int rc;
 
        /* check we have an even number of words */
-       if (nwords % 2 != 0)
+       if (nwords % 2 != 0) {
+               pr_err("expecting pairs of match-spec <value>\n");
                return -EINVAL;
+       }
        memset(query, 0, sizeof(*query));
 
        if (modname)
                /* support $modname.dyndbg=<multiple queries> */
                query->module = modname;
 
-       for (i = 0 ; i < nwords ; i += 2) {
-               if (!strcmp(words[i], "func"))
+       for (i = 0; i < nwords; i += 2) {
+               if (!strcmp(words[i], "func")) {
                        rc = check_set(&query->function, words[i+1], "func");
-               else if (!strcmp(words[i], "file"))
+               } else if (!strcmp(words[i], "file")) {
                        rc = check_set(&query->filename, words[i+1], "file");
-               else if (!strcmp(words[i], "module"))
+               } else if (!strcmp(words[i], "module")) {
                        rc = check_set(&query->module, words[i+1], "module");
-               else if (!strcmp(words[i], "format"))
+               } else if (!strcmp(words[i], "format")) {
                        rc = check_set(&query->format, unescape(words[i+1]),
-                               "format");
-               else if (!strcmp(words[i], "line")) {
+                                      "format");
+               else if (!strcmp(words[i], "line")) {
                        char *first = words[i+1];
                        char *last = strchr(first, '-');
                        if (query->first_lineno || query->last_lineno) {
-                               pr_err("match-spec:line given 2 times\n");
+                               pr_err("match-spec: line used 2x\n");
                                return -EINVAL;
                        }
                        if (last)
                                *last++ = '\0';
-                       if (parse_lineno(first, &query->first_lineno) < 0)
+                       if (parse_lineno(first, &query->first_lineno) < 0) {
+                               pr_err("line-number is <0\n");
                                return -EINVAL;
+                       }
                        if (last) {
                                /* range <first>-<last> */
                                if (parse_lineno(last, &query->last_lineno)
                                    < query->first_lineno) {
-                                       pr_err("last-line < 1st-line\n");
+                                       pr_err("last-line:%d < 1st-line:%d\n",
+                                               query->last_lineno,
+                                               query->first_lineno);
                                        return -EINVAL;
                                }
                        } else {
@@ -406,19 +428,22 @@ static int ddebug_parse_flags(const char *str, unsigned int *flagsp,
                op = *str++;
                break;
        default:
+               pr_err("bad flag-op %c, at start of %s\n", *str, str);
                return -EINVAL;
        }
        vpr_info("op='%c'\n", op);
 
-       for ( ; *str ; ++str) {
+       for (; *str ; ++str) {
                for (i = ARRAY_SIZE(opt_array) - 1; i >= 0; i--) {
                        if (*str == opt_array[i].opt_char) {
                                flags |= opt_array[i].flag;
                                break;
                        }
                }
-               if (i < 0)
+               if (i < 0) {
+                       pr_err("unknown flag '%c' in \"%s\"\n", *str, str);
                        return -EINVAL;
+               }
        }
        vpr_info("flags=0x%x\n", flags);
 
@@ -450,16 +475,22 @@ static int ddebug_exec_query(char *query_string, const char *modname)
        char *words[MAXWORDS];
 
        nwords = ddebug_tokenize(query_string, words, MAXWORDS);
-       if (nwords <= 0)
+       if (nwords <= 0) {
+               pr_err("tokenize failed\n");
                return -EINVAL;
-       if (ddebug_parse_query(words, nwords-1, &query, modname))
+       }
+       /* check flags 1st (last arg) so query is pairs of spec,val */
+       if (ddebug_parse_flags(words[nwords-1], &flags, &mask)) {
+               pr_err("flags parse failed\n");
                return -EINVAL;
-       if (ddebug_parse_flags(words[nwords-1], &flags, &mask))
+       }
+       if (ddebug_parse_query(words, nwords-1, &query, modname)) {
+               pr_err("query parse failed\n");
                return -EINVAL;
-
+       }
        /* actually go and implement the change */
        nfound = ddebug_change(&query, flags, mask);
-       vpr_info_dq((&query), (nfound) ? "applied" : "no-match");
+       vpr_info_dq(&query, nfound ? "applied" : "no-match");
 
        return nfound;
 }
@@ -488,8 +519,9 @@ static int ddebug_exec_queries(char *query, const char *modname)
                if (rc < 0) {
                        errs++;
                        exitcode = rc;
-               } else
+               } else {
                        nfound += rc;
+               }
                i++;
        }
        vpr_info("processed %d queries, with %d matches, %d errs\n",
@@ -765,7 +797,7 @@ static void *ddebug_proc_next(struct seq_file *m, void *p, loff_t *pos)
        struct _ddebug *dp;
 
        vpr_info("called m=%p p=%p *pos=%lld\n",
-               m, p, (unsigned long long)*pos);
+                m, p, (unsigned long long)*pos);
 
        if (p == SEQ_START_TOKEN)
                dp = ddebug_iter_first(iter);
@@ -791,14 +823,14 @@ static int ddebug_proc_show(struct seq_file *m, void *p)
 
        if (p == SEQ_START_TOKEN) {
                seq_puts(m,
-                       "# filename:lineno [module]function flags format\n");
+                        "# filename:lineno [module]function flags format\n");
                return 0;
        }
 
        seq_printf(m, "%s:%u [%s]%s =%s \"",
-               trim_prefix(dp->filename), dp->lineno,
-               iter->table->mod_name, dp->function,
-               ddebug_describe_flags(dp, flagsbuf, sizeof(flagsbuf)));
+                  trim_prefix(dp->filename), dp->lineno,
+                  iter->table->mod_name, dp->function,
+                  ddebug_describe_flags(dp, flagsbuf, sizeof(flagsbuf)));
        seq_escape(m, dp->format, "\t\r\n\"");
        seq_puts(m, "\"\n");
 
@@ -845,7 +877,7 @@ static int ddebug_proc_open(struct inode *inode, struct file *file)
                kfree(iter);
                return err;
        }
-       ((struct seq_file *) file->private_data)->private = iter;
+       ((struct seq_file *)file->private_data)->private = iter;
        return 0;
 }
 
@@ -1002,8 +1034,7 @@ static int __init dynamic_debug_init(void)
        int verbose_bytes = 0;
 
        if (__start___verbose == __stop___verbose) {
-               pr_warn("_ddebug table is empty in a "
-                       "CONFIG_DYNAMIC_DEBUG build");
+               pr_warn("_ddebug table is empty in a CONFIG_DYNAMIC_DEBUG build\n");
                return 1;
        }
        iter = __start___verbose;
@@ -1030,18 +1061,16 @@ static int __init dynamic_debug_init(void)
                goto out_err;
 
        ddebug_init_success = 1;
-       vpr_info("%d modules, %d entries and %d bytes in ddebug tables,"
-               " %d bytes in (readonly) verbose section\n",
-               modct, entries, (int)( modct * sizeof(struct ddebug_table)),
-               verbose_bytes + (int)(__stop___verbose - __start___verbose));
+       vpr_info("%d modules, %d entries and %d bytes in ddebug tables, %d bytes in (readonly) verbose section\n",
+                modct, entries, (int)(modct * sizeof(struct ddebug_table)),
+                verbose_bytes + (int)(__stop___verbose - __start___verbose));
 
        /* apply ddebug_query boot param, dont unload tables on err */
        if (ddebug_setup_string[0] != '\0') {
-               pr_warn("ddebug_query param name is deprecated,"
-                       " change it to dyndbg\n");
+               pr_warn("ddebug_query param name is deprecated, change it to dyndbg\n");
                ret = ddebug_exec_queries(ddebug_setup_string, NULL);
                if (ret < 0)
-                       pr_warn("Invalid ddebug boot param %s",
+                       pr_warn("Invalid ddebug boot param %s\n",
                                ddebug_setup_string);
                else
                        pr_info("%d changes by ddebug_query\n", ret);
index 6540d65..3f0494c 100644 (file)
@@ -227,6 +227,7 @@ void print_hex_dump(const char *level, const char *prefix_str, int prefix_type,
 }
 EXPORT_SYMBOL(print_hex_dump);
 
+#if !defined(CONFIG_DYNAMIC_DEBUG)
 /**
  * print_hex_dump_bytes - shorthand form of print_hex_dump() with default params
  * @prefix_str: string to prefix each line with;
@@ -246,4 +247,5 @@ void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
                       buf, len, true);
 }
 EXPORT_SYMBOL(print_hex_dump_bytes);
-#endif
+#endif /* !defined(CONFIG_DYNAMIC_DEBUG) */
+#endif /* defined(CONFIG_PRINTK) */
index 278e3ab..308fdca 100644 (file)
@@ -1,6 +1,6 @@
 config SELECT_MEMORY_MODEL
        def_bool y
-       depends on EXPERIMENTAL || ARCH_SELECT_MEMORY_MODEL
+       depends on ARCH_SELECT_MEMORY_MODEL
 
 choice
        prompt "Memory model"
index d9ea09b..a75174a 100644 (file)
@@ -23,7 +23,7 @@ config NET_9P_VIRTIO
          guest partitions and a host partition.
 
 config NET_9P_RDMA
-       depends on INET && INFINIBAND && INFINIBAND_ADDR_TRANS && EXPERIMENTAL
+       depends on INET && INFINIBAND && INFINIBAND_ADDR_TRANS
        tristate "9P RDMA Transport (Experimental)"
        help
          This builds support for an RDMA transport.
index 30b48f5..7bdab26 100644 (file)
@@ -90,7 +90,6 @@ config NETWORK_SECMARK
 
 config NETWORK_PHY_TIMESTAMPING
        bool "Timestamping in PHY devices"
-       depends on EXPERIMENTAL
        help
          This allows timestamping of network packets by PHYs with
          hardware timestamping capabilities. This option adds some
@@ -278,7 +277,7 @@ config NET_PKTGEN
 
 config NET_TCPPROBE
        tristate "TCP connection probing"
-       depends on INET && EXPERIMENTAL && PROC_FS && KPROBES
+       depends on INET && PROC_FS && KPROBES
        ---help---
        This module allows for capturing the changes to TCP connection
        state in response to incoming packets. It is used for debugging
@@ -295,7 +294,7 @@ config NET_TCPPROBE
 
 config NET_DROP_MONITOR
        tristate "Network packet drop alerting service"
-       depends on INET && EXPERIMENTAL && TRACEPOINTS
+       depends on INET && TRACEPOINTS
        ---help---
        This feature provides an alerting service to userspace in the
        event that packets are discarded in the network stack.  Alerts
index cc04dd6..e50cc69 100644 (file)
@@ -1,6 +1,6 @@
 config CEPH_LIB
-        tristate "Ceph core library (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       tristate "Ceph core library"
+       depends on INET
        select LIBCRC32C
        select CRYPTO_AES
        select CRYPTO
index b75968a..8c0ef71 100644 (file)
@@ -1,6 +1,6 @@
 menuconfig IP_DCCP
-       tristate "The DCCP Protocol (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       tristate "The DCCP Protocol"
+       depends on INET
        ---help---
          Datagram Congestion Control Protocol (RFC 4340)
 
index 0581143..8ba3fc9 100644 (file)
@@ -1,5 +1,4 @@
-menu "DCCP CCIDs Configuration (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+menu "DCCP CCIDs Configuration"
 
 config IP_DCCP_CCID2_DEBUG
        bool "CCID-2 debugging messages"
@@ -12,7 +11,7 @@ config IP_DCCP_CCID2_DEBUG
          If in doubt, say N.
 
 config IP_DCCP_CCID3
-       bool "CCID-3 (TCP-Friendly) (EXPERIMENTAL)"
+       bool "CCID-3 (TCP-Friendly)"
        def_bool y if (IP_DCCP = y || IP_DCCP = m)
        ---help---
          CCID-3 denotes TCP-Friendly Rate Control (TFRC), an equation-based
index 7914fd6..f3393e1 100644 (file)
@@ -25,8 +25,8 @@ config DECNET
          The module is called decnet.
 
 config DECNET_ROUTER
-       bool "DECnet: router support (EXPERIMENTAL)"
-       depends on DECNET && EXPERIMENTAL
+       bool "DECnet: router support"
+       depends on DECNET
        select FIB_RULES
        ---help---
          Add support for turning your DECnet Endnode into a level 1 or 2
index 2f81de5..8d7c109 100644 (file)
@@ -3,7 +3,7 @@
 #
 
 menu "DECnet: Netfilter Configuration"
-       depends on DECNET && NETFILTER && EXPERIMENTAL
+       depends on DECNET && NETFILTER
        depends on NETFILTER_ADVANCED
 
 config DECNET_NF_GRABULATOR
index 7dee650..b2e06df 100644 (file)
@@ -1,6 +1,5 @@
 config IEEE802154
-       tristate "IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networks support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networks support"
        ---help---
          IEEE Std 802.15.4 defines a low data rate, low power and low
          complexity short range wireless personal area networks. It was
index 5a19aeb..7944df7 100644 (file)
@@ -488,7 +488,6 @@ config TCP_CONG_HTCP
 
 config TCP_CONG_HSTCP
        tristate "High Speed TCP"
-       depends on EXPERIMENTAL
        default n
        ---help---
        Sally Floyd's High Speed TCP (RFC 3649) congestion control.
@@ -499,7 +498,6 @@ config TCP_CONG_HSTCP
 
 config TCP_CONG_HYBLA
        tristate "TCP-Hybla congestion control algorithm"
-       depends on EXPERIMENTAL
        default n
        ---help---
        TCP-Hybla is a sender-side only change that eliminates penalization of
@@ -509,7 +507,6 @@ config TCP_CONG_HYBLA
 
 config TCP_CONG_VEGAS
        tristate "TCP Vegas"
-       depends on EXPERIMENTAL
        default n
        ---help---
        TCP Vegas is a sender-side only change to TCP that anticipates
@@ -520,7 +517,6 @@ config TCP_CONG_VEGAS
 
 config TCP_CONG_SCALABLE
        tristate "Scalable TCP"
-       depends on EXPERIMENTAL
        default n
        ---help---
        Scalable TCP is a sender-side only change to TCP which uses a
@@ -530,7 +526,6 @@ config TCP_CONG_SCALABLE
 
 config TCP_CONG_LP
        tristate "TCP Low Priority"
-       depends on EXPERIMENTAL
        default n
        ---help---
        TCP Low Priority (TCP-LP), a distributed algorithm whose goal is
@@ -540,7 +535,6 @@ config TCP_CONG_LP
 
 config TCP_CONG_VENO
        tristate "TCP Veno"
-       depends on EXPERIMENTAL
        default n
        ---help---
        TCP Veno is a sender-side only enhancement of TCP to obtain better
@@ -552,7 +546,6 @@ config TCP_CONG_VENO
 
 config TCP_CONG_YEAH
        tristate "YeAH TCP"
-       depends on EXPERIMENTAL
        select TCP_CONG_VEGAS
        default n
        ---help---
@@ -567,7 +560,6 @@ config TCP_CONG_YEAH
 
 config TCP_CONG_ILLINOIS
        tristate "TCP Illinois"
-       depends on EXPERIMENTAL
        default n
        ---help---
        TCP-Illinois is a sender-side modification of TCP Reno for
@@ -631,8 +623,7 @@ config DEFAULT_TCP_CONG
        default "cubic"
 
 config TCP_MD5SIG
-       bool "TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "TCP: MD5 Signature Option support (RFC2385)"
        select CRYPTO
        select CRYPTO_MD5
        ---help---
index d8d6f2a..ce2d43e 100644 (file)
@@ -241,8 +241,8 @@ config IP_NF_MANGLE
          To compile it as a module, choose M here.  If unsure, say N.
 
 config IP_NF_TARGET_CLUSTERIP
-       tristate "CLUSTERIP target support (EXPERIMENTAL)"
-       depends on IP_NF_MANGLE && EXPERIMENTAL
+       tristate "CLUSTERIP target support"
+       depends on IP_NF_MANGLE
        depends on NF_CONNTRACK_IPV4
        depends on NETFILTER_ADVANCED
        select NF_CONNTRACK_MARK
index 4f7fe72..3f2eb57 100644 (file)
@@ -50,16 +50,15 @@ config IPV6_ROUTER_PREF
          If unsure, say N.
 
 config IPV6_ROUTE_INFO
-       bool "IPv6: Route Information (RFC 4191) support (EXPERIMENTAL)"
-       depends on IPV6_ROUTER_PREF && EXPERIMENTAL
+       bool "IPv6: Route Information (RFC 4191) support"
+       depends on IPV6_ROUTER_PREF
        ---help---
          This is experimental support of Route Information.
 
          If unsure, say N.
 
 config IPV6_OPTIMISTIC_DAD
-       bool "IPv6: Enable RFC 4429 Optimistic DAD (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       bool "IPv6: Enable RFC 4429 Optimistic DAD"
        ---help---
          This is experimental support for optimistic Duplicate
          Address Detection.  It allows for autoconfigured addresses
@@ -105,8 +104,7 @@ config INET6_IPCOMP
          If unsure, say Y.
 
 config IPV6_MIP6
-       tristate "IPv6: Mobility (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "IPv6: Mobility"
        select XFRM
        ---help---
          Support for IPv6 Mobility described in RFC 3775.
@@ -150,8 +148,7 @@ config INET6_XFRM_MODE_BEET
          If unsure, say Y.
 
 config INET6_XFRM_MODE_ROUTEOPTIMIZATION
-       tristate "IPv6: MIPv6 route optimization mode (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "IPv6: MIPv6 route optimization mode"
        select XFRM
        ---help---
          Support for MIPv6 route optimization mode.
@@ -171,8 +168,8 @@ config IPV6_SIT
          Saying M here will produce a module called sit. If unsure, say Y.
 
 config IPV6_SIT_6RD
-       bool "IPv6: IPv6 Rapid Deployment (6RD) (EXPERIMENTAL)"
-       depends on IPV6_SIT && EXPERIMENTAL
+       bool "IPv6: IPv6 Rapid Deployment (6RD)"
+       depends on IPV6_SIT
        default n
        ---help---
          IPv6 Rapid Deployment (6rd; draft-ietf-softwire-ipv6-6rd) builds upon
@@ -219,7 +216,6 @@ config IPV6_GRE
 
 config IPV6_MULTIPLE_TABLES
        bool "IPv6: Multiple Routing Tables"
-       depends on EXPERIMENTAL
        select FIB_RULES
        ---help---
          Support multiple routing tables.
@@ -239,8 +235,8 @@ config IPV6_SUBTREES
          If unsure, say N.
 
 config IPV6_MROUTE
-       bool "IPv6: multicast routing (EXPERIMENTAL)"
-       depends on IPV6 && EXPERIMENTAL
+       bool "IPv6: multicast routing"
+       depends on IPV6
        ---help---
          Experimental support for IPv6 multicast forwarding.
          If unsure, say N.
@@ -260,7 +256,7 @@ config IPV6_MROUTE_MULTIPLE_TABLES
          If unsure, say N.
 
 config IPV6_PIMSM_V2
-       bool "IPv6: PIM-SM version 2 support (EXPERIMENTAL)"
+       bool "IPv6: PIM-SM version 2 support"
        depends on IPV6_MROUTE
        ---help---
          Support for IPv6 PIM multicast routing protocol PIM-SMv2.
index 147a8fd..adb9843 100644 (file)
@@ -46,8 +46,8 @@ config L2TP_DEBUGFS
          will be called l2tp_debugfs.
 
 config L2TP_V3
-       bool "L2TPv3 support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL && L2TP
+       bool "L2TPv3 support"
+       depends on L2TP
        help
          Layer Two Tunneling Protocol Version 3
 
index f0b5efb..6481839 100644 (file)
@@ -3,8 +3,7 @@
 #
 
 config LAPB
-       tristate "LAPB Data Link Driver (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "LAPB Data Link Driver"
        ---help---
          Link Access Procedure, Balanced (LAPB) is the data link layer (i.e.
          the lower) part of the X.25 protocol. It offers a reliable
index b4ecf26..ff57ecc 100644 (file)
@@ -81,7 +81,7 @@ comment "Some wireless drivers require a rate control algorithm"
 
 config MAC80211_MESH
        bool "Enable mac80211 mesh networking (pre-802.11s) support"
-       depends on MAC80211 && EXPERIMENTAL
+       depends on MAC80211
        ---help---
         This options enables support of Draft 802.11s mesh networking.
         The implementation is based on Draft 2.08 of the Mesh Networking
index a967dda..b33dd76 100644 (file)
@@ -1,6 +1,6 @@
 config MAC802154
        tristate "Generic IEEE 802.15.4 Soft Networking Stack (mac802154)"
-       depends on IEEE802154 && EXPERIMENTAL
+       depends on IEEE802154
        select CRC_CCITT
        ---help---
          This option enables the hardware independent IEEE 802.15.4
index 49e96df..456833d 100644 (file)
@@ -125,8 +125,7 @@ config NF_CONNTRACK_TIMESTAMP
          If unsure, say `N'.
 
 config NF_CT_PROTO_DCCP
-       tristate 'DCCP protocol connection tracking support (EXPERIMENTAL)'
-       depends on EXPERIMENTAL
+       tristate 'DCCP protocol connection tracking support'
        depends on NETFILTER_ADVANCED
        default IP_DCCP
        help
@@ -139,8 +138,7 @@ config NF_CT_PROTO_GRE
        tristate
 
 config NF_CT_PROTO_SCTP
-       tristate 'SCTP protocol connection tracking support (EXPERIMENTAL)'
-       depends on EXPERIMENTAL
+       tristate 'SCTP protocol connection tracking support'
        depends on NETFILTER_ADVANCED
        default IP_SCTP
        help
@@ -281,8 +279,7 @@ config NF_CONNTRACK_PPTP
          To compile it as a module, choose M here.  If unsure, say N.
 
 config NF_CONNTRACK_SANE
-       tristate "SANE protocol support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "SANE protocol support"
        depends on NETFILTER_ADVANCED
        help
          SANE is a protocol for remote access to scanners as implemented
@@ -409,8 +406,7 @@ endif # NF_CONNTRACK
 
 # transparent proxy support
 config NETFILTER_TPROXY
-       tristate "Transparent proxying support (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "Transparent proxying support"
        depends on IP_NF_MANGLE
        depends on NETFILTER_ADVANCED
        help
@@ -718,8 +714,7 @@ config NETFILTER_XT_TARGET_TEE
        this clone be rerouted to another nexthop.
 
 config NETFILTER_XT_TARGET_TPROXY
-       tristate '"TPROXY" target support (EXPERIMENTAL)'
-       depends on EXPERIMENTAL
+       tristate '"TPROXY" target support'
        depends on NETFILTER_TPROXY
        depends on NETFILTER_XTABLES
        depends on NETFILTER_ADVANCED
@@ -783,8 +778,7 @@ config NETFILTER_XT_TARGET_TCPMSS
          To compile it as a module, choose M here.  If unsure, say N.
 
 config NETFILTER_XT_TARGET_TCPOPTSTRIP
-       tristate '"TCPOPTSTRIP" target support (EXPERIMENTAL)'
-       depends on EXPERIMENTAL
+       tristate '"TCPOPTSTRIP" target support'
        depends on IP_NF_MANGLE || IP6_NF_MANGLE
        depends on NETFILTER_ADVANCED
        help
@@ -1145,8 +1139,7 @@ config NETFILTER_XT_MATCH_RECENT
        Official Website: <http://snowman.net/projects/ipt_recent/>
 
 config NETFILTER_XT_MATCH_SCTP
-       tristate  '"sctp" protocol match support (EXPERIMENTAL)'
-       depends on EXPERIMENTAL
+       tristate  '"sctp" protocol match support'
        depends on NETFILTER_ADVANCED
        default IP_SCTP
        help
@@ -1158,8 +1151,7 @@ config NETFILTER_XT_MATCH_SCTP
          <file:Documentation/kbuild/modules.txt>.  If unsure, say `N'.
 
 config NETFILTER_XT_MATCH_SOCKET
-       tristate '"socket" match support (EXPERIMENTAL)'
-       depends on EXPERIMENTAL
+       tristate '"socket" match support'
        depends on NETFILTER_TPROXY
        depends on NETFILTER_XTABLES
        depends on NETFILTER_ADVANCED
index ec753b3..f2c670b 100644 (file)
@@ -1,7 +1,7 @@
 
 config RDS
-       tristate "The RDS Protocol (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       tristate "The RDS Protocol"
+       depends on INET
        ---help---
          The RDS (Reliable Datagram Sockets) protocol provides reliable,
          sequenced delivery of datagrams over Infiniband, iWARP,
index 0d3103c..23dcef1 100644 (file)
@@ -4,7 +4,7 @@
 
 config AF_RXRPC
        tristate "RxRPC session sockets"
-       depends on INET && EXPERIMENTAL
+       depends on INET
        select CRYPTO
        select KEYS
        help
index 7521d94..cf48528 100644 (file)
@@ -3,8 +3,8 @@
 #
 
 menuconfig IP_SCTP
-       tristate "The SCTP Protocol (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       tristate "The SCTP Protocol"
+       depends on INET
        depends on IPV6 || IPV6=n
        select CRYPTO
        select CRYPTO_HMAC
index 03d03e3..516fe2c 100644 (file)
@@ -10,7 +10,7 @@ config SUNRPC_BACKCHANNEL
 
 config SUNRPC_XPRT_RDMA
        tristate
-       depends on SUNRPC && INFINIBAND && INFINIBAND_ADDR_TRANS && EXPERIMENTAL
+       depends on SUNRPC && INFINIBAND && INFINIBAND_ADDR_TRANS
        default SUNRPC && INFINIBAND
        help
          This option allows the NFS client and server to support
index bc41bd3..4f99600 100644 (file)
@@ -3,8 +3,8 @@
 #
 
 menuconfig TIPC
-       tristate "The TIPC Protocol (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       tristate "The TIPC Protocol"
+       depends on INET
        ---help---
          The Transparent Inter Process Communication (TIPC) protocol is
          specially designed for intra cluster communication. This protocol
index a157a2e..fc1bd40 100644 (file)
@@ -4,7 +4,6 @@
 
 config WAN_ROUTER
        tristate "WAN router (DEPRECATED)"
-       depends on EXPERIMENTAL
        ---help---
          Wide Area Networks (WANs), such as X.25, frame relay and leased
          lines, are used to interconnect Local Area Networks (LANs) over vast
index e6759c9..c959312 100644 (file)
@@ -3,8 +3,7 @@
 #
 
 config X25
-       tristate "CCITT X.25 Packet Layer (EXPERIMENTAL)"
-       depends on EXPERIMENTAL
+       tristate "CCITT X.25 Packet Layer"
        ---help---
          X.25 is a set of standardized network protocols, similar in scope to
          frame relay; the one physical line from your box to the X.25 network
index ce90b8d..bda1a13 100644 (file)
@@ -21,8 +21,8 @@ config XFRM_USER
          If unsure, say Y.
 
 config XFRM_SUB_POLICY
-       bool "Transformation sub policy support (EXPERIMENTAL)"
-       depends on XFRM && EXPERIMENTAL
+       bool "Transformation sub policy support"
+       depends on XFRM
        ---help---
          Support sub policy for developers. By using sub policy with main
          one, two policies can be applied to the same packet at once.
@@ -31,8 +31,8 @@ config XFRM_SUB_POLICY
          If unsure, say N.
 
 config XFRM_MIGRATE
-       bool "Transformation migrate database (EXPERIMENTAL)"
-       depends on XFRM && EXPERIMENTAL
+       bool "Transformation migrate database"
+       depends on XFRM
        ---help---
          A feature to update locator(s) of a given IPsec security
          association dynamically.  This feature is required, for
@@ -42,8 +42,8 @@ config XFRM_MIGRATE
          If unsure, say N.
 
 config XFRM_STATISTICS
-       bool "Transformation statistics (EXPERIMENTAL)"
-       depends on INET && XFRM && PROC_FS && EXPERIMENTAL
+       bool "Transformation statistics"
+       depends on INET && XFRM && PROC_FS
        ---help---
          This statistics is not a SNMP/MIB specification but shows
          statistics about transformation error (or almost error) factor
@@ -68,8 +68,8 @@ config NET_KEY
          Say Y unless you know what you are doing.
 
 config NET_KEY_MIGRATE
-       bool "PF_KEY MIGRATE (EXPERIMENTAL)"
-       depends on NET_KEY && EXPERIMENTAL
+       bool "PF_KEY MIGRATE"
+       depends on NET_KEY
        select XFRM_MIGRATE
        ---help---
          Add a PF_KEY MIGRATE message to PF_KEYv2 socket family.
diff --git a/scripts/coccinelle/api/devm_ioremap_resource.cocci b/scripts/coccinelle/api/devm_ioremap_resource.cocci
new file mode 100644 (file)
index 0000000..495daa3
--- /dev/null
@@ -0,0 +1,90 @@
+virtual patch
+virtual report
+
+@depends on patch@
+expression base, dev, res;
+@@
+
+-base = devm_request_and_ioremap(dev, res);
++base = devm_ioremap_resource(dev, res);
+ ...
+ if (
+-base == NULL
++IS_ERR(base)
+ || ...) {
+<...
+-      return ...;
++      return PTR_ERR(base);
+...>
+ }
+
+@depends on patch@
+expression e, E, ret;
+identifier l;
+@@
+
+ e = devm_ioremap_resource(...);
+ ...
+ if (IS_ERR(e) || ...) {
+       ... when any
+-      ret = E;
++      ret = PTR_ERR(e);
+       ...
+(
+       return ret;
+|
+       goto l;
+)
+ }
+
+@depends on patch@
+expression e;
+@@
+
+ e = devm_ioremap_resource(...);
+ ...
+ if (IS_ERR(e) || ...) {
+       ...
+-      \(dev_dbg\|dev_err\|pr_debug\|pr_err\|DRM_ERROR\)(...);
+       ...
+ }
+
+@depends on patch@
+expression e;
+identifier l;
+@@
+
+ e = devm_ioremap_resource(...);
+ ...
+ if (IS_ERR(e) || ...)
+-{
+(
+       return ...;
+|
+       goto l;
+)
+-}
+
+@r depends on report@
+expression e;
+identifier l;
+position p1;
+@@
+
+*e = devm_request_and_ioremap@p1(...);
+ ...
+ if (e == NULL || ...) {
+       ...
+(
+       return ...;
+|
+       goto l;
+)
+ }
+
+@script:python depends on r@
+p1 << r.p1;
+@@
+
+msg = "ERROR: deprecated devm_request_and_ioremap() API used on line %s" % (p1[0].line)
+coccilib.report.print_report(p1[0], msg)
index f3f50e6..1738d28 100644 (file)
@@ -11,6 +11,7 @@
  */
 
 #include <linux/delay.h>
+#include <linux/err.h>
 #include <linux/io.h>
 #include <linux/init.h>
 #include <linux/module.h>
@@ -367,9 +368,9 @@ static int ep93xx_ac97_probe(struct platform_device *pdev)
        if (!res)
                return -ENODEV;
 
-       info->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!info->regs)
-               return -ENXIO;
+       info->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(info->regs))
+               return PTR_ERR(info->regs);
 
        irq = platform_get_irq(pdev, 0);
        if (!irq)
index 3365d4e..323ed69 100644 (file)
@@ -380,9 +380,9 @@ static int ep93xx_i2s_probe(struct platform_device *pdev)
        if (!res)
                return -ENODEV;
 
-       info->regs = devm_request_and_ioremap(&pdev->dev, res);
-       if (!info->regs)
-               return -ENXIO;
+       info->regs = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(info->regs))
+               return PTR_ERR(info->regs);
 
        info->mclk = clk_get(&pdev->dev, "mclk");
        if (IS_ERR(info->mclk)) {
index d991529..5f607b3 100644 (file)
@@ -361,9 +361,9 @@ static int jz4740_codec_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       base = devm_request_and_ioremap(&pdev->dev, mem);
-       if (!base)
-               return -EBUSY;
+       base = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(base))
+               return PTR_ERR(base);
 
        jz4740_codec->regmap = devm_regmap_init_mmio(&pdev->dev, base,
                                            &jz4740_codec_regmap_config);
index 251f4d9..c21ac9c 100644 (file)
@@ -252,9 +252,9 @@ static int imx_audmux_probe(struct platform_device *pdev)
                        of_match_device(imx_audmux_dt_ids, &pdev->dev);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       audmux_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!audmux_base)
-               return -EADDRNOTAVAIL;
+       audmux_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(audmux_base))
+               return PTR_ERR(audmux_base);
 
        pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
        if (IS_ERR(pinctrl)) {
index 3b48042..55464a5 100644 (file)
@@ -550,10 +550,9 @@ static int imx_ssi_probe(struct platform_device *pdev)
                goto failed_get_resource;
        }
 
-       ssi->base = devm_request_and_ioremap(&pdev->dev, res);
-       if (!ssi->base) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               ret = -ENODEV;
+       ssi->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(ssi->base)) {
+               ret = PTR_ERR(ssi->base);
                goto failed_register;
        }
 
index 282d8b1..c74c890 100644 (file)
@@ -472,11 +472,9 @@ static int kirkwood_i2s_dev_probe(struct platform_device *pdev)
                return -ENXIO;
        }
 
-       priv->io = devm_request_and_ioremap(&pdev->dev, mem);
-       if (!priv->io) {
-               dev_err(&pdev->dev, "devm_request_and_ioremap failed\n");
-               return -ENOMEM;
-       }
+       priv->io = devm_ioremap_resource(&pdev->dev, mem);
+       if (IS_ERR(priv->io))
+               return PTR_ERR(priv->io);
 
        priv->irq = platform_get_irq(pdev, 0);
        if (priv->irq <= 0) {
index 365d9d2..b327709 100644 (file)
@@ -724,11 +724,9 @@ static int mxs_saif_probe(struct platform_device *pdev)
 
        iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       saif->base = devm_request_and_ioremap(&pdev->dev, iores);
-       if (!saif->base) {
-               dev_err(&pdev->dev, "ioremap failed\n");
-               return -ENODEV;
-       }
+       saif->base = devm_ioremap_resource(&pdev->dev, iores);
+       if (IS_ERR(saif->base))
+               return PTR_ERR(saif->base);
 
        dmares = platform_get_resource(pdev, IORESOURCE_DMA, 0);
        if (!dmares) {
index 41c3a09..9140c4a 100644 (file)
@@ -429,9 +429,9 @@ static int asoc_mmp_sspa_probe(struct platform_device *pdev)
        if (res == NULL)
                return -ENOMEM;
 
-       priv->sspa->mmio_base = devm_request_and_ioremap(&pdev->dev, res);
-       if (priv->sspa->mmio_base == NULL)
-               return -ENODEV;
+       priv->sspa->mmio_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(priv->sspa->mmio_base))
+               return PTR_ERR(priv->sspa->mmio_base);
 
        priv->sspa->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(priv->sspa->clk))
index bff0c55..7203ace 100644 (file)
@@ -29,10 +29,6 @@ Running Lguest:
 
   You will need to configure your kernel with the following options:
 
-  "General setup":
-     "Prompt for development and/or incomplete code/drivers" = Y
-        (CONFIG_EXPERIMENTAL=y)
-
   "Processor type and features":
      "Paravirtualized guest support" = Y
         "Lguest guest support" = Y
@@ -43,10 +39,10 @@ Running Lguest:
 
   "Device Drivers":
      "Block devices"
-        "Virtio block driver (EXPERIMENTAL)" = M/Y
+        "Virtio block driver" = M/Y
      "Network device support"
         "Universal TUN/TAP device driver support" = M/Y
-        "Virtio network driver (EXPERIMENTAL)" = M/Y
+        "Virtio network driver" = M/Y
            (CONFIG_VIRTIO_BLK=m, CONFIG_VIRTIO_NET=m and CONFIG_TUN=m)
 
   "Virtualization"