Commit 1288cadc authored by Herve Codina's avatar Herve Codina Committed by Linus Walleij

pinctrl: spear: plgpio: Introduce regmap phandle

Resources need to be shared between pinmux and plgpio.

Introduce regmap phandle in order to retrieve the regmap
from the phandle if the property is present.
This allows to retrieve an external regmap (ie the one
used by pinmux if the phandle references the pinmux node)
from plgpio.
Signed-off-by: default avatarHerve Codina <herve.codina@bootlin.com>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Link: https://lore.kernel.org/r/20211202095255.165797-4-herve.codina@bootlin.comSigned-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 7151cef5
...@@ -523,6 +523,7 @@ static int plgpio_probe_dt(struct platform_device *pdev, struct plgpio *plgpio) ...@@ -523,6 +523,7 @@ static int plgpio_probe_dt(struct platform_device *pdev, struct plgpio *plgpio)
static int plgpio_probe(struct platform_device *pdev) static int plgpio_probe(struct platform_device *pdev)
{ {
struct device_node *regmap_np;
struct plgpio *plgpio; struct plgpio *plgpio;
int ret, irq; int ret, irq;
...@@ -530,12 +531,23 @@ static int plgpio_probe(struct platform_device *pdev) ...@@ -530,12 +531,23 @@ static int plgpio_probe(struct platform_device *pdev)
if (!plgpio) if (!plgpio)
return -ENOMEM; return -ENOMEM;
regmap_np = of_parse_phandle(pdev->dev.of_node, "regmap", 0);
if (regmap_np) {
plgpio->regmap = device_node_to_regmap(regmap_np);
of_node_put(regmap_np);
if (IS_ERR(plgpio->regmap)) {
dev_err(&pdev->dev, "Retrieve regmap failed (%pe)\n",
plgpio->regmap);
return PTR_ERR(plgpio->regmap);
}
} else {
plgpio->regmap = device_node_to_regmap(pdev->dev.of_node); plgpio->regmap = device_node_to_regmap(pdev->dev.of_node);
if (IS_ERR(plgpio->regmap)) { if (IS_ERR(plgpio->regmap)) {
dev_err(&pdev->dev, "Init regmap failed (%pe)\n", dev_err(&pdev->dev, "Init regmap failed (%pe)\n",
plgpio->regmap); plgpio->regmap);
return PTR_ERR(plgpio->regmap); return PTR_ERR(plgpio->regmap);
} }
}
ret = plgpio_probe_dt(pdev, plgpio); ret = plgpio_probe_dt(pdev, plgpio);
if (ret) { if (ret) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment