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.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/char/specialix.c b/drivers/char/specialix.c
index 20946f5127e0..baf7234b6e66 100644
--- a/drivers/char/specialix.c
+++ b/drivers/char/specialix.c
@@ -459,10 +459,9 @@ void missed_irq (unsigned long data)
459 if (irq) { 459 if (irq) {
460 printk (KERN_INFO "Missed interrupt... Calling int from timer. \n"); 460 printk (KERN_INFO "Missed interrupt... Calling int from timer. \n");
461 sx_interrupt (((struct specialix_board *)data)->irq, 461 sx_interrupt (((struct specialix_board *)data)->irq,
462 (void*)data, NULL); 462 (void*)data);
463 } 463 }
464 missed_irq_timer.expires = jiffies + sx_poll; 464 mod_timer(&missed_irq_timer, jiffies + sx_poll);
465 add_timer (&missed_irq_timer);
466} 465}
467#endif 466#endif
468 467
@@ -597,11 +596,8 @@ static int sx_probe(struct specialix_board *bp)
597 dprintk (SX_DEBUG_INIT, " GFCR = 0x%02x\n", sx_in_off(bp, CD186x_GFRCR) ); 596 dprintk (SX_DEBUG_INIT, " GFCR = 0x%02x\n", sx_in_off(bp, CD186x_GFRCR) );
598 597
599#ifdef SPECIALIX_TIMER 598#ifdef SPECIALIX_TIMER
600 init_timer (&missed_irq_timer); 599 setup_timer(&missed_irq_timer, missed_irq, (unsigned long)bp);
601 missed_irq_timer.function = missed_irq; 600 mod_timer(&missed_irq_timer, jiffies + sx_poll);
602 missed_irq_timer.data = (unsigned long) bp;
603 missed_irq_timer.expires = jiffies + sx_poll;
604 add_timer (&missed_irq_timer);
605#endif 601#endif
606 602
607 printk(KERN_INFO"sx%d: specialix IO8+ board detected at 0x%03x, IRQ %d, CD%d Rev. %c.\n", 603 printk(KERN_INFO"sx%d: specialix IO8+ board detected at 0x%03x, IRQ %d, CD%d Rev. %c.\n",
@@ -2350,10 +2346,8 @@ static void do_softint(struct work_struct *work)
2350 return; 2346 return;
2351 } 2347 }
2352 2348
2353 if (test_and_clear_bit(RS_EVENT_WRITE_WAKEUP, &port->event)) { 2349 if (test_and_clear_bit(RS_EVENT_WRITE_WAKEUP, &port->event))
2354 tty_wakeup(tty); 2350 tty_wakeup(tty);
2355 //wake_up_interruptible(&tty->write_wait);
2356 }
2357 2351
2358 func_exit(); 2352 func_exit();
2359} 2353}
@@ -2561,7 +2555,7 @@ static void __exit specialix_exit_module(void)
2561 if (sx_board[i].flags & SX_BOARD_PRESENT) 2555 if (sx_board[i].flags & SX_BOARD_PRESENT)
2562 sx_release_io_range(&sx_board[i]); 2556 sx_release_io_range(&sx_board[i]);
2563#ifdef SPECIALIX_TIMER 2557#ifdef SPECIALIX_TIMER
2564 del_timer (&missed_irq_timer); 2558 del_timer_sync(&missed_irq_timer);
2565#endif 2559#endif
2566 2560
2567 func_exit(); 2561 func_exit();