mirror of https://gitee.com/openkylin/linux.git
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: Tomeu Vizoso <tomeu.vizoso@collabora.com> Acked-by: Stephen Warren <swarren@nvidia.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
parent
d770e558e2
commit
9462510ce3
|
@ -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,
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue