diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2012-11-14 04:14:07 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2012-11-15 06:34:56 -0500 |
commit | f92bc45ffdcd28c41bb6861753deb1a68d857922 (patch) | |
tree | f41a968c3b26a21f49f811d56dde4551ad954b4b /drivers/pinctrl/spear | |
parent | 9804049097af11b4f64a82b0e8c8078b3f2cbada (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.c | 19 |
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 | ||
245 | err1: | 245 | err1: |
246 | if (!IS_ERR(plgpio->clk)) | 246 | if (!IS_ERR(plgpio->clk)) |
247 | clk_disable_unprepare(plgpio->clk); | 247 | clk_disable(plgpio->clk); |
248 | err0: | 248 | err0: |
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 | ||
276 | disable_clk: | 276 | disable_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"); |
640 | unprepare_clk: | ||
641 | if (!IS_ERR(plgpio->clk)) | ||
642 | clk_unprepare(plgpio->clk); | ||
632 | 643 | ||
633 | return ret; | 644 | return ret; |
634 | } | 645 | } |