From 3e306bba4b3a320e3b2b1347c6dc6fab93ec6b14 Mon Sep 17 00:00:00 2001 From: Stephen Warren Date: Sun, 19 Feb 2012 23:45:51 -0700 Subject: [PATCH] --- yaml --- r: 294074 b: refs/heads/master c: f026fe3d102e9d7f0d040109353ef5a97b5ef92c h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/pinctrl/core.c | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 9b1c4584b866..881c78aac514 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9891d98c7ab5712807d87ab40f2a9acd9b317114 +refs/heads/master: f026fe3d102e9d7f0d040109353ef5a97b5ef92c diff --git a/trunk/drivers/pinctrl/core.c b/trunk/drivers/pinctrl/core.c index 552d8c115c4f..e2d4abb29d1a 100644 --- a/trunk/drivers/pinctrl/core.c +++ b/trunk/drivers/pinctrl/core.c @@ -567,14 +567,16 @@ static struct pinctrl *pinctrl_get_locked(struct device *dev, const char *name) } } - /* We should have atleast one map, right */ - if (!num_maps) { - pr_err("could not find any mux maps for device %s, ID %s\n", - devname ? devname : "(anonymous)", - name ? name : "(undefined)"); - kfree(p); - return ERR_PTR(-EINVAL); - } + /* + * This may be perfectly legitimate. An IP block may get re-used + * across SoCs. Not all of those SoCs may need pinmux settings for the + * IP block, e.g. if one SoC dedicates pins to that function but + * another doesn't. The driver won't know this, and will always + * attempt to set up the pinmux. The mapping table defines whether any + * HW programming is actually needed. + */ + if (!num_maps) + dev_info(dev, "zero maps found for mapping %s\n", name); pr_debug("found %u mux maps for device %s, UD %s\n", num_maps,