]> git.baikalelectronics.ru Git - kernel.git/commit
net: axienet: Re-initialize MDIO registers properly after reset
authorRobert Hancock <hancock@sedsystems.ca>
Thu, 6 Jun 2019 22:28:11 +0000 (16:28 -0600)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Jun 2019 23:24:29 +0000 (16:24 -0700)
commitdfc1b9015706a2d2326ca975bc75c9fd5faa7a4b
tree097f925ed05d6dd6b3c30b5a9a3141ecead25b50
parent92fa0ee2b42f34bcce68a0db0c49f6c9771108aa
net: axienet: Re-initialize MDIO registers properly after reset

The MDIO clock divisor register setting was only applied on the initial
startup when the driver was loaded. However, this setting is cleared
when the device is reset, such as would occur when the interface was
taken down and brought up again, and so the MDIO bus would be
non-functional afterwards.

Split up the MDIO bus setup and enable into separate functions and
re-enable the bus after a device reset, to ensure that the MDIO
registers are set properly. This also allows us to remove direct access
to MDIO registers in xilinx_axienet_main.c and centralize them all in
xilinx_axienet_mdio.c.

Also, lock the MDIO bus lock around the device reset process, to avoid
MDIO accesses from occurring while the MDIO is disabled during the reset.

Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/xilinx/xilinx_axienet.h
drivers/net/ethernet/xilinx/xilinx_axienet_main.c
drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c