diff options
author | Ley Foon Tan <ley.foon.tan@intel.com> | 2018-06-14 18:45:23 +0800 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-07-09 15:28:28 -0400 |
commit | 495c70f9dfad1a5428ec84b52e8667ea4760ecd6 (patch) | |
tree | 0dacb38b033e0f52bce37030019020619c9766ba /drivers/net/designware.c | |
parent | b051eecbda1567f6795c7d127a68dd55573d8fa0 (diff) |
net: designware: Add reset ctrl to driver
Add code to reset all reset signals as in Ethernet DT node. A reset
property is an optional feature, so only print out a warning and do not
fail if a reset property is not present.
If a reset property is discovered, then use it to deassert, thus
bringing the IP out of reset.
Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers/net/designware.c')
-rw-r--r-- | drivers/net/designware.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 10a87096b7..19db0a8114 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -15,6 +15,7 @@ #include <miiphy.h> #include <malloc.h> #include <pci.h> +#include <reset.h> #include <linux/compiler.h> #include <linux/err.h> #include <linux/kernel.h> @@ -673,6 +674,7 @@ int designware_eth_probe(struct udevice *dev) u32 iobase = pdata->iobase; ulong ioaddr; int ret; + struct reset_ctl_bulk reset_bulk; #ifdef CONFIG_CLK int i, err, clock_nb; @@ -719,6 +721,12 @@ int designware_eth_probe(struct udevice *dev) } #endif + ret = reset_get_bulk(dev, &reset_bulk); + if (ret) + dev_warn(dev, "Can't get reset: %d\n", ret); + else + reset_deassert_bulk(&reset_bulk); + #ifdef CONFIG_DM_PCI /* * If we are on PCI bus, either directly attached to a PCI root port, |