Lines Matching +full:uart +full:- +full:fifosize
1 // SPDX-License-Identifier: GPL-2.0
3 * Driver for the serial port on the 21285 StrongArm-110 core logic chip.
19 #include <asm/mach-types.h>
42 static const char serial21285_name[] = "Footbridge UART";
46 * this, use bits of the private_data pointer of the uart port structure.
53 unsigned long *private_data = (unsigned long *)&port->private_data; in is_enabled()
62 unsigned long *private_data = (unsigned long *)&port->private_data; in enable()
69 unsigned long *private_data = (unsigned long *)&port->private_data; in disable()
84 * BAUD_BASE / baud - 1
88 * int(BAUD_BASE / baud - 0.5) ->
89 * int(BAUD_BASE / baud - (baud >> 1) / baud) ->
90 * int((BAUD_BASE - (baud >> 1)) / baud)
124 while (!(status & 0x10) && max_count--) { in serial21285_rx_chars()
127 port->icount.rx++; in serial21285_rx_chars()
132 port->icount.parity++; in serial21285_rx_chars()
134 port->icount.frame++; in serial21285_rx_chars()
136 port->icount.overrun++; in serial21285_rx_chars()
138 rxs &= port->read_status_mask; in serial21285_rx_chars()
150 tty_flip_buffer_push(&port->state->port); in serial21285_rx_chars()
188 spin_lock_irqsave(&port->lock, flags); in serial21285_break_ctl()
195 spin_unlock_irqrestore(&port->lock, flags); in serial21285_break_ctl()
233 termios->c_cflag &= ~(HUPCL | CRTSCTS | CMSPAR); in serial21285_set_termios()
234 termios->c_cflag |= CLOCAL; in serial21285_set_termios()
239 termios->c_iflag &= ~(IGNBRK | BRKINT); in serial21285_set_termios()
244 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); in serial21285_set_termios()
246 b = port->uartclk / (16 * quot); in serial21285_set_termios()
249 switch (termios->c_cflag & CSIZE) { in serial21285_set_termios()
264 if (termios->c_cflag & CSTOPB) in serial21285_set_termios()
266 if (termios->c_cflag & PARENB) { in serial21285_set_termios()
268 if (!(termios->c_cflag & PARODD)) in serial21285_set_termios()
272 if (port->fifosize) in serial21285_set_termios()
275 spin_lock_irqsave(&port->lock, flags); in serial21285_set_termios()
278 * Update the per-port timeout. in serial21285_set_termios()
280 uart_update_timeout(port, termios->c_cflag, baud); in serial21285_set_termios()
285 port->read_status_mask = RXSTAT_OVERRUN; in serial21285_set_termios()
286 if (termios->c_iflag & INPCK) in serial21285_set_termios()
287 port->read_status_mask |= RXSTAT_FRAME | RXSTAT_PARITY; in serial21285_set_termios()
292 port->ignore_status_mask = 0; in serial21285_set_termios()
293 if (termios->c_iflag & IGNPAR) in serial21285_set_termios()
294 port->ignore_status_mask |= RXSTAT_FRAME | RXSTAT_PARITY; in serial21285_set_termios()
295 if (termios->c_iflag & IGNBRK && termios->c_iflag & IGNPAR) in serial21285_set_termios()
296 port->ignore_status_mask |= RXSTAT_OVERRUN; in serial21285_set_termios()
301 if ((termios->c_cflag & CREAD) == 0) in serial21285_set_termios()
302 port->ignore_status_mask |= RXSTAT_DUMMY_READ; in serial21285_set_termios()
304 quot -= 1; in serial21285_set_termios()
312 spin_unlock_irqrestore(&port->lock, flags); in serial21285_set_termios()
317 return port->type == PORT_21285 ? "DC21285" : NULL; in serial21285_type()
322 release_mem_region(port->mapbase, 32); in serial21285_release_port()
327 return request_mem_region(port->mapbase, 32, serial21285_name) in serial21285_request_port()
328 != NULL ? 0 : -EBUSY; in serial21285_request_port()
334 port->type = PORT_21285; in serial21285_config_port()
343 if (ser->type != PORT_UNKNOWN && ser->type != PORT_21285) in serial21285_verify_port()
344 ret = -EINVAL; in serial21285_verify_port()
345 if (ser->irq <= 0) in serial21285_verify_port()
346 ret = -EINVAL; in serial21285_verify_port()
347 if (ser->baud_base != port->uartclk / 16) in serial21285_verify_port()
348 ret = -EINVAL; in serial21285_verify_port()
374 .fifosize = 16,
431 *baud = port->uartclk / (16 * (tmp + 1)); in serial21285_get_options()
444 * Check whether an invalid uart number has been specified, and in serial21285_console_setup()
465 .index = -1,