diff options
author | Andrea Merello <andrea.merello@gmail.com> | 2019-10-04 16:53:32 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-10-05 04:07:45 +0300 |
commit | ea977d19d918324ad5b66953f051a6ed07d0a3c5 (patch) | |
tree | d9076da483121f02b41317ea7264c58d8601f817 | |
parent | b406472b5ad79ede8d10077f0c8f05505ace8b6d (diff) | |
download | linux-ea977d19d918324ad5b66953f051a6ed07d0a3c5.tar.xz |
net: phy: allow for reset line to be tied to a sleepy GPIO controller
mdio_device_reset() makes use of the atomic-pretending API flavor for
handling the PHY reset GPIO line.
I found no hint that mdio_device_reset() is called from atomic context
and indeed it uses usleep_range() since long time, so I would assume that
it is OK to sleep there.
This patch switch to gpiod_set_value_cansleep() in mdio_device_reset().
This is relevant if e.g. the PHY reset line is tied to a I2C GPIO
controller.
This has been tested on a ZynqMP board running an upstream 4.19 kernel and
then hand-ported on current kernel tree.
Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/phy/mdio_device.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/phy/mdio_device.c b/drivers/net/phy/mdio_device.c index e282600bd83e..c1d345c3cab3 100644 --- a/drivers/net/phy/mdio_device.c +++ b/drivers/net/phy/mdio_device.c @@ -121,7 +121,7 @@ void mdio_device_reset(struct mdio_device *mdiodev, int value) return; if (mdiodev->reset_gpio) - gpiod_set_value(mdiodev->reset_gpio, value); + gpiod_set_value_cansleep(mdiodev->reset_gpio, value); if (mdiodev->reset_ctrl) { if (value) |