Kernel drivers may also request that a particular GPIO be
          exported to userspace; this can be useful when debugging.
 
+config GPIO_GENERIC
+       tristate
+
 # put drivers in the right section, in alphabetical order
 
 config GPIO_MAX730X
 
 comment "Memory mapped GPIO drivers:"
 
-config GPIO_BASIC_MMIO_CORE
-       tristate
-       help
-         Provides core functionality for basic memory-mapped GPIO controllers.
-
-config GPIO_BASIC_MMIO
-       tristate "Basic memory-mapped GPIO controllers support"
-       select GPIO_BASIC_MMIO_CORE
+config GPIO_GENERIC_PLATFORM
+       tristate "Generic memory-mapped GPIO controller support (MMIO platform device)"
+       select GPIO_GENERIC
        help
-         Say yes here to support basic memory-mapped GPIO controllers.
+         Say yes here to support basic platform_device memory-mapped GPIO controllers.
 
 config GPIO_IT8761E
        tristate "IT8761E GPIO support"
        def_bool y
        depends on CPU_EXYNOS4210
 
-config GPIO_MXS
-       def_bool y
-       depends on ARCH_MXS
-
 config GPIO_MXC
        def_bool y
        depends on ARCH_MXC
-       select GPIO_BASIC_MMIO_CORE
+       select GPIO_GENERIC
+
+config GPIO_MXS
+       def_bool y
+       depends on ARCH_MXS
 
 config GPIO_PLAT_SAMSUNG
        def_bool y
          The Intel Tunnel Creek processor has 5 GPIOs powered by the
          core power rail and 9 from suspend power supply.
 
-         This driver can also be built as a module. If so, the module
-         will be called sch-gpio.
-
 config GPIO_VX855
        tristate "VIA VX855/VX875 GPIO"
        depends on MFD_SUPPORT && PCI
 
          16 bits:      pca9535, pca9539, pca9555, tca6416
 
-         This driver can also be built as a module.  If so, the module
-         will be called pca953x.
-
 config GPIO_PCA953X_IRQ
        bool "Interrupt controller support for PCA953x"
        depends on GPIO_PCA953X=y
          This option enables support for on-chip GPIO found
          on Analog Devices ADP5520 PMICs.
 
-         To compile this driver as a module, choose M here: the module will
-         be called adp5520-gpio.
-
 config GPIO_ADP5588
        tristate "ADP5588 I2C GPIO expander"
        depends on I2C
        help
          This option enables support for 18 GPIOs found
          on Analog Devices ADP5588 GPIO Expanders.
-         To compile this driver as a module, choose M here: the module will be
-         called adp5588-gpio.
 
 config GPIO_ADP5588_IRQ
        bool "Interrupt controller support for ADP5588"
          This enables support for the Philips UCB1400 GPIO pins.
          The UCB1400 is an AC97 audio codec.
 
-         To compile this driver as a module, choose M here: the
-         module will be called ucb1400_gpio.
-
 comment "MODULbus GPIO expanders:"
 
 config GPIO_JANZ_TTL
          This driver provides support for driving the pins in output
          mode only. Input mode is not supported.
 
-config AB8500_GPIO
+config GPIO_AB8500
        bool "ST-Ericsson AB8500 Mixed Signal Circuit gpio functions"
        depends on AB8500_CORE && BROKEN
        help
 
 
 obj-$(CONFIG_GPIOLIB)          += gpiolib.o
 
-obj-$(CONFIG_GPIO_ADP5520)     += adp5520-gpio.o
-obj-$(CONFIG_GPIO_ADP5588)     += adp5588-gpio.o
-obj-$(CONFIG_GPIO_BASIC_MMIO_CORE)     += basic_mmio_gpio.o
-obj-$(CONFIG_GPIO_BASIC_MMIO)  += basic_mmio_gpio.o
+# Device drivers. Generally keep list sorted alphabetically
+obj-$(CONFIG_GPIO_GENERIC)     += gpio-generic.o
+
+obj-$(CONFIG_GPIO_74X164)      += gpio-74x164.o
+obj-$(CONFIG_GPIO_AB8500)      += gpio-ab8500.o
+obj-$(CONFIG_GPIO_ADP5520)     += gpio-adp5520.o
+obj-$(CONFIG_GPIO_ADP5588)     += gpio-adp5588.o
+obj-$(CONFIG_GPIO_BT8XX)       += gpio-bt8xx.o
+obj-$(CONFIG_GPIO_CS5535)      += gpio-cs5535.o
 obj-$(CONFIG_GPIO_EP93XX)      += gpio-ep93xx.o
 obj-$(CONFIG_GPIO_EXYNOS4)     += gpio-exynos4.o
