aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-01-07 15:15:36 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2012-01-07 15:15:36 -0500
commitfbce1c234feedb5270468aa4b1770c1cab58a960 (patch)
tree7391d7bcce50eab43c750c4055b056ab1892d6b2 /drivers/gpio
parent7affca3537d74365128e477b40c529d6f2fe86c8 (diff)
parentd0ad5e89256c351ddd40167152c24a88efcb0f6d (diff)
Merge tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux-2.6
Changes queued in gpio/next for the start of the 3.3 merge window * tag 'gpio-for-linus-20120104' of git://git.secretlab.ca/git/linux-2.6: gpio: Add decode of WM8994 GPIO configuration gpio: Convert GPIO drivers to module_platform_driver gpio: Fix typo in comment in Samsung driver gpio: Explicitly index samsung_gpio_cfgs gpio: Add Linus Walleij as gpio co-maintainer of: Add device tree selftests of: create of_phandle_args to simplify return of phandle parsing data gpio/powerpc: Eliminate duplication of of_get_named_gpio_flags() gpio/microblaze: Eliminate duplication of of_get_named_gpio_flags() gpiolib: output basic details and consolidate gpio device drivers pch_gpio: Change company name OKI SEMICONDUCTOR to LAPIS Semiconductor pch_gpio: Support new device LAPIS Semiconductor ML7831 IOH spi/pl022: make the chip deselect handling thread safe spi/pl022: add support for pm_runtime autosuspend spi/pl022: disable the PL022 block when unused spi/pl022: move device disable to workqueue thread spi/pl022: skip default configuration before suspending spi/pl022: fix build warnings spi/pl022: only enable RX interrupts when TX is complete
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/Kconfig11
-rw-r--r--drivers/gpio/gpio-adp5520.c12
-rw-r--r--drivers/gpio/gpio-adp5588.c5
-rw-r--r--drivers/gpio/gpio-bt8xx.c3
-rw-r--r--drivers/gpio/gpio-cs5535.c14
-rw-r--r--drivers/gpio/gpio-da9052.c12
-rw-r--r--drivers/gpio/gpio-generic.c12
-rw-r--r--drivers/gpio/gpio-janz-ttl.c15
-rw-r--r--drivers/gpio/gpio-nomadik.c4
-rw-r--r--drivers/gpio/gpio-pcf857x.c5
-rw-r--r--drivers/gpio/gpio-pch.c7
-rw-r--r--drivers/gpio/gpio-rdc321x.c13
-rw-r--r--drivers/gpio/gpio-samsung.c31
-rw-r--r--drivers/gpio/gpio-sch.c13
-rw-r--r--drivers/gpio/gpio-timberdale.c13
-rw-r--r--drivers/gpio/gpio-ucb1400.c13
-rw-r--r--drivers/gpio/gpio-vr41xx.c13
-rw-r--r--drivers/gpio/gpio-vx855.c12
-rw-r--r--drivers/gpio/gpio-wm8994.c79
-rw-r--r--drivers/gpio/gpio-xilinx.c1
-rw-r--r--drivers/gpio/gpiolib.c6
21 files changed, 128 insertions, 166 deletions
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 8482a23887dc..4e04157a3683 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -387,7 +387,7 @@ config GPIO_LANGWELL
387 Say Y here to support Intel Langwell/Penwell GPIO. 387 Say Y here to support Intel Langwell/Penwell GPIO.
388 388
389config GPIO_PCH 389config GPIO_PCH
390 tristate "Intel EG20T PCH / OKI SEMICONDUCTOR ML7223 IOH GPIO" 390 tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
391 depends on PCI && X86 391 depends on PCI && X86
392 select GENERIC_IRQ_CHIP 392 select GENERIC_IRQ_CHIP
393 help 393 help
@@ -395,11 +395,12 @@ config GPIO_PCH
395 which is an IOH(Input/Output Hub) for x86 embedded processor. 395 which is an IOH(Input/Output Hub) for x86 embedded processor.
396 This driver can access PCH GPIO device. 396 This driver can access PCH GPIO device.
397 397
398 This driver also can be used for OKI SEMICONDUCTOR IOH(Input/ 398 This driver also can be used for LAPIS Semiconductor IOH(Input/
399 Output Hub), ML7223. 399 Output Hub), ML7223 and ML7831.
400 ML7223 IOH is for MP(Media Phone) use. 400 ML7223 IOH is for MP(Media Phone) use.
401 ML7223 is companion chip for Intel Atom E6xx series. 401 ML7831 IOH is for general purpose use.
402 ML7223 is completely compatible for Intel EG20T PCH. 402 ML7223/ML7831 is companion chip for Intel Atom E6xx series.
403 ML7223/ML7831 is completely compatible for Intel EG20T PCH.
403 404
404config GPIO_ML_IOH 405config GPIO_ML_IOH
405 tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support" 406 tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
diff --git a/drivers/gpio/gpio-adp5520.c b/drivers/gpio/gpio-adp5520.c
index 9f2781537001..2f263cc32561 100644
--- a/drivers/gpio/gpio-adp5520.c
+++ b/drivers/gpio/gpio-adp5520.c
@@ -193,17 +193,7 @@ static struct platform_driver adp5520_gpio_driver = {
193 .remove = __devexit_p(adp5520_gpio_remove), 193 .remove = __devexit_p(adp5520_gpio_remove),
194}; 194};
195 195
196static int __init adp5520_gpio_init(void) 196module_platform_driver(adp5520_gpio_driver);
197{
198 return platform_driver_register(&adp5520_gpio_driver);
199}
200module_init(adp5520_gpio_init);
201
202static void __exit adp5520_gpio_exit(void)
203{
204 platform_driver_unregister(&adp5520_gpio_driver);
205}
206module_exit(adp5520_gpio_exit);
207 197
208MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>"); 198MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
209MODULE_DESCRIPTION("GPIO ADP5520 Driver"); 199MODULE_DESCRIPTION("GPIO ADP5520 Driver");
diff --git a/drivers/gpio/gpio-adp5588.c b/drivers/gpio/gpio-adp5588.c
index 3525ad918771..9ad1703d1408 100644
--- a/drivers/gpio/gpio-adp5588.c
+++ b/drivers/gpio/gpio-adp5588.c
@@ -418,9 +418,8 @@ static int __devinit adp5588_gpio_probe(struct i2c_client *client,
418 if (ret) 418 if (ret)
419 goto err_irq; 419 goto err_irq;
420 420
421 dev_info(&client->dev, "gpios %d..%d (IRQ Base %d) on a %s Rev. %d\n", 421 dev_info(&client->dev, "IRQ Base: %d Rev.: %d\n",
422 gc->base, gc->base + gc->ngpio - 1, 422 pdata->irq_base, revid);
423 pdata->irq_base, client->name, revid);
424 423
425 if (pdata->setup) { 424 if (pdata->setup) {
426 ret = pdata->setup(client, gc->base, gc->ngpio, pdata->context); 425 ret = pdata->setup(client, gc->base, gc->ngpio, pdata->context);
diff --git a/drivers/gpio/gpio-bt8xx.c b/drivers/gpio/gpio-bt8xx.c
index ec57936aef62..5ca4098ba092 100644
--- a/drivers/gpio/gpio-bt8xx.c
+++ b/drivers/gpio/gpio-bt8xx.c
@@ -223,9 +223,6 @@ static int bt8xxgpio_probe(struct pci_dev *dev,
223 goto err_release_mem; 223 goto err_release_mem;
224 } 224 }
225 225
226 printk(KERN_INFO "bt8xxgpio: Abusing BT8xx card for GPIOs %d to %d\n",
227 bg->gpio.base, bg->gpio.base + BT8XXGPIO_NR_GPIOS - 1);
228
229 return 0; 226 return 0;
230 227
231err_release_mem: 228err_release_mem:
diff --git a/drivers/gpio/gpio-cs5535.c b/drivers/gpio/gpio-cs5535.c
index 6e16cba56ad2..19eda1bbe343 100644
--- a/drivers/gpio/gpio-cs5535.c
+++ b/drivers/gpio/gpio-cs5535.c
@@ -347,7 +347,6 @@ static int __devinit cs5535_gpio_probe(struct platform_device *pdev)
347 if (err) 347 if (err)
348 goto release_region; 348 goto release_region;
349 349
350 dev_info(&pdev->dev, "GPIO support successfully loaded.\n");
351 return 0; 350 return 0;
352 351
353release_region: 352release_region:
@@ -382,18 +381,7 @@ static struct platform_driver cs5535_gpio_driver = {
382 .remove = __devexit_p(cs5535_gpio_remove), 381 .remove = __devexit_p(cs5535_gpio_remove),
383}; 382};
384 383
385static int __init cs5535_gpio_init(void) 384module_platform_driver(cs5535_gpio_driver);
386{
387 return platform_driver_register(&cs5535_gpio_driver);
388}
389
390static void __exit cs5535_gpio_exit(void)
391{
392 platform_driver_unregister(&cs5535_gpio_driver);
393}
394
395module_init(cs5535_gpio_init);
396module_exit(cs5535_gpio_exit);
397 385
398MODULE_AUTHOR("Andres Salomon <dilinger@queued.net>"); 386MODULE_AUTHOR("Andres Salomon <dilinger@queued.net>");
399MODULE_DESCRIPTION("AMD CS5535/CS5536 GPIO driver"); 387MODULE_DESCRIPTION("AMD CS5535/CS5536 GPIO driver");
diff --git a/drivers/gpio/gpio-da9052.c b/drivers/gpio/gpio-da9052.c
index f8ce29ef9f88..56dd047d5844 100644
--- a/drivers/gpio/gpio-da9052.c
+++ b/drivers/gpio/gpio-da9052.c
@@ -254,17 +254,7 @@ static struct platform_driver da9052_gpio_driver = {
254 }, 254 },
255}; 255};
256 256
257static int __init da9052_gpio_init(void) 257module_platform_driver(da9052_gpio_driver);
258{
259 return platform_driver_register(&da9052_gpio_driver);
260}
261module_init(da9052_gpio_init);
262
263static void __exit da9052_gpio_exit(void)
264{
265 return platform_driver_unregister(&da9052_gpio_driver);
266}
267module_exit(da9052_gpio_exit);
268 258
269MODULE_AUTHOR("David Dajun Chen <dchen@diasemi.com>"); 259MODULE_AUTHOR("David Dajun Chen <dchen@diasemi.com>");
270MODULE_DESCRIPTION("DA9052 GPIO Device Driver"); 260MODULE_DESCRIPTION("DA9052 GPIO Device Driver");
diff --git a/drivers/gpio/gpio-generic.c b/drivers/gpio/gpio-generic.c
index 4e24436b0f82..e38dd0c31973 100644
--- a/drivers/gpio/gpio-generic.c
+++ b/drivers/gpio/gpio-generic.c
@@ -524,17 +524,7 @@ static struct platform_driver bgpio_driver = {
524 .remove = __devexit_p(bgpio_pdev_remove), 524 .remove = __devexit_p(bgpio_pdev_remove),
525}; 525};
526 526
527static int __init bgpio_platform_init(void) 527module_platform_driver(bgpio_driver);
528{
529 return platform_driver_register(&bgpio_driver);
530}
531module_init(bgpio_platform_init);
532
533static void __exit bgpio_platform_exit(void)
534{
535 platform_driver_unregister(&bgpio_driver);
536}
537module_exit(bgpio_platform_exit);
538 528
539#endif /* CONFIG_GPIO_GENERIC_PLATFORM */ 529#endif /* CONFIG_GPIO_GENERIC_PLATFORM */
540 530
diff --git a/drivers/gpio/gpio-janz-ttl.c b/drivers/gpio/gpio-janz-ttl.c
index 813ac077e5d7..f2f000dd70b3 100644
--- a/drivers/gpio/gpio-janz-ttl.c
+++ b/drivers/gpio/gpio-janz-ttl.c
@@ -201,8 +201,6 @@ static int __devinit ttl_probe(struct platform_device *pdev)
201 goto out_iounmap_regs; 201 goto out_iounmap_regs;
202 } 202 }
203 203
204 dev_info(&pdev->dev, "module %d: registered GPIO device\n",
205 pdata->modno);
206 return 0; 204 return 0;
207 205
208out_iounmap_regs: 206out_iounmap_regs:
@@ -239,20 +237,9 @@ static struct platform_driver ttl_driver = {
239 .remove = __devexit_p(ttl_remove), 237 .remove = __devexit_p(ttl_remove),
240}; 238};
241 239
242static int __init ttl_init(void) 240module_platform_driver(ttl_driver);
243{
244 return platform_driver_register(&ttl_driver);
245}
246
247static void __exit ttl_exit(void)
248{
249 platform_driver_unregister(&ttl_driver);
250}
251 241
252MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>"); 242MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>");
253MODULE_DESCRIPTION("Janz MODULbus VMOD-TTL Driver"); 243MODULE_DESCRIPTION("Janz MODULbus VMOD-TTL Driver");
254MODULE_LICENSE("GPL"); 244MODULE_LICENSE("GPL");
255MODULE_ALIAS("platform:janz-ttl"); 245MODULE_ALIAS("platform:janz-ttl");
256
257module_init(ttl_init);
258module_exit(ttl_exit);
diff --git a/drivers/gpio/gpio-nomadik.c b/drivers/gpio/gpio-nomadik.c
index 1ebedfb6d46d..839624f9fe6a 100644
--- a/drivers/gpio/gpio-nomadik.c
+++ b/drivers/gpio/gpio-nomadik.c
@@ -1150,8 +1150,8 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
1150 1150
1151 nmk_gpio_init_irq(nmk_chip); 1151 nmk_gpio_init_irq(nmk_chip);
1152 1152
1153 dev_info(&dev->dev, "Bits %i-%i at address %p\n", 1153 dev_info(&dev->dev, "at address %p\n",
1154 nmk_chip->chip.base, nmk_chip->chip.base+31, nmk_chip->addr); 1154 nmk_chip->addr);
1155 return 0; 1155 return 0;
1156 1156
1157out_free: 1157out_free:
diff --git a/drivers/gpio/gpio-pcf857x.c b/drivers/gpio/gpio-pcf857x.c
index 3e1f1ecd07be..2d1de9e7e9bd 100644
--- a/drivers/gpio/gpio-pcf857x.c
+++ b/drivers/gpio/gpio-pcf857x.c
@@ -290,10 +290,7 @@ static int pcf857x_probe(struct i2c_client *client,
290 * methods can't be called from sleeping contexts. 290 * methods can't be called from sleeping contexts.
291 */ 291 */
292 292
293 dev_info(&client->dev, "gpios %d..%d on a %s%s\n", 293 dev_info(&client->dev, "%s\n",
294 gpio->chip.base,
295 gpio->chip.base + gpio->chip.ngpio - 1,
296 client->name,
297 client->irq ? " (irq ignored)" : ""); 294 client->irq ? " (irq ignored)" : "");
298 295
299 /* Let platform code set up the GPIOs and their users. 296 /* Let platform code set up the GPIOs and their users.
diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c
index a6008e123d04..f0603297f829 100644
--- a/drivers/gpio/gpio-pch.c
+++ b/drivers/gpio/gpio-pch.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (C) 2010 OKI SEMICONDUCTOR Co., LTD. 2 * Copyright (C) 2011 LAPIS Semiconductor Co., Ltd.
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by 5 * it under the terms of the GNU General Public License as published by
@@ -49,8 +49,8 @@ struct pch_regs {
49 49
50enum pch_type_t { 50enum pch_type_t {
51 INTEL_EG20T_PCH, 51 INTEL_EG20T_PCH,
52 OKISEMI_ML7223m_IOH, /* OKISEMI ML7223 IOH PCIe Bus-m */ 52 OKISEMI_ML7223m_IOH, /* LAPIS Semiconductor ML7223 IOH PCIe Bus-m */
53 OKISEMI_ML7223n_IOH /* OKISEMI ML7223 IOH PCIe Bus-n */ 53 OKISEMI_ML7223n_IOH /* LAPIS Semiconductor ML7223 IOH PCIe Bus-n */
54}; 54};
55 55
56/* Specifies number of GPIO PINS */ 56/* Specifies number of GPIO PINS */
@@ -524,6 +524,7 @@ static DEFINE_PCI_DEVICE_TABLE(pch_gpio_pcidev_id) = {
524 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) }, 524 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) },
525 { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) }, 525 { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) },
526 { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8043) }, 526 { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8043) },
527 { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8803) },
527 { 0, } 528 { 0, }
528}; 529};
529MODULE_DEVICE_TABLE(pci, pch_gpio_pcidev_id); 530MODULE_DEVICE_TABLE(pci, pch_gpio_pcidev_id);
diff --git a/drivers/gpio/gpio-rdc321x.c b/drivers/gpio/gpio-rdc321x.c
index 2762698e0204..e97016af6443 100644
--- a/drivers/gpio/gpio-rdc321x.c
+++ b/drivers/gpio/gpio-rdc321x.c
@@ -227,18 +227,7 @@ static struct platform_driver rdc321x_gpio_driver = {
227 .remove = __devexit_p(rdc321x_gpio_remove), 227 .remove = __devexit_p(rdc321x_gpio_remove),
228}; 228};
229 229
230static int __init rdc321x_gpio_init(void) 230module_platform_driver(rdc321x_gpio_driver);
231{
232 return platform_driver_register(&rdc321x_gpio_driver);
233}
234
235static void __exit rdc321x_gpio_exit(void)
236{
237 platform_driver_unregister(&rdc321x_gpio_driver);
238}
239
240module_init(rdc321x_gpio_init);
241module_exit(rdc321x_gpio_exit);
242 231
243MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>"); 232MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
244MODULE_DESCRIPTION("RDC321x GPIO driver"); 233MODULE_DESCRIPTION("RDC321x GPIO driver");
diff --git a/drivers/gpio/gpio-samsung.c b/drivers/gpio/gpio-samsung.c
index dcbe4541fe49..ab098ba9f1dd 100644
--- a/drivers/gpio/gpio-samsung.c
+++ b/drivers/gpio/gpio-samsung.c
@@ -230,7 +230,7 @@ static int samsung_gpio_setcfg_2bit(struct samsung_gpio_chip *chip,
230 * @chip: The gpio chip that is being configured. 230 * @chip: The gpio chip that is being configured.
231 * @off: The offset for the GPIO being configured. 231 * @off: The offset for the GPIO being configured.
232 * 232 *
233 * The reverse of samsung_gpio_setcfg_2bit(). Will return a value whicg 233 * The reverse of samsung_gpio_setcfg_2bit(). Will return a value which
234 * could be directly passed back to samsung_gpio_setcfg_2bit(), from the 234 * could be directly passed back to samsung_gpio_setcfg_2bit(), from the
235 * S3C_GPIO_SPECIAL() macro. 235 * S3C_GPIO_SPECIAL() macro.
236 */ 236 */
@@ -467,33 +467,42 @@ static struct samsung_gpio_cfg s5p64x0_gpio_cfg_rbank = {
467#endif 467#endif
468 468
469static struct samsung_gpio_cfg samsung_gpio_cfgs[] = { 469static struct samsung_gpio_cfg samsung_gpio_cfgs[] = {
470 { 470 [0] = {
471 .cfg_eint = 0x0, 471 .cfg_eint = 0x0,
472 }, { 472 },
473 [1] = {
473 .cfg_eint = 0x3, 474 .cfg_eint = 0x3,
474 }, { 475 },
476 [2] = {
475 .cfg_eint = 0x7, 477 .cfg_eint = 0x7,
476 }, { 478 },
479 [3] = {
477 .cfg_eint = 0xF, 480 .cfg_eint = 0xF,
478 }, { 481 },
482 [4] = {
479 .cfg_eint = 0x0, 483 .cfg_eint = 0x0,
480 .set_config = samsung_gpio_setcfg_2bit, 484 .set_config = samsung_gpio_setcfg_2bit,
481 .get_config = samsung_gpio_getcfg_2bit, 485 .get_config = samsung_gpio_getcfg_2bit,
482 }, { 486 },
487 [5] = {
483 .cfg_eint = 0x2, 488 .cfg_eint = 0x2,
484 .set_config = samsung_gpio_setcfg_2bit, 489 .set_config = samsung_gpio_setcfg_2bit,
485 .get_config = samsung_gpio_getcfg_2bit, 490 .get_config = samsung_gpio_getcfg_2bit,
486 }, { 491 },
492 [6] = {
487 .cfg_eint = 0x3, 493 .cfg_eint = 0x3,
488 .set_config = samsung_gpio_setcfg_2bit, 494 .set_config = samsung_gpio_setcfg_2bit,
489 .get_config = samsung_gpio_getcfg_2bit, 495 .get_config = samsung_gpio_getcfg_2bit,
490 }, { 496 },
497 [7] = {
491 .set_config = samsung_gpio_setcfg_2bit, 498 .set_config = samsung_gpio_setcfg_2bit,
492 .get_config = samsung_gpio_getcfg_2bit, 499 .get_config = samsung_gpio_getcfg_2bit,
493 }, { 500 },
501 [8] = {
494 .set_pull = exynos4_gpio_setpull, 502 .set_pull = exynos4_gpio_setpull,
495 .get_pull = exynos4_gpio_getpull, 503 .get_pull = exynos4_gpio_getpull,
496 }, { 504 },
505 [9] = {
497 .cfg_eint = 0x3, 506 .cfg_eint = 0x3,
498 .set_pull = exynos4_gpio_setpull, 507 .set_pull = exynos4_gpio_setpull,
499 .get_pull = exynos4_gpio_getpull, 508 .get_pull = exynos4_gpio_getpull,
diff --git a/drivers/gpio/gpio-sch.c b/drivers/gpio/gpio-sch.c
index 163515845494..8cadf4d683a8 100644
--- a/drivers/gpio/gpio-sch.c
+++ b/drivers/gpio/gpio-sch.c
@@ -297,18 +297,7 @@ static struct platform_driver sch_gpio_driver = {
297 .remove = __devexit_p(sch_gpio_remove), 297 .remove = __devexit_p(sch_gpio_remove),
298}; 298};
299 299
300static int __init sch_gpio_init(void) 300module_platform_driver(sch_gpio_driver);
301{
302 return platform_driver_register(&sch_gpio_driver);
303}
304
305static void __exit sch_gpio_exit(void)
306{
307 platform_driver_unregister(&sch_gpio_driver);
308}
309
310module_init(sch_gpio_init);
311module_exit(sch_gpio_exit);
312 301
313MODULE_AUTHOR("Denis Turischev <denis@compulab.co.il>"); 302MODULE_AUTHOR("Denis Turischev <denis@compulab.co.il>");
314MODULE_DESCRIPTION("GPIO interface for Intel Poulsbo SCH"); 303MODULE_DESCRIPTION("GPIO interface for Intel Poulsbo SCH");
diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c
index c593bd46bfb6..031c6adf5b65 100644
--- a/drivers/gpio/gpio-timberdale.c
+++ b/drivers/gpio/gpio-timberdale.c
@@ -359,18 +359,7 @@ static struct platform_driver timbgpio_platform_driver = {
359 359
360/*--------------------------------------------------------------------------*/ 360/*--------------------------------------------------------------------------*/
361 361
362static int __init timbgpio_init(void) 362module_platform_driver(timbgpio_platform_driver);
363{
364 return platform_driver_register(&timbgpio_platform_driver);
365}
366
367static void __exit timbgpio_exit(void)
368{
369 platform_driver_unregister(&timbgpio_platform_driver);
370}
371
372module_init(timbgpio_init);
373module_exit(timbgpio_exit);
374 363
375MODULE_DESCRIPTION("Timberdale GPIO driver"); 364MODULE_DESCRIPTION("Timberdale GPIO driver");
376MODULE_LICENSE("GPL v2"); 365MODULE_LICENSE("GPL v2");
diff --git a/drivers/gpio/gpio-ucb1400.c b/drivers/gpio/gpio-ucb1400.c
index 50e6bd1392ce..26405efe0f9f 100644
--- a/drivers/gpio/gpio-ucb1400.c
+++ b/drivers/gpio/gpio-ucb1400.c
@@ -103,23 +103,12 @@ static struct platform_driver ucb1400_gpio_driver = {
103 }, 103 },
104}; 104};
105 105
106static int __init ucb1400_gpio_init(void)
107{
108 return platform_driver_register(&ucb1400_gpio_driver);
109}
110
111static void __exit ucb1400_gpio_exit(void)
112{
113 platform_driver_unregister(&ucb1400_gpio_driver);
114}
115
116void __init ucb1400_gpio_set_data(struct ucb1400_gpio_data *data) 106void __init ucb1400_gpio_set_data(struct ucb1400_gpio_data *data)
117{ 107{
118 ucbdata = data; 108 ucbdata = data;
119} 109}
120 110
121module_init(ucb1400_gpio_init); 111module_platform_driver(ucb1400_gpio_driver);
122module_exit(ucb1400_gpio_exit);
123 112
124MODULE_DESCRIPTION("Philips UCB1400 GPIO driver"); 113MODULE_DESCRIPTION("Philips UCB1400 GPIO driver");
125MODULE_LICENSE("GPL"); 114MODULE_LICENSE("GPL");
diff --git a/drivers/gpio/gpio-vr41xx.c b/drivers/gpio/gpio-vr41xx.c
index 98723cb9ac68..82d5c20ad3cb 100644
--- a/drivers/gpio/gpio-vr41xx.c
+++ b/drivers/gpio/gpio-vr41xx.c
@@ -571,15 +571,4 @@ static struct platform_driver giu_device_driver = {
571 }, 571 },
572}; 572};
573 573
574static int __init vr41xx_giu_init(void) 574module_platform_driver(giu_device_driver);
575{
576 return platform_driver_register(&giu_device_driver);
577}
578
579static void __exit vr41xx_giu_exit(void)
580{
581 platform_driver_unregister(&giu_device_driver);
582}
583
584module_init(vr41xx_giu_init);
585module_exit(vr41xx_giu_exit);
diff --git a/drivers/gpio/gpio-vx855.c b/drivers/gpio/gpio-vx855.c
index ef5aabd8b8b7..76ebfe5ff702 100644
--- a/drivers/gpio/gpio-vx855.c
+++ b/drivers/gpio/gpio-vx855.c
@@ -315,17 +315,7 @@ static struct platform_driver vx855gpio_driver = {
315 .remove = __devexit_p(vx855gpio_remove), 315 .remove = __devexit_p(vx855gpio_remove),
316}; 316};
317 317
318static int vx855gpio_init(void) 318module_platform_driver(vx855gpio_driver);
319{
320 return platform_driver_register(&vx855gpio_driver);
321}
322module_init(vx855gpio_init);
323
324static void vx855gpio_exit(void)
325{
326 platform_driver_unregister(&vx855gpio_driver);
327}
328module_exit(vx855gpio_exit);
329 319
330MODULE_LICENSE("GPL"); 320MODULE_LICENSE("GPL");
331MODULE_AUTHOR("Harald Welte <HaraldWelte@viatech.com>"); 321MODULE_AUTHOR("Harald Welte <HaraldWelte@viatech.com>");
diff --git a/drivers/gpio/gpio-wm8994.c b/drivers/gpio/gpio-wm8994.c
index 96198f3fab73..92ea5350dfe9 100644
--- a/drivers/gpio/gpio-wm8994.c
+++ b/drivers/gpio/gpio-wm8994.c
@@ -117,6 +117,60 @@ static int wm8994_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
117 117
118 118
119#ifdef CONFIG_DEBUG_FS 119#ifdef CONFIG_DEBUG_FS
120static const char *wm8994_gpio_fn(u16 fn)
121{
122 switch (fn) {
123 case WM8994_GP_FN_PIN_SPECIFIC:
124 return "pin-specific";
125 case WM8994_GP_FN_GPIO:
126 return "GPIO";
127 case WM8994_GP_FN_SDOUT:
128 return "SDOUT";
129 case WM8994_GP_FN_IRQ:
130 return "IRQ";
131 case WM8994_GP_FN_TEMPERATURE:
132 return "Temperature";
133 case WM8994_GP_FN_MICBIAS1_DET:
134 return "MICBIAS1 detect";
135 case WM8994_GP_FN_MICBIAS1_SHORT:
136 return "MICBIAS1 short";
137 case WM8994_GP_FN_MICBIAS2_DET:
138 return "MICBIAS2 detect";
139 case WM8994_GP_FN_MICBIAS2_SHORT:
140 return "MICBIAS2 short";
141 case WM8994_GP_FN_FLL1_LOCK:
142 return "FLL1 lock";
143 case WM8994_GP_FN_FLL2_LOCK:
144 return "FLL2 lock";
145 case WM8994_GP_FN_SRC1_LOCK:
146 return "SRC1 lock";
147 case WM8994_GP_FN_SRC2_LOCK:
148 return "SRC2 lock";
149 case WM8994_GP_FN_DRC1_ACT:
150 return "DRC1 activity";
151 case WM8994_GP_FN_DRC2_ACT:
152 return "DRC2 activity";
153 case WM8994_GP_FN_DRC3_ACT:
154 return "DRC3 activity";
155 case WM8994_GP_FN_WSEQ_STATUS:
156 return "Write sequencer";
157 case WM8994_GP_FN_FIFO_ERROR:
158 return "FIFO error";
159 case WM8994_GP_FN_OPCLK:
160 return "OPCLK";
161 case WM8994_GP_FN_THW:
162 return "Thermal warning";
163 case WM8994_GP_FN_DCS_DONE:
164 return "DC servo";
165 case WM8994_GP_FN_FLL1_OUT:
166 return "FLL1 output";
167 case WM8994_GP_FN_FLL2_OUT:
168 return "FLL1 output";
169 default:
170 return "Unknown";
171 }
172}
173
120static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) 174static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
121{ 175{
122 struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip); 176 struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
@@ -148,8 +202,29 @@ static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
148 continue; 202 continue;
149 } 203 }
150 204
151 /* No decode yet; note that GPIO2 is special */ 205 if (reg & WM8994_GPN_DIR)
152 seq_printf(s, "(%x)\n", reg); 206 seq_printf(s, "in ");
207 else
208 seq_printf(s, "out ");
209
210 if (reg & WM8994_GPN_PU)
211 seq_printf(s, "pull up ");
212
213 if (reg & WM8994_GPN_PD)
214 seq_printf(s, "pull down ");
215
216 if (reg & WM8994_GPN_POL)
217 seq_printf(s, "inverted ");
218 else
219 seq_printf(s, "noninverted ");
220
221 if (reg & WM8994_GPN_OP_CFG)
222 seq_printf(s, "open drain ");
223 else
224 seq_printf(s, "CMOS ");
225
226 seq_printf(s, "%s (%x)\n",
227 wm8994_gpio_fn(reg & WM8994_GPN_FN_MASK), reg);
153 } 228 }
154} 229}
155#else 230#else
diff --git a/drivers/gpio/gpio-xilinx.c b/drivers/gpio/gpio-xilinx.c
index 0ce6ac9898b1..79b0fe8a7253 100644
--- a/drivers/gpio/gpio-xilinx.c
+++ b/drivers/gpio/gpio-xilinx.c
@@ -206,7 +206,6 @@ static int __devinit xgpio_of_probe(struct device_node *np)
206 np->full_name, status); 206 np->full_name, status);
207 return status; 207 return status;
208 } 208 }
209 pr_info("XGpio: %s: registered\n", np->full_name);
210 return 0; 209 return 0;
211} 210}
212 211
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index a971e3d043ba..17fdf4b6af93 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -114,7 +114,7 @@ static int gpio_ensure_requested(struct gpio_desc *desc, unsigned offset)
114} 114}
115 115
116/* caller holds gpio_lock *OR* gpio is marked as requested */ 116/* caller holds gpio_lock *OR* gpio is marked as requested */
117static inline struct gpio_chip *gpio_to_chip(unsigned gpio) 117struct gpio_chip *gpio_to_chip(unsigned gpio)
118{ 118{
119 return gpio_desc[gpio].chip; 119 return gpio_desc[gpio].chip;
120} 120}
@@ -1089,6 +1089,10 @@ unlock:
1089 if (status) 1089 if (status)
1090 goto fail; 1090 goto fail;
1091 1091
1092 pr_info("gpiochip_add: registered GPIOs %d to %d on device: %s\n",
1093 chip->base, chip->base + chip->ngpio - 1,
1094 chip->label ? : "generic");
1095
1092 return 0; 1096 return 0;
1093fail: 1097fail:
1094 /* failures here can mean systems won't boot... */ 1098 /* failures here can mean systems won't boot... */