forked from Minki/linux
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,
|
||||
};
|
||||
|
||||
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,
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user