aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/spear
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2012-11-14 04:14:07 -0500
committerLinus Walleij <linus.walleij@linaro.org>2012-11-15 06:34:56 -0500
commitf92bc45ffdcd28c41bb6861753deb1a68d857922 (patch)
treef41a968c3b26a21f49f811d56dde4551ad954b4b /drivers/pinctrl/spear
parent9804049097af11b4f64a82b0e8c8078b3f2cbada (diff)
Pinctrl/spear: plgpio: don't call prepare/unprepare
SPEAr SoC's don't do anything in clk_prepare() of plgpio driver, so there is no need to call this routine multiple times. Just call it once at probe. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/spear')
-rw-r--r--drivers/pinctrl/spear/pinctrl-plgpio.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/pinctrl/spear/pinctrl-plgpio.c b/drivers/pinctrl/spear/pinctrl-plgpio.c
index cf6d9c204936..5aebbf780fb5 100644
--- a/drivers/pinctrl/spear/pinctrl-plgpio.c
+++ b/drivers/pinctrl/spear/pinctrl-plgpio.c
@@ -213,7 +213,7 @@ static int plgpio_request(struct gpio_chip *chip, unsigned offset)
213 return ret; 213 return ret;
214 214
215 if (!IS_ERR(plgpio->clk)) { 215 if (!IS_ERR(plgpio->clk)) {
216 ret = clk_prepare_enable(plgpio->clk); 216 ret = clk_enable(plgpio->clk);
217 if (ret) 217 if (ret)
218 goto err0; 218 goto err0;
219 } 219 }
@@ -244,7 +244,7 @@ static int plgpio_request(struct gpio_chip *chip, unsigned offset)
244 244
245err1: 245err1:
246 if (!IS_ERR(plgpio->clk)) 246 if (!IS_ERR(plgpio->clk))
247 clk_disable_unprepare(plgpio->clk); 247 clk_disable(plgpio->clk);
248err0: 248err0:
249 pinctrl_free_gpio(gpio); 249 pinctrl_free_gpio(gpio);
250 return ret; 250 return ret;
@@ -275,7 +275,7 @@ static void plgpio_free(struct gpio_chip *chip, unsigned offset)
275 275
276disable_clk: 276disable_clk:
277 if (!IS_ERR(plgpio->clk)) 277 if (!IS_ERR(plgpio->clk))
278 clk_disable_unprepare(plgpio->clk); 278 clk_disable(plgpio->clk);
279 279
280 pinctrl_free_gpio(gpio); 280 pinctrl_free_gpio(gpio);
281} 281}
@@ -584,10 +584,18 @@ static int __devinit plgpio_probe(struct platform_device *pdev)
584 plgpio->chip.dev = &pdev->dev; 584 plgpio->chip.dev = &pdev->dev;
585 plgpio->chip.owner = THIS_MODULE; 585 plgpio->chip.owner = THIS_MODULE;
586 586
587 if (!IS_ERR(plgpio->clk)) {
588 ret = clk_prepare(plgpio->clk);
589 if (ret) {
590 dev_err(&pdev->dev, "clk prepare failed\n");
591 return ret;
592 }
593 }
594
587 ret = gpiochip_add(&plgpio->chip); 595 ret = gpiochip_add(&plgpio->chip);
588 if (ret) { 596 if (ret) {
589 dev_err(&pdev->dev, "unable to add gpio chip\n"); 597 dev_err(&pdev->dev, "unable to add gpio chip\n");
590 return ret; 598 goto unprepare_clk;
591 } 599 }
592 600
593 irq = platform_get_irq(pdev, 0); 601 irq = platform_get_irq(pdev, 0);
@@ -629,6 +637,9 @@ remove_gpiochip:
629 dev_info(&pdev->dev, "Remove gpiochip\n"); 637 dev_info(&pdev->dev, "Remove gpiochip\n");
630 if (gpiochip_remove(&plgpio->chip)) 638 if (gpiochip_remove(&plgpio->chip))
631 dev_err(&pdev->dev, "unable to remove gpiochip\n"); 639 dev_err(&pdev->dev, "unable to remove gpiochip\n");
640unprepare_clk:
641 if (!IS_ERR(plgpio->clk))
642 clk_unprepare(plgpio->clk);
632 643
633 return ret; 644 return ret;
634} 645}