Lines Matching full:ch

25 static void jsm_carrier(struct jsm_channel *ch);
27 static inline int jsm_get_mstat(struct jsm_channel *ch) in jsm_get_mstat() argument
32 jsm_dbg(IOCTL, &ch->ch_bd->pci_dev, "start\n"); in jsm_get_mstat()
34 mstat = (ch->ch_mostat | ch->ch_mistat); in jsm_get_mstat()
51 jsm_dbg(IOCTL, &ch->ch_bd->pci_dev, "finish\n"); in jsm_get_mstat()
148 static void jsm_tty_send_xchar(struct uart_port *port, char ch) in jsm_tty_send_xchar() argument
157 if (ch == termios->c_cc[VSTART]) in jsm_tty_send_xchar()
160 if (ch == termios->c_cc[VSTOP]) in jsm_tty_send_xchar()
370 struct jsm_channel *ch; in jsm_tty_init() local
403 ch = brd->channels[0]; in jsm_tty_init()
407 for (i = 0; i < brd->nasync; i++, ch = brd->channels[i]) { in jsm_tty_init()
412 spin_lock_init(&ch->ch_lock); in jsm_tty_init()
415 ch->ch_neo_uart = vaddr + (brd->bd_uart_offset * i); in jsm_tty_init()
417 ch->ch_cls_uart = vaddr + (brd->bd_uart_offset * i); in jsm_tty_init()
419 ch->ch_bd = brd; in jsm_tty_init()
420 ch->ch_portnum = i; in jsm_tty_init()
423 ch->ch_close_delay = 250; in jsm_tty_init()
425 init_waitqueue_head(&ch->ch_flags_wait); in jsm_tty_init()
484 struct jsm_channel *ch; in jsm_remove_uart_port() local
503 ch = brd->channels[i]; in jsm_remove_uart_port()
505 clear_bit(ch->uart_port.line, linemap); in jsm_remove_uart_port()
513 void jsm_input(struct jsm_channel *ch) in jsm_input() argument
527 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start\n"); in jsm_input()
529 port = &ch->uart_port.state->port; in jsm_input()
532 bd = ch->ch_bd; in jsm_input()
536 spin_lock_irqsave(&ch->ch_lock, lock_flags); in jsm_input()
545 head = ch->ch_r_head & rmask; in jsm_input()
546 tail = ch->ch_r_tail & rmask; in jsm_input()
550 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
554 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start\n"); in jsm_input()
562 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_input()
564 data_len, ch->ch_portnum); in jsm_input()
565 ch->ch_r_head = tail; in jsm_input()
568 jsm_check_queue_flow_control(ch); in jsm_input()
570 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
577 if (ch->ch_flags & CH_STOPI) { in jsm_input()
578 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
579 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_input()
581 ch->ch_portnum, head, tail); in jsm_input()
585 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start 2\n"); in jsm_input()
610 u8 chr = ch->ch_rqueue[tail + i]; in jsm_input()
611 u8 error = ch->ch_equeue[tail + i]; in jsm_input()
628 tty_insert_flip_string(port, ch->ch_rqueue + tail, s); in jsm_input()
636 ch->ch_r_tail = tail & rmask; in jsm_input()
637 ch->ch_e_tail = tail & rmask; in jsm_input()
638 jsm_check_queue_flow_control(ch); in jsm_input()
639 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
644 jsm_dbg(IOCTL, &ch->ch_bd->pci_dev, "finish\n"); in jsm_input()
647 static void jsm_carrier(struct jsm_channel *ch) in jsm_carrier() argument
654 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "start\n"); in jsm_carrier()
656 bd = ch->ch_bd; in jsm_carrier()
660 if (ch->ch_mistat & UART_MSR_DCD) { in jsm_carrier()
661 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "mistat: %x D_CD: %x\n", in jsm_carrier()
662 ch->ch_mistat, ch->ch_mistat & UART_MSR_DCD); in jsm_carrier()
666 if (ch->ch_c_cflag & CLOCAL) in jsm_carrier()
669 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "DCD: physical: %d virt: %d\n", in jsm_carrier()
675 if (((ch->ch_flags & CH_FCAR) == 0) && (virt_carrier == 1)) { in jsm_carrier()
682 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "carrier: virt DCD rose\n"); in jsm_carrier()
684 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
685 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
691 if (((ch->ch_flags & CH_CD) == 0) && (phys_carrier == 1)) { in jsm_carrier()
698 jsm_dbg(CARR, &ch->ch_bd->pci_dev, in jsm_carrier()
701 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
702 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
714 if ((virt_carrier == 0) && ((ch->ch_flags & CH_CD) != 0) in jsm_carrier()
728 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
729 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
736 ch->ch_flags |= CH_FCAR; in jsm_carrier()
738 ch->ch_flags &= ~CH_FCAR; in jsm_carrier()
741 ch->ch_flags |= CH_CD; in jsm_carrier()
743 ch->ch_flags &= ~CH_CD; in jsm_carrier()
747 void jsm_check_queue_flow_control(struct jsm_channel *ch) in jsm_check_queue_flow_control() argument
749 struct board_ops *bd_ops = ch->ch_bd->bd_ops; in jsm_check_queue_flow_control()
753 qleft = ch->ch_r_tail - ch->ch_r_head - 1; in jsm_check_queue_flow_control()
774 if (ch->ch_c_cflag & CRTSCTS) { in jsm_check_queue_flow_control()
775 if (!(ch->ch_flags & CH_RECEIVER_OFF)) { in jsm_check_queue_flow_control()
776 bd_ops->disable_receiver(ch); in jsm_check_queue_flow_control()
777 ch->ch_flags |= (CH_RECEIVER_OFF); in jsm_check_queue_flow_control()
778 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
784 else if (ch->ch_c_iflag & IXOFF) { in jsm_check_queue_flow_control()
785 if (ch->ch_stops_sent <= MAX_STOPS_SENT) { in jsm_check_queue_flow_control()
786 bd_ops->send_stop_character(ch); in jsm_check_queue_flow_control()
787 ch->ch_stops_sent++; in jsm_check_queue_flow_control()
788 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
790 ch->ch_stops_sent); in jsm_check_queue_flow_control()
812 if (ch->ch_c_cflag & CRTSCTS) { in jsm_check_queue_flow_control()
813 if (ch->ch_flags & CH_RECEIVER_OFF) { in jsm_check_queue_flow_control()
814 bd_ops->enable_receiver(ch); in jsm_check_queue_flow_control()
815 ch->ch_flags &= ~(CH_RECEIVER_OFF); in jsm_check_queue_flow_control()
816 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
822 else if (ch->ch_c_iflag & IXOFF && ch->ch_stops_sent) { in jsm_check_queue_flow_control()
823 ch->ch_stops_sent = 0; in jsm_check_queue_flow_control()
824 bd_ops->send_start_character(ch); in jsm_check_queue_flow_control()
825 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()