forcedeth: preserve registers
Subsystems (2)
PATCH 5/5 forcedeth: preserve registers
Various registers need to be preserved before resetting the device.
Signed-off-by Ayaz Abdulla <[email protected]>
drivers/net/forcedeth.c +14 -0
@@ -1443,16 +1443,30 @@ {struct fe_priv *np =netdev_priv (dev);u8 __iomem *base =get_hwbase (dev); +u32 temp1, temp2, temp3;dprintk (KERN_DEBUG "%s: nv_mac_reset\n" , dev->name); +writel (NVREG_TXRXCTL_BIT2 |NVREG_TXRXCTL_RESET | np->txrxctl_bits, base + NvRegTxRxControl);pci_push (base); + +/* save registers since they will be cleared on reset */ + temp1 =readl (base + NvRegMacAddrA); + temp2 =readl (base + NvRegMacAddrB); + temp3 =readl (base + NvRegTransmitPoll); +writel (NVREG_MAC_RESET_ASSERT , base + NvRegMacReset);pci_push (base);udelay (NV_MAC_RESET_DELAY );writel (0 , base + NvRegMacReset);pci_push (base);udelay (NV_MAC_RESET_DELAY ); + +/* restore saved registers */ +writel (temp1, base + NvRegMacAddrA); +writel (temp2, base + NvRegMacAddrB); +writel (temp3, base + NvRegTransmitPoll); +writel (NVREG_TXRXCTL_BIT2 | np->txrxctl_bits, base + NvRegTxRxControl);pci_push (base); }
Jeff Garzik
AppliedQuoted 3 lines · Ayaz Abdulla
Various registers need to be preserved before resetting the device.
Signed-off-by Ayaz Abdulla <[email protected]>
applied