summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/pinmux.c
diff options
context:
space:
mode:
authorVladimir Zapolskiy <vz@mleia.com>2016-12-24 19:59:28 -0500
committerLinus Walleij <linus.walleij@linaro.org>2016-12-30 04:11:05 -0500
commitb1eb8fabc83becdcc3b813f1fe6194f610fe7e9b (patch)
treef02b512821e5df12c0a31891daa1469062359d69 /drivers/pinctrl/pinmux.c
parent55e409502e02aeca224efa4cae69d2480879744b (diff)
pinctrl: simplify check for pin request conflicts
This is a non-functional change, which deletes code duplication in two of four if-if branches by reordering the checks. Functional identity of the code change can be shown by running through the whole truth table of boolean arguments. Signed-off-by: Vladimir Zapolskiy <vz@mleia.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinmux.c')
-rw-r--r--drivers/pinctrl/pinmux.c43
1 files changed, 15 insertions, 28 deletions
diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c
index ece702881946..9373146f3afc 100644
--- a/drivers/pinctrl/pinmux.c
+++ b/drivers/pinctrl/pinmux.c
@@ -99,37 +99,24 @@ static int pin_request(struct pinctrl_dev *pctldev,
99 dev_dbg(pctldev->dev, "request pin %d (%s) for %s\n", 99 dev_dbg(pctldev->dev, "request pin %d (%s) for %s\n",
100 pin, desc->name, owner); 100 pin, desc->name, owner);
101 101
102 if (gpio_range) { 102 if ((!gpio_range || ops->strict) &&
103 /* There's no need to support multiple GPIO requests */ 103 desc->mux_usecount && strcmp(desc->mux_owner, owner)) {
104 if (desc->gpio_owner) { 104 dev_err(pctldev->dev,
105 dev_err(pctldev->dev, 105 "pin %s already requested by %s; cannot claim for %s\n",
106 "pin %s already requested by %s; cannot claim for %s\n", 106 desc->name, desc->mux_owner, owner);
107 desc->name, desc->gpio_owner, owner); 107 goto out;
108 goto out; 108 }
109 } 109
110 if (ops->strict && desc->mux_usecount && 110 if ((gpio_range || ops->strict) && desc->gpio_owner) {
111 strcmp(desc->mux_owner, owner)) { 111 dev_err(pctldev->dev,
112 dev_err(pctldev->dev, 112 "pin %s already requested by %s; cannot claim for %s\n",
113 "pin %s already requested by %s; cannot claim for %s\n", 113 desc->name, desc->gpio_owner, owner);
114 desc->name, desc->mux_owner, owner); 114 goto out;
115 goto out; 115 }
116 }
117 116
117 if (gpio_range) {
118 desc->gpio_owner = owner; 118 desc->gpio_owner = owner;
119 } else { 119 } else {
120 if (desc->mux_usecount && strcmp(desc->mux_owner, owner)) {
121 dev_err(pctldev->dev,
122 "pin %s already requested by %s; cannot claim for %s\n",
123 desc->name, desc->mux_owner, owner);
124 goto out;
125 }
126 if (ops->strict && desc->gpio_owner) {
127 dev_err(pctldev->dev,
128 "pin %s already requested by %s; cannot claim for %s\n",
129 desc->name, desc->gpio_owner, owner);
130 goto out;
131 }
132
133 desc->mux_usecount++; 120 desc->mux_usecount++;
134 if (desc->mux_usecount > 1) 121 if (desc->mux_usecount > 1)
135 return 0; 122 return 0;