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 | |
| 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>
| -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 | } |
