Lines Matching refs:port

74 	struct uart_port		port;  member
106 static void sunzilog_putchar(struct uart_port *port, int ch);
294 sunzilog_maybe_update_regs(up, ZILOG_CHANNEL_FROM_PORT(&up->port)); in sunzilog_change_mouse_baud()
330 struct tty_port *port = NULL; in sunzilog_receive_chars() local
333 if (up->port.state != NULL) /* Unopened serial console */ in sunzilog_receive_chars()
334 port = &up->port.state->port; in sunzilog_receive_chars()
369 up->port.icount.rx++; in sunzilog_receive_chars()
373 up->port.icount.brk++; in sunzilog_receive_chars()
374 if (uart_handle_break(&up->port)) in sunzilog_receive_chars()
378 up->port.icount.parity++; in sunzilog_receive_chars()
380 up->port.icount.frame++; in sunzilog_receive_chars()
382 up->port.icount.overrun++; in sunzilog_receive_chars()
383 r1 &= up->port.read_status_mask; in sunzilog_receive_chars()
391 if (uart_handle_sysrq_char(&up->port, ch) || !port) in sunzilog_receive_chars()
394 if (up->port.ignore_status_mask == 0xff || in sunzilog_receive_chars()
395 (r1 & up->port.ignore_status_mask) == 0) { in sunzilog_receive_chars()
396 tty_insert_flip_char(port, ch, flag); in sunzilog_receive_chars()
399 tty_insert_flip_char(port, 0, TTY_OVERRUN); in sunzilog_receive_chars()
402 return port; in sunzilog_receive_chars()
437 up->port.icount.dsr++; in sunzilog_status_handle()
444 uart_handle_dcd_change(&up->port, in sunzilog_status_handle()
447 uart_handle_cts_change(&up->port, in sunzilog_status_handle()
450 wake_up_interruptible(&up->port.state->port.delta_msr_wait); in sunzilog_status_handle()
489 if (up->port.x_char) { in sunzilog_transmit_chars()
491 writeb(up->port.x_char, &channel->data); in sunzilog_transmit_chars()
495 up->port.icount.tx++; in sunzilog_transmit_chars()
496 up->port.x_char = 0; in sunzilog_transmit_chars()
500 if (up->port.state == NULL) in sunzilog_transmit_chars()
502 xmit = &up->port.state->xmit; in sunzilog_transmit_chars()
506 if (uart_tx_stopped(&up->port)) in sunzilog_transmit_chars()
515 up->port.icount.tx++; in sunzilog_transmit_chars()
518 uart_write_wakeup(&up->port); in sunzilog_transmit_chars()
534 = ZILOG_CHANNEL_FROM_PORT(&up->port); in sunzilog_interrupt()
535 struct tty_port *port; in sunzilog_interrupt() local
538 spin_lock(&up->port.lock); in sunzilog_interrupt()
542 port = NULL; in sunzilog_interrupt()
549 port = sunzilog_receive_chars(up, channel); in sunzilog_interrupt()
555 spin_unlock(&up->port.lock); in sunzilog_interrupt()
557 if (port) in sunzilog_interrupt()
558 tty_flip_buffer_push(port); in sunzilog_interrupt()
562 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in sunzilog_interrupt()
564 spin_lock(&up->port.lock); in sunzilog_interrupt()
565 port = NULL; in sunzilog_interrupt()
572 port = sunzilog_receive_chars(up, channel); in sunzilog_interrupt()
578 spin_unlock(&up->port.lock); in sunzilog_interrupt()
580 if (port) in sunzilog_interrupt()
581 tty_flip_buffer_push(port); in sunzilog_interrupt()
592 static __inline__ unsigned char sunzilog_read_channel_status(struct uart_port *port) in sunzilog_read_channel_status() argument
597 channel = ZILOG_CHANNEL_FROM_PORT(port); in sunzilog_read_channel_status()
605 static unsigned int sunzilog_tx_empty(struct uart_port *port) in sunzilog_tx_empty() argument
611 spin_lock_irqsave(&port->lock, flags); in sunzilog_tx_empty()
613 status = sunzilog_read_channel_status(port); in sunzilog_tx_empty()
615 spin_unlock_irqrestore(&port->lock, flags); in sunzilog_tx_empty()
626 static unsigned int sunzilog_get_mctrl(struct uart_port *port) in sunzilog_get_mctrl() argument
631 status = sunzilog_read_channel_status(port); in sunzilog_get_mctrl()
645 static void sunzilog_set_mctrl(struct uart_port *port, unsigned int mctrl) in sunzilog_set_mctrl() argument
648 container_of(port, struct uart_sunzilog_port, port); in sunzilog_set_mctrl()
649 struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port); in sunzilog_set_mctrl()
670 static void sunzilog_stop_tx(struct uart_port *port) in sunzilog_stop_tx() argument
673 container_of(port, struct uart_sunzilog_port, port); in sunzilog_stop_tx()
679 static void sunzilog_start_tx(struct uart_port *port) in sunzilog_start_tx() argument
682 container_of(port, struct uart_sunzilog_port, port); in sunzilog_start_tx()
683 struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port); in sunzilog_start_tx()
699 if (port->x_char) { in sunzilog_start_tx()
700 writeb(port->x_char, &channel->data); in sunzilog_start_tx()
704 port->icount.tx++; in sunzilog_start_tx()
705 port->x_char = 0; in sunzilog_start_tx()
707 struct circ_buf *xmit = &port->state->xmit; in sunzilog_start_tx()
716 port->icount.tx++; in sunzilog_start_tx()
719 uart_write_wakeup(&up->port); in sunzilog_start_tx()
724 static void sunzilog_stop_rx(struct uart_port *port) in sunzilog_stop_rx() argument
726 struct uart_sunzilog_port *up = UART_ZILOG(port); in sunzilog_stop_rx()
732 channel = ZILOG_CHANNEL_FROM_PORT(port); in sunzilog_stop_rx()
740 static void sunzilog_enable_ms(struct uart_port *port) in sunzilog_enable_ms() argument
743 container_of(port, struct uart_sunzilog_port, port); in sunzilog_enable_ms()
744 struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port); in sunzilog_enable_ms()
757 static void sunzilog_break_ctl(struct uart_port *port, int break_state) in sunzilog_break_ctl() argument
760 container_of(port, struct uart_sunzilog_port, port); in sunzilog_break_ctl()
761 struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port); in sunzilog_break_ctl()
772 spin_lock_irqsave(&port->lock, flags); in sunzilog_break_ctl()
782 spin_unlock_irqrestore(&port->lock, flags); in sunzilog_break_ctl()
789 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in __sunzilog_startup()
800 static int sunzilog_startup(struct uart_port *port) in sunzilog_startup() argument
802 struct uart_sunzilog_port *up = UART_ZILOG(port); in sunzilog_startup()
808 spin_lock_irqsave(&port->lock, flags); in sunzilog_startup()
810 spin_unlock_irqrestore(&port->lock, flags); in sunzilog_startup()
839 static void sunzilog_shutdown(struct uart_port *port) in sunzilog_shutdown() argument
841 struct uart_sunzilog_port *up = UART_ZILOG(port); in sunzilog_shutdown()
848 spin_lock_irqsave(&port->lock, flags); in sunzilog_shutdown()
850 channel = ZILOG_CHANNEL_FROM_PORT(port); in sunzilog_shutdown()
861 spin_unlock_irqrestore(&port->lock, flags); in sunzilog_shutdown()
922 up->port.read_status_mask = Rx_OVR; in sunzilog_convert_to_zs()
924 up->port.read_status_mask |= CRC_ERR | PAR_ERR; in sunzilog_convert_to_zs()
926 up->port.read_status_mask |= BRK_ABRT; in sunzilog_convert_to_zs()
928 up->port.ignore_status_mask = 0; in sunzilog_convert_to_zs()
930 up->port.ignore_status_mask |= CRC_ERR | PAR_ERR; in sunzilog_convert_to_zs()
932 up->port.ignore_status_mask |= BRK_ABRT; in sunzilog_convert_to_zs()
934 up->port.ignore_status_mask |= Rx_OVR; in sunzilog_convert_to_zs()
938 up->port.ignore_status_mask = 0xff; in sunzilog_convert_to_zs()
943 sunzilog_set_termios(struct uart_port *port, struct ktermios *termios, in sunzilog_set_termios() argument
947 container_of(port, struct uart_sunzilog_port, port); in sunzilog_set_termios()
951 baud = uart_get_baud_rate(port, termios, old, 1200, 76800); in sunzilog_set_termios()
953 spin_lock_irqsave(&up->port.lock, flags); in sunzilog_set_termios()
959 if (UART_ENABLE_MS(&up->port, termios->c_cflag)) in sunzilog_set_termios()
966 sunzilog_maybe_update_regs(up, ZILOG_CHANNEL_FROM_PORT(port)); in sunzilog_set_termios()
968 uart_update_timeout(port, termios->c_cflag, baud); in sunzilog_set_termios()
970 spin_unlock_irqrestore(&up->port.lock, flags); in sunzilog_set_termios()
973 static const char *sunzilog_type(struct uart_port *port) in sunzilog_type() argument
975 struct uart_sunzilog_port *up = UART_ZILOG(port); in sunzilog_type()
983 static void sunzilog_release_port(struct uart_port *port) in sunzilog_release_port() argument
987 static int sunzilog_request_port(struct uart_port *port) in sunzilog_request_port() argument
993 static void sunzilog_config_port(struct uart_port *port, int flags) in sunzilog_config_port() argument
998 static int sunzilog_verify_port(struct uart_port *port, struct serial_struct *ser) in sunzilog_verify_port() argument
1004 static int sunzilog_get_poll_char(struct uart_port *port) in sunzilog_get_poll_char() argument
1008 container_of(port, struct uart_sunzilog_port, port); in sunzilog_get_poll_char()
1010 = ZILOG_CHANNEL_FROM_PORT(&up->port); in sunzilog_get_poll_char()
1039 static void sunzilog_put_poll_char(struct uart_port *port, in sunzilog_put_poll_char() argument
1043 container_of(port, struct uart_sunzilog_port, port); in sunzilog_put_poll_char()
1045 sunzilog_putchar(&up->port, ch); in sunzilog_put_poll_char()
1100 spin_lock_init(&up->port.lock); in sunzilog_alloc_tables()
1131 static void sunzilog_putchar(struct uart_port *port, int ch) in sunzilog_putchar() argument
1133 struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port); in sunzilog_putchar()
1164 sunzilog_putchar(&up->port, ch); in sunzilog_serio_write()
1208 if (up->port.sysrq || oops_in_progress) in sunzilog_console_write()
1209 locked = spin_trylock_irqsave(&up->port.lock, flags); in sunzilog_console_write()
1211 spin_lock_irqsave(&up->port.lock, flags); in sunzilog_console_write()
1213 uart_console_write(&up->port, s, count, sunzilog_putchar); in sunzilog_console_write()
1217 spin_unlock_irqrestore(&up->port.lock, flags); in sunzilog_console_write()
1226 if (up->port.type != PORT_SUNZILOG) in sunzilog_console_setup()
1233 sunserial_console_termios(con, up->port.dev->of_node); in sunzilog_console_setup()
1252 spin_lock_irqsave(&up->port.lock, flags); in sunzilog_console_setup()
1257 sunzilog_set_mctrl(&up->port, TIOCM_DTR | TIOCM_RTS); in sunzilog_console_setup()
1260 spin_unlock_irqrestore(&up->port.lock, flags); in sunzilog_console_setup()
1299 sunzilog_set_mctrl(&up->port, TIOCM_DTR | TIOCM_RTS); in sunzilog_init_kbdms()
1327 serio->dev.parent = up->port.dev; in sunzilog_register_serio()
1339 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in sunzilog_init_hw()
1341 spin_lock_irqsave(&up->port.lock, flags); in sunzilog_init_hw()
1391 spin_unlock_irqrestore(&up->port.lock, flags); in sunzilog_init_hw()
1434 up[0].port.mapbase = op->resource[0].start + 0x00; in zs_probe()
1435 up[0].port.membase = (void __iomem *) &rp->channelA; in zs_probe()
1436 up[0].port.iotype = UPIO_MEM; in zs_probe()
1437 up[0].port.irq = op->archdata.irqs[0]; in zs_probe()
1438 up[0].port.uartclk = ZS_CLOCK; in zs_probe()
1439 up[0].port.fifosize = 1; in zs_probe()
1440 up[0].port.ops = &sunzilog_pops; in zs_probe()
1441 up[0].port.type = PORT_SUNZILOG; in zs_probe()
1442 up[0].port.flags = 0; in zs_probe()
1443 up[0].port.line = (inst * 2) + 0; in zs_probe()
1444 up[0].port.dev = &op->dev; in zs_probe()
1451 up[1].port.mapbase = op->resource[0].start + 0x04; in zs_probe()
1452 up[1].port.membase = (void __iomem *) &rp->channelB; in zs_probe()
1453 up[1].port.iotype = UPIO_MEM; in zs_probe()
1454 up[1].port.irq = op->archdata.irqs[0]; in zs_probe()
1455 up[1].port.uartclk = ZS_CLOCK; in zs_probe()
1456 up[1].port.fifosize = 1; in zs_probe()
1457 up[1].port.ops = &sunzilog_pops; in zs_probe()
1458 up[1].port.type = PORT_SUNZILOG; in zs_probe()
1459 up[1].port.flags = 0; in zs_probe()
1460 up[1].port.line = (inst * 2) + 1; in zs_probe()
1461 up[1].port.dev = &op->dev; in zs_probe()
1469 &sunzilog_reg, up[0].port.line, in zs_probe()
1472 err = uart_add_one_port(&sunzilog_reg, &up[0].port); in zs_probe()
1479 &sunzilog_reg, up[1].port.line, in zs_probe()
1482 err = uart_add_one_port(&sunzilog_reg, &up[1].port); in zs_probe()
1484 uart_remove_one_port(&sunzilog_reg, &up[0].port); in zs_probe()
1494 (unsigned long long) up[0].port.mapbase, in zs_probe()
1495 op->archdata.irqs[0], sunzilog_type(&up[0].port)); in zs_probe()
1499 (unsigned long long) up[1].port.mapbase, in zs_probe()
1500 op->archdata.irqs[0], sunzilog_type(&up[1].port)); in zs_probe()
1516 uart_remove_one_port(&sunzilog_reg, &up->port); in zs_remove_one()
1527 regs = sunzilog_chip_regs[up[0].port.line / 2]; in zs_remove()
1592 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in sunzilog_init()
1629 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in sunzilog_exit()