aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/specialix.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/specialix.c')
-rw-r--r--drivers/char/specialix.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/char/specialix.c b/drivers/char/specialix.c
index 5ff83df67b44..4b5b5b78acb4 100644
--- a/drivers/char/specialix.c
+++ b/drivers/char/specialix.c
@@ -443,8 +443,7 @@ void missed_irq (unsigned long data)
443 spin_unlock_irqrestore(&bp->lock, flags); 443 spin_unlock_irqrestore(&bp->lock, flags);
444 if (irq) { 444 if (irq) {
445 printk (KERN_INFO "Missed interrupt... Calling int from timer. \n"); 445 printk (KERN_INFO "Missed interrupt... Calling int from timer. \n");
446 sx_interrupt (((struct specialix_board *)data)->irq, 446 sx_interrupt (-1, bp);
447 (void*)data);
448 } 447 }
449 mod_timer(&missed_irq_timer, jiffies + sx_poll); 448 mod_timer(&missed_irq_timer, jiffies + sx_poll);
450} 449}
@@ -862,23 +861,22 @@ static inline void sx_check_modem(struct specialix_board * bp)
862 861
863 862
864/* The main interrupt processing routine */ 863/* The main interrupt processing routine */
865static irqreturn_t sx_interrupt(int irq, void *dev_id) 864static irqreturn_t sx_interrupt(int dummy, void *dev_id)
866{ 865{
867 unsigned char status; 866 unsigned char status;
868 unsigned char ack; 867 unsigned char ack;
869 struct specialix_board *bp; 868 struct specialix_board *bp = dev_id;
870 unsigned long loop = 0; 869 unsigned long loop = 0;
871 int saved_reg; 870 int saved_reg;
872 unsigned long flags; 871 unsigned long flags;
873 872
874 func_enter(); 873 func_enter();
875 874
876 bp = dev_id;
877 spin_lock_irqsave(&bp->lock, flags); 875 spin_lock_irqsave(&bp->lock, flags);
878 876
879 dprintk (SX_DEBUG_FLOW, "enter %s port %d room: %ld\n", __FUNCTION__, port_No(sx_get_port(bp, "INT")), SERIAL_XMIT_SIZE - sx_get_port(bp, "ITN")->xmit_cnt - 1); 877 dprintk (SX_DEBUG_FLOW, "enter %s port %d room: %ld\n", __FUNCTION__, port_No(sx_get_port(bp, "INT")), SERIAL_XMIT_SIZE - sx_get_port(bp, "ITN")->xmit_cnt - 1);
880 if (!(bp->flags & SX_BOARD_ACTIVE)) { 878 if (!(bp->flags & SX_BOARD_ACTIVE)) {
881 dprintk (SX_DEBUG_IRQ, "sx: False interrupt. irq %d.\n", irq); 879 dprintk (SX_DEBUG_IRQ, "sx: False interrupt. irq %d.\n", bp->irq);
882 spin_unlock_irqrestore(&bp->lock, flags); 880 spin_unlock_irqrestore(&bp->lock, flags);
883 func_exit(); 881 func_exit();
884 return IRQ_NONE; 882 return IRQ_NONE;