iphase.c (c0ed0b60f2c36acfebb53384a3b24d13b3a09309) iphase.c (d6c1d704ab5d2e13bebb096e415156a9c54a3d32)
1/******************************************************************************
2 iphase.c: Device driver for Interphase ATM PCI adapter cards
3 Author: Peter Wang <pwang@iphase.com>
4 Some fixes: Arnaldo Carvalho de Melo <acme@conectiva.com.br>
5 Interphase Corporation <www.iphase.com>
6 Version: 1.0
7*******************************************************************************
8

--- 2548 unchanged lines hidden (view full) ---

2557 if (iadev->phy_type & FE_25MBIT_PHY)
2558 ia_mb25_init(iadev);
2559 else if (iadev->phy_type & (FE_DS3_PHY | FE_E3_PHY))
2560 ia_suni_pm7345_init(iadev);
2561 else {
2562 error = suni_init(dev);
2563 if (error)
2564 goto err_free_rx;
1/******************************************************************************
2 iphase.c: Device driver for Interphase ATM PCI adapter cards
3 Author: Peter Wang <pwang@iphase.com>
4 Some fixes: Arnaldo Carvalho de Melo <acme@conectiva.com.br>
5 Interphase Corporation <www.iphase.com>
6 Version: 1.0
7*******************************************************************************
8

--- 2548 unchanged lines hidden (view full) ---

2557 if (iadev->phy_type & FE_25MBIT_PHY)
2558 ia_mb25_init(iadev);
2559 else if (iadev->phy_type & (FE_DS3_PHY | FE_E3_PHY))
2560 ia_suni_pm7345_init(iadev);
2561 else {
2562 error = suni_init(dev);
2563 if (error)
2564 goto err_free_rx;
2565 /*
2566 * Enable interrupt on loss of signal
2567 * SUNI_RSOP_CIE - 0x10
2568 * SUNI_RSOP_CIE_LOSE - 0x04
2569 */
2570 ia_phy_put(dev, ia_phy_get(dev, 0x10) | 0x04, 0x10);
2571#ifndef MODULE
2572 error = dev->phy->start(dev);
2573 if (error)
2574 goto err_free_rx;
2575#endif
2565 if (dev->phy->start) {
2566 error = dev->phy->start(dev);
2567 if (error)
2568 goto err_free_rx;
2569 }
2576 /* Get iadev->carrier_detect status */
2577 IaFrontEndIntr(iadev);
2578 }
2579 return 0;
2580
2581err_free_rx:
2582 ia_free_rx(iadev);
2583err_free_tx:

--- 649 unchanged lines hidden (view full) ---

3233 return ret;
3234}
3235
3236static void __devexit ia_remove_one(struct pci_dev *pdev)
3237{
3238 struct atm_dev *dev = pci_get_drvdata(pdev);
3239 IADEV *iadev = INPH_IA_DEV(dev);
3240
2570 /* Get iadev->carrier_detect status */
2571 IaFrontEndIntr(iadev);
2572 }
2573 return 0;
2574
2575err_free_rx:
2576 ia_free_rx(iadev);
2577err_free_tx:

--- 649 unchanged lines hidden (view full) ---

3227 return ret;
3228}
3229
3230static void __devexit ia_remove_one(struct pci_dev *pdev)
3231{
3232 struct atm_dev *dev = pci_get_drvdata(pdev);
3233 IADEV *iadev = INPH_IA_DEV(dev);
3234
3241 ia_phy_put(dev, ia_phy_get(dev,0x10) & ~(0x4), 0x10);
3235 /* Disable phy interrupts */
3236 ia_phy_put(dev, ia_phy_get(dev, SUNI_RSOP_CIE) & ~(SUNI_RSOP_CIE_LOSE),
3237 SUNI_RSOP_CIE);
3242 udelay(1);
3243
3238 udelay(1);
3239
3240 if (dev->phy && dev->phy->stop)
3241 dev->phy->stop(dev);
3242
3244 /* De-register device */
3245 free_irq(iadev->irq, dev);
3246 iadev_count--;
3247 ia_dev[iadev_count] = NULL;
3248 _ia_dev[iadev_count] = NULL;
3249 IF_EVENT(printk("deregistering iav at (itf:%d)\n", dev->number);)
3250 atm_dev_deregister(dev);
3251

--- 45 unchanged lines hidden ---
3243 /* De-register device */
3244 free_irq(iadev->irq, dev);
3245 iadev_count--;
3246 ia_dev[iadev_count] = NULL;
3247 _ia_dev[iadev_count] = NULL;
3248 IF_EVENT(printk("deregistering iav at (itf:%d)\n", dev->number);)
3249 atm_dev_deregister(dev);
3250

--- 45 unchanged lines hidden ---