123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- --- a/drivers/net/ethernet/korina.c
- +++ b/drivers/net/ethernet/korina.c
- @@ -122,8 +122,6 @@ struct korina_private {
-
- int rx_irq;
- int tx_irq;
- - int ovr_irq;
- - int und_irq;
-
- spinlock_t lock; /* NIC xmit lock */
-
- @@ -891,8 +889,6 @@ static void korina_restart_task(struct w
- */
- disable_irq(lp->rx_irq);
- disable_irq(lp->tx_irq);
- - disable_irq(lp->ovr_irq);
- - disable_irq(lp->und_irq);
-
- writel(readl(&lp->tx_dma_regs->dmasm) |
- DMA_STAT_FINI | DMA_STAT_ERR,
- @@ -911,40 +907,10 @@ static void korina_restart_task(struct w
- }
- korina_multicast_list(dev);
-
- - enable_irq(lp->und_irq);
- - enable_irq(lp->ovr_irq);
- enable_irq(lp->tx_irq);
- enable_irq(lp->rx_irq);
- }
-
- -static void korina_clear_and_restart(struct net_device *dev, u32 value)
- -{
- - struct korina_private *lp = netdev_priv(dev);
- -
- - netif_stop_queue(dev);
- - writel(value, &lp->eth_regs->ethintfc);
- - schedule_work(&lp->restart_task);
- -}
- -
- -/* Ethernet Tx Underflow interrupt */
- -static irqreturn_t korina_und_interrupt(int irq, void *dev_id)
- -{
- - struct net_device *dev = dev_id;
- - struct korina_private *lp = netdev_priv(dev);
- - unsigned int und;
- -
- - spin_lock(&lp->lock);
- -
- - und = readl(&lp->eth_regs->ethintfc);
- -
- - if (und & ETH_INT_FC_UND)
- - korina_clear_and_restart(dev, und & ~ETH_INT_FC_UND);
- -
- - spin_unlock(&lp->lock);
- -
- - return IRQ_HANDLED;
- -}
- -
- static void korina_tx_timeout(struct net_device *dev)
- {
- struct korina_private *lp = netdev_priv(dev);
- @@ -952,25 +918,6 @@ static void korina_tx_timeout(struct net
- schedule_work(&lp->restart_task);
- }
-
- -/* Ethernet Rx Overflow interrupt */
- -static irqreturn_t
- -korina_ovr_interrupt(int irq, void *dev_id)
- -{
- - struct net_device *dev = dev_id;
- - struct korina_private *lp = netdev_priv(dev);
- - unsigned int ovr;
- -
- - spin_lock(&lp->lock);
- - ovr = readl(&lp->eth_regs->ethintfc);
- -
- - if (ovr & ETH_INT_FC_OVR)
- - korina_clear_and_restart(dev, ovr & ~ETH_INT_FC_OVR);
- -
- - spin_unlock(&lp->lock);
- -
- - return IRQ_HANDLED;
- -}
- -
- #ifdef CONFIG_NET_POLL_CONTROLLER
- static void korina_poll_controller(struct net_device *dev)
- {
- @@ -993,8 +940,7 @@ static int korina_open(struct net_device
- }
-
- /* Install the interrupt handler
- - * that handles the Done Finished
- - * Ovr and Und Events */
- + * that handles the Done Finished */
- ret = request_irq(lp->rx_irq, korina_rx_dma_interrupt,
- 0, "Korina ethernet Rx", dev);
- if (ret < 0) {
- @@ -1010,31 +956,10 @@ static int korina_open(struct net_device
- goto err_free_rx_irq;
- }
-
- - /* Install handler for overrun error. */
- - ret = request_irq(lp->ovr_irq, korina_ovr_interrupt,
- - 0, "Ethernet Overflow", dev);
- - if (ret < 0) {
- - printk(KERN_ERR "%s: unable to get OVR IRQ %d\n",
- - dev->name, lp->ovr_irq);
- - goto err_free_tx_irq;
- - }
- -
- - /* Install handler for underflow error. */
- - ret = request_irq(lp->und_irq, korina_und_interrupt,
- - 0, "Ethernet Underflow", dev);
- - if (ret < 0) {
- - printk(KERN_ERR "%s: unable to get UND IRQ %d\n",
- - dev->name, lp->und_irq);
- - goto err_free_ovr_irq;
- - }
- mod_timer(&lp->media_check_timer, jiffies + 1);
- out:
- return ret;
-
- -err_free_ovr_irq:
- - free_irq(lp->ovr_irq, dev);
- -err_free_tx_irq:
- - free_irq(lp->tx_irq, dev);
- err_free_rx_irq:
- free_irq(lp->rx_irq, dev);
- err_release:
- @@ -1052,8 +977,6 @@ static int korina_close(struct net_devic
- /* Disable interrupts */
- disable_irq(lp->rx_irq);
- disable_irq(lp->tx_irq);
- - disable_irq(lp->ovr_irq);
- - disable_irq(lp->und_irq);
-
- korina_abort_tx(dev);
- tmp = readl(&lp->tx_dma_regs->dmasm);
- @@ -1073,8 +996,6 @@ static int korina_close(struct net_devic
-
- free_irq(lp->rx_irq, dev);
- free_irq(lp->tx_irq, dev);
- - free_irq(lp->ovr_irq, dev);
- - free_irq(lp->und_irq, dev);
-
- return 0;
- }
- @@ -1113,8 +1034,6 @@ static int korina_probe(struct platform_
-
- lp->rx_irq = platform_get_irq_byname(pdev, "korina_rx");
- lp->tx_irq = platform_get_irq_byname(pdev, "korina_tx");
- - lp->ovr_irq = platform_get_irq_byname(pdev, "korina_ovr");
- - lp->und_irq = platform_get_irq_byname(pdev, "korina_und");
-
- r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "korina_regs");
- dev->base_addr = r->start;
|