diff options
author | Axel Lin <axel.lin@ingics.com> | 2012-11-12 01:45:50 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2012-11-15 05:21:45 -0500 |
commit | 9387760db221420f56a9f43a7d079c9fb209e32e (patch) | |
tree | 5ac8d12af9d4d4185c19d0b86be9f26ae4dbb81c /drivers/pinctrl | |
parent | 507ccdbfd80020c402cbbf65ceeb3235edb79021 (diff) |
pinctrl: pxa3xx: Use devm_request_and_ioremap
Use managed resources API to simplify the code.
Also ensure we do request mem_region before ioremap.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r-- | drivers/pinctrl/pinctrl-pxa3xx.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/drivers/pinctrl/pinctrl-pxa3xx.c b/drivers/pinctrl/pinctrl-pxa3xx.c index f14cd6ba4c0b..43e3dd058ddb 100644 --- a/drivers/pinctrl/pinctrl-pxa3xx.c +++ b/drivers/pinctrl/pinctrl-pxa3xx.c | |||
@@ -173,7 +173,6 @@ int pxa3xx_pinctrl_register(struct platform_device *pdev, | |||
173 | { | 173 | { |
174 | struct pinctrl_desc *desc; | 174 | struct pinctrl_desc *desc; |
175 | struct resource *res; | 175 | struct resource *res; |
176 | int ret = 0; | ||
177 | 176 | ||
178 | if (!info || !info->cputype) | 177 | if (!info || !info->cputype) |
179 | return -EINVAL; | 178 | return -EINVAL; |
@@ -190,21 +189,17 @@ int pxa3xx_pinctrl_register(struct platform_device *pdev, | |||
190 | return -ENOENT; | 189 | return -ENOENT; |
191 | info->phy_base = res->start; | 190 | info->phy_base = res->start; |
192 | info->phy_size = resource_size(res); | 191 | info->phy_size = resource_size(res); |
193 | info->virt_base = ioremap(info->phy_base, info->phy_size); | 192 | info->virt_base = devm_request_and_ioremap(&pdev->dev, res); |
194 | if (!info->virt_base) | 193 | if (!info->virt_base) |
195 | return -ENOMEM; | 194 | return -ENOMEM; |
196 | info->pctrl = pinctrl_register(desc, &pdev->dev, info); | 195 | info->pctrl = pinctrl_register(desc, &pdev->dev, info); |
197 | if (!info->pctrl) { | 196 | if (!info->pctrl) { |
198 | dev_err(&pdev->dev, "failed to register PXA pinmux driver\n"); | 197 | dev_err(&pdev->dev, "failed to register PXA pinmux driver\n"); |
199 | ret = -EINVAL; | 198 | return -EINVAL; |
200 | goto err; | ||
201 | } | 199 | } |
202 | pinctrl_add_gpio_range(info->pctrl, &pxa3xx_pinctrl_gpio_range); | 200 | pinctrl_add_gpio_range(info->pctrl, &pxa3xx_pinctrl_gpio_range); |
203 | platform_set_drvdata(pdev, info); | 201 | platform_set_drvdata(pdev, info); |
204 | return 0; | 202 | return 0; |
205 | err: | ||
206 | iounmap(info->virt_base); | ||
207 | return ret; | ||
208 | } | 203 | } |
209 | 204 | ||
210 | int pxa3xx_pinctrl_unregister(struct platform_device *pdev) | 205 | int pxa3xx_pinctrl_unregister(struct platform_device *pdev) |
@@ -212,7 +207,6 @@ int pxa3xx_pinctrl_unregister(struct platform_device *pdev) | |||
212 | struct pxa3xx_pinmux_info *info = platform_get_drvdata(pdev); | 207 | struct pxa3xx_pinmux_info *info = platform_get_drvdata(pdev); |
213 | 208 | ||
214 | pinctrl_unregister(info->pctrl); | 209 | pinctrl_unregister(info->pctrl); |
215 | iounmap(info->virt_base); | ||
216 | platform_set_drvdata(pdev, NULL); | 210 | platform_set_drvdata(pdev, NULL); |
217 | return 0; | 211 | return 0; |
218 | } | 212 | } |