diff options
author | Dong Aisheng <dong.aisheng@linaro.org> | 2012-05-23 09:22:40 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2012-07-03 15:51:07 -0400 |
commit | 5d589b092ab212bbcc27828167e1c036e7fc77d2 (patch) | |
tree | d3c9dcc8ae1f647d912179b4bfd98e27bbdb801a | |
parent | da9aecb02d8763ef17130dfd7c678747ad84b070 (diff) |
pinctrl: remove pinctrl_remove_gpio_range
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>
-rw-r--r-- | drivers/pinctrl/core.c | 19 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-tegra.c | 1 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-u300.c | 2 | ||||
-rw-r--r-- | include/linux/pinctrl/pinctrl.h | 2 |
4 files changed, 5 insertions, 19 deletions
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index 50d9c289cffd..902428dfb37e 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c | |||
@@ -333,20 +333,6 @@ void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev, | |||
333 | EXPORT_SYMBOL_GPL(pinctrl_add_gpio_range); | 333 | EXPORT_SYMBOL_GPL(pinctrl_add_gpio_range); |
334 | 334 | ||
335 | /** | 335 | /** |
336 | * pinctrl_remove_gpio_range() - remove a range of GPIOs fro a pin controller | ||
337 | * @pctldev: pin controller device to remove the range from | ||
338 | * @range: the GPIO range to remove | ||
339 | */ | ||
340 | void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev, | ||
341 | struct pinctrl_gpio_range *range) | ||
342 | { | ||
343 | mutex_lock(&pinctrl_mutex); | ||
344 | list_del(&range->node); | ||
345 | mutex_unlock(&pinctrl_mutex); | ||
346 | } | ||
347 | EXPORT_SYMBOL_GPL(pinctrl_remove_gpio_range); | ||
348 | |||
349 | /** | ||
350 | * pinctrl_get_group_selector() - returns the group selector for a group | 336 | * pinctrl_get_group_selector() - returns the group selector for a group |
351 | * @pctldev: the pin controller handling the group | 337 | * @pctldev: the pin controller handling the group |
352 | * @pin_group: the pin group to look up | 338 | * @pin_group: the pin group to look up |
@@ -1480,6 +1466,7 @@ EXPORT_SYMBOL_GPL(pinctrl_register); | |||
1480 | */ | 1466 | */ |
1481 | void pinctrl_unregister(struct pinctrl_dev *pctldev) | 1467 | void pinctrl_unregister(struct pinctrl_dev *pctldev) |
1482 | { | 1468 | { |
1469 | struct pinctrl_gpio_range *range, *n; | ||
1483 | if (pctldev == NULL) | 1470 | if (pctldev == NULL) |
1484 | return; | 1471 | return; |
1485 | 1472 | ||
@@ -1495,6 +1482,10 @@ void pinctrl_unregister(struct pinctrl_dev *pctldev) | |||
1495 | /* Destroy descriptor tree */ | 1482 | /* Destroy descriptor tree */ |
1496 | pinctrl_free_pindescs(pctldev, pctldev->desc->pins, | 1483 | pinctrl_free_pindescs(pctldev, pctldev->desc->pins, |
1497 | pctldev->desc->npins); | 1484 | pctldev->desc->npins); |
1485 | /* remove gpio ranges map */ | ||
1486 | list_for_each_entry_safe(range, n, &pctldev->gpio_ranges, node) | ||
1487 | list_del(&range->node); | ||
1488 | |||
1498 | kfree(pctldev); | 1489 | kfree(pctldev); |
1499 | 1490 | ||
1500 | mutex_unlock(&pinctrl_mutex); | 1491 | mutex_unlock(&pinctrl_mutex); |
diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c index b6934867d8d3..07228b17a370 100644 --- a/drivers/pinctrl/pinctrl-tegra.c +++ b/drivers/pinctrl/pinctrl-tegra.c | |||
@@ -764,7 +764,6 @@ int __devexit tegra_pinctrl_remove(struct platform_device *pdev) | |||
764 | { | 764 | { |
765 | struct tegra_pmx *pmx = platform_get_drvdata(pdev); | 765 | struct tegra_pmx *pmx = platform_get_drvdata(pdev); |
766 | 766 | ||
767 | pinctrl_remove_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); | ||
768 | pinctrl_unregister(pmx->pctl); | 767 | pinctrl_unregister(pmx->pctl); |
769 | 768 | ||
770 | return 0; | 769 | return 0; |
diff --git a/drivers/pinctrl/pinctrl-u300.c b/drivers/pinctrl/pinctrl-u300.c index 6cd697a079f9..5f43f9ae36d3 100644 --- a/drivers/pinctrl/pinctrl-u300.c +++ b/drivers/pinctrl/pinctrl-u300.c | |||
@@ -1175,8 +1175,6 @@ static int __devexit u300_pmx_remove(struct platform_device *pdev) | |||
1175 | struct u300_pmx *upmx = platform_get_drvdata(pdev); | 1175 | struct u300_pmx *upmx = platform_get_drvdata(pdev); |
1176 | int i; | 1176 | int i; |
1177 | 1177 | ||
1178 | for (i = 0; i < ARRAY_SIZE(u300_gpio_ranges); i++) | ||
1179 | pinctrl_remove_gpio_range(upmx->pctl, &u300_gpio_ranges[i]); | ||
1180 | pinctrl_unregister(upmx->pctl); | 1178 | pinctrl_unregister(upmx->pctl); |
1181 | iounmap(upmx->virtbase); | 1179 | iounmap(upmx->virtbase); |
1182 | release_mem_region(upmx->phybase, upmx->physize); | 1180 | release_mem_region(upmx->phybase, upmx->physize); |
diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h index 3b894a668d32..170a588a55b6 100644 --- a/include/linux/pinctrl/pinctrl.h +++ b/include/linux/pinctrl/pinctrl.h | |||
@@ -131,8 +131,6 @@ extern void pinctrl_unregister(struct pinctrl_dev *pctldev); | |||
131 | extern bool pin_is_valid(struct pinctrl_dev *pctldev, int pin); | 131 | extern bool pin_is_valid(struct pinctrl_dev *pctldev, int pin); |
132 | extern void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev, | 132 | extern void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev, |
133 | struct pinctrl_gpio_range *range); | 133 | struct pinctrl_gpio_range *range); |
134 | extern void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev, | ||
135 | struct pinctrl_gpio_range *range); | ||
136 | extern const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev); | 134 | extern const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev); |
137 | extern void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev); | 135 | extern void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev); |
138 | #else | 136 | #else |