diff options
Diffstat (limited to 'drivers/char/n_r3964.c')
-rw-r--r-- | drivers/char/n_r3964.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/char/n_r3964.c b/drivers/char/n_r3964.c index 3f6486e9f1ec..902169062332 100644 --- a/drivers/char/n_r3964.c +++ b/drivers/char/n_r3964.c | |||
@@ -376,8 +376,9 @@ static void put_char(struct r3964_info *pInfo, unsigned char ch) | |||
376 | if (tty == NULL) | 376 | if (tty == NULL) |
377 | return; | 377 | return; |
378 | 378 | ||
379 | if (tty->driver->put_char) { | 379 | /* FIXME: put_char should not be called from an IRQ */ |
380 | tty->driver->put_char(tty, ch); | 380 | if (tty->ops->put_char) { |
381 | tty->ops->put_char(tty, ch); | ||
381 | } | 382 | } |
382 | pInfo->bcc ^= ch; | 383 | pInfo->bcc ^= ch; |
383 | } | 384 | } |
@@ -386,12 +387,9 @@ static void flush(struct r3964_info *pInfo) | |||
386 | { | 387 | { |
387 | struct tty_struct *tty = pInfo->tty; | 388 | struct tty_struct *tty = pInfo->tty; |
388 | 389 | ||
389 | if (tty == NULL) | 390 | if (tty == NULL || tty->ops->flush_chars == NULL) |
390 | return; | 391 | return; |
391 | 392 | tty->ops->flush_chars(tty); | |
392 | if (tty->driver->flush_chars) { | ||
393 | tty->driver->flush_chars(tty); | ||
394 | } | ||
395 | } | 393 | } |
396 | 394 | ||
397 | static void trigger_transmit(struct r3964_info *pInfo) | 395 | static void trigger_transmit(struct r3964_info *pInfo) |
@@ -449,12 +447,11 @@ static void transmit_block(struct r3964_info *pInfo) | |||
449 | struct r3964_block_header *pBlock = pInfo->tx_first; | 447 | struct r3964_block_header *pBlock = pInfo->tx_first; |
450 | int room = 0; | 448 | int room = 0; |
451 | 449 | ||
452 | if ((tty == NULL) || (pBlock == NULL)) { | 450 | if (tty == NULL || pBlock == NULL) { |
453 | return; | 451 | return; |
454 | } | 452 | } |
455 | 453 | ||
456 | if (tty->driver->write_room) | 454 | room = tty_write_room(tty); |
457 | room = tty->driver->write_room(tty); | ||
458 | 455 | ||
459 | TRACE_PS("transmit_block %p, room %d, length %d", | 456 | TRACE_PS("transmit_block %p, room %d, length %d", |
460 | pBlock, room, pBlock->length); | 457 | pBlock, room, pBlock->length); |