+obj-$(CONFIG_GPIO_IT8761E)     += gpio-it8761e.o
+obj-$(CONFIG_GPIO_JANZ_TTL)    += gpio-janz-ttl.o
+obj-$(CONFIG_GPIO_LANGWELL)    += gpio-langwell.o
+obj-$(CONFIG_GPIO_MAX730X)     += gpio-max730x.o
+obj-$(CONFIG_GPIO_MAX7300)     += gpio-max7300.o
+obj-$(CONFIG_GPIO_MAX7301)     += gpio-max7301.o
+obj-$(CONFIG_GPIO_MAX732X)     += gpio-max732x.o
+obj-$(CONFIG_GPIO_MC33880)     += gpio-mc33880.o
+obj-$(CONFIG_GPIO_MCP23S08)    += gpio-mcp23s08.o
+obj-$(CONFIG_GPIO_ML_IOH)      += gpio-ml-ioh.o
 obj-$(CONFIG_GPIO_MXC)         += gpio-mxc.o
 obj-$(CONFIG_GPIO_MXS)         += gpio-mxs.o
+obj-$(CONFIG_PLAT_NOMADIK)     += gpio-nomadik.o
+obj-$(CONFIG_ARCH_OMAP)                += gpio-omap.o
+obj-$(CONFIG_GPIO_PCA953X)     += gpio-pca953x.o
+obj-$(CONFIG_GPIO_PCF857X)     += gpio-pcf857x.o
+obj-$(CONFIG_GPIO_PCH)         += gpio-pch.o
+obj-$(CONFIG_GPIO_PL061)       += gpio-pl061.o
+obj-$(CONFIG_GPIO_RDC321X)     += gpio-rdc321x.o
+
 obj-$(CONFIG_GPIO_PLAT_SAMSUNG)        += gpio-plat-samsung.o
 obj-$(CONFIG_GPIO_S5PC100)     += gpio-s5pc100.o
 obj-$(CONFIG_GPIO_S5PV210)     += gpio-s5pv210.o
-obj-$(CONFIG_GPIO_LANGWELL)    += langwell_gpio.o
-obj-$(CONFIG_GPIO_MAX730X)     += max730x.o
-obj-$(CONFIG_GPIO_MAX7300)     += max7300.o
-obj-$(CONFIG_GPIO_MAX7301)     += max7301.o
-obj-$(CONFIG_GPIO_MAX732X)     += max732x.o
-obj-$(CONFIG_GPIO_MC33880)     += mc33880.o
-obj-$(CONFIG_GPIO_MCP23S08)    += mcp23s08.o
-obj-$(CONFIG_GPIO_74X164)      += 74x164.o
-obj-$(CONFIG_ARCH_OMAP)         += gpio-omap.o
-obj-$(CONFIG_GPIO_PCA953X)     += pca953x.o
-obj-$(CONFIG_GPIO_PCF857X)     += pcf857x.o
-obj-$(CONFIG_GPIO_PCH)         += pch_gpio.o
-obj-$(CONFIG_GPIO_PL061)       += pl061.o
-obj-$(CONFIG_GPIO_STMPE)       += stmpe-gpio.o
-obj-$(CONFIG_GPIO_TC3589X)     += tc3589x-gpio.o
-obj-$(CONFIG_GPIO_TIMBERDALE)  += timbgpio.o
-obj-$(CONFIG_GPIO_TWL4030)     += twl4030-gpio.o
-obj-$(CONFIG_GPIO_UCB1400)     += ucb1400_gpio.o
-obj-$(CONFIG_GPIO_XILINX)      += xilinx_gpio.o
-obj-$(CONFIG_GPIO_CS5535)      += cs5535-gpio.o
-obj-$(CONFIG_GPIO_BT8XX)       += bt8xxgpio.o
-obj-$(CONFIG_GPIO_IT8761E)     += it8761e_gpio.o
-obj-$(CONFIG_GPIO_VR41XX)      += vr41xx_giu.o
-obj-$(CONFIG_GPIO_WM831X)      += wm831x-gpio.o
-obj-$(CONFIG_GPIO_WM8350)      += wm8350-gpiolib.o
-obj-$(CONFIG_GPIO_WM8994)      += wm8994-gpio.o
-obj-$(CONFIG_GPIO_SCH)         += sch_gpio.o
+
+obj-$(CONFIG_GPIO_SCH)         += gpio-sch.o
+obj-$(CONFIG_GPIO_STMPE)       += gpio-stmpe.o
+obj-$(CONFIG_GPIO_SX150X)      += gpio-sx150x.o
+obj-$(CONFIG_GPIO_TC3589X)     += gpio-tc3589x.o
+obj-$(CONFIG_GPIO_TIMBERDALE)  += gpio-timberdale.o
+obj-$(CONFIG_GPIO_TPS65910)    += gpio-tps65910.o
+obj-$(CONFIG_GPIO_TWL4030)     += gpio-twl4030.o
 obj-$(CONFIG_MACH_U300)                += gpio-u300.o
