aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@ti.com>2011-09-15 08:39:26 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-09-19 18:15:48 -0400
commit77f63e06cb5d5127e6f78347db01e092b97e111e (patch)
tree528a0a5ff7be9c2d557ad3fd6b8b476725cae03b /drivers
parent7e968985cb82c011403432c2f2dbd18660780679 (diff)
MFD: twl6040: Fix power on GPIO handling
Avoid requesting the audpwron gpio in case of ES1.0 revision. In the past we requested the gpio, but we did not free it up, since we made the check for the revision later. This results later checks for gpio validity to fail, leaving the gpio reserved (even after the driver has been removed). Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Samuel Ortiz <sameo@linux.intel.com> Acked-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mfd/twl6040-core.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/mfd/twl6040-core.c b/drivers/mfd/twl6040-core.c
index 51c3b47be655..7dc8c4715001 100644
--- a/drivers/mfd/twl6040-core.c
+++ b/drivers/mfd/twl6040-core.c
@@ -470,7 +470,6 @@ static int __devinit twl6040_probe(struct platform_device *pdev)
470 platform_set_drvdata(pdev, twl6040); 470 platform_set_drvdata(pdev, twl6040);
471 471
472 twl6040->dev = &pdev->dev; 472 twl6040->dev = &pdev->dev;
473 twl6040->audpwron = pdata->audpwron_gpio;
474 twl6040->irq = pdata->naudint_irq; 473 twl6040->irq = pdata->naudint_irq;
475 twl6040->irq_base = pdata->irq_base; 474 twl6040->irq_base = pdata->irq_base;
476 475
@@ -480,6 +479,12 @@ static int __devinit twl6040_probe(struct platform_device *pdev)
480 479
481 twl6040->rev = twl6040_reg_read(twl6040, TWL6040_REG_ASICREV); 480 twl6040->rev = twl6040_reg_read(twl6040, TWL6040_REG_ASICREV);
482 481
482 /* ERRATA: Automatic power-up is not possible in ES1.0 */
483 if (twl6040_get_revid(twl6040) > TWL6040_REV_ES1_0)
484 twl6040->audpwron = pdata->audpwron_gpio;
485 else
486 twl6040->audpwron = -EINVAL;
487
483 if (gpio_is_valid(twl6040->audpwron)) { 488 if (gpio_is_valid(twl6040->audpwron)) {
484 ret = gpio_request(twl6040->audpwron, "audpwron"); 489 ret = gpio_request(twl6040->audpwron, "audpwron");
485 if (ret) 490 if (ret)
@@ -490,10 +495,6 @@ static int __devinit twl6040_probe(struct platform_device *pdev)
490 goto gpio2_err; 495 goto gpio2_err;
491 } 496 }
492 497
493 /* ERRATA: Automatic power-up is not possible in ES1.0 */
494 if (twl6040_get_revid(twl6040) == TWL6040_REV_ES1_0)
495 twl6040->audpwron = -EINVAL;
496
497 /* codec interrupt */ 498 /* codec interrupt */
498 ret = twl6040_irq_init(twl6040); 499 ret = twl6040_irq_init(twl6040);
499 if (ret) 500 if (ret)