From 40ca0b10c5fce66f19abfcfbf16e3c3588da0471 Mon Sep 17 00:00:00 2001 From: Florian Pose Date: Thu, 20 Nov 2008 12:36:19 +0000 Subject: [PATCH] Allow disabling interrupts on e100, because they are enabled after hardware reset. --- devices/e100-2.6.20-ethercat.c | 16 ++++++---------- devices/e100-2.6.24-ethercat.c | 16 ++++++---------- devices/e100-2.6.26-ethercat.c | 16 ++++++---------- 3 files changed, 18 insertions(+), 30 deletions(-) diff --git a/devices/e100-2.6.20-ethercat.c b/devices/e100-2.6.20-ethercat.c index 2bb80544..8c9ca398 100644 --- a/devices/e100-2.6.20-ethercat.c +++ b/devices/e100-2.6.20-ethercat.c @@ -659,15 +659,14 @@ static void e100_enable_irq(struct nic *nic) static void e100_disable_irq(struct nic *nic) { - unsigned long flags; + unsigned long flags = 0; - if (nic->ecdev) - return; - - spin_lock_irqsave(&nic->cmd_lock, flags); + if (!nic->ecdev) + spin_lock_irqsave(&nic->cmd_lock, flags); writeb(irq_mask_all, &nic->csr->scb.cmd_hi); e100_write_flush(nic); - spin_unlock_irqrestore(&nic->cmd_lock, flags); + if (!nic->ecdev) + spin_unlock_irqrestore(&nic->cmd_lock, flags); } static void e100_hw_reset(struct nic *nic) @@ -2095,7 +2094,7 @@ void e100_ec_poll(struct net_device *netdev) { struct nic *nic = netdev_priv(netdev); - e100_rx_clean(nic, NULL, 100); // FIXME + e100_rx_clean(nic, NULL, 100); e100_tx_clean(nic); if (jiffies - nic->ec_watchdog_jiffies >= 2 * HZ) { @@ -2132,9 +2131,6 @@ static void e100_netpoll(struct net_device *netdev) { struct nic *nic = netdev_priv(netdev); - if (nic->ecdev) - return; - e100_disable_irq(nic); e100_intr(nic->pdev->irq, netdev); e100_tx_clean(nic); diff --git a/devices/e100-2.6.24-ethercat.c b/devices/e100-2.6.24-ethercat.c index 843e10c4..0a6d91ff 100644 --- a/devices/e100-2.6.24-ethercat.c +++ b/devices/e100-2.6.24-ethercat.c @@ -669,15 +669,14 @@ static void e100_enable_irq(struct nic *nic) static void e100_disable_irq(struct nic *nic) { - unsigned long flags; + unsigned long flags = 0; - if (nic->ecdev) - return; - - spin_lock_irqsave(&nic->cmd_lock, flags); + if (!nic->ecdev) + spin_lock_irqsave(&nic->cmd_lock, flags); iowrite8(irq_mask_all, &nic->csr->scb.cmd_hi); e100_write_flush(nic); - spin_unlock_irqrestore(&nic->cmd_lock, flags); + if (!nic->ecdev) + spin_unlock_irqrestore(&nic->cmd_lock, flags); } static void e100_hw_reset(struct nic *nic) @@ -2114,7 +2113,7 @@ void e100_ec_poll(struct net_device *netdev) { struct nic *nic = netdev_priv(netdev); - e100_rx_clean(nic, NULL, 100); // FIXME + e100_rx_clean(nic, NULL, 100); e100_tx_clean(nic); if (jiffies - nic->ec_watchdog_jiffies >= 2 * HZ) { @@ -2147,9 +2146,6 @@ static void e100_netpoll(struct net_device *netdev) { struct nic *nic = netdev_priv(netdev); - if (nic->ecdev) - return; - e100_disable_irq(nic); e100_intr(nic->pdev->irq, netdev); e100_tx_clean(nic); diff --git a/devices/e100-2.6.26-ethercat.c b/devices/e100-2.6.26-ethercat.c index ffb2e508..31933df9 100644 --- a/devices/e100-2.6.26-ethercat.c +++ b/devices/e100-2.6.26-ethercat.c @@ -677,15 +677,14 @@ static void e100_enable_irq(struct nic *nic) static void e100_disable_irq(struct nic *nic) { - unsigned long flags; + unsigned long flags = 0; - if (nic->ecdev) - return; - - spin_lock_irqsave(&nic->cmd_lock, flags); + if (!nic->ecdev) + spin_lock_irqsave(&nic->cmd_lock, flags); iowrite8(irq_mask_all, &nic->csr->scb.cmd_hi); e100_write_flush(nic); - spin_unlock_irqrestore(&nic->cmd_lock, flags); + if (!nic->ecdev) + spin_unlock_irqrestore(&nic->cmd_lock, flags); } static void e100_hw_reset(struct nic *nic) @@ -2185,7 +2184,7 @@ void e100_ec_poll(struct net_device *netdev) { struct nic *nic = netdev_priv(netdev); - e100_rx_clean(nic, NULL, 100); // FIXME + e100_rx_clean(nic, NULL, 100); e100_tx_clean(nic); if (jiffies - nic->ec_watchdog_jiffies >= 2 * HZ) { @@ -2218,9 +2217,6 @@ static void e100_netpoll(struct net_device *netdev) { struct nic *nic = netdev_priv(netdev); - if (nic->ecdev) - return; - e100_disable_irq(nic); e100_intr(nic->pdev->irq, netdev); e100_tx_clean(nic);