Lines Matching refs:port
60 #define UART_GET_UTCR0(sport) __raw_readl((sport)->port.membase + UTCR0)
61 #define UART_GET_UTCR1(sport) __raw_readl((sport)->port.membase + UTCR1)
62 #define UART_GET_UTCR2(sport) __raw_readl((sport)->port.membase + UTCR2)
63 #define UART_GET_UTCR3(sport) __raw_readl((sport)->port.membase + UTCR3)
64 #define UART_GET_UTSR0(sport) __raw_readl((sport)->port.membase + UTSR0)
65 #define UART_GET_UTSR1(sport) __raw_readl((sport)->port.membase + UTSR1)
66 #define UART_GET_CHAR(sport) __raw_readl((sport)->port.membase + UTDR)
68 #define UART_PUT_UTCR0(sport,v) __raw_writel((v),(sport)->port.membase + UTCR0)
69 #define UART_PUT_UTCR1(sport,v) __raw_writel((v),(sport)->port.membase + UTCR1)
70 #define UART_PUT_UTCR2(sport,v) __raw_writel((v),(sport)->port.membase + UTCR2)
71 #define UART_PUT_UTCR3(sport,v) __raw_writel((v),(sport)->port.membase + UTCR3)
72 #define UART_PUT_UTSR0(sport,v) __raw_writel((v),(sport)->port.membase + UTSR0)
73 #define UART_PUT_UTSR1(sport,v) __raw_writel((v),(sport)->port.membase + UTSR1)
74 #define UART_PUT_CHAR(sport,v) __raw_writel((v),(sport)->port.membase + UTDR)
90 struct uart_port port; member
102 status = sport->port.ops->get_mctrl(&sport->port); in sa1100_mctrl_check()
111 sport->port.icount.rng++; in sa1100_mctrl_check()
113 sport->port.icount.dsr++; in sa1100_mctrl_check()
115 uart_handle_dcd_change(&sport->port, status & TIOCM_CAR); in sa1100_mctrl_check()
117 uart_handle_cts_change(&sport->port, status & TIOCM_CTS); in sa1100_mctrl_check()
119 wake_up_interruptible(&sport->port.state->port.delta_msr_wait); in sa1100_mctrl_check()
131 if (sport->port.state) { in sa1100_timeout()
132 spin_lock_irqsave(&sport->port.lock, flags); in sa1100_timeout()
134 spin_unlock_irqrestore(&sport->port.lock, flags); in sa1100_timeout()
143 static void sa1100_stop_tx(struct uart_port *port) in sa1100_stop_tx() argument
146 container_of(port, struct sa1100_port, port); in sa1100_stop_tx()
151 sport->port.read_status_mask &= ~UTSR0_TO_SM(UTSR0_TFS); in sa1100_stop_tx()
157 static void sa1100_start_tx(struct uart_port *port) in sa1100_start_tx() argument
160 container_of(port, struct sa1100_port, port); in sa1100_start_tx()
164 sport->port.read_status_mask |= UTSR0_TO_SM(UTSR0_TFS); in sa1100_start_tx()
171 static void sa1100_stop_rx(struct uart_port *port) in sa1100_stop_rx() argument
174 container_of(port, struct sa1100_port, port); in sa1100_stop_rx()
184 static void sa1100_enable_ms(struct uart_port *port) in sa1100_enable_ms() argument
187 container_of(port, struct sa1100_port, port); in sa1100_enable_ms()
202 sport->port.icount.rx++; in sa1100_rx_chars()
212 sport->port.icount.parity++; in sa1100_rx_chars()
214 sport->port.icount.frame++; in sa1100_rx_chars()
216 sport->port.icount.overrun++; in sa1100_rx_chars()
218 status &= sport->port.read_status_mask; in sa1100_rx_chars()
226 sport->port.sysrq = 0; in sa1100_rx_chars()
230 if (uart_handle_sysrq_char(&sport->port, ch)) in sa1100_rx_chars()
233 uart_insert_char(&sport->port, status, UTSR1_TO_SM(UTSR1_ROR), ch, flg); in sa1100_rx_chars()
240 spin_unlock(&sport->port.lock); in sa1100_rx_chars()
241 tty_flip_buffer_push(&sport->port.state->port); in sa1100_rx_chars()
242 spin_lock(&sport->port.lock); in sa1100_rx_chars()
247 struct circ_buf *xmit = &sport->port.state->xmit; in sa1100_tx_chars()
249 if (sport->port.x_char) { in sa1100_tx_chars()
250 UART_PUT_CHAR(sport, sport->port.x_char); in sa1100_tx_chars()
251 sport->port.icount.tx++; in sa1100_tx_chars()
252 sport->port.x_char = 0; in sa1100_tx_chars()
262 if (uart_circ_empty(xmit) || uart_tx_stopped(&sport->port)) { in sa1100_tx_chars()
263 sa1100_stop_tx(&sport->port); in sa1100_tx_chars()
274 sport->port.icount.tx++; in sa1100_tx_chars()
280 uart_write_wakeup(&sport->port); in sa1100_tx_chars()
283 sa1100_stop_tx(&sport->port); in sa1100_tx_chars()
291 spin_lock(&sport->port.lock); in sa1100_int()
293 status &= SM_TO_UTSR0(sport->port.read_status_mask) | ~UTSR0_TFS; in sa1100_int()
307 sport->port.icount.brk++; in sa1100_int()
310 uart_handle_break(&sport->port); in sa1100_int()
317 status &= SM_TO_UTSR0(sport->port.read_status_mask) | in sa1100_int()
320 spin_unlock(&sport->port.lock); in sa1100_int()
328 static unsigned int sa1100_tx_empty(struct uart_port *port) in sa1100_tx_empty() argument
331 container_of(port, struct sa1100_port, port); in sa1100_tx_empty()
336 static unsigned int sa1100_get_mctrl(struct uart_port *port) in sa1100_get_mctrl() argument
341 static void sa1100_set_mctrl(struct uart_port *port, unsigned int mctrl) in sa1100_set_mctrl() argument
348 static void sa1100_break_ctl(struct uart_port *port, int break_state) in sa1100_break_ctl() argument
351 container_of(port, struct sa1100_port, port); in sa1100_break_ctl()
355 spin_lock_irqsave(&sport->port.lock, flags); in sa1100_break_ctl()
362 spin_unlock_irqrestore(&sport->port.lock, flags); in sa1100_break_ctl()
365 static int sa1100_startup(struct uart_port *port) in sa1100_startup() argument
368 container_of(port, struct sa1100_port, port); in sa1100_startup()
374 retval = request_irq(sport->port.irq, sa1100_int, 0, in sa1100_startup()
388 spin_lock_irq(&sport->port.lock); in sa1100_startup()
389 sa1100_enable_ms(&sport->port); in sa1100_startup()
390 spin_unlock_irq(&sport->port.lock); in sa1100_startup()
395 static void sa1100_shutdown(struct uart_port *port) in sa1100_shutdown() argument
398 container_of(port, struct sa1100_port, port); in sa1100_shutdown()
408 free_irq(sport->port.irq, sport); in sa1100_shutdown()
417 sa1100_set_termios(struct uart_port *port, struct ktermios *termios, in sa1100_set_termios() argument
421 container_of(port, struct sa1100_port, port); in sa1100_set_termios()
452 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); in sa1100_set_termios()
453 quot = uart_get_divisor(port, baud); in sa1100_set_termios()
455 spin_lock_irqsave(&sport->port.lock, flags); in sa1100_set_termios()
457 sport->port.read_status_mask &= UTSR0_TO_SM(UTSR0_TFS); in sa1100_set_termios()
458 sport->port.read_status_mask |= UTSR1_TO_SM(UTSR1_ROR); in sa1100_set_termios()
460 sport->port.read_status_mask |= in sa1100_set_termios()
463 sport->port.read_status_mask |= in sa1100_set_termios()
469 sport->port.ignore_status_mask = 0; in sa1100_set_termios()
471 sport->port.ignore_status_mask |= in sa1100_set_termios()
474 sport->port.ignore_status_mask |= in sa1100_set_termios()
481 sport->port.ignore_status_mask |= in sa1100_set_termios()
490 uart_update_timeout(port, termios->c_cflag, baud); in sa1100_set_termios()
516 if (UART_ENABLE_MS(&sport->port, termios->c_cflag)) in sa1100_set_termios()
517 sa1100_enable_ms(&sport->port); in sa1100_set_termios()
519 spin_unlock_irqrestore(&sport->port.lock, flags); in sa1100_set_termios()
522 static const char *sa1100_type(struct uart_port *port) in sa1100_type() argument
525 container_of(port, struct sa1100_port, port); in sa1100_type()
527 return sport->port.type == PORT_SA1100 ? "SA1100" : NULL; in sa1100_type()
533 static void sa1100_release_port(struct uart_port *port) in sa1100_release_port() argument
536 container_of(port, struct sa1100_port, port); in sa1100_release_port()
538 release_mem_region(sport->port.mapbase, UART_PORT_SIZE); in sa1100_release_port()
544 static int sa1100_request_port(struct uart_port *port) in sa1100_request_port() argument
547 container_of(port, struct sa1100_port, port); in sa1100_request_port()
549 return request_mem_region(sport->port.mapbase, UART_PORT_SIZE, in sa1100_request_port()
556 static void sa1100_config_port(struct uart_port *port, int flags) in sa1100_config_port() argument
559 container_of(port, struct sa1100_port, port); in sa1100_config_port()
562 sa1100_request_port(&sport->port) == 0) in sa1100_config_port()
563 sport->port.type = PORT_SA1100; in sa1100_config_port()
572 sa1100_verify_port(struct uart_port *port, struct serial_struct *ser) in sa1100_verify_port() argument
575 container_of(port, struct sa1100_port, port); in sa1100_verify_port()
580 if (sport->port.irq != ser->irq) in sa1100_verify_port()
584 if (sport->port.uartclk / 16 != ser->baud_base) in sa1100_verify_port()
586 if ((void *)sport->port.mapbase != ser->iomem_base) in sa1100_verify_port()
588 if (sport->port.iobase != ser->port) in sa1100_verify_port()
638 sa1100_ports[i].port.uartclk = 3686400; in sa1100_init_ports()
639 sa1100_ports[i].port.ops = &sa1100_pops; in sa1100_init_ports()
640 sa1100_ports[i].port.fifosize = 8; in sa1100_init_ports()
641 sa1100_ports[i].port.line = i; in sa1100_init_ports()
642 sa1100_ports[i].port.iotype = UPIO_MEM; in sa1100_init_ports()
670 void __init sa1100_register_uart(int idx, int port) in sa1100_register_uart() argument
677 switch (port) { in sa1100_register_uart()
679 sa1100_ports[idx].port.membase = (void __iomem *)&Ser1UTCR0; in sa1100_register_uart()
680 sa1100_ports[idx].port.mapbase = _Ser1UTCR0; in sa1100_register_uart()
681 sa1100_ports[idx].port.irq = IRQ_Ser1UART; in sa1100_register_uart()
682 sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF; in sa1100_register_uart()
686 sa1100_ports[idx].port.membase = (void __iomem *)&Ser2UTCR0; in sa1100_register_uart()
687 sa1100_ports[idx].port.mapbase = _Ser2UTCR0; in sa1100_register_uart()
688 sa1100_ports[idx].port.irq = IRQ_Ser2ICP; in sa1100_register_uart()
689 sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF; in sa1100_register_uart()
693 sa1100_ports[idx].port.membase = (void __iomem *)&Ser3UTCR0; in sa1100_register_uart()
694 sa1100_ports[idx].port.mapbase = _Ser3UTCR0; in sa1100_register_uart()
695 sa1100_ports[idx].port.irq = IRQ_Ser3UART; in sa1100_register_uart()
696 sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF; in sa1100_register_uart()
700 printk(KERN_ERR "%s: bad port number %d\n", __func__, port); in sa1100_register_uart()
706 static void sa1100_console_putchar(struct uart_port *port, int ch) in sa1100_console_putchar() argument
709 container_of(port, struct sa1100_port, port); in sa1100_console_putchar()
732 uart_console_write(&sport->port, s, count, sa1100_console_putchar); in sa1100_console_write()
776 *baud = sport->port.uartclk / (16 * (quot + 1)); in sa1100_console_get_options()
803 return uart_set_options(&sport->port, co, baud, parity, bits, flow); in sa1100_console_setup()
845 uart_suspend_port(&sa1100_reg, &sport->port); in sa1100_serial_suspend()
855 uart_resume_port(&sa1100_reg, &sport->port); in sa1100_serial_resume()
871 if (sa1100_ports[i].port.mapbase != res->start) in sa1100_serial_probe()
874 sa1100_ports[i].port.dev = &dev->dev; in sa1100_serial_probe()
875 uart_add_one_port(&sa1100_reg, &sa1100_ports[i].port); in sa1100_serial_probe()
889 uart_remove_one_port(&sa1100_reg, &sport->port); in sa1100_serial_remove()