diff options
author | David Bauer <mail@david-bauer.net> | 2019-04-17 23:59:21 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-04-18 17:41:51 -0700 |
commit | 71dd6c0dff51b5f1fef2e9dfa6f6a948aac975f3 (patch) | |
tree | 8e6ec717ab9a043688ddab421f2518cd0095f246 /drivers/net/phy/mdio_device.c | |
parent | b54dd90cab00f5b64ed8ce533991c20bf781a3cd (diff) | |
download | lwn-71dd6c0dff51b5f1fef2e9dfa6f6a948aac975f3.tar.gz lwn-71dd6c0dff51b5f1fef2e9dfa6f6a948aac975f3.zip |
net: phy: add support for reset-controller
This commit adds support for PHY reset pins handled by a reset controller.
Signed-off-by: David Bauer <mail@david-bauer.net>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy/mdio_device.c')
-rw-r--r-- | drivers/net/phy/mdio_device.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/phy/mdio_device.c b/drivers/net/phy/mdio_device.c index 887076292e50..57668e0f9256 100644 --- a/drivers/net/phy/mdio_device.c +++ b/drivers/net/phy/mdio_device.c @@ -16,6 +16,7 @@ #include <linux/mii.h> #include <linux/module.h> #include <linux/phy.h> +#include <linux/reset.h> #include <linux/slab.h> #include <linux/string.h> #include <linux/unistd.h> @@ -116,10 +117,18 @@ void mdio_device_reset(struct mdio_device *mdiodev, int value) { unsigned int d; - if (!mdiodev->reset) + if (!mdiodev->reset && !mdiodev->reset_ctrl) return; - gpiod_set_value(mdiodev->reset, value); + if (mdiodev->reset) + gpiod_set_value(mdiodev->reset, value); + + if (mdiodev->reset_ctrl) { + if (value) + reset_control_assert(mdiodev->reset_ctrl); + else + reset_control_deassert(mdiodev->reset_ctrl); + } d = value ? mdiodev->reset_assert_delay : mdiodev->reset_deassert_delay; if (d) |