Commit 9462510c authored by Tomeu Vizoso's avatar Tomeu Vizoso Committed by Thierry Reding

pinctrl: tegra: Only set the gpio range if needed

If the gpio DT node has the gpio-ranges property, the range will be
added by the gpio core and doesn't need to be added by the pinctrl
driver.

By having the gpio-ranges property, we have an explicit dependency from
the gpio node to the pinctrl node and we can stop using the deprecated
pinctrl_add_gpio_range() function.
Signed-off-by: default avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
Acked-by: default avatarStephen Warren <swarren@nvidia.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent d770e558
...@@ -624,6 +624,22 @@ static struct pinctrl_desc tegra_pinctrl_desc = { ...@@ -624,6 +624,22 @@ static struct pinctrl_desc tegra_pinctrl_desc = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
}; };
static bool gpio_node_has_range(void)
{
struct device_node *np;
bool has_prop = false;
np = of_find_compatible_node(NULL, NULL, "nvidia,tegra30-gpio");
if (!np)
return has_prop;
has_prop = of_find_property(np, "gpio-ranges", NULL);
of_node_put(np);
return has_prop;
}
int tegra_pinctrl_probe(struct platform_device *pdev, int tegra_pinctrl_probe(struct platform_device *pdev,
const struct tegra_pinctrl_soc_data *soc_data) const struct tegra_pinctrl_soc_data *soc_data)
{ {
...@@ -708,7 +724,8 @@ int tegra_pinctrl_probe(struct platform_device *pdev, ...@@ -708,7 +724,8 @@ int tegra_pinctrl_probe(struct platform_device *pdev,
return PTR_ERR(pmx->pctl); return PTR_ERR(pmx->pctl);
} }
pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); if (!gpio_node_has_range())
pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range);
platform_set_drvdata(pdev, pmx); platform_set_drvdata(pdev, pmx);
......
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