patch-2.4.20 linux-2.4.20/drivers/net/tulip/interrupt.c
Next file: linux-2.4.20/drivers/net/tulip/tulip.h
Previous file: linux-2.4.20/drivers/net/tulip/eeprom.c
Back to the patch index
Back to the overall index
- Lines: 36
- Date:
Thu Nov 28 15:53:14 2002
- Orig file:
linux-2.4.19/drivers/net/tulip/interrupt.c
- Orig date:
Fri Nov 9 13:45:35 2001
diff -urN linux-2.4.19/drivers/net/tulip/interrupt.c linux-2.4.20/drivers/net/tulip/interrupt.c
@@ -291,6 +291,25 @@
#endif
}
+static inline void phy_interrupt (struct net_device *dev)
+{
+#ifdef __hppa__
+ int csr12 = inl(dev->base_addr + CSR12) & 0xff;
+ struct tulip_private *tp = (struct tulip_private *)dev->priv;
+
+ if (csr12 != tp->csr12_shadow) {
+ /* ack interrupt */
+ outl(csr12 | 0x02, dev->base_addr + CSR12);
+ tp->csr12_shadow = csr12;
+ /* do link change stuff */
+ spin_lock(&tp->lock);
+ tulip_check_duplex(dev);
+ spin_unlock(&tp->lock);
+ /* clear irq ack bit */
+ outl(csr12 & ~0x02, dev->base_addr + CSR12);
+ }
+#endif
+}
/* The interrupt handler does all of the Rx thread work and cleans up
after the Tx thread. */
@@ -313,6 +332,9 @@
/* Let's see whether the interrupt really is for us */
csr5 = inl(ioaddr + CSR5);
+ if (tp->flags & HAS_PHY_IRQ)
+ phy_interrupt (dev);
+
if ((csr5 & (NormalIntr|AbnormalIntr)) == 0)
return;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)