summaryrefslogtreecommitdiff
path: root/drivers/pinctrl/devicetree.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pinctrl/devicetree.c')
-rw-r--r--drivers/pinctrl/devicetree.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/pinctrl/devicetree.c b/drivers/pinctrl/devicetree.c
index 340fb4e6c60..033e9654b1c 100644
--- a/drivers/pinctrl/devicetree.c
+++ b/drivers/pinctrl/devicetree.c
@@ -180,7 +180,7 @@ int pinctrl_dt_to_map(struct pinctrl *p)
struct property *prop;
const char *statename;
const __be32 *list;
- int size, config;
+ int size, config, valid_configs;
phandle phandle;
struct device_node *np_config;
@@ -195,6 +195,7 @@ int pinctrl_dt_to_map(struct pinctrl *p)
/* For each defined state ID */
for (state = 0; ; state++) {
+ valid_configs = 0;
/* Retrieve the pinctrl-* property */
propname = kasprintf(GFP_KERNEL, "pinctrl-%d", state);
prop = of_find_property(np, propname, &size);
@@ -234,10 +235,15 @@ int pinctrl_dt_to_map(struct pinctrl *p)
/* Parse the node */
ret = dt_to_map_one_config(p, statename, np_config);
of_node_put(np_config);
- if (ret < 0)
- goto err;
+ if (ret >= 0)
+ valid_configs++;
}
+ dev_dbg(p->dev, "%d/%d valid pinctrl configs found\n",
+ valid_configs, size);
+ if (!valid_configs)
+ goto err;
+
/* No entries in DT? Generate a dummy state table entry */
if (!size) {
ret = dt_remember_dummy_state(p, statename);