pinctrl: just return if no valid maps
authorlijiazi <jqqlijiazi@gmail.com>
Fri, 1 Nov 2019 11:43:52 +0000 (19:43 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 5 Nov 2019 10:25:39 +0000 (11:25 +0100)
If there is a problem with a pinctrl node of a device,
for example, config child node do not have prop specified in
dt_params, num_maps maybe 0. On this condition, no need remember
this map.

Signed-off-by: lijiazi <lijiazi@xiaomi.com>
Link: https://lore.kernel.org/r/29421e7720443a2454830963186f00583c76ce1e.1572588550.git.lijiazi@xiaomi.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/devicetree.c

index 1a30037..674920d 100644 (file)
@@ -162,6 +162,16 @@ static int dt_to_map_one_config(struct pinctrl *p,
        ret = ops->dt_node_to_map(pctldev, np_config, &map, &num_maps);
        if (ret < 0)
                return ret;
+       else if (num_maps == 0) {
+               /*
+                * If we have no valid maps (maybe caused by empty pinctrl node
+                * or typing error) ther is no need remember this, so just
+                * return.
+                */
+               dev_info(p->dev,
+                        "there is not valid maps for state %s\n", statename);
+               return 0;
+       }
 
        /* Stash the mapping table chunk away for later use */
        return dt_remember_or_free_map(p, statename, pctldev, map, num_maps);