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 if (!(port = info->port)) in change_speed()
559 struct m68k_serial *info = &m68k_soft[0]; in rs_fair_output() local
562 if (info == 0) return; in rs_fair_output()
563 if (info->xmit_buf == 0) return; in rs_fair_output()
566 left = info->xmit_cnt; in rs_fair_output()
568 c = info->xmit_buf[info->xmit_tail]; in rs_fair_output()
569 info->xmit_tail = (info->xmit_tail+1) & (SERIAL_XMIT_SIZE-1); in rs_fair_output()
570 info->xmit_cnt--; in rs_fair_output()
576 left = min(info->xmit_cnt, left-1); in rs_fair_output()
607 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; in rs_set_ldisc() local
609 if (serial_paranoia_check(info, tty->name, "rs_set_ldisc")) in rs_set_ldisc()
612 info->is_cons = (tty->termios.c_line == N_TTY); in rs_set_ldisc()
614 printk("ttyS%d console mode %s\n", info->line, info->is_cons ? "on" : "off"); in rs_set_ldisc()
619 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
620 m68328_uart *uart = &uart_addr[info->line];
623 if (serial_paranoia_check(info, tty->name, "rs_flush_chars"))
632 if (info->xmit_cnt <= 0 || tty->stopped || !info->xmit_buf) {
649 uart->utx.b.txdata = info->xmit_buf[info->xmit_tail++];
650 info->xmit_tail = info->xmit_tail & (SERIAL_XMIT_SIZE-1);
651 info->xmit_cnt--;
667 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
668 m68328_uart *uart = &uart_addr[info->line];
671 if (serial_paranoia_check(info, tty->name, "rs_write"))
674 if (!tty || !info->xmit_buf)
680 c = min_t(int, count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
681 SERIAL_XMIT_SIZE - info->xmit_head));
687 memcpy(info->xmit_buf + info->xmit_head, buf, c);
690 info->xmit_head = (info->xmit_head + c) & (SERIAL_XMIT_SIZE-1);
691 info->xmit_cnt += c;
698 if (info->xmit_cnt && !tty->stopped) {
702 while(info->xmit_cnt) {
712 uart->utx.b.txdata = info->xmit_buf[info->xmit_tail++];
713 info->xmit_tail = info->xmit_tail & (SERIAL_XMIT_SIZE-1);
714 info->xmit_cnt--;
728 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
731 if (serial_paranoia_check(info, tty->name, "rs_write_room"))
733 ret = SERIAL_XMIT_SIZE - info->xmit_cnt - 1;
741 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
743 if (serial_paranoia_check(info, tty->name, "rs_chars_in_buffer"))
745 return info->xmit_cnt;
750 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
753 if (serial_paranoia_check(info, tty->name, "rs_flush_buffer"))
756 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;
771 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
773 if (serial_paranoia_check(info, tty->name, "rs_throttle"))
777 info->x_char = STOP_CHAR(tty);
784 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
786 if (serial_paranoia_check(info, tty->name, "rs_unthrottle"))
790 if (info->x_char)
791 info->x_char = 0;
793 info->x_char = START_CHAR(tty);
805 static int get_serial_info(struct m68k_serial * info, argument
813 tmp.type = info->type;
814 tmp.line = info->line;
815 tmp.port = info->port;
816 tmp.irq = info->irq;
817 tmp.flags = info->tport.flags;
818 tmp.baud_base = info->baud_base;
819 tmp.close_delay = info->tport.close_delay;
820 tmp.closing_wait = info->tport.closing_wait;
821 tmp.custom_divisor = info->custom_divisor;
828 static int set_serial_info(struct m68k_serial *info, struct tty_struct *tty, argument
831 struct tty_port *port = &info->tport;
840 old_info = *info;
843 if ((new_serial.baud_base != info->baud_base) ||
844 (new_serial.type != info->type) ||
851 info->custom_divisor = new_serial.custom_divisor;
863 info->baud_base = new_serial.baud_base;
866 info->type = new_serial.type;
871 retval = startup(info, tty);
885 static int get_lsr_info(struct m68k_serial * info, unsigned int *value) argument
888 m68328_uart *uart = &uart_addr[info->line];
906 static void send_break(struct m68k_serial * info, unsigned int duration) argument
908 m68328_uart *uart = &uart_addr[info->line];
910 if (!info->port)
924 struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; local
927 if (serial_paranoia_check(info, tty->name, "rs_ioctl"))
944 send_break(info, 250); /* 1/4 second */
951 send_break(info, arg ? arg*(100) : 250);
954 return get_serial_info(info,
957 return set_serial_info(info, tty,
960 return get_lsr_info(info, (unsigned int *) arg);
963 info, sizeof(struct m68k_serial)))
974 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; local
976 change_speed(info, tty);
996 struct m68k_serial * info = (struct m68k_serial *)tty->driver_data; local
997 struct tty_port *port = &info->tport;
998 m68328_uart *uart = &uart_addr[info->line];
1001 if (serial_paranoia_check(info, tty->name, "rs_close"))
1025 info->line, port->count);
1050 shutdown(info, tty);
1055 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);