diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2015-03-26 17:26:08 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-29 16:05:53 -0400 |
commit | cb6e0b3690f48dffb9397c3e868164b689420441 (patch) | |
tree | a25988482c05c81ebde78009ceea9d673060c453 /drivers/net/ethernet/smsc | |
parent | 7c3877f275ee6b479fa828947811c76d431501ca (diff) |
net: smc91x: make use of 4th parameter to devm_gpiod_get_index
Since 39b2bbe3d715 (gpio: add flags argument to gpiod_get*() functions)
which appeared in v3.17-rc1, the gpiod_get* functions take an additional
parameter that allows to specify direction and initial value for output.
Simplify accordingly.
Moreover use devm_gpiod_get_index_optional for still simpler handling.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/smsc')
-rw-r--r-- | drivers/net/ethernet/smsc/smc91x.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c index 8678e39aba08..5a1a3e7c93e7 100644 --- a/drivers/net/ethernet/smsc/smc91x.c +++ b/drivers/net/ethernet/smsc/smc91x.c | |||
@@ -2204,27 +2204,18 @@ static int try_toggle_control_gpio(struct device *dev, | |||
2204 | int value, unsigned int nsdelay) | 2204 | int value, unsigned int nsdelay) |
2205 | { | 2205 | { |
2206 | struct gpio_desc *gpio = *desc; | 2206 | struct gpio_desc *gpio = *desc; |
2207 | enum gpiod_flags flags = value ? GPIOD_OUT_LOW : GPIOD_OUT_HIGH; | ||
2207 | int res; | 2208 | int res; |
2208 | 2209 | ||
2209 | gpio = devm_gpiod_get_index(dev, name, index); | 2210 | gpio = devm_gpiod_get_index_optional(dev, name, index, flags); |
2210 | if (IS_ERR(gpio)) { | 2211 | if (IS_ERR(gpio)) |
2211 | if (PTR_ERR(gpio) == -ENOENT) { | ||
2212 | *desc = NULL; | ||
2213 | return 0; | ||
2214 | } | ||
2215 | |||
2216 | return PTR_ERR(gpio); | 2212 | return PTR_ERR(gpio); |
2213 | |||
2214 | if (gpio) { | ||
2215 | if (nsdelay) | ||
2216 | usleep_range(nsdelay, 2 * nsdelay); | ||
2217 | gpiod_set_value_cansleep(gpio, value); | ||
2217 | } | 2218 | } |
2218 | res = gpiod_direction_output(gpio, !value); | ||
2219 | if (res) { | ||
2220 | dev_err(dev, "unable to toggle gpio %s: %i\n", name, res); | ||
2221 | devm_gpiod_put(dev, gpio); | ||
2222 | gpio = NULL; | ||
2223 | return res; | ||
2224 | } | ||
2225 | if (nsdelay) | ||
2226 | usleep_range(nsdelay, 2 * nsdelay); | ||
2227 | gpiod_set_value_cansleep(gpio, value); | ||
2228 | *desc = gpio; | 2219 | *desc = gpio; |
2229 | 2220 | ||
2230 | return 0; | 2221 | return 0; |