]> Pileus Git - ~andy/linux/commitdiff
pinctrl: Remove duplicate code in pinctrl_pm_select_state functions
authorTony Lindgren <tony@atomide.com>
Thu, 18 Jul 2013 15:15:04 +0000 (08:15 -0700)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 22 Jul 2013 23:23:27 +0000 (01:23 +0200)
There's no need to duplicate essentially the same functions. Let's
introduce static int pinctrl_pm_select_state() and make the other
related functions call that.

This allows us to add support later on for multiple active states,
and more optimized dynamic remuxing.

Note that we still need to export the various pinctrl_pm_select
functions as we want to keep struct pinctrl_state private to the
pinctrl code, and cannot replace those with inline functions.

Cc: Felipe Balbi <balbi@ti.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/core.c

index 5b272bfd261d6803fad6eaac61a3fa28dab4e767..a97b717e3ad31eedb41a73196122b8af6ab3eee7 100644 (file)
@@ -1227,23 +1227,36 @@ EXPORT_SYMBOL_GPL(pinctrl_force_default);
 #ifdef CONFIG_PM
 
 /**
- * pinctrl_pm_select_default_state() - select default pinctrl state for PM
+ * pinctrl_pm_select_state() - select pinctrl state for PM
  * @dev: device to select default state for
+ * @state: state to set
  */
-int pinctrl_pm_select_default_state(struct device *dev)
+static int pinctrl_pm_select_state(struct device *dev,
+                                  struct pinctrl_state *state)
 {
        struct dev_pin_info *pins = dev->pins;
        int ret;
 
-       if (!pins)
-               return 0;
-       if (IS_ERR(pins->default_state))
-               return 0; /* No default state */
-       ret = pinctrl_select_state(pins->p, pins->default_state);
+       if (IS_ERR(state))
+               return 0; /* No such state */
+       ret = pinctrl_select_state(pins->p, state);
        if (ret)
-               dev_err(dev, "failed to activate default pinctrl state\n");
+               dev_err(dev, "failed to activate pinctrl state %s\n",
+                       state->name);
        return ret;
 }
+
+/**
+ * pinctrl_pm_select_default_state() - select default pinctrl state for PM
+ * @dev: device to select default state for
+ */
+int pinctrl_pm_select_default_state(struct device *dev)
+{
+       if (!dev->pins)
+               return 0;
+
+       return pinctrl_pm_select_state(dev, dev->pins->default_state);
+}
 EXPORT_SYMBOL_GPL(pinctrl_pm_select_default_state);
 
 /**
@@ -1252,17 +1265,10 @@ EXPORT_SYMBOL_GPL(pinctrl_pm_select_default_state);
  */
 int pinctrl_pm_select_sleep_state(struct device *dev)
 {
-       struct dev_pin_info *pins = dev->pins;
-       int ret;
-
-       if (!pins)
+       if (!dev->pins)
                return 0;
-       if (IS_ERR(pins->sleep_state))
-               return 0; /* No sleep state */
-       ret = pinctrl_select_state(pins->p, pins->sleep_state);
-       if (ret)
-               dev_err(dev, "failed to activate pinctrl sleep state\n");
-       return ret;
+
+       return pinctrl_pm_select_state(dev, dev->pins->sleep_state);
 }
 EXPORT_SYMBOL_GPL(pinctrl_pm_select_sleep_state);
 
@@ -1272,17 +1278,10 @@ EXPORT_SYMBOL_GPL(pinctrl_pm_select_sleep_state);
  */
 int pinctrl_pm_select_idle_state(struct device *dev)
 {
-       struct dev_pin_info *pins = dev->pins;
-       int ret;
-
-       if (!pins)
+       if (!dev->pins)
                return 0;
-       if (IS_ERR(pins->idle_state))
-               return 0; /* No idle state */
-       ret = pinctrl_select_state(pins->p, pins->idle_state);
-       if (ret)
-               dev_err(dev, "failed to activate pinctrl idle state\n");
-       return ret;
+
+       return pinctrl_pm_select_state(dev, dev->pins->idle_state);
 }
 EXPORT_SYMBOL_GPL(pinctrl_pm_select_idle_state);
 #endif