diff options
| author | Jiri Slaby <jslaby@suse.cz> | 2012-03-05 08:52:37 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-03-08 15:48:27 -0500 |
| commit | 9aead90a7f5772fc74f733242d953688748b0ce4 (patch) | |
| tree | a724bf41cbd92be7b04122c262f75f257814b1e1 /arch/ia64/hp | |
| parent | 3a5c24232463b4978acf8d8668becbf515d30a36 (diff) | |
TTY: simserial, use tty_port_open
So now we convert startup to be ->activate of tty_port. This means we
no longer care about INITIALIZED and TTY_IO_ERROR flags.
After we have ->activate much of the code may go as it duplicates what
tty_port_open does. In this case tty_port_open adds block_til_ready to
the path. But we do not define carrier hooks, so it is a noop.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/ia64/hp')
| -rw-r--r-- | arch/ia64/hp/sim/simserial.c | 64 |
1 files changed, 5 insertions, 59 deletions
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c index b3ec91c9fc71..e9c5fb7b923d 100644 --- a/arch/ia64/hp/sim/simserial.c +++ b/arch/ia64/hp/sim/simserial.c | |||
| @@ -473,9 +473,10 @@ static void rs_hangup(struct tty_struct *tty) | |||
| 473 | } | 473 | } |
| 474 | 474 | ||
| 475 | 475 | ||
| 476 | static int startup(struct tty_struct *tty, struct serial_state *state) | 476 | static int activate(struct tty_port *port, struct tty_struct *tty) |
| 477 | { | 477 | { |
| 478 | struct tty_port *port = &state->port; | 478 | struct serial_state *state = container_of(port, struct serial_state, |
| 479 | port); | ||
| 479 | unsigned long flags; | 480 | unsigned long flags; |
| 480 | int retval=0; | 481 | int retval=0; |
| 481 | unsigned long page; | 482 | unsigned long page; |
| @@ -486,20 +487,11 @@ static int startup(struct tty_struct *tty, struct serial_state *state) | |||
| 486 | 487 | ||
| 487 | local_irq_save(flags); | 488 | local_irq_save(flags); |
| 488 | 489 | ||
| 489 | if (port->flags & ASYNC_INITIALIZED) { | ||
| 490 | free_page(page); | ||
| 491 | goto errout; | ||
| 492 | } | ||
| 493 | |||
| 494 | if (state->xmit.buf) | 490 | if (state->xmit.buf) |
| 495 | free_page(page); | 491 | free_page(page); |
| 496 | else | 492 | else |
| 497 | state->xmit.buf = (unsigned char *) page; | 493 | state->xmit.buf = (unsigned char *) page; |
| 498 | 494 | ||
| 499 | #ifdef SIMSERIAL_DEBUG | ||
| 500 | printk("startup: ttys%d (irq %d)...", state->line, state->irq); | ||
| 501 | #endif | ||
| 502 | |||
| 503 | /* | 495 | /* |
| 504 | * Allocate the IRQ if necessary | 496 | * Allocate the IRQ if necessary |
| 505 | */ | 497 | */ |
| @@ -510,18 +502,8 @@ static int startup(struct tty_struct *tty, struct serial_state *state) | |||
| 510 | goto errout; | 502 | goto errout; |
| 511 | } | 503 | } |
| 512 | 504 | ||
| 513 | clear_bit(TTY_IO_ERROR, &tty->flags); | ||
| 514 | |||
| 515 | state->xmit.head = state->xmit.tail = 0; | 505 | state->xmit.head = state->xmit.tail = 0; |
| 516 | 506 | ||
| 517 | #if 0 | ||
| 518 | /* | ||
| 519 | * Set up serial timers... | ||
| 520 | */ | ||
| 521 | timer_table[RS_TIMER].expires = jiffies + 2*HZ/100; | ||
| 522 | timer_active |= 1 << RS_TIMER; | ||
| 523 | #endif | ||
| 524 | |||
| 525 | /* | 507 | /* |
| 526 | * Set up the tty->alt_speed kludge | 508 | * Set up the tty->alt_speed kludge |
| 527 | */ | 509 | */ |
| @@ -534,10 +516,6 @@ static int startup(struct tty_struct *tty, struct serial_state *state) | |||
| 534 | if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) | 516 | if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) |
| 535 | tty->alt_speed = 460800; | 517 | tty->alt_speed = 460800; |
| 536 | 518 | ||
| 537 | port->flags |= ASYNC_INITIALIZED; | ||
| 538 | local_irq_restore(flags); | ||
| 539 | return 0; | ||
| 540 | |||
| 541 | errout: | 519 | errout: |
| 542 | local_irq_restore(flags); | 520 | local_irq_restore(flags); |
| 543 | return retval; | 521 | return retval; |
| @@ -554,41 +532,11 @@ static int rs_open(struct tty_struct *tty, struct file * filp) | |||
| 554 | { | 532 | { |
| 555 | struct serial_state *info = rs_table + tty->index; | 533 | struct serial_state *info = rs_table + tty->index; |
| 556 | struct tty_port *port = &info->port; | 534 | struct tty_port *port = &info->port; |
| 557 | int retval; | ||
| 558 | 535 | ||
| 559 | port->count++; | ||
| 560 | tty_port_tty_set(port, tty); | ||
| 561 | tty->driver_data = info; | 536 | tty->driver_data = info; |
| 562 | tty->port = port; | ||
| 563 | |||
| 564 | #ifdef SIMSERIAL_DEBUG | ||
| 565 | printk("rs_open %s, count = %d\n", tty->name, port->count); | ||
| 566 | #endif | ||
| 567 | tty->low_latency = (port->flags & ASYNC_LOW_LATENCY) ? 1 : 0; | 537 | tty->low_latency = (port->flags & ASYNC_LOW_LATENCY) ? 1 : 0; |
| 568 | 538 | ||
| 569 | /* | 539 | /* |
| 570 | * If the port is the middle of closing, bail out now | ||
| 571 | */ | ||
| 572 | if (tty_hung_up_p(filp) || (port->flags & ASYNC_CLOSING)) { | ||
| 573 | if (port->flags & ASYNC_CLOSING) | ||
| 574 | interruptible_sleep_on(&port->close_wait); | ||
| 575 | #ifdef SERIAL_DO_RESTART | ||
| 576 | return ((port->flags & ASYNC_HUP_NOTIFY) ? | ||
| 577 | -EAGAIN : -ERESTARTSYS); | ||
| 578 | #else | ||
| 579 | return -EAGAIN; | ||
| 580 | #endif | ||
| 581 | } | ||
| 582 | |||
| 583 | /* | ||
| 584 | * Start up serial port | ||
| 585 | */ | ||
| 586 | retval = startup(tty, info); | ||
| 587 | if (retval) { | ||
| 588 | return retval; | ||
| 589 | } | ||
| 590 | |||
| 591 | /* | ||
| 592 | * figure out which console to use (should be one already) | 540 | * figure out which console to use (should be one already) |
| 593 | */ | 541 | */ |
| 594 | console = console_drivers; | 542 | console = console_drivers; |
| @@ -597,10 +545,7 @@ static int rs_open(struct tty_struct *tty, struct file * filp) | |||
| 597 | console = console->next; | 545 | console = console->next; |
| 598 | } | 546 | } |
| 599 | 547 | ||
| 600 | #ifdef SIMSERIAL_DEBUG | 548 | return tty_port_open(port, tty, filp); |
| 601 | printk("rs_open ttys%d successful\n", info->line); | ||
| 602 | #endif | ||
| 603 | return 0; | ||
| 604 | } | 549 | } |
| 605 | 550 | ||
| 606 | /* | 551 | /* |
| @@ -669,6 +614,7 @@ static const struct tty_operations hp_ops = { | |||
| 669 | }; | 614 | }; |
| 670 | 615 | ||
| 671 | static const struct tty_port_operations hp_port_ops = { | 616 | static const struct tty_port_operations hp_port_ops = { |
| 617 | .activate = activate, | ||
| 672 | }; | 618 | }; |
| 673 | 619 | ||
| 674 | /* | 620 | /* |
