Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 59f34e80 authored by Andrzej Hajda's avatar Andrzej Hajda Committed by Linus Walleij
Browse files

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: baafacab ("pinctrl: samsung: Fix return value check in samsung_pinctrl_get_soc_data()")
Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
Tested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 08a7f260
Loading
Loading
Loading
Loading
+10 −3
Original line number Original line Diff line number Diff line
@@ -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;