diff options
Diffstat (limited to 'drivers/tty/serial/68328serial.c')
-rw-r--r-- | drivers/tty/serial/68328serial.c | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/drivers/tty/serial/68328serial.c b/drivers/tty/serial/68328serial.c index de0160e3f8c4..d5bfd41707e7 100644 --- a/drivers/tty/serial/68328serial.c +++ b/drivers/tty/serial/68328serial.c | |||
@@ -393,28 +393,6 @@ static void do_softint(struct work_struct *work) | |||
393 | #endif | 393 | #endif |
394 | } | 394 | } |
395 | 395 | ||
396 | /* | ||
397 | * This routine is called from the scheduler tqueue when the interrupt | ||
398 | * routine has signalled that a hangup has occurred. The path of | ||
399 | * hangup processing is: | ||
400 | * | ||
401 | * serial interrupt routine -> (scheduler tqueue) -> | ||
402 | * do_serial_hangup() -> tty->hangup() -> rs_hangup() | ||
403 | * | ||
404 | */ | ||
405 | static void do_serial_hangup(struct work_struct *work) | ||
406 | { | ||
407 | struct m68k_serial *info = container_of(work, struct m68k_serial, tqueue_hangup); | ||
408 | struct tty_struct *tty; | ||
409 | |||
410 | tty = info->tty; | ||
411 | if (!tty) | ||
412 | return; | ||
413 | |||
414 | tty_hangup(tty); | ||
415 | } | ||
416 | |||
417 | |||
418 | static int startup(struct m68k_serial * info) | 396 | static int startup(struct m68k_serial * info) |
419 | { | 397 | { |
420 | m68328_uart *uart = &uart_addr[info->line]; | 398 | m68328_uart *uart = &uart_addr[info->line]; |
@@ -967,7 +945,7 @@ static void send_break(struct m68k_serial * info, unsigned int duration) | |||
967 | local_irq_restore(flags); | 945 | local_irq_restore(flags); |
968 | } | 946 | } |
969 | 947 | ||
970 | static int rs_ioctl(struct tty_struct *tty, struct file * file, | 948 | static int rs_ioctl(struct tty_struct *tty, |
971 | unsigned int cmd, unsigned long arg) | 949 | unsigned int cmd, unsigned long arg) |
972 | { | 950 | { |
973 | struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; | 951 | struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; |
@@ -1347,7 +1325,6 @@ rs68328_init(void) | |||
1347 | info->count = 0; | 1325 | info->count = 0; |
1348 | info->blocked_open = 0; | 1326 | info->blocked_open = 0; |
1349 | INIT_WORK(&info->tqueue, do_softint); | 1327 | INIT_WORK(&info->tqueue, do_softint); |
1350 | INIT_WORK(&info->tqueue_hangup, do_serial_hangup); | ||
1351 | init_waitqueue_head(&info->open_wait); | 1328 | init_waitqueue_head(&info->open_wait); |
1352 | init_waitqueue_head(&info->close_wait); | 1329 | init_waitqueue_head(&info->close_wait); |
1353 | info->line = i; | 1330 | info->line = i; |