Lines Matching refs: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()
483 struct jsm_channel *ch; in jsm_remove_uart_port() local
502 ch = brd->channels[i]; in jsm_remove_uart_port()
504 clear_bit(ch->uart_port.line, linemap); in jsm_remove_uart_port()
512 void jsm_input(struct jsm_channel *ch) in jsm_input() argument
526 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start\n"); in jsm_input()
528 port = &ch->uart_port.state->port; in jsm_input()
531 bd = ch->ch_bd; in jsm_input()
535 spin_lock_irqsave(&ch->ch_lock, lock_flags); in jsm_input()
544 head = ch->ch_r_head & rmask; in jsm_input()
545 tail = ch->ch_r_tail & rmask; in jsm_input()
549 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
553 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start\n"); in jsm_input()
561 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_input()
563 data_len, ch->ch_portnum); in jsm_input()
564 ch->ch_r_head = tail; in jsm_input()
567 jsm_check_queue_flow_control(ch); in jsm_input()
569 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
576 if (ch->ch_flags & CH_STOPI) { in jsm_input()
577 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
578 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_input()
580 ch->ch_portnum, head, tail); in jsm_input()
584 jsm_dbg(READ, &ch->ch_bd->pci_dev, "start 2\n"); in jsm_input()
609 u8 chr = ch->ch_rqueue[tail + i]; in jsm_input()
610 u8 error = ch->ch_equeue[tail + i]; in jsm_input()
627 tty_insert_flip_string(port, ch->ch_rqueue + tail, s); in jsm_input()
635 ch->ch_r_tail = tail & rmask; in jsm_input()
636 ch->ch_e_tail = tail & rmask; in jsm_input()
637 jsm_check_queue_flow_control(ch); in jsm_input()
638 spin_unlock_irqrestore(&ch->ch_lock, lock_flags); in jsm_input()
643 jsm_dbg(IOCTL, &ch->ch_bd->pci_dev, "finish\n"); in jsm_input()
646 static void jsm_carrier(struct jsm_channel *ch) in jsm_carrier() argument
653 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "start\n"); in jsm_carrier()
655 bd = ch->ch_bd; in jsm_carrier()
659 if (ch->ch_mistat & UART_MSR_DCD) { in jsm_carrier()
660 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "mistat: %x D_CD: %x\n", in jsm_carrier()
661 ch->ch_mistat, ch->ch_mistat & UART_MSR_DCD); in jsm_carrier()
665 if (ch->ch_c_cflag & CLOCAL) in jsm_carrier()
668 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "DCD: physical: %d virt: %d\n", in jsm_carrier()
674 if (((ch->ch_flags & CH_FCAR) == 0) && (virt_carrier == 1)) { in jsm_carrier()
681 jsm_dbg(CARR, &ch->ch_bd->pci_dev, "carrier: virt DCD rose\n"); in jsm_carrier()
683 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
684 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
690 if (((ch->ch_flags & CH_CD) == 0) && (phys_carrier == 1)) { in jsm_carrier()
697 jsm_dbg(CARR, &ch->ch_bd->pci_dev, in jsm_carrier()
700 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
701 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
713 if ((virt_carrier == 0) && ((ch->ch_flags & CH_CD) != 0) in jsm_carrier()
727 if (waitqueue_active(&(ch->ch_flags_wait))) in jsm_carrier()
728 wake_up_interruptible(&ch->ch_flags_wait); in jsm_carrier()
735 ch->ch_flags |= CH_FCAR; in jsm_carrier()
737 ch->ch_flags &= ~CH_FCAR; in jsm_carrier()
740 ch->ch_flags |= CH_CD; in jsm_carrier()
742 ch->ch_flags &= ~CH_CD; in jsm_carrier()
746 void jsm_check_queue_flow_control(struct jsm_channel *ch) in jsm_check_queue_flow_control() argument
748 struct board_ops *bd_ops = ch->ch_bd->bd_ops; in jsm_check_queue_flow_control()
752 if ((qleft = ch->ch_r_tail - ch->ch_r_head - 1) < 0) in jsm_check_queue_flow_control()
772 if (ch->ch_c_cflag & CRTSCTS) { in jsm_check_queue_flow_control()
773 if (!(ch->ch_flags & CH_RECEIVER_OFF)) { in jsm_check_queue_flow_control()
774 bd_ops->disable_receiver(ch); in jsm_check_queue_flow_control()
775 ch->ch_flags |= (CH_RECEIVER_OFF); in jsm_check_queue_flow_control()
776 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
782 else if (ch->ch_c_iflag & IXOFF) { in jsm_check_queue_flow_control()
783 if (ch->ch_stops_sent <= MAX_STOPS_SENT) { in jsm_check_queue_flow_control()
784 bd_ops->send_stop_character(ch); in jsm_check_queue_flow_control()
785 ch->ch_stops_sent++; in jsm_check_queue_flow_control()
786 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
788 ch->ch_stops_sent); in jsm_check_queue_flow_control()
810 if (ch->ch_c_cflag & CRTSCTS) { in jsm_check_queue_flow_control()
811 if (ch->ch_flags & CH_RECEIVER_OFF) { in jsm_check_queue_flow_control()
812 bd_ops->enable_receiver(ch); in jsm_check_queue_flow_control()
813 ch->ch_flags &= ~(CH_RECEIVER_OFF); in jsm_check_queue_flow_control()
814 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()
820 else if (ch->ch_c_iflag & IXOFF && ch->ch_stops_sent) { in jsm_check_queue_flow_control()
821 ch->ch_stops_sent = 0; in jsm_check_queue_flow_control()
822 bd_ops->send_start_character(ch); in jsm_check_queue_flow_control()
823 jsm_dbg(READ, &ch->ch_bd->pci_dev, in jsm_check_queue_flow_control()