diff options
Diffstat (limited to 'drivers/char/specialix.c')
-rw-r--r-- | drivers/char/specialix.c | 18 |
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(); |