diff options
author | Vladimir Zapolskiy <vz@mleia.com> | 2016-12-24 19:59:28 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2016-12-30 04:11:05 -0500 |
commit | b1eb8fabc83becdcc3b813f1fe6194f610fe7e9b (patch) | |
tree | f02b512821e5df12c0a31891daa1469062359d69 /drivers/pinctrl/pinmux.c | |
parent | 55e409502e02aeca224efa4cae69d2480879744b (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.c | 43 |
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; |