-obj-$(CONFIG_PLAT_NOMADIK)     += gpio-nomadik.o
-obj-$(CONFIG_GPIO_RDC321X)     += rdc321x-gpio.o
-obj-$(CONFIG_GPIO_JANZ_TTL)    += janz-ttl.o
-obj-$(CONFIG_GPIO_SX150X)      += sx150x.o
-obj-$(CONFIG_GPIO_VX855)       += vx855_gpio.o
-obj-$(CONFIG_GPIO_ML_IOH)      += ml_ioh_gpio.o
-obj-$(CONFIG_AB8500_GPIO)       += ab8500-gpio.o
-obj-$(CONFIG_GPIO_TPS65910)    += tps65910-gpio.o
+obj-$(CONFIG_GPIO_UCB1400)     += gpio-ucb1400.o
+obj-$(CONFIG_GPIO_VR41XX)      += gpio-vr41xx.o
+obj-$(CONFIG_GPIO_VX855)       += gpio-vx855.o
+obj-$(CONFIG_GPIO_WM831X)      += gpio-wm831x.o
+obj-$(CONFIG_GPIO_WM8350)      += gpio-wm8350.o
+obj-$(CONFIG_GPIO_WM8994)      += gpio-wm8994.o
+obj-$(CONFIG_GPIO_XILINX)      += gpio-xilinx.o
 
 /*
- * linux/arch/arm/mach-ep93xx/gpio.c
- *
  * Generic EP93xx GPIO handling
  *
  * Copyright (c) 2008 Ryan Mallon <ryan@bluewatersys.com>
 
-/* linux/arch/arm/mach-exynos4/gpiolib.c
+/*
+ * EXYNOS4 - GPIOlib support
  *
  * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
  *             http://www.samsung.com
  *
- * EXYNOS4 - GPIOlib support
- *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
 
 /*
- * Driver for basic memory-mapped GPIO controllers.
+ * Generic driver for memory-mapped GPIO controllers.
  *
  * Copyright 2008 MontaVista Software, Inc.
  * Copyright 2008,2010 Anton Vorontsov <cbouatmailru@gmail.com>
 }
 EXPORT_SYMBOL_GPL(bgpio_init);
 
-#ifdef CONFIG_GPIO_BASIC_MMIO
+#ifdef CONFIG_GPIO_GENERIC_PLATFORM
 
 static void __iomem *bgpio_map(struct platform_device *pdev,
                               const char *name,
 }
 module_exit(bgpio_platform_exit);
 
-#endif /* CONFIG_GPIO_BASIC_MMIO */
+#endif /* CONFIG_GPIO_GENERIC_PLATFORM */
 
 MODULE_DESCRIPTION("Driver for basic memory-mapped GPIO controllers");
 MODULE_AUTHOR("Anton Vorontsov <cbouatmailru@gmail.com>");
 
 /*
- *  it8761_gpio.c - GPIO interface for IT8761E Super I/O chip
+ *  GPIO interface for IT8761E Super I/O chip
  *
  *  Author: Denis Turischev <denis@compulab.co.il>
  *
 
-/* langwell_gpio.c Moorestown platform Langwell chip GPIO driver
+/*
+ * Moorestown platform Langwell chip GPIO driver
+ *
  * Copyright (c) 2008 - 2009,  Intel Corporation.
  *
  * This program is free software; you can redistribute it and/or modify
 
 /*
- * drivers/gpio/max7300.c
- *
  * Copyright (C) 2009 Wolfram Sang, Pengutronix
  *
  * This program is free software; you can redistribute it and/or modify
 
 /*
- * drivers/gpio/max7301.c
- *
  * Copyright (C) 2006 Juergen Beisert, Pengutronix
  * Copyright (C) 2008 Guennadi Liakhovetski, Pengutronix
  * Copyright (C) 2009 Wolfram Sang, Pengutronix
 
 /**
- * drivers/gpio/max7301.c
- *
  * Copyright (C) 2006 Juergen Beisert, Pengutronix
  * Copyright (C) 2008 Guennadi Liakhovetski, Pengutronix
  * Copyright (C) 2009 Wolfram Sang, Pengutronix
 
 /*
- *  max732x.c - I2C Port Expander with 8/16 I/O
+ *  MAX732x I2C Port Expander with 8/16 I/O
  *
  *  Copyright (C) 2007 Marvell International Ltd.
  *  Copyright (C) 2008 Jack Ren <jack.ren@marvell.com>
 
 /*
- * mc33880.c MC33880 high-side/low-side switch GPIO driver
+ * MC33880 high-side/low-side switch GPIO driver
  * Copyright (c) 2009 Intel Corporation
  *
  * This program is free software; you can redistribute it and/or modify
 
 /*
- * mcp23s08.c - SPI gpio expander driver
+ * MCP23S08 SPI gpio expander driver
  */
 
 #include <linux/kernel.h>
 
 /*
- *  pca953x.c - 4/8/16 bit I/O ports
+ *  PCA953x 4/8/16 bit I/O ports
  *
  *  Copyright (C) 2005 Ben Gardner <bgardner@wabtec.com>
  *  Copyright (C) 2007 Marvell International Ltd.
 
 /*
- * pcf857x - driver for pcf857x, pca857x, and pca967x I2C GPIO expanders
+ * Driver for pcf857x, pca857x, and pca967x I2C GPIO expanders
  *
  * Copyright (C) 2007 David Brownell
  *
 
 /*
- *  linux/drivers/gpio/pl061.c
- *
- *  Copyright (C) 2008, 2009 Provigent Ltd.
+ * Copyright (C) 2008, 2009 Provigent Ltd.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
 
-/* arch/arm/plat-samsung/gpiolib.c
- *
+/*
  * Copyright 2008 Openmoko, Inc.
  * Copyright 2008 Simtec Electronics
  *      Ben Dooks <ben@simtec.co.uk>
 
-/* linux/arch/arm/mach-s5pc100/gpiolib.c
+/*
+ * S5PC100 - GPIOlib support
  *
  * Copyright (c) 2010 Samsung Electronics Co., Ltd.
  *             http://www.samsung.com
  *  Copyright 2009 Samsung Electronics Co
  *  Kyungmin Park <kyungmin.park@samsung.com>
  *
- * S5PC100 - GPIOlib support
- *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
 
-/* linux/arch/arm/mach-s5pv210/gpiolib.c
+/*
+ * S5PV210 - GPIOlib support
  *
  * Copyright (c) 2010 Samsung Electronics Co., Ltd.
  *             http://www.samsung.com/
  *
- * S5PV210 - GPIOlib support
- *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
 
 /*
- *  sch_gpio.c - GPIO interface for Intel Poulsbo SCH
+ * GPIO interface for Intel Poulsbo SCH
  *
  *  Copyright (c) 2010 CompuLab Ltd
  *  Author: Denis Turischev <denis@compulab.co.il>
 
 /*
- * timbgpio.c timberdale FPGA GPIO driver
+ * Timberdale FPGA GPIO driver
  * Copyright (c) 2009 Intel Corporation
  *
  * This program is free software; you can redistribute it and/or modify
 
 /*
- * tps65910-gpio.c  --  TI TPS6591x
+ * TI TPS6591x GPIO driver
  *
  * Copyright 2010 Texas Instruments Inc.
  *
 
 /*
- * twl4030_gpio.c -- access to GPIOs on TWL4030/TPS659x0 chips
+ * Access to GPIOs on TWL4030/TPS659x0 chips
  *
  * Copyright (C) 2006-2007 Texas Instruments, Inc.
  * Copyright (C) 2006 MontaVista Software, Inc.
 
 /*
- *
- * arch/arm/mach-u300/gpio.c
- *
+ * U300 GPIO module.
  *
  * Copyright (C) 2007-2009 ST-Ericsson AB
  * License terms: GNU General Public License (GPL) version 2
- * U300 GPIO module.
  * This can driver either of the two basic GPIO cores
  * available in the U300 platforms:
  * COH 901 335   - Used in DB3150 (U300 1.0) and DB3200 (U330 1.0)
 
 /*
- * wm831x-gpio.c  --  gpiolib support for Wolfson WM831x PMICs
+ * gpiolib support for Wolfson WM831x PMICs
  *
  * Copyright 2009 Wolfson Microelectronics PLC.
  *
 
 /*
- * wm835x-gpiolib.c  --  gpiolib support for Wolfson WM835x PMICs
+ * gpiolib support for Wolfson WM835x PMICs
  *
  * Copyright 2009 Wolfson Microelectronics PLC.
  *
 
 /*
- * wm8994-gpio.c  --  gpiolib support for Wolfson WM8994
+ * gpiolib support for Wolfson WM8994
  *
  * Copyright 2009 Wolfson Microelectronics PLC.
  *