pinctrl: sprd: Move DT parsing before registering pinctrl device
authorBaolin Wang <baolin.wang@linaro.org>
Thu, 27 Sep 2018 09:15:08 +0000 (17:15 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 28 Sep 2018 07:34:19 +0000 (09:34 +0200)
It will be failed to select default or sleep state for pins hogged
by the pin controller device, since we hadn't parsed pins configuration
in device tree before registering the pin controller device. Thus
we should move the device tree parsing function before registering
the pin controller device.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/sprd/pinctrl-sprd.c

index 78c2f548b25f1ef5dc3cbe702f2ef8db10416523..4537b545399669140801660d85ce7f47b51aae31 100644 (file)
@@ -1059,6 +1059,12 @@ int sprd_pinctrl_core_probe(struct platform_device *pdev,
                return ret;
        }
 
+       ret = sprd_pinctrl_parse_dt(sprd_pctl);
+       if (ret) {
+               dev_err(&pdev->dev, "fail to parse dt properties\n");
+               return ret;
+       }
+
        pin_desc = devm_kcalloc(&pdev->dev,
                                pinctrl_info->npins,
                                sizeof(struct pinctrl_pin_desc),
@@ -1083,13 +1089,6 @@ int sprd_pinctrl_core_probe(struct platform_device *pdev,
                return PTR_ERR(sprd_pctl->pctl);
        }
 
-       ret = sprd_pinctrl_parse_dt(sprd_pctl);
-       if (ret) {
-               dev_err(&pdev->dev, "fail to parse dt properties\n");
-               pinctrl_unregister(sprd_pctl->pctl);
-               return ret;
-       }
-
        return 0;
 }