Lines Matching refs:info

48  tty->name, (info->tport.flags), serial_driver->refcount,info->count,tty->count,s)
122 static void change_speed(struct tty_struct *tty, struct serial_state *info,
136 static inline int serial_paranoia_check(struct serial_state *info, in serial_paranoia_check() argument
145 if (!info) { in serial_paranoia_check()
149 if (info->magic != SERIAL_MAGIC) { in serial_paranoia_check()
189 struct serial_state *info = tty->driver_data; in rs_stop() local
192 if (serial_paranoia_check(info, tty->name, "rs_stop")) in rs_stop()
196 if (info->IER & UART_IER_THRI) { in rs_stop()
197 info->IER &= ~UART_IER_THRI; in rs_stop()
209 struct serial_state *info = tty->driver_data; in rs_start() local
212 if (serial_paranoia_check(info, tty->name, "rs_start")) in rs_start()
216 if (info->xmit.head != info->xmit.tail in rs_start()
217 && info->xmit.buf in rs_start()
218 && !(info->IER & UART_IER_THRI)) { in rs_start()
219 info->IER |= UART_IER_THRI; in rs_start()
250 static void receive_chars(struct serial_state *info) in receive_chars() argument
258 icount = &info->icount; in receive_chars()
305 if (status & info->ignore_status_mask) in receive_chars()
308 status &= info->read_status_mask; in receive_chars()
315 if (info->tport.flags & ASYNC_SAK) in receive_chars()
316 do_SAK(info->tport.tty); in receive_chars()
330 tty_insert_flip_char(&info->tport, ch, flag); in receive_chars()
332 tty_insert_flip_char(&info->tport, 0, TTY_OVERRUN); in receive_chars()
333 tty_flip_buffer_push(&info->tport); in receive_chars()
338 static void transmit_chars(struct serial_state *info) in transmit_chars() argument
342 if (info->x_char) { in transmit_chars()
343 custom.serdat = info->x_char | 0x100; in transmit_chars()
345 info->icount.tx++; in transmit_chars()
346 info->x_char = 0; in transmit_chars()
349 if (info->xmit.head == info->xmit.tail in transmit_chars()
350 || info->tport.tty->stopped in transmit_chars()
351 || info->tport.tty->hw_stopped) { in transmit_chars()
352 info->IER &= ~UART_IER_THRI; in transmit_chars()
358 custom.serdat = info->xmit.buf[info->xmit.tail++] | 0x100; in transmit_chars()
360 info->xmit.tail = info->xmit.tail & (SERIAL_XMIT_SIZE-1); in transmit_chars()
361 info->icount.tx++; in transmit_chars()
363 if (CIRC_CNT(info->xmit.head, in transmit_chars()
364 info->xmit.tail, in transmit_chars()
366 tty_wakeup(info->tport.tty); in transmit_chars()
371 if (info->xmit.head == info->xmit.tail) { in transmit_chars()
374 info->IER &= ~UART_IER_THRI; in transmit_chars()
378 static void check_modem_status(struct serial_state *info) in check_modem_status() argument
380 struct tty_port *port = &info->tport; in check_modem_status()
390 icount = &info->icount; in check_modem_status()
404 printk("ttyS%d CD now %s...", info->line, in check_modem_status()
424 info->IER |= UART_IER_THRI; in check_modem_status()
439 info->IER &= ~UART_IER_THRI; in check_modem_status()
453 struct serial_state *info = data; in ser_vbl_int() local
458 if(info->IER & UART_IER_MSI) in ser_vbl_int()
459 check_modem_status(info); in ser_vbl_int()
465 struct serial_state *info = dev_id; in ser_rx_int() local
471 if (!info->tport.tty) in ser_rx_int()
474 receive_chars(info); in ser_rx_int()
483 struct serial_state *info = dev_id; in ser_tx_int() local
490 if (!info->tport.tty) in ser_tx_int()
493 transmit_chars(info); in ser_tx_int()
516 static int startup(struct tty_struct *tty, struct serial_state *info) in startup() argument
518 struct tty_port *port = &info->tport; in startup()
534 if (info->xmit.buf) in startup()
537 info->xmit.buf = (unsigned char *) page; in startup()
540 printk("starting up ttys%d ...", info->line); in startup()
548 retval = request_irq(IRQ_AMIGA_VERTB, ser_vbl_int, 0, "serial status", info); in startup()
560 info->IER = UART_IER_MSI; in startup()
565 info->MCR = 0; in startup()
567 info->MCR = SER_DTR | SER_RTS; in startup()
568 rtsdtr_ctrl(info->MCR); in startup()
571 info->xmit.head = info->xmit.tail = 0; in startup()
588 change_speed(tty, info, NULL); in startup()
603 static void shutdown(struct tty_struct *tty, struct serial_state *info) in shutdown() argument
608 if (!(info->tport.flags & ASYNC_INITIALIZED)) in shutdown()
611 state = info; in shutdown()
614 printk("Shutting down serial port %d ....\n", info->line); in shutdown()
623 wake_up_interruptible(&info->tport.delta_msr_wait); in shutdown()
628 free_irq(IRQ_AMIGA_VERTB, info); in shutdown()
630 if (info->xmit.buf) { in shutdown()
631 free_page((unsigned long) info->xmit.buf); in shutdown()
632 info->xmit.buf = NULL; in shutdown()
635 info->IER = 0; in shutdown()
644 info->MCR &= ~(SER_DTR|SER_RTS); in shutdown()
645 rtsdtr_ctrl(info->MCR); in shutdown()
649 info->tport.flags &= ~ASYNC_INITIALIZED; in shutdown()
658 static void change_speed(struct tty_struct *tty, struct serial_state *info, in change_speed() argument
661 struct tty_port *port = &info->tport; in change_speed()
691 baud_base = info->baud_base; in change_speed()
693 quot = info->custom_divisor; in change_speed()
711 quot = info->custom_divisor; in change_speed()
723 info->quot = quot; in change_speed()
724 info->timeout = ((info->xmit_fifo_size*HZ*bits*quot) / baud_base); in change_speed()
725 info->timeout += HZ/50; /* Add .02 seconds of slop */ in change_speed()
728 info->IER &= ~UART_IER_MSI; in change_speed()
730 info->IER |= UART_IER_MSI; in change_speed()
733 info->IER |= UART_IER_MSI; in change_speed()
740 info->IER |= UART_IER_MSI; in change_speed()
750 info->read_status_mask = UART_LSR_OE | UART_LSR_DR; in change_speed()
752 info->read_status_mask |= UART_LSR_FE | UART_LSR_PE; in change_speed()
754 info->read_status_mask |= UART_LSR_BI; in change_speed()
759 info->ignore_status_mask = 0; in change_speed()
761 info->ignore_status_mask |= UART_LSR_PE | UART_LSR_FE; in change_speed()
763 info->ignore_status_mask |= UART_LSR_BI; in change_speed()
769 info->ignore_status_mask |= UART_LSR_OE; in change_speed()
775 info->ignore_status_mask |= UART_LSR_DR; in change_speed()
798 struct serial_state *info; in rs_put_char() local
801 info = tty->driver_data; in rs_put_char()
803 if (serial_paranoia_check(info, tty->name, "rs_put_char")) in rs_put_char()
806 if (!info->xmit.buf) in rs_put_char()
810 if (CIRC_SPACE(info->xmit.head, in rs_put_char()
811 info->xmit.tail, in rs_put_char()
817 info->xmit.buf[info->xmit.head++] = ch; in rs_put_char()
818 info->xmit.head &= SERIAL_XMIT_SIZE-1; in rs_put_char()
825 struct serial_state *info = tty->driver_data; in rs_flush_chars() local
828 if (serial_paranoia_check(info, tty->name, "rs_flush_chars")) in rs_flush_chars()
831 if (info->xmit.head == info->xmit.tail in rs_flush_chars()
834 || !info->xmit.buf) in rs_flush_chars()
838 info->IER |= UART_IER_THRI; in rs_flush_chars()
850 struct serial_state *info = tty->driver_data; in rs_write() local
853 if (serial_paranoia_check(info, tty->name, "rs_write")) in rs_write()
856 if (!info->xmit.buf) in rs_write()
861 c = CIRC_SPACE_TO_END(info->xmit.head, in rs_write()
862 info->xmit.tail, in rs_write()
869 memcpy(info->xmit.buf + info->xmit.head, buf, c); in rs_write()
870 info->xmit.head = ((info->xmit.head + c) & in rs_write()
878 if (info->xmit.head != info->xmit.tail in rs_write()
881 && !(info->IER & UART_IER_THRI)) { in rs_write()
882 info->IER |= UART_IER_THRI; in rs_write()
896 struct serial_state *info = tty->driver_data; in rs_write_room() local
898 if (serial_paranoia_check(info, tty->name, "rs_write_room")) in rs_write_room()
900 return CIRC_SPACE(info->xmit.head, info->xmit.tail, SERIAL_XMIT_SIZE); in rs_write_room()
905 struct serial_state *info = tty->driver_data; in rs_chars_in_buffer() local
907 if (serial_paranoia_check(info, tty->name, "rs_chars_in_buffer")) in rs_chars_in_buffer()
909 return CIRC_CNT(info->xmit.head, info->xmit.tail, SERIAL_XMIT_SIZE); in rs_chars_in_buffer()
914 struct serial_state *info = tty->driver_data; in rs_flush_buffer() local
917 if (serial_paranoia_check(info, tty->name, "rs_flush_buffer")) in rs_flush_buffer()
920 info->xmit.head = info->xmit.tail = 0; in rs_flush_buffer()
931 struct serial_state *info = tty->driver_data; in rs_send_xchar() local
934 if (serial_paranoia_check(info, tty->name, "rs_send_xchar")) in rs_send_xchar()
937 info->x_char = ch; in rs_send_xchar()
952 info->IER |= UART_IER_THRI; in rs_send_xchar()
966 struct serial_state *info = tty->driver_data; in rs_throttle() local
973 if (serial_paranoia_check(info, tty->name, "rs_throttle")) in rs_throttle()
980 info->MCR &= ~SER_RTS; in rs_throttle()
983 rtsdtr_ctrl(info->MCR); in rs_throttle()
989 struct serial_state *info = tty->driver_data; in rs_unthrottle() local
996 if (serial_paranoia_check(info, tty->name, "rs_unthrottle")) in rs_unthrottle()
1000 if (info->x_char) in rs_unthrottle()
1001 info->x_char = 0; in rs_unthrottle()
1006 info->MCR |= SER_RTS; in rs_unthrottle()
1008 rtsdtr_ctrl(info->MCR); in rs_unthrottle()
1124 static int get_lsr_info(struct serial_state *info, unsigned int __user *value) in get_lsr_info() argument
1143 struct serial_state *info = tty->driver_data; in rs_tiocmget() local
1147 if (serial_paranoia_check(info, tty->name, "rs_ioctl")) in rs_tiocmget()
1152 control = info->MCR; in rs_tiocmget()
1166 struct serial_state *info = tty->driver_data; in rs_tiocmset() local
1169 if (serial_paranoia_check(info, tty->name, "rs_ioctl")) in rs_tiocmset()
1176 info->MCR |= SER_RTS; in rs_tiocmset()
1178 info->MCR |= SER_DTR; in rs_tiocmset()
1180 info->MCR &= ~SER_RTS; in rs_tiocmset()
1182 info->MCR &= ~SER_DTR; in rs_tiocmset()
1183 rtsdtr_ctrl(info->MCR); in rs_tiocmset()
1193 struct serial_state *info = tty->driver_data; in rs_break() local
1196 if (serial_paranoia_check(info, tty->name, "rs_break")) in rs_break()
1218 struct serial_state *info = tty->driver_data; in rs_get_icount() local
1223 cnow = info->icount; in rs_get_icount()
1243 struct serial_state *info = tty->driver_data; in rs_ioctl() local
1250 if (serial_paranoia_check(info, tty->name, "rs_ioctl")) in rs_ioctl()
1262 return get_serial_info(tty, info, argp); in rs_ioctl()
1264 return set_serial_info(tty, info, argp); in rs_ioctl()
1269 return get_lsr_info(info, argp); in rs_ioctl()
1273 info, sizeof(struct serial_state))) in rs_ioctl()
1286 cprev = info->icount; in rs_ioctl()
1289 prepare_to_wait(&info->tport.delta_msr_wait, in rs_ioctl()
1292 cnow = info->icount; /* atomic copy */ in rs_ioctl()
1314 finish_wait(&info->tport.delta_msr_wait, &wait); in rs_ioctl()
1331 struct serial_state *info = tty->driver_data; in rs_set_termios() local
1335 change_speed(tty, info, old_termios); in rs_set_termios()
1340 info->MCR &= ~(SER_DTR|SER_RTS); in rs_set_termios()
1342 rtsdtr_ctrl(info->MCR); in rs_set_termios()
1349 info->MCR |= SER_DTR; in rs_set_termios()
1352 info->MCR |= SER_RTS; in rs_set_termios()
1355 rtsdtr_ctrl(info->MCR); in rs_set_termios()
1375 wake_up_interruptible(&info->open_wait); in rs_set_termios()
1436 struct serial_state *info = tty->driver_data; in rs_wait_until_sent() local
1440 if (serial_paranoia_check(info, tty->name, "rs_wait_until_sent")) in rs_wait_until_sent()
1443 if (info->xmit_fifo_size == 0) in rs_wait_until_sent()
1456 char_time = (info->timeout - HZ/50) / info->xmit_fifo_size; in rs_wait_until_sent()
1471 if (!timeout || timeout > 2*info->timeout) in rs_wait_until_sent()
1472 timeout = 2*info->timeout; in rs_wait_until_sent()
1499 struct serial_state *info = tty->driver_data; in rs_hangup() local
1501 if (serial_paranoia_check(info, tty->name, "rs_hangup")) in rs_hangup()
1505 shutdown(tty, info); in rs_hangup()
1506 info->tport.count = 0; in rs_hangup()
1507 info->tport.flags &= ~ASYNC_NORMAL_ACTIVE; in rs_hangup()
1508 info->tport.tty = NULL; in rs_hangup()
1509 wake_up_interruptible(&info->tport.open_wait); in rs_hangup()
1520 struct serial_state *info = rs_table + tty->index; in rs_open() local
1521 struct tty_port *port = &info->tport; in rs_open()
1526 tty->driver_data = info; in rs_open()
1528 if (serial_paranoia_check(info, tty->name, "rs_open")) in rs_open()
1533 retval = startup(tty, info); in rs_open()
1665 struct serial_state *info = container_of(port, struct serial_state, in amiga_dtr_rts() local
1670 info->MCR |= SER_DTR|SER_RTS; in amiga_dtr_rts()
1672 info->MCR &= ~(SER_DTR|SER_RTS); in amiga_dtr_rts()
1675 rtsdtr_ctrl(info->MCR); in amiga_dtr_rts()