Lines Matching full:port
46 struct uart_port port; member
51 #define to_liteuart_port(port) container_of(port, struct liteuart_port, port) argument
71 static void liteuart_update_irq_reg(struct uart_port *port, bool set, u8 mask) in liteuart_update_irq_reg() argument
73 struct liteuart_port *uart = to_liteuart_port(port); in liteuart_update_irq_reg()
80 if (port->irq) in liteuart_update_irq_reg()
81 litex_write8(port->membase + OFF_EV_ENABLE, uart->irq_reg); in liteuart_update_irq_reg()
84 static void liteuart_stop_tx(struct uart_port *port) in liteuart_stop_tx() argument
86 liteuart_update_irq_reg(port, false, EV_TX); in liteuart_stop_tx()
89 static void liteuart_start_tx(struct uart_port *port) in liteuart_start_tx() argument
91 liteuart_update_irq_reg(port, true, EV_TX); in liteuart_start_tx()
94 static void liteuart_stop_rx(struct uart_port *port) in liteuart_stop_rx() argument
96 struct liteuart_port *uart = to_liteuart_port(port); in liteuart_stop_rx()
102 static void liteuart_rx_chars(struct uart_port *port) in liteuart_rx_chars() argument
104 unsigned char __iomem *membase = port->membase; in liteuart_rx_chars()
109 port->icount.rx++; in liteuart_rx_chars()
115 if (!(uart_handle_sysrq_char(port, ch))) in liteuart_rx_chars()
116 uart_insert_char(port, 1, 0, ch, TTY_NORMAL); in liteuart_rx_chars()
119 tty_flip_buffer_push(&port->state->port); in liteuart_rx_chars()
122 static void liteuart_tx_chars(struct uart_port *port) in liteuart_tx_chars() argument
126 uart_port_tx(port, ch, in liteuart_tx_chars()
127 !litex_read8(port->membase + OFF_TXFULL), in liteuart_tx_chars()
128 litex_write8(port->membase + OFF_RXTX, ch)); in liteuart_tx_chars()
134 struct uart_port *port = &uart->port; in liteuart_interrupt() local
142 uart_port_lock_irqsave(port, &flags); in liteuart_interrupt()
143 isr = litex_read8(port->membase + OFF_EV_PENDING) & uart->irq_reg; in liteuart_interrupt()
145 liteuart_rx_chars(port); in liteuart_interrupt()
147 liteuart_tx_chars(port); in liteuart_interrupt()
148 uart_port_unlock_irqrestore(port, flags); in liteuart_interrupt()
156 struct uart_port *port = &uart->port; in liteuart_timer() local
158 liteuart_interrupt(0, port); in liteuart_timer()
159 mod_timer(&uart->timer, jiffies + uart_poll_timeout(port)); in liteuart_timer()
162 static unsigned int liteuart_tx_empty(struct uart_port *port) in liteuart_tx_empty() argument
165 if (!litex_read8(port->membase + OFF_TXFULL)) in liteuart_tx_empty()
171 static void liteuart_set_mctrl(struct uart_port *port, unsigned int mctrl) in liteuart_set_mctrl() argument
176 static unsigned int liteuart_get_mctrl(struct uart_port *port) in liteuart_get_mctrl() argument
181 static int liteuart_startup(struct uart_port *port) in liteuart_startup() argument
183 struct liteuart_port *uart = to_liteuart_port(port); in liteuart_startup()
187 if (port->irq) { in liteuart_startup()
188 ret = request_irq(port->irq, liteuart_interrupt, 0, in liteuart_startup()
191 dev_warn(port->dev, in liteuart_startup()
193 port->line, port->irq); in liteuart_startup()
194 port->irq = 0; in liteuart_startup()
198 uart_port_lock_irqsave(port, &flags); in liteuart_startup()
200 liteuart_update_irq_reg(port, true, EV_RX); in liteuart_startup()
201 uart_port_unlock_irqrestore(port, flags); in liteuart_startup()
203 if (!port->irq) { in liteuart_startup()
205 mod_timer(&uart->timer, jiffies + uart_poll_timeout(port)); in liteuart_startup()
211 static void liteuart_shutdown(struct uart_port *port) in liteuart_shutdown() argument
213 struct liteuart_port *uart = to_liteuart_port(port); in liteuart_shutdown()
216 uart_port_lock_irqsave(port, &flags); in liteuart_shutdown()
217 liteuart_update_irq_reg(port, false, EV_RX | EV_TX); in liteuart_shutdown()
218 uart_port_unlock_irqrestore(port, flags); in liteuart_shutdown()
220 if (port->irq) in liteuart_shutdown()
221 free_irq(port->irq, port); in liteuart_shutdown()
226 static void liteuart_set_termios(struct uart_port *port, struct ktermios *new, in liteuart_set_termios() argument
232 uart_port_lock_irqsave(port, &flags); in liteuart_set_termios()
235 baud = uart_get_baud_rate(port, new, old, 0, 460800); in liteuart_set_termios()
236 uart_update_timeout(port, new->c_cflag, baud); in liteuart_set_termios()
238 uart_port_unlock_irqrestore(port, flags); in liteuart_set_termios()
241 static const char *liteuart_type(struct uart_port *port) in liteuart_type() argument
246 static void liteuart_config_port(struct uart_port *port, int flags) in liteuart_config_port() argument
249 * Driver core for serial ports forces a non-zero value for port type. in liteuart_config_port()
253 port->type = 1; in liteuart_config_port()
256 static int liteuart_verify_port(struct uart_port *port, in liteuart_verify_port() argument
259 if (port->type != PORT_UNKNOWN && ser->type != 1) in liteuart_verify_port()
283 struct uart_port *port; in liteuart_probe() local
291 port = &uart->port; in liteuart_probe()
294 port->membase = devm_platform_get_and_ioremap_resource(pdev, 0, NULL); in liteuart_probe()
295 if (IS_ERR(port->membase)) in liteuart_probe()
296 return PTR_ERR(port->membase); in liteuart_probe()
302 port->irq = ret; in liteuart_probe()
316 port->dev = &pdev->dev; in liteuart_probe()
317 port->iotype = UPIO_MEM; in liteuart_probe()
318 port->flags = UPF_BOOT_AUTOCONF; in liteuart_probe()
319 port->ops = &liteuart_ops; in liteuart_probe()
320 port->fifosize = 16; in liteuart_probe()
321 port->type = PORT_UNKNOWN; in liteuart_probe()
322 port->line = dev_id; in liteuart_probe()
323 spin_lock_init(&port->lock); in liteuart_probe()
325 platform_set_drvdata(pdev, port); in liteuart_probe()
327 ret = uart_add_one_port(&liteuart_driver, &uart->port); in liteuart_probe()
341 struct uart_port *port = platform_get_drvdata(pdev); in liteuart_remove() local
342 unsigned int line = port->line; in liteuart_remove()
344 uart_remove_one_port(&liteuart_driver, port); in liteuart_remove()
365 static void liteuart_putchar(struct uart_port *port, unsigned char ch) in liteuart_putchar() argument
367 while (litex_read8(port->membase + OFF_TXFULL)) in liteuart_putchar()
370 litex_write8(port->membase + OFF_RXTX, ch); in liteuart_putchar()
377 struct uart_port *port; in liteuart_console_write() local
381 port = &uart->port; in liteuart_console_write()
383 uart_port_lock_irqsave(port, &flags); in liteuart_console_write()
384 uart_console_write(port, s, count, liteuart_putchar); in liteuart_console_write()
385 uart_port_unlock_irqrestore(port, flags); in liteuart_console_write()
391 struct uart_port *port; in liteuart_console_setup() local
401 port = &uart->port; in liteuart_console_setup()
402 if (!port->membase) in liteuart_console_setup()
408 return uart_set_options(port, co, baud, parity, bits, flow); in liteuart_console_setup()
433 struct uart_port *port = &device->port; in early_liteuart_write() local
435 uart_console_write(port, s, count, liteuart_putchar); in early_liteuart_write()
441 if (!device->port.membase) in early_liteuart_setup()