|
@@ -2562,17 +2562,11 @@ static int __devinit ia_start(struct atm_dev *dev)
|
|
|
error = suni_init(dev);
|
|
|
if (error)
|
|
|
goto err_free_rx;
|
|
|
- /*
|
|
|
- * Enable interrupt on loss of signal
|
|
|
- * SUNI_RSOP_CIE - 0x10
|
|
|
- * SUNI_RSOP_CIE_LOSE - 0x04
|
|
|
- */
|
|
|
- ia_phy_put(dev, ia_phy_get(dev, 0x10) | 0x04, 0x10);
|
|
|
-#ifndef MODULE
|
|
|
- error = dev->phy->start(dev);
|
|
|
- if (error)
|
|
|
- goto err_free_rx;
|
|
|
-#endif
|
|
|
+ if (dev->phy->start) {
|
|
|
+ error = dev->phy->start(dev);
|
|
|
+ if (error)
|
|
|
+ goto err_free_rx;
|
|
|
+ }
|
|
|
/* Get iadev->carrier_detect status */
|
|
|
IaFrontEndIntr(iadev);
|
|
|
}
|
|
@@ -3238,9 +3232,14 @@ static void __devexit ia_remove_one(struct pci_dev *pdev)
|
|
|
struct atm_dev *dev = pci_get_drvdata(pdev);
|
|
|
IADEV *iadev = INPH_IA_DEV(dev);
|
|
|
|
|
|
- ia_phy_put(dev, ia_phy_get(dev,0x10) & ~(0x4), 0x10);
|
|
|
+ /* Disable phy interrupts */
|
|
|
+ ia_phy_put(dev, ia_phy_get(dev, SUNI_RSOP_CIE) & ~(SUNI_RSOP_CIE_LOSE),
|
|
|
+ SUNI_RSOP_CIE);
|
|
|
udelay(1);
|
|
|
|
|
|
+ if (dev->phy && dev->phy->stop)
|
|
|
+ dev->phy->stop(dev);
|
|
|
+
|
|
|
/* De-register device */
|
|
|
free_irq(iadev->irq, dev);
|
|
|
iadev_count--;
|