summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorStefan Agner <stefan@agner.ch>2018-07-26 11:40:24 -0400
committerLinus Walleij <linus.walleij@linaro.org>2018-07-29 17:37:03 -0400
commit3c94d2d08a032d911bbe34f2edb24cb63a63644a (patch)
treeb004755fe7335a3c3e4469758e452606a6ff7e07 /drivers/pinctrl
parent55aedef50d4d810670916d9fce4a40d5da2079e7 (diff)
pinctrl: tegra: define GPIO compatible node per SoC
Tegra 2 uses a different GPIO controller which uses "tegra20-gpio" as compatible string. Make the compatible string the GPIO node is using a SoC specific property. This prevents the kernel from registering the GPIO range twice in case the GPIO range is specified in the device tree. Fixes: 9462510ce31e ("pinctrl: tegra: Only set the gpio range if needed") Signed-off-by: Stefan Agner <stefan@agner.ch> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra.c6
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra.h1
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra114.c1
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra124.c1
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra20.c1
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra210.c1
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra30.c1
7 files changed, 9 insertions, 3 deletions
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.c b/drivers/pinctrl/tegra/pinctrl-tegra.c
index f974eee29a19..1aba75897d14 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra.c
@@ -629,12 +629,12 @@ static void tegra_pinctrl_clear_parked_bits(struct tegra_pmx *pmx)
629 } 629 }
630} 630}
631 631
632static bool gpio_node_has_range(void) 632static bool gpio_node_has_range(const char *compatible)
633{ 633{
634 struct device_node *np; 634 struct device_node *np;
635 bool has_prop = false; 635 bool has_prop = false;
636 636
637 np = of_find_compatible_node(NULL, NULL, "nvidia,tegra30-gpio"); 637 np = of_find_compatible_node(NULL, NULL, compatible);
638 if (!np) 638 if (!np)
639 return has_prop; 639 return has_prop;
640 640
@@ -728,7 +728,7 @@ int tegra_pinctrl_probe(struct platform_device *pdev,
728 728
729 tegra_pinctrl_clear_parked_bits(pmx); 729 tegra_pinctrl_clear_parked_bits(pmx);
730 730
731 if (!gpio_node_has_range()) 731 if (!gpio_node_has_range(pmx->soc->gpio_compatible))
732 pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); 732 pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range);
733 733
734 platform_set_drvdata(pdev, pmx); 734 platform_set_drvdata(pdev, pmx);
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.h b/drivers/pinctrl/tegra/pinctrl-tegra.h
index aa33c20766c4..44c71941b5f8 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra.h
+++ b/drivers/pinctrl/tegra/pinctrl-tegra.h
@@ -189,6 +189,7 @@ struct tegra_pingroup {
189 */ 189 */
190struct tegra_pinctrl_soc_data { 190struct tegra_pinctrl_soc_data {
191 unsigned ngpios; 191 unsigned ngpios;
192 const char *gpio_compatible;
192 const struct pinctrl_pin_desc *pins; 193 const struct pinctrl_pin_desc *pins;
193 unsigned npins; 194 unsigned npins;
194 struct tegra_function *functions; 195 struct tegra_function *functions;
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra114.c b/drivers/pinctrl/tegra/pinctrl-tegra114.c
index 56b33fca1bfc..511a8774fd8d 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra114.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra114.c
@@ -1839,6 +1839,7 @@ static const struct tegra_pingroup tegra114_groups[] = {
1839 1839
1840static const struct tegra_pinctrl_soc_data tegra114_pinctrl = { 1840static const struct tegra_pinctrl_soc_data tegra114_pinctrl = {
1841 .ngpios = NUM_GPIOS, 1841 .ngpios = NUM_GPIOS,
1842 .gpio_compatible = "nvidia,tegra30-gpio",
1842 .pins = tegra114_pins, 1843 .pins = tegra114_pins,
1843 .npins = ARRAY_SIZE(tegra114_pins), 1844 .npins = ARRAY_SIZE(tegra114_pins),
1844 .functions = tegra114_functions, 1845 .functions = tegra114_functions,
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra124.c b/drivers/pinctrl/tegra/pinctrl-tegra124.c
index 7bc998ace0d5..57e3cdcf4503 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra124.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra124.c
@@ -2051,6 +2051,7 @@ static const struct tegra_pingroup tegra124_groups[] = {
2051 2051
2052static const struct tegra_pinctrl_soc_data tegra124_pinctrl = { 2052static const struct tegra_pinctrl_soc_data tegra124_pinctrl = {
2053 .ngpios = NUM_GPIOS, 2053 .ngpios = NUM_GPIOS,
2054 .gpio_compatible = "nvidia,tegra30-gpio",
2054 .pins = tegra124_pins, 2055 .pins = tegra124_pins,
2055 .npins = ARRAY_SIZE(tegra124_pins), 2056 .npins = ARRAY_SIZE(tegra124_pins),
2056 .functions = tegra124_functions, 2057 .functions = tegra124_functions,
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra20.c b/drivers/pinctrl/tegra/pinctrl-tegra20.c
index b6dd939d32cc..624889ed3a9d 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra20.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra20.c
@@ -2221,6 +2221,7 @@ static const struct tegra_pingroup tegra20_groups[] = {
2221 2221
2222static const struct tegra_pinctrl_soc_data tegra20_pinctrl = { 2222static const struct tegra_pinctrl_soc_data tegra20_pinctrl = {
2223 .ngpios = NUM_GPIOS, 2223 .ngpios = NUM_GPIOS,
2224 .gpio_compatible = "nvidia,tegra20-gpio",
2224 .pins = tegra20_pins, 2225 .pins = tegra20_pins,
2225 .npins = ARRAY_SIZE(tegra20_pins), 2226 .npins = ARRAY_SIZE(tegra20_pins),
2226 .functions = tegra20_functions, 2227 .functions = tegra20_functions,
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra210.c b/drivers/pinctrl/tegra/pinctrl-tegra210.c
index c244e5b17bd6..0956a1c73391 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra210.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra210.c
@@ -1553,6 +1553,7 @@ static const struct tegra_pingroup tegra210_groups[] = {
1553 1553
1554static const struct tegra_pinctrl_soc_data tegra210_pinctrl = { 1554static const struct tegra_pinctrl_soc_data tegra210_pinctrl = {
1555 .ngpios = NUM_GPIOS, 1555 .ngpios = NUM_GPIOS,
1556 .gpio_compatible = "nvidia,tegra30-gpio",
1556 .pins = tegra210_pins, 1557 .pins = tegra210_pins,
1557 .npins = ARRAY_SIZE(tegra210_pins), 1558 .npins = ARRAY_SIZE(tegra210_pins),
1558 .functions = tegra210_functions, 1559 .functions = tegra210_functions,
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra30.c b/drivers/pinctrl/tegra/pinctrl-tegra30.c
index 1f180a20f2ab..c923ad58af84 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra30.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra30.c
@@ -2474,6 +2474,7 @@ static const struct tegra_pingroup tegra30_groups[] = {
2474 2474
2475static const struct tegra_pinctrl_soc_data tegra30_pinctrl = { 2475static const struct tegra_pinctrl_soc_data tegra30_pinctrl = {
2476 .ngpios = NUM_GPIOS, 2476 .ngpios = NUM_GPIOS,
2477 .gpio_compatible = "nvidia,tegra30-gpio",
2477 .pins = tegra30_pins, 2478 .pins = tegra30_pins,
2478 .npins = ARRAY_SIZE(tegra30_pins), 2479 .npins = ARRAY_SIZE(tegra30_pins),
2479 .functions = tegra30_functions, 2480 .functions = tegra30_functions,