Lines Matching refs:ch

34 static void jsm_carrier(struct jsm_channel *ch);
36 static inline int jsm_get_mstat(struct jsm_channel *ch) in jsm_get_mstat() argument
41 jsm_dbg(IOCTL, &ch->ch_bd->pci_dev, "start\n"); in jsm_get_mstat()
43 mstat = (ch->ch_mostat | ch->ch_mistat); in jsm_get_mstat()
60 jsm_dbg(IOCTL, &ch->ch_bd->pci_dev, "finish\n"); in jsm_get_mstat()
156 static void jsm_tty_send_xchar(struct uart_port *port, char ch) in jsm_tty_send_xchar() argument
165 if (ch == termios->c_cc[VSTART]) in jsm_tty_send_xchar()
168 if (ch == termios->c_cc[VSTOP]) in jsm_tty_send_xchar()
377 struct jsm_channel *ch; in jsm_tty_init() local
410 ch = brd->channels[0]; in jsm_tty_init()
414 for (i = 0; i < brd->nasync; i++, ch = brd->channels[i]) { in jsm_tty_init()
419 spin_lock_init(&ch->ch_lock); in jsm_tty_init()
422 ch->ch_neo_uart = vaddr + (brd->bd_uart_offset * i); in jsm_tty_init()
424 ch->ch_cls_uart = vaddr + (brd->bd_uart_offset * i); in jsm_tty_init()
426 ch->ch_bd = brd; in jsm_tty_init()
427 ch->ch_portnum = i; in jsm_tty_init()
430 ch->ch_close_delay = 250; in jsm_tty_init()
432 init_waitqueue_head(&ch->ch_flags_wait); in jsm_tty_init()
443 struct jsm_channel *ch; in jsm_uart_port_init() local
457 for (i = 0; i < brd->nasync; i++, ch = brd->channels[i]) { in jsm_uart_port_init()
492 struct jsm_channel *ch; in jsm_remove_uart_port() local
511 ch = brd->channels[i]; in jsm_remove_uart_port()
513 clear_bit(ch->uart_port.line, linemap); in jsm_remove_uart_port()
521 void jsm_input(struct jsm_channel *ch) in jsm_input() argument
536 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start\n"); in jsm_input()
538 if (!ch) in jsm_input()
541 port = &ch->uart_port.state->port; in jsm_input()
544 bd = ch->ch_bd; in jsm_input()
548 spin_lock_irqsave(&ch->ch_lock, lock_flags); in jsm_input()
557 head = ch->ch_r_head & rmask; in jsm_input()
558 tail = ch->ch_r_tail & rmask; in jsm_input()
562 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
566 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start\n"); in jsm_input()
575 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_input()
577 data_len, ch->ch_portnum); in jsm_input()
578 ch->ch_r_head = tail; in jsm_input()
581 jsm_check_queue_flow_control(ch); in jsm_input()
583 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
590 if (ch->ch_flags & CH_STOPI) { in jsm_input()
591 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
592 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_input()
594 ch->ch_portnum, head, tail); in jsm_input()
598 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start 2\n"); in jsm_input()
628 if (*(ch->ch_equeue +tail +i) & UART_LSR_BI) in jsm_input()
629 tty_insert_flip_char(port, *(ch->ch_rqueue +tail +i), TTY_BREAK); in jsm_input()
630 else if (*(ch->ch_equeue +tail +i) & UART_LSR_PE) in jsm_input()
631 tty_insert_flip_char(port, *(ch->ch_rqueue +tail +i), TTY_PARITY); in jsm_input()
632 else if (*(ch->ch_equeue +tail +i) & UART_LSR_FE) in jsm_input()
633 tty_insert_flip_char(port, *(ch->ch_rqueue +tail +i), TTY_FRAME); in jsm_input()
635 tty_insert_flip_char(port, *(ch->ch_rqueue +tail +i), TTY_NORMAL); in jsm_input()
638 tty_insert_flip_string(port, ch->ch_rqueue + tail, s); in jsm_input()
646 ch->ch_r_tail = tail & rmask; in jsm_input()
647 ch->ch_e_tail = tail & rmask; in jsm_input()
648 jsm_check_queue_flow_control(ch); in jsm_input()
649 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
654 jsm_dbg(IOCTL, &ch->ch_bd->pci_dev, "finish\n"); in jsm_input()
657 static void jsm_carrier(struct jsm_channel *ch) in jsm_carrier() argument
664 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "start\n"); in jsm_carrier()
665 if (!ch) in jsm_carrier()
668 bd = ch->ch_bd; in jsm_carrier()
673 if (ch->ch_mistat & UART_MSR_DCD) { in jsm_carrier()
674 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "mistat: %x D_CD: %x\n", in jsm_carrier()
675 ch->ch_mistat, ch->ch_mistat & UART_MSR_DCD); in jsm_carrier()
679 if (ch->ch_c_cflag & CLOCAL) in jsm_carrier()
682 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "DCD: physical: %d virt: %d\n", in jsm_carrier()
688 if (((ch->ch_flags & CH_FCAR) == 0) && (virt_carrier == 1)) { in jsm_carrier()
695 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "carrier: virt DCD rose\n"); in jsm_carrier()
697 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
698 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
704 if (((ch->ch_flags & CH_CD) == 0) && (phys_carrier == 1)) { in jsm_carrier()
711 jsm_dbg(CARR, &ch->ch_bd->pci_dev, in jsm_carrier()
714 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
715 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
727 if ((virt_carrier == 0) && ((ch->ch_flags & CH_CD) != 0) in jsm_carrier()
741 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
742 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
749 ch->ch_flags |= CH_FCAR; in jsm_carrier()
751 ch->ch_flags &= ~CH_FCAR; in jsm_carrier()
754 ch->ch_flags |= CH_CD; in jsm_carrier()
756 ch->ch_flags &= ~CH_CD; in jsm_carrier()
760 void jsm_check_queue_flow_control(struct jsm_channel *ch) in jsm_check_queue_flow_control() argument
762 struct board_ops *bd_ops = ch->ch_bd->bd_ops; in jsm_check_queue_flow_control()
766 if ((qleft = ch->ch_r_tail - ch->ch_r_head - 1) < 0) in jsm_check_queue_flow_control()
786 if (ch->ch_c_cflag & CRTSCTS) { in jsm_check_queue_flow_control()
787 if(!(ch->ch_flags & CH_RECEIVER_OFF)) { in jsm_check_queue_flow_control()
788 bd_ops->disable_receiver(ch); in jsm_check_queue_flow_control()
789 ch->ch_flags |= (CH_RECEIVER_OFF); in jsm_check_queue_flow_control()
790 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
796 else if (ch->ch_c_iflag & IXOFF) { in jsm_check_queue_flow_control()
797 if (ch->ch_stops_sent <= MAX_STOPS_SENT) { in jsm_check_queue_flow_control()
798 bd_ops->send_stop_character(ch); in jsm_check_queue_flow_control()
799 ch->ch_stops_sent++; in jsm_check_queue_flow_control()
800 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
802 ch->ch_stops_sent); in jsm_check_queue_flow_control()
824 if (ch->ch_c_cflag & CRTSCTS) { in jsm_check_queue_flow_control()
825 if (ch->ch_flags & CH_RECEIVER_OFF) { in jsm_check_queue_flow_control()
826 bd_ops->enable_receiver(ch); in jsm_check_queue_flow_control()
827 ch->ch_flags &= ~(CH_RECEIVER_OFF); in jsm_check_queue_flow_control()
828 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
834 else if (ch->ch_c_iflag & IXOFF && ch->ch_stops_sent) { in jsm_check_queue_flow_control()
835 ch->ch_stops_sent = 0; in jsm_check_queue_flow_control()
836 bd_ops->send_start_character(ch); in jsm_check_queue_flow_control()
837 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()