From: Sonic Zhang <[email protected]>

The blackfin pinmux and gpio controller doesn't allow user to set up 1 pin
for both GPIO and peripheral function. So, check both gpio_owner and
mux_owner before approving the pin request.

Signed-off-by: Sonic Zhang <[email protected]>
---
 drivers/pinctrl/pinmux.c |   28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c
index b874458..b58b97c 100644
--- a/drivers/pinctrl/pinmux.c
+++ b/drivers/pinctrl/pinmux.c
@@ -99,24 +99,24 @@ static int pin_request(struct pinctrl_dev *pctldev,
        dev_dbg(pctldev->dev, "request pin %d (%s) for %s\n",
                pin, desc->name, owner);
 
+       if (desc->gpio_owner) {
+               dev_err(pctldev->dev,
+                       "pin %s already requested by %s; cannot claim for %s\n",
+                       desc->name, desc->gpio_owner, owner);
+               goto out;
+       }
+
+       if (desc->mux_usecount && strcmp(desc->mux_owner, owner)) {
+               dev_err(pctldev->dev,
+                       "pin %s already requested by %s; cannot claim for %s\n",
+                       desc->name, desc->mux_owner, owner);
+               goto out;
+       }
+
        if (gpio_range) {
                /* There's no need to support multiple GPIO requests */
-               if (desc->gpio_owner) {
-                       dev_err(pctldev->dev,
-                               "pin %s already requested by %s; cannot claim 
for %s\n",
-                               desc->name, desc->gpio_owner, owner);
-                       goto out;
-               }
-
                desc->gpio_owner = owner;
        } else {
-               if (desc->mux_usecount && strcmp(desc->mux_owner, owner)) {
-                       dev_err(pctldev->dev,
-                               "pin %s already requested by %s; cannot claim 
for %s\n",
-                               desc->name, desc->mux_owner, owner);
-                       goto out;
-               }
-
                desc->mux_usecount++;
                if (desc->mux_usecount > 1)
                        return 0;
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to