]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
pinctrl: remove pinctrl_remove_gpio_range
authorDong Aisheng <dong.aisheng@linaro.org>
Wed, 23 May 2012 13:22:40 +0000 (21:22 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 3 Jul 2012 19:51:07 +0000 (21:51 +0200)
The gpio ranges will be automatically removed when the pinctrl
driver is unregistered.

Acked-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Dong Aisheng <dong.aisheng@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/core.c
drivers/pinctrl/pinctrl-tegra.c
drivers/pinctrl/pinctrl-u300.c
include/linux/pinctrl/pinctrl.h

index 50d9c289cffdc3df111cc2e04986e614c467b773..902428dfb37e81a02371024ba7514a4942970b4a 100644 (file)
@@ -332,20 +332,6 @@ void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev,
 }
 EXPORT_SYMBOL_GPL(pinctrl_add_gpio_range);
 
-/**
- * pinctrl_remove_gpio_range() - remove a range of GPIOs fro a pin controller
- * @pctldev: pin controller device to remove the range from
- * @range: the GPIO range to remove
- */
-void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev,
-                              struct pinctrl_gpio_range *range)
-{
-       mutex_lock(&pinctrl_mutex);
-       list_del(&range->node);
-       mutex_unlock(&pinctrl_mutex);
-}
-EXPORT_SYMBOL_GPL(pinctrl_remove_gpio_range);
-
 /**
  * pinctrl_get_group_selector() - returns the group selector for a group
  * @pctldev: the pin controller handling the group
@@ -1480,6 +1466,7 @@ EXPORT_SYMBOL_GPL(pinctrl_register);
  */
 void pinctrl_unregister(struct pinctrl_dev *pctldev)
 {
+       struct pinctrl_gpio_range *range, *n;
        if (pctldev == NULL)
                return;
 
@@ -1495,6 +1482,10 @@ void pinctrl_unregister(struct pinctrl_dev *pctldev)
        /* Destroy descriptor tree */
        pinctrl_free_pindescs(pctldev, pctldev->desc->pins,
                              pctldev->desc->npins);
+       /* remove gpio ranges map */
+       list_for_each_entry_safe(range, n, &pctldev->gpio_ranges, node)
+               list_del(&range->node);
+
        kfree(pctldev);
 
        mutex_unlock(&pinctrl_mutex);
index b6934867d8d3ef51b8c4baa84b72878a2175a6da..07228b17a370c9e0408b1cba41a554c76040e3dd 100644 (file)
@@ -764,7 +764,6 @@ int __devexit tegra_pinctrl_remove(struct platform_device *pdev)
 {
        struct tegra_pmx *pmx = platform_get_drvdata(pdev);
 
-       pinctrl_remove_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range);
        pinctrl_unregister(pmx->pctl);
 
        return 0;
index 6cd697a079f9d4a15d9a03a4eb11fbe941dd3263..5f43f9ae36d38a035f09771564b7529db2ba053c 100644 (file)
@@ -1175,8 +1175,6 @@ static int __devexit u300_pmx_remove(struct platform_device *pdev)
        struct u300_pmx *upmx = platform_get_drvdata(pdev);
        int i;
 
-       for (i = 0; i < ARRAY_SIZE(u300_gpio_ranges); i++)
-               pinctrl_remove_gpio_range(upmx->pctl, &u300_gpio_ranges[i]);
        pinctrl_unregister(upmx->pctl);
        iounmap(upmx->virtbase);
        release_mem_region(upmx->phybase, upmx->physize);
index 3b894a668d3240ba02ea3fa130348df8239f0056..170a588a55b601f29ef34b05e4f25faea3c6849b 100644 (file)
@@ -131,8 +131,6 @@ extern void pinctrl_unregister(struct pinctrl_dev *pctldev);
 extern bool pin_is_valid(struct pinctrl_dev *pctldev, int pin);
 extern void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev,
                                struct pinctrl_gpio_range *range);
-extern void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev,
-                               struct pinctrl_gpio_range *range);
 extern const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev);
 extern void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev);
 #else