summaryrefslogtreecommitdiff
path: root/drivers/net/phy/micrel.c
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2016-04-26 15:29:00 -0600
committerJoe Hershberger <joe.hershberger@ni.com>2016-06-21 17:01:51 -0500
commitdad7b74045929ff10d93ec1dd60d0fd36fd9a527 (patch)
tree737e93fcc221aff1373ef362751f731f528c2838 /drivers/net/phy/micrel.c
parent9f823615af919c6b89f0b80197f009f78299dcde (diff)
downloadu-boot-imx-dad7b74045929ff10d93ec1dd60d0fd36fd9a527.zip
u-boot-imx-dad7b74045929ff10d93ec1dd60d0fd36fd9a527.tar.gz
u-boot-imx-dad7b74045929ff10d93ec1dd60d0fd36fd9a527.tar.bz2
net: rtl8169: fix switching between adapters
The rtl8169 driver uses a global variable to store the register address of the adapter being operated upon. This is updated to point at the correct adapter when sending or receiving a packet, or shutting down the adapter, but not when initializing the adapter. Consequently, switching between different adapters within the same U-Boot runtime does not work correctly since the driver programs the wrong registers during rtl8169_eth_start() -> rtl8169_common_start() -> rtl8169_hw_start(). Note that since rtl8169_eth_stop() does set the global variable, the second consecutive attempt to use the "new" adapter did work even before this patch, because each time network usage is shut down, the network core calls stop, which sets the variable so that the next start does actually initialize the hardware, and the adapter works. Equally, rtl8169_eth_probe() calls rtl_init() which sets the global, so if using only a single device, or if picking the "right" device (based on probe order) when multiple devices are present, ioaddr will already be set correctly from the get-go, so the issue does not occur. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers/net/phy/micrel.c')
0 files changed, 0 insertions, 0 deletions