Lines Matching +full:auto +full:- +full:baud
1 // SPDX-License-Identifier: GPL-2.0
5 * Copyright (C) 2019-2020 Antmicro <www.antmicro.com>
24 * The definitions below are true for LiteX SoC configured for 8-bit CSR Bus,
25 * 32-bit aligned.
73 struct uart_port *port = &uart->port; in liteuart_timer()
74 unsigned char __iomem *membase = port->membase; in liteuart_timer()
81 port->icount.rx++; in liteuart_timer()
90 tty_flip_buffer_push(&port->state->port); in liteuart_timer()
93 mod_timer(&uart->timer, jiffies + uart_poll_timeout(port)); in liteuart_timer()
98 while (litex_read8(port->membase + OFF_TXFULL)) in liteuart_putchar()
101 litex_write8(port->membase + OFF_RXTX, ch); in liteuart_putchar()
107 if (!litex_read8(port->membase + OFF_TXFULL)) in liteuart_tx_empty()
129 struct circ_buf *xmit = &port->state->xmit; in liteuart_start_tx()
132 if (unlikely(port->x_char)) { in liteuart_start_tx()
133 litex_write8(port->membase + OFF_RXTX, port->x_char); in liteuart_start_tx()
134 port->icount.tx++; in liteuart_start_tx()
135 port->x_char = 0; in liteuart_start_tx()
137 while (xmit->head != xmit->tail) { in liteuart_start_tx()
138 ch = xmit->buf[xmit->tail]; in liteuart_start_tx()
139 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); in liteuart_start_tx()
140 port->icount.tx++; in liteuart_start_tx()
154 del_timer(&uart->timer); in liteuart_stop_rx()
167 litex_write8(port->membase + OFF_EV_ENABLE, 0); in liteuart_startup()
170 timer_setup(&uart->timer, liteuart_timer, 0); in liteuart_startup()
171 mod_timer(&uart->timer, jiffies + uart_poll_timeout(port)); in liteuart_startup()
183 unsigned int baud; in liteuart_set_termios() local
186 spin_lock_irqsave(&port->lock, flags); in liteuart_set_termios()
189 baud = uart_get_baud_rate(port, new, old, 0, 460800); in liteuart_set_termios()
190 uart_update_timeout(port, new->c_cflag, baud); in liteuart_set_termios()
192 spin_unlock_irqrestore(&port->lock, flags); in liteuart_set_termios()
212 * Driver core for serial ports forces a non-zero value for port type. in liteuart_config_port()
216 port->type = 1; in liteuart_config_port()
222 if (port->type != PORT_UNKNOWN && ser->type != 1) in liteuart_verify_port()
223 return -EINVAL; in liteuart_verify_port()
253 /* look for aliases; auto-enumerate for free index if not found */ in liteuart_probe()
254 dev_id = of_alias_get_id(pdev->dev.of_node, "serial"); in liteuart_probe()
260 uart = devm_kzalloc(&pdev->dev, sizeof(struct liteuart_port), GFP_KERNEL); in liteuart_probe()
262 return -ENOMEM; in liteuart_probe()
268 uart->id = dev_id; in liteuart_probe()
269 port = &uart->port; in liteuart_probe()
272 port->membase = devm_platform_get_and_ioremap_resource(pdev, 0, NULL); in liteuart_probe()
273 if (IS_ERR(port->membase)) in liteuart_probe()
274 return PTR_ERR(port->membase); in liteuart_probe()
277 port->dev = &pdev->dev; in liteuart_probe()
278 port->iotype = UPIO_MEM; in liteuart_probe()
279 port->flags = UPF_BOOT_AUTOCONF; in liteuart_probe()
280 port->ops = &liteuart_ops; in liteuart_probe()
281 port->regshift = 2; in liteuart_probe()
282 port->fifosize = 16; in liteuart_probe()
283 port->iobase = 1; in liteuart_probe()
284 port->type = PORT_UNKNOWN; in liteuart_probe()
285 port->line = dev_id; in liteuart_probe()
286 spin_lock_init(&port->lock); in liteuart_probe()
288 return uart_add_one_port(&liteuart_driver, &uart->port); in liteuart_probe()
296 xa_erase(&liteuart_array, uart->id); in liteuart_remove()
325 uart = (struct liteuart_port *)xa_load(&liteuart_array, co->index); in liteuart_console_write()
326 port = &uart->port; in liteuart_console_write()
328 spin_lock_irqsave(&port->lock, flags); in liteuart_console_write()
330 spin_unlock_irqrestore(&port->lock, flags); in liteuart_console_write()
337 int baud = 115200; in liteuart_console_setup() local
342 uart = (struct liteuart_port *)xa_load(&liteuart_array, co->index); in liteuart_console_setup()
344 return -ENODEV; in liteuart_console_setup()
346 port = &uart->port; in liteuart_console_setup()
347 if (!port->membase) in liteuart_console_setup()
348 return -ENODEV; in liteuart_console_setup()
351 uart_parse_options(options, &baud, &parity, &bits, &flow); in liteuart_console_setup()
353 return uart_set_options(port, co, baud, parity, bits, flow); in liteuart_console_setup()
362 .index = -1,
377 struct earlycon_device *device = console->data; in early_liteuart_write()
378 struct uart_port *port = &device->port; in early_liteuart_write()
386 if (!device->port.membase) in early_liteuart_setup()
387 return -ENODEV; in early_liteuart_setup()
389 device->con->write = early_liteuart_write; in early_liteuart_setup()