pinctrl: allow exlusive GPIO/mux pin allocation
[cascardo/linux.git] / drivers / pinctrl / pinmux.c
index b874458..2546fa7 100644 (file)
@@ -107,6 +107,13 @@ static int pin_request(struct pinctrl_dev *pctldev,
                                desc->name, desc->gpio_owner, owner);
                        goto out;
                }
+               if (pctldev->desc->strict && 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->gpio_owner = owner;
        } else {
@@ -116,6 +123,12 @@ static int pin_request(struct pinctrl_dev *pctldev,
                                desc->name, desc->mux_owner, owner);
                        goto out;
                }
+               if (pctldev->desc->strict && 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->mux_usecount++;
                if (desc->mux_usecount > 1)