pinctrl: samsung: Fix memory mapping code
Some pinctrls share memory regions, and devm_ioremap_resource does not
allow to share resources, in opposition to devm_ioremap.
This patch restores back usage of devm_ioremap function, but with proper
error handling and logging.
Fixes: baafaca
("pinctrl: samsung: Fix return value check in samsung_pinctrl_get_soc_data()")
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
08a7f260c8
commit
59f34e80c4
|
@ -988,9 +988,16 @@ samsung_pinctrl_get_soc_data(struct samsung_pinctrl_drv_data *d,
|
||||||
|
|
||||||
for (i = 0; i < ctrl->nr_ext_resources + 1; i++) {
|
for (i = 0; i < ctrl->nr_ext_resources + 1; i++) {
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, i);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, i);
|
||||||
virt_base[i] = devm_ioremap_resource(&pdev->dev, res);
|
if (!res) {
|
||||||
if (IS_ERR(virt_base[i]))
|
dev_err(&pdev->dev, "failed to get mem%d resource\n", i);
|
||||||
return ERR_CAST(virt_base[i]);
|
return ERR_PTR(-EINVAL);
|
||||||
|
}
|
||||||
|
virt_base[i] = devm_ioremap(&pdev->dev, res->start,
|
||||||
|
resource_size(res));
|
||||||
|
if (!virt_base[i]) {
|
||||||
|
dev_err(&pdev->dev, "failed to ioremap %pR\n", res);
|
||||||
|
return ERR_PTR(-EIO);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bank = d->pin_banks;
|
bank = d->pin_banks;
|
||||||
|
|
Loading…
Reference in New Issue