]> git.baikalelectronics.ru Git - kernel.git/commit
net: bcmgenet: keep MAC in reset until PHY is up
authorDoug Berger <opendmb@gmail.com>
Mon, 16 Mar 2020 21:44:56 +0000 (14:44 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Mar 2020 04:00:15 +0000 (21:00 -0700)
commite7387286ca52758e05a3ff901e7ffefacc569d9a
tree3b51c9ee7a7eb38c6cba1feeb1340b25b79fa4ee
parent7ef9fa76de998289afb6b6385d92c4b7080bb1cd
net: bcmgenet: keep MAC in reset until PHY is up

As noted in commit 145555d2a457 ("net: bcmgenet: enable loopback
during UniMAC sw_reset") the UniMAC must be clocked at least 5
cycles while the sw_reset is asserted to ensure a clean reset.

That commit enabled local loopback to provide an Rx clock from the
GENET sourced Tx clk. However, when connected in MII mode the Tx
clk is sourced by the PHY so if an EPHY is not supplying clocks
(e.g. when the link is down) the UniMAC does not receive the
necessary clocks.

This commit extends the sw_reset window until the PHY reports that
the link is up thereby ensuring that the clocks are being provided
to the MAC to produce a clean reset.

One consequence is that if the system attempts to enter a Wake on
LAN suspend state when the PHY link has not been active the MAC
may not have had a chance to initialize cleanly. In this case, we
remove the sw_reset and enable the WoL reception path as normal
with the hope that the PHY will provide the necessary clocks to
drive the WoL blocks if the link becomes active after the system
has entered suspend.

Fixes: 83c070ed8c89 ("net: bcmgenet: add main driver file")
Signed-off-by: Doug Berger <opendmb@gmail.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/genet/bcmgenet.c
drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c
drivers/net/ethernet/broadcom/genet/bcmmii.c