]> git.karo-electronics.de Git - linux-beck.git/commitdiff
pinctrl: error if mapping table's control dev can't be found
authorStephen Warren <swarren@nvidia.com>
Mon, 20 Feb 2012 06:45:53 +0000 (23:45 -0700)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 22 Feb 2012 16:59:34 +0000 (17:59 +0100)
This is a serious error, and the pin control system will not function
correctly if it ends up not programing the mapping table entries into
the HW. Instead of just ignoring this, error out.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
[rebased to fit the applied patch series, cast error to pointer]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/core.c

index e2d4abb29d1a2e43a0e54302aedb316d0d2c1bdc..fb3fbb76932ecf35d9c3895e24ce9a883c98da17 100644 (file)
@@ -518,13 +518,12 @@ static struct pinctrl *pinctrl_get_locked(struct device *dev, const char *name)
                 */
                pctldev = get_pinctrl_dev_from_devname(map->ctrl_dev_name);
                if (!pctldev) {
-                       pr_warning("could not find a pinctrl device for pinmux function %s, fishy, they shall all have one\n",
-                                  map->function);
-                       pr_warning("given pinctrl device name: %s",
-                                  map->ctrl_dev_name);
-
-                       /* Continue to check the other mappings anyway... */
-                       continue;
+                       dev_err(dev, "unknown pinctrl device %s in map entry",
+                               map->ctrl_dev_name);
+                       pinmux_put(p);
+                       kfree(p);
+                       /* Eventually, this should trigger deferred probe */
+                       return ERR_PTR(-ENODEV);
                }
 
                pr_debug("in map, found pctldev %s to handle function %s",