Thread (9 messages) 9 messages, 3 authors, 2015-08-13

Re: [PATCH v2 2/3] pinctrl: tegra: Only set the gpio range if needed

From: Tomeu Vizoso <hidden>
Date: 2015-08-06 13:40:56
Also in: linux-gpio, linux-tegra, lkml

On 14 July 2015 at 10:29, Tomeu Vizoso [off-list ref] wrote:
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 <redacted>
Acked-by: Stephen Warren <redacted>
Hi Linus,

do you mind if this goes through the Tegra tree? It would be best if
it went together with 3/3 ("ARM: tegra: Add gpio-ranges property"), to
avoid duplicated GPIO ranges.

Thanks,

Tomeu
quoted hunk ↗ jump to hunk
---

Changes in v2: None

 drivers/pinctrl/pinctrl-tegra.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c
index 0f982b829be1..0fd7fd2b0f72 100644
--- a/drivers/pinctrl/pinctrl-tegra.c
+++ b/drivers/pinctrl/pinctrl-tegra.c
@@ -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);

--
2.4.3
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help