Lines Matching refs:info
141 static void change_speed(struct m68k_serial *info, struct tty_struct *tty);
165 static inline int serial_paranoia_check(struct m68k_serial *info, in serial_paranoia_check() argument
174 if (!info) { in serial_paranoia_check()
178 if (info->magic != SERIAL_MAGIC) { in serial_paranoia_check()
214 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; in rs_stop() local
215 m68328_uart *uart = &uart_addr[info->line]; in rs_stop()
218 if (serial_paranoia_check(info, tty->name, "rs_stop")) in rs_stop()
246 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; in rs_start() local
247 m68328_uart *uart = &uart_addr[info->line]; in rs_start()
250 if (serial_paranoia_check(info, tty->name, "rs_start")) in rs_start()
254 if (info->xmit_cnt && info->xmit_buf && !(uart->ustcnt & USTCNT_TXEN)) { in rs_start()
264 static void receive_chars(struct m68k_serial *info, unsigned short rx) in receive_chars() argument
266 m68328_uart *uart = &uart_addr[info->line]; in receive_chars()
277 if(info->is_cons) { in receive_chars()
303 tty_insert_flip_char(&info->tport, ch, flag); in receive_chars()
308 tty_schedule_flip(&info->tport); in receive_chars()
311 static void transmit_chars(struct m68k_serial *info, struct tty_struct *tty) in transmit_chars() argument
313 m68328_uart *uart = &uart_addr[info->line]; in transmit_chars()
315 if (info->x_char) { in transmit_chars()
317 uart->utx.b.txdata = info->x_char; in transmit_chars()
318 info->x_char = 0; in transmit_chars()
322 if ((info->xmit_cnt <= 0) || !tty || tty->stopped) { in transmit_chars()
329 uart->utx.b.txdata = info->xmit_buf[info->xmit_tail++]; in transmit_chars()
330 info->xmit_tail = info->xmit_tail & (SERIAL_XMIT_SIZE-1); in transmit_chars()
331 info->xmit_cnt--; in transmit_chars()
333 if(info->xmit_cnt <= 0) { in transmit_chars()
349 struct m68k_serial *info = dev_id; in rs_interrupt() local
350 struct tty_struct *tty = tty_port_tty_get(&info->tport); in rs_interrupt()
355 uart = &uart_addr[info->line]; in rs_interrupt()
362 receive_chars(info, rx); in rs_interrupt()
364 transmit_chars(info, tty); in rs_interrupt()
366 receive_chars(info, rx); in rs_interrupt()
373 static int startup(struct m68k_serial *info, struct tty_struct *tty) in startup() argument
375 m68328_uart *uart = &uart_addr[info->line]; in startup()
378 if (info->tport.flags & ASYNC_INITIALIZED) in startup()
381 if (!info->xmit_buf) { in startup()
382 info->xmit_buf = (unsigned char *) __get_free_page(GFP_KERNEL); in startup()
383 if (!info->xmit_buf) in startup()
410 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0; in startup()
416 change_speed(info, tty); in startup()
418 info->tport.flags |= ASYNC_INITIALIZED; in startup()
427 static void shutdown(struct m68k_serial *info, struct tty_struct *tty) in shutdown() argument
429 m68328_uart *uart = &uart_addr[info->line]; in shutdown()
433 if (!(info->tport.flags & ASYNC_INITIALIZED)) in shutdown()
438 if (info->xmit_buf) { in shutdown()
439 free_page((unsigned long) info->xmit_buf); in shutdown()
440 info->xmit_buf = 0; in shutdown()
446 info->tport.flags &= ~ASYNC_INITIALIZED; in shutdown()
502 static void change_speed(struct m68k_serial *info, struct tty_struct *tty) in change_speed() argument
504 m68328_uart *uart = &uart_addr[info->line]; in change_speed()
511 port = info->port; in change_speed()
560 struct m68k_serial *info = &m68k_soft[0]; in rs_fair_output() local
563 if (info == NULL) return; in rs_fair_output()
564 if (info->xmit_buf == NULL) return; in rs_fair_output()
567 left = info->xmit_cnt; in rs_fair_output()
569 c = info->xmit_buf[info->xmit_tail]; in rs_fair_output()
570 info->xmit_tail = (info->xmit_tail+1) & (SERIAL_XMIT_SIZE-1); in rs_fair_output()
571 info->xmit_cnt--; in rs_fair_output()
577 left = min(info->xmit_cnt, left-1); in rs_fair_output()
608 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; in rs_set_ldisc() local
610 if (serial_paranoia_check(info, tty->name, "rs_set_ldisc")) in rs_set_ldisc()
613 info->is_cons = (tty->termios.c_line == N_TTY); in rs_set_ldisc()
615 printk("ttyS%d console mode %s\n", info->line, info->is_cons ? "on" : "off"); in rs_set_ldisc()
620 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
621 m68328_uart *uart = &uart_addr[info->line];
624 if (serial_paranoia_check(info, tty->name, "rs_flush_chars"))
633 if (info->xmit_cnt <= 0 || tty->stopped || !info->xmit_buf) {
650 uart->utx.b.txdata = info->xmit_buf[info->xmit_tail++];
651 info->xmit_tail = info->xmit_tail & (SERIAL_XMIT_SIZE-1);
652 info->xmit_cnt--;
668 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
669 m68328_uart *uart = &uart_addr[info->line];
672 if (serial_paranoia_check(info, tty->name, "rs_write"))
675 if (!tty || !info->xmit_buf)
681 c = min_t(int, count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
682 SERIAL_XMIT_SIZE - info->xmit_head));
688 memcpy(info->xmit_buf + info->xmit_head, buf, c);
691 info->xmit_head = (info->xmit_head + c) & (SERIAL_XMIT_SIZE-1);
692 info->xmit_cnt += c;
699 if (info->xmit_cnt && !tty->stopped) {
703 while(info->xmit_cnt) {
713 uart->utx.b.txdata = info->xmit_buf[info->xmit_tail++];
714 info->xmit_tail = info->xmit_tail & (SERIAL_XMIT_SIZE-1);
715 info->xmit_cnt--;
729 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
732 if (serial_paranoia_check(info, tty->name, "rs_write_room"))
734 ret = SERIAL_XMIT_SIZE - info->xmit_cnt - 1;
742 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
744 if (serial_paranoia_check(info, tty->name, "rs_chars_in_buffer"))
746 return info->xmit_cnt;
751 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
754 if (serial_paranoia_check(info, tty->name, "rs_flush_buffer"))
757 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;
772 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
774 if (serial_paranoia_check(info, tty->name, "rs_throttle"))
778 info->x_char = STOP_CHAR(tty);
785 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
787 if (serial_paranoia_check(info, tty->name, "rs_unthrottle"))
791 if (info->x_char)
792 info->x_char = 0;
794 info->x_char = START_CHAR(tty);
806 static int get_serial_info(struct m68k_serial * info, argument
814 tmp.type = info->type;
815 tmp.line = info->line;
816 tmp.port = info->port;
817 tmp.irq = info->irq;
818 tmp.flags = info->tport.flags;
819 tmp.baud_base = info->baud_base;
820 tmp.close_delay = info->tport.close_delay;
821 tmp.closing_wait = info->tport.closing_wait;
822 tmp.custom_divisor = info->custom_divisor;
829 static int set_serial_info(struct m68k_serial *info, struct tty_struct *tty, argument
832 struct tty_port *port = &info->tport;
841 old_info = *info;
844 if ((new_serial.baud_base != info->baud_base) ||
845 (new_serial.type != info->type) ||
852 info->custom_divisor = new_serial.custom_divisor;
864 info->baud_base = new_serial.baud_base;
867 info->type = new_serial.type;
872 retval = startup(info, tty);
886 static int get_lsr_info(struct m68k_serial * info, unsigned int *value) argument
889 m68328_uart *uart = &uart_addr[info->line];
907 static void send_break(struct m68k_serial * info, unsigned int duration) argument
909 m68328_uart *uart = &uart_addr[info->line];
911 if (!info->port)
925 struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; local
928 if (serial_paranoia_check(info, tty->name, "rs_ioctl"))
945 send_break(info, 250); /* 1/4 second */
952 send_break(info, arg ? arg*(100) : 250);
955 return get_serial_info(info,
958 return set_serial_info(info, tty,
961 return get_lsr_info(info, (unsigned int *) arg);
964 info, sizeof(struct m68k_serial)))
975 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
977 change_speed(info, tty);
997 struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; local
998 struct tty_port *port = &info->tport;
999 m68328_uart *uart = &uart_addr[info->line];
1002 if (serial_paranoia_check(info, tty->name, "rs_close"))
1026 info->line, port->count);
1051 shutdown(info, tty);
1056 tty_port_tty_set(&info->tport, NULL);
1082 struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; local
1084 if (serial_paranoia_check(info, tty->name, "rs_hangup"))
1088 shutdown(info, tty);
1089 info->tport.count = 0;
1090 info->tport.flags &= ~ASYNC_NORMAL_ACTIVE;
1091 tty_port_tty_set(&info->tport, NULL);
1092 wake_up_interruptible(&info->tport.open_wait);
1103 struct m68k_serial *info; local
1106 info = &m68k_soft[tty->index];
1108 if (serial_paranoia_check(info, tty->name, "rs_open"))
1111 info->tport.count++;
1112 tty->driver_data = info;
1113 tty_port_tty_set(&info->tport, tty);
1118 retval = startup(info, tty);
1122 return tty_port_block_til_ready(&info->tport, tty, filp);
1159 struct m68k_serial *info; local
1185 info = &m68k_soft[i];
1186 tty_port_init(&info->tport);
1187 info->tport.ops = &rs_port_ops;
1188 info->magic = SERIAL_MAGIC;
1189 info->port = (int) &uart_addr[i];
1190 info->irq = uart_irqs[i];
1191 info->custom_divisor = 16;
1192 info->x_char = 0;
1193 info->line = i;
1194 info->is_cons = 1; /* Means shortcuts work */
1196 printk("%s%d at 0x%08x (irq = %d)", serial_driver->name, info->line,
1197 info->port, info->irq);
1208 "M68328_UART", info))
1211 tty_port_link_device(&info->tport, serial_driver, i);