mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
Changes queued in gpio/next for the start of the 3.3 merge window
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJPBSJSAAoJEEFnBt12D9kBDmIP/R6PWxg+NrJaGDmxRWBBkOch iI4Et7GT3Sk5hYqPz0kehiSz1F4bqpYK3JmdfqotJIhQCM2znXM+BaDLzgFnMsRf g4t70PIZQMpk3pj4gtIkMpZCkRdA9VFriIf1cEdHcLiRdNVsXlTE6CcQT4fbE1P/ JTAGBrVDwbchuoPsf7Mbu8SYT+cQdWLKpgzC4fAzI++QoYyYBtfvuCHTE4VvasNS jMDOfT+u0Gwp6LW34v0gKk7MXEQzeq07r1VZxMyuaWbRQoiLr5d1fy97+Fh5+4dU Rb9C6zGIoBzRdiJLlfNYrls/FueDHwPyIwXuapMp5QbaGN5fkhVpIVIhYICOLdHW IXH2V3saK1s6QbD7nErNT2lCWZQSCUKq/PR9W40dj3PYAI0oxbRBSoPdfGuW1Bl7 fYqClUza1Bln8bEmmsvAOnIDdfs6zpkWmfouwx4AGaHTfzIAg4VRdoxdUpS8h+/d sNEYi99IuYfl3KWCwQbWJMgCOvoBdOGZSCsTrXnjLf1HJCsQOt/Md69Ff6DLn1VR gDp0EeqgDH5oXJmQTW1WjXaJJair2j8pY8mlmGxl1AqA4aY8C3dxIfHxlBPzdxii I6KTPaIUSXZaOo6e7XDjjjTzabL4q0aQGT5ahpKj928Rnx00QZNXoTy4FmYkL+0k j7QZfM/p6+vfxekKUR17 =9ugo -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
fbce1c234f
37 changed files with 530 additions and 402 deletions
|
|
@ -387,7 +387,7 @@ config GPIO_LANGWELL
|
|||
Say Y here to support Intel Langwell/Penwell GPIO.
|
||||
|
||||
config GPIO_PCH
|
||||
tristate "Intel EG20T PCH / OKI SEMICONDUCTOR ML7223 IOH GPIO"
|
||||
tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
|
||||
depends on PCI && X86
|
||||
select GENERIC_IRQ_CHIP
|
||||
help
|
||||
|
|
@ -395,11 +395,12 @@ config GPIO_PCH
|
|||
which is an IOH(Input/Output Hub) for x86 embedded processor.
|
||||
This driver can access PCH GPIO device.
|
||||
|
||||
This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
|
||||
Output Hub), ML7223.
|
||||
This driver also can be used for LAPIS Semiconductor IOH(Input/
|
||||
Output Hub), ML7223 and ML7831.
|
||||
ML7223 IOH is for MP(Media Phone) use.
|
||||
ML7223 is companion chip for Intel Atom E6xx series.
|
||||
ML7223 is completely compatible for Intel EG20T PCH.
|
||||
ML7831 IOH is for general purpose use.
|
||||
ML7223/ML7831 is companion chip for Intel Atom E6xx series.
|
||||
ML7223/ML7831 is completely compatible for Intel EG20T PCH.
|
||||
|
||||
config GPIO_ML_IOH
|
||||
tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
|
||||
|
|
|
|||
|
|
@ -193,17 +193,7 @@ static struct platform_driver adp5520_gpio_driver = {
|
|||
.remove = __devexit_p(adp5520_gpio_remove),
|
||||
};
|
||||
|
||||
static int __init adp5520_gpio_init(void)
|
||||
{
|
||||
return platform_driver_register(&adp5520_gpio_driver);
|
||||
}
|
||||
module_init(adp5520_gpio_init);
|
||||
|
||||
static void __exit adp5520_gpio_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&adp5520_gpio_driver);
|
||||
}
|
||||
module_exit(adp5520_gpio_exit);
|
||||
module_platform_driver(adp5520_gpio_driver);
|
||||
|
||||
MODULE_AUTHOR("Michael Hennerich <[email protected]>");
|
||||
MODULE_DESCRIPTION("GPIO ADP5520 Driver");
|
||||
|
|
|
|||
|
|
@ -418,9 +418,8 @@ static int __devinit adp5588_gpio_probe(struct i2c_client *client,
|
|||
if (ret)
|
||||
goto err_irq;
|
||||
|
||||
dev_info(&client->dev, "gpios %d..%d (IRQ Base %d) on a %s Rev. %d\n",
|
||||
gc->base, gc->base + gc->ngpio - 1,
|
||||
pdata->irq_base, client->name, revid);
|
||||
dev_info(&client->dev, "IRQ Base: %d Rev.: %d\n",
|
||||
pdata->irq_base, revid);
|
||||
|
||||
if (pdata->setup) {
|
||||
ret = pdata->setup(client, gc->base, gc->ngpio, pdata->context);
|
||||
|
|
|
|||
|
|
@ -223,9 +223,6 @@ static int bt8xxgpio_probe(struct pci_dev *dev,
|
|||
goto err_release_mem;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "bt8xxgpio: Abusing BT8xx card for GPIOs %d to %d\n",
|
||||
bg->gpio.base, bg->gpio.base + BT8XXGPIO_NR_GPIOS - 1);
|
||||
|
||||
return 0;
|
||||
|
||||
err_release_mem:
|
||||
|
|
|
|||
|
|
@ -347,7 +347,6 @@ static int __devinit cs5535_gpio_probe(struct platform_device *pdev)
|
|||
if (err)
|
||||
goto release_region;
|
||||
|
||||
dev_info(&pdev->dev, "GPIO support successfully loaded.\n");
|
||||
return 0;
|
||||
|
||||
release_region:
|
||||
|
|
@ -382,18 +381,7 @@ static struct platform_driver cs5535_gpio_driver = {
|
|||
.remove = __devexit_p(cs5535_gpio_remove),
|
||||
};
|
||||
|
||||
static int __init cs5535_gpio_init(void)
|
||||
{
|
||||
return platform_driver_register(&cs5535_gpio_driver);
|
||||
}
|
||||
|
||||
static void __exit cs5535_gpio_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&cs5535_gpio_driver);
|
||||
}
|
||||
|
||||
module_init(cs5535_gpio_init);
|
||||
module_exit(cs5535_gpio_exit);
|
||||
module_platform_driver(cs5535_gpio_driver);
|
||||
|
||||
MODULE_AUTHOR("Andres Salomon <[email protected]>");
|
||||
MODULE_DESCRIPTION("AMD CS5535/CS5536 GPIO driver");
|
||||
|
|
|
|||
|
|
@ -254,17 +254,7 @@ static struct platform_driver da9052_gpio_driver = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __init da9052_gpio_init(void)
|
||||
{
|
||||
return platform_driver_register(&da9052_gpio_driver);
|
||||
}
|
||||
module_init(da9052_gpio_init);
|
||||
|
||||
static void __exit da9052_gpio_exit(void)
|
||||
{
|
||||
return platform_driver_unregister(&da9052_gpio_driver);
|
||||
}
|
||||
module_exit(da9052_gpio_exit);
|
||||
module_platform_driver(da9052_gpio_driver);
|
||||
|
||||
MODULE_AUTHOR("David Dajun Chen <[email protected]>");
|
||||
MODULE_DESCRIPTION("DA9052 GPIO Device Driver");
|
||||
|
|
|
|||
|
|
@ -524,17 +524,7 @@ static struct platform_driver bgpio_driver = {
|
|||
.remove = __devexit_p(bgpio_pdev_remove),
|
||||
};
|
||||
|
||||
static int __init bgpio_platform_init(void)
|
||||
{
|
||||
return platform_driver_register(&bgpio_driver);
|
||||
}
|
||||
module_init(bgpio_platform_init);
|
||||
|
||||
static void __exit bgpio_platform_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&bgpio_driver);
|
||||
}
|
||||
module_exit(bgpio_platform_exit);
|
||||
module_platform_driver(bgpio_driver);
|
||||
|
||||
#endif /* CONFIG_GPIO_GENERIC_PLATFORM */
|
||||
|
||||
|
|
|
|||
|
|
@ -201,8 +201,6 @@ static int __devinit ttl_probe(struct platform_device *pdev)
|
|||
goto out_iounmap_regs;
|
||||
}
|
||||
|
||||
dev_info(&pdev->dev, "module %d: registered GPIO device\n",
|
||||
pdata->modno);
|
||||
return 0;
|
||||
|
||||
out_iounmap_regs:
|
||||
|
|
@ -239,20 +237,9 @@ static struct platform_driver ttl_driver = {
|
|||
.remove = __devexit_p(ttl_remove),
|
||||
};
|
||||
|
||||
static int __init ttl_init(void)
|
||||
{
|
||||
return platform_driver_register(&ttl_driver);
|
||||
}
|
||||
|
||||
static void __exit ttl_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&ttl_driver);
|
||||
}
|
||||
module_platform_driver(ttl_driver);
|
||||
|
||||
MODULE_AUTHOR("Ira W. Snyder <[email protected]>");
|
||||
MODULE_DESCRIPTION("Janz MODULbus VMOD-TTL Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS("platform:janz-ttl");
|
||||
|
||||
module_init(ttl_init);
|
||||
module_exit(ttl_exit);
|
||||
|
|
|
|||
|
|
@ -1150,8 +1150,8 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
|
|||
|
||||
nmk_gpio_init_irq(nmk_chip);
|
||||
|
||||
dev_info(&dev->dev, "Bits %i-%i at address %p\n",
|
||||
nmk_chip->chip.base, nmk_chip->chip.base+31, nmk_chip->addr);
|
||||
dev_info(&dev->dev, "at address %p\n",
|
||||
nmk_chip->addr);
|
||||
return 0;
|
||||
|
||||
out_free:
|
||||
|
|
|
|||
|
|
@ -290,10 +290,7 @@ static int pcf857x_probe(struct i2c_client *client,
|
|||
* methods can't be called from sleeping contexts.
|
||||
*/
|
||||
|
||||
dev_info(&client->dev, "gpios %d..%d on a %s%s\n",
|
||||
gpio->chip.base,
|
||||
gpio->chip.base + gpio->chip.ngpio - 1,
|
||||
client->name,
|
||||
dev_info(&client->dev, "%s\n",
|
||||
client->irq ? " (irq ignored)" : "");
|
||||
|
||||
/* Let platform code set up the GPIOs and their users.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2010 OKI SEMICONDUCTOR Co., LTD.
|
||||
* Copyright (C) 2011 LAPIS Semiconductor Co., Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -49,8 +49,8 @@ struct pch_regs {
|
|||
|
||||
enum pch_type_t {
|
||||
INTEL_EG20T_PCH,
|
||||
OKISEMI_ML7223m_IOH, /* OKISEMI ML7223 IOH PCIe Bus-m */
|
||||
OKISEMI_ML7223n_IOH /* OKISEMI ML7223 IOH PCIe Bus-n */
|
||||
OKISEMI_ML7223m_IOH, /* LAPIS Semiconductor ML7223 IOH PCIe Bus-m */
|
||||
OKISEMI_ML7223n_IOH /* LAPIS Semiconductor ML7223 IOH PCIe Bus-n */
|
||||
};
|
||||
|
||||
/* Specifies number of GPIO PINS */
|
||||
|
|
@ -524,6 +524,7 @@ static DEFINE_PCI_DEVICE_TABLE(pch_gpio_pcidev_id) = {
|
|||
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8043) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8803) },
|
||||
{ 0, }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, pch_gpio_pcidev_id);
|
||||
|
|
|
|||
|
|
@ -227,18 +227,7 @@ static struct platform_driver rdc321x_gpio_driver = {
|
|||
.remove = __devexit_p(rdc321x_gpio_remove),
|
||||
};
|
||||
|
||||
static int __init rdc321x_gpio_init(void)
|
||||
{
|
||||
return platform_driver_register(&rdc321x_gpio_driver);
|
||||
}
|
||||
|
||||
static void __exit rdc321x_gpio_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&rdc321x_gpio_driver);
|
||||
}
|
||||
|
||||
module_init(rdc321x_gpio_init);
|
||||
module_exit(rdc321x_gpio_exit);
|
||||
module_platform_driver(rdc321x_gpio_driver);
|
||||
|
||||
MODULE_AUTHOR("Florian Fainelli <[email protected]>");
|
||||
MODULE_DESCRIPTION("RDC321x GPIO driver");
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@ static int samsung_gpio_setcfg_2bit(struct samsung_gpio_chip *chip,
|
|||
* @chip: The gpio chip that is being configured.
|
||||
* @off: The offset for the GPIO being configured.
|
||||
*
|
||||
* The reverse of samsung_gpio_setcfg_2bit(). Will return a value whicg
|
||||
* The reverse of samsung_gpio_setcfg_2bit(). Will return a value which
|
||||
* could be directly passed back to samsung_gpio_setcfg_2bit(), from the
|
||||
* S3C_GPIO_SPECIAL() macro.
|
||||
*/
|
||||
|
|
@ -467,33 +467,42 @@ static struct samsung_gpio_cfg s5p64x0_gpio_cfg_rbank = {
|
|||
#endif
|
||||
|
||||
static struct samsung_gpio_cfg samsung_gpio_cfgs[] = {
|
||||
{
|
||||
[0] = {
|
||||
.cfg_eint = 0x0,
|
||||
}, {
|
||||
},
|
||||
[1] = {
|
||||
.cfg_eint = 0x3,
|
||||
}, {
|
||||
},
|
||||
[2] = {
|
||||
.cfg_eint = 0x7,
|
||||
}, {
|
||||
},
|
||||
[3] = {
|
||||
.cfg_eint = 0xF,
|
||||
}, {
|
||||
},
|
||||
[4] = {
|
||||
.cfg_eint = 0x0,
|
||||
.set_config = samsung_gpio_setcfg_2bit,
|
||||
.get_config = samsung_gpio_getcfg_2bit,
|
||||
}, {
|
||||
},
|
||||
[5] = {
|
||||
.cfg_eint = 0x2,
|
||||
.set_config = samsung_gpio_setcfg_2bit,
|
||||
.get_config = samsung_gpio_getcfg_2bit,
|
||||
}, {
|
||||
},
|
||||
[6] = {
|
||||
.cfg_eint = 0x3,
|
||||
.set_config = samsung_gpio_setcfg_2bit,
|
||||
.get_config = samsung_gpio_getcfg_2bit,
|
||||
}, {
|
||||
},
|
||||
[7] = {
|
||||
.set_config = samsung_gpio_setcfg_2bit,
|
||||
.get_config = samsung_gpio_getcfg_2bit,
|
||||
}, {
|
||||
},
|
||||
[8] = {
|
||||
.set_pull = exynos4_gpio_setpull,
|
||||
.get_pull = exynos4_gpio_getpull,
|
||||
}, {
|
||||
},
|
||||
[9] = {
|
||||
.cfg_eint = 0x3,
|
||||
.set_pull = exynos4_gpio_setpull,
|
||||
.get_pull = exynos4_gpio_getpull,
|
||||
|
|
|
|||
|
|
@ -297,18 +297,7 @@ static struct platform_driver sch_gpio_driver = {
|
|||
.remove = __devexit_p(sch_gpio_remove),
|
||||
};
|
||||
|
||||
static int __init sch_gpio_init(void)
|
||||
{
|
||||
return platform_driver_register(&sch_gpio_driver);
|
||||
}
|
||||
|
||||
static void __exit sch_gpio_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&sch_gpio_driver);
|
||||
}
|
||||
|
||||
module_init(sch_gpio_init);
|
||||
module_exit(sch_gpio_exit);
|
||||
module_platform_driver(sch_gpio_driver);
|
||||
|
||||
MODULE_AUTHOR("Denis Turischev <[email protected]>");
|
||||
MODULE_DESCRIPTION("GPIO interface for Intel Poulsbo SCH");
|
||||
|
|
|
|||
|
|
@ -359,18 +359,7 @@ static struct platform_driver timbgpio_platform_driver = {
|
|||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
static int __init timbgpio_init(void)
|
||||
{
|
||||
return platform_driver_register(&timbgpio_platform_driver);
|
||||
}
|
||||
|
||||
static void __exit timbgpio_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&timbgpio_platform_driver);
|
||||
}
|
||||
|
||||
module_init(timbgpio_init);
|
||||
module_exit(timbgpio_exit);
|
||||
module_platform_driver(timbgpio_platform_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Timberdale GPIO driver");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
|
|
|||
|
|
@ -103,23 +103,12 @@ static struct platform_driver ucb1400_gpio_driver = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __init ucb1400_gpio_init(void)
|
||||
{
|
||||
return platform_driver_register(&ucb1400_gpio_driver);
|
||||
}
|
||||
|
||||
static void __exit ucb1400_gpio_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&ucb1400_gpio_driver);
|
||||
}
|
||||
|
||||
void __init ucb1400_gpio_set_data(struct ucb1400_gpio_data *data)
|
||||
{
|
||||
ucbdata = data;
|
||||
}
|
||||
|
||||
module_init(ucb1400_gpio_init);
|
||||
module_exit(ucb1400_gpio_exit);
|
||||
module_platform_driver(ucb1400_gpio_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Philips UCB1400 GPIO driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
|
|||
|
|
@ -571,15 +571,4 @@ static struct platform_driver giu_device_driver = {
|
|||
},
|
||||
};
|
||||
|
||||
static int __init vr41xx_giu_init(void)
|
||||
{
|
||||
return platform_driver_register(&giu_device_driver);
|
||||
}
|
||||
|
||||
static void __exit vr41xx_giu_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&giu_device_driver);
|
||||
}
|
||||
|
||||
module_init(vr41xx_giu_init);
|
||||
module_exit(vr41xx_giu_exit);
|
||||
module_platform_driver(giu_device_driver);
|
||||
|
|
|
|||
|
|
@ -315,17 +315,7 @@ static struct platform_driver vx855gpio_driver = {
|
|||
.remove = __devexit_p(vx855gpio_remove),
|
||||
};
|
||||
|
||||
static int vx855gpio_init(void)
|
||||
{
|
||||
return platform_driver_register(&vx855gpio_driver);
|
||||
}
|
||||
module_init(vx855gpio_init);
|
||||
|
||||
static void vx855gpio_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&vx855gpio_driver);
|
||||
}
|
||||
module_exit(vx855gpio_exit);
|
||||
module_platform_driver(vx855gpio_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Harald Welte <[email protected]>");
|
||||
|
|
|
|||
|
|
@ -117,6 +117,60 @@ static int wm8994_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
|
|||
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
static const char *wm8994_gpio_fn(u16 fn)
|
||||
{
|
||||
switch (fn) {
|
||||
case WM8994_GP_FN_PIN_SPECIFIC:
|
||||
return "pin-specific";
|
||||
case WM8994_GP_FN_GPIO:
|
||||
return "GPIO";
|
||||
case WM8994_GP_FN_SDOUT:
|
||||
return "SDOUT";
|
||||
case WM8994_GP_FN_IRQ:
|
||||
return "IRQ";
|
||||
case WM8994_GP_FN_TEMPERATURE:
|
||||
return "Temperature";
|
||||
case WM8994_GP_FN_MICBIAS1_DET:
|
||||
return "MICBIAS1 detect";
|
||||
case WM8994_GP_FN_MICBIAS1_SHORT:
|
||||
return "MICBIAS1 short";
|
||||
case WM8994_GP_FN_MICBIAS2_DET:
|
||||
return "MICBIAS2 detect";
|
||||
case WM8994_GP_FN_MICBIAS2_SHORT:
|
||||
return "MICBIAS2 short";
|
||||
case WM8994_GP_FN_FLL1_LOCK:
|
||||
return "FLL1 lock";
|
||||
case WM8994_GP_FN_FLL2_LOCK:
|
||||
return "FLL2 lock";
|
||||
case WM8994_GP_FN_SRC1_LOCK:
|
||||
return "SRC1 lock";
|
||||
case WM8994_GP_FN_SRC2_LOCK:
|
||||
return "SRC2 lock";
|
||||
case WM8994_GP_FN_DRC1_ACT:
|
||||
return "DRC1 activity";
|
||||
case WM8994_GP_FN_DRC2_ACT:
|
||||
return "DRC2 activity";
|
||||
case WM8994_GP_FN_DRC3_ACT:
|
||||
return "DRC3 activity";
|
||||
case WM8994_GP_FN_WSEQ_STATUS:
|
||||
return "Write sequencer";
|
||||
case WM8994_GP_FN_FIFO_ERROR:
|
||||
return "FIFO error";
|
||||
case WM8994_GP_FN_OPCLK:
|
||||
return "OPCLK";
|
||||
case WM8994_GP_FN_THW:
|
||||
return "Thermal warning";
|
||||
case WM8994_GP_FN_DCS_DONE:
|
||||
return "DC servo";
|
||||
case WM8994_GP_FN_FLL1_OUT:
|
||||
return "FLL1 output";
|
||||
case WM8994_GP_FN_FLL2_OUT:
|
||||
return "FLL1 output";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
||||
{
|
||||
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)
|
|||
continue;
|
||||
}
|
||||
|
||||
/* No decode yet; note that GPIO2 is special */
|
||||
seq_printf(s, "(%x)\n", reg);
|
||||
if (reg & WM8994_GPN_DIR)
|
||||
seq_printf(s, "in ");
|
||||
else
|
||||
seq_printf(s, "out ");
|
||||
|
||||
if (reg & WM8994_GPN_PU)
|
||||
seq_printf(s, "pull up ");
|
||||
|
||||
if (reg & WM8994_GPN_PD)
|
||||
seq_printf(s, "pull down ");
|
||||
|
||||
if (reg & WM8994_GPN_POL)
|
||||
seq_printf(s, "inverted ");
|
||||
else
|
||||
seq_printf(s, "noninverted ");
|
||||
|
||||
if (reg & WM8994_GPN_OP_CFG)
|
||||
seq_printf(s, "open drain ");
|
||||
else
|
||||
seq_printf(s, "CMOS ");
|
||||
|
||||
seq_printf(s, "%s (%x)\n",
|
||||
wm8994_gpio_fn(reg & WM8994_GPN_FN_MASK), reg);
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -206,7 +206,6 @@ static int __devinit xgpio_of_probe(struct device_node *np)
|
|||
np->full_name, status);
|
||||
return status;
|
||||
}
|
||||
pr_info("XGpio: %s: registered\n", np->full_name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ static int gpio_ensure_requested(struct gpio_desc *desc, unsigned offset)
|
|||
}
|
||||
|
||||
/* caller holds gpio_lock *OR* gpio is marked as requested */
|
||||
static inline struct gpio_chip *gpio_to_chip(unsigned gpio)
|
||||
struct gpio_chip *gpio_to_chip(unsigned gpio)
|
||||
{
|
||||
return gpio_desc[gpio].chip;
|
||||
}
|
||||
|
|
@ -1089,6 +1089,10 @@ unlock:
|
|||
if (status)
|
||||
goto fail;
|
||||
|
||||
pr_info("gpiochip_add: registered GPIOs %d to %d on device: %s\n",
|
||||
chip->base, chip->base + chip->ngpio - 1,
|
||||
chip->label ? : "generic");
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
/* failures here can mean systems won't boot... */
|
||||
|
|
|
|||
Loading…
Reference in a new issue