Lines Matching refs:port

53 	struct uart_port	port;
60 static unsigned int mcf_tx_empty(struct uart_port *port)
62 return (readb(port->membase + MCFUART_USR) & MCFUART_USR_TXEMPTY) ?
68 static unsigned int mcf_get_mctrl(struct uart_port *port)
70 struct mcf_uart *pp = container_of(port, struct mcf_uart, port);
73 sigs = (readb(port->membase + MCFUART_UIPR) & MCFUART_UIPR_CTS) ?
76 sigs |= (mcf_getppdcd(port->line) ? TIOCM_CD : 0);
77 sigs |= (mcf_getppdtr(port->line) ? TIOCM_DTR : 0);
84 static void mcf_set_mctrl(struct uart_port *port, unsigned int sigs)
86 struct mcf_uart *pp = container_of(port, struct mcf_uart, port);
89 mcf_setppdtr(port->line, (sigs & TIOCM_DTR));
91 writeb(MCFUART_UOP_RTS, port->membase + MCFUART_UOP1);
93 writeb(MCFUART_UOP_RTS, port->membase + MCFUART_UOP0);
98 static void mcf_start_tx(struct uart_port *port)
100 struct mcf_uart *pp = container_of(port, struct mcf_uart, port);
102 if (port->rs485.flags & SER_RS485_ENABLED) {
104 writeb(MCFUART_UCR_TXENABLE, port->membase + MCFUART_UCR);
106 writeb(MCFUART_UOP_RTS, port->membase + MCFUART_UOP1);
109 writeb(pp->imr, port->membase + MCFUART_UIMR);
114 static void mcf_stop_tx(struct uart_port *port)
116 struct mcf_uart *pp = container_of(port, struct mcf_uart, port);
119 writeb(pp->imr, port->membase + MCFUART_UIMR);
124 static void mcf_stop_rx(struct uart_port *port)
126 struct mcf_uart *pp = container_of(port, struct mcf_uart, port);
129 writeb(pp->imr, port->membase + MCFUART_UIMR);
134 static void mcf_break_ctl(struct uart_port *port, int break_state)
138 spin_lock_irqsave(&port->lock, flags);
140 writeb(MCFUART_UCR_CMDBREAKSTART, port->membase + MCFUART_UCR);
142 writeb(MCFUART_UCR_CMDBREAKSTOP, port->membase + MCFUART_UCR);
143 spin_unlock_irqrestore(&port->lock, flags);
148 static int mcf_startup(struct uart_port *port)
150 struct mcf_uart *pp = container_of(port, struct mcf_uart, port);
153 spin_lock_irqsave(&port->lock, flags);
156 writeb(MCFUART_UCR_CMDRESETRX, port->membase + MCFUART_UCR);
157 writeb(MCFUART_UCR_CMDRESETTX, port->membase + MCFUART_UCR);
161 port->membase + MCFUART_UCR);
165 writeb(pp->imr, port->membase + MCFUART_UIMR);
167 spin_unlock_irqrestore(&port->lock, flags);
174 static void mcf_shutdown(struct uart_port *port)
176 struct mcf_uart *pp = container_of(port, struct mcf_uart, port);
179 spin_lock_irqsave(&port->lock, flags);
183 writeb(pp->imr, port->membase + MCFUART_UIMR);
186 writeb(MCFUART_UCR_CMDRESETRX, port->membase + MCFUART_UCR);
187 writeb(MCFUART_UCR_CMDRESETTX, port->membase + MCFUART_UCR);
189 spin_unlock_irqrestore(&port->lock, flags);
194 static void mcf_set_termios(struct uart_port *port, struct ktermios *termios,
204 baud = uart_get_baud_rate(port, termios, old, 0, 230400);
240 * FIXME: port->read_status_mask and port->ignore_status_mask
255 spin_lock_irqsave(&port->lock, flags);
256 if (port->rs485.flags & SER_RS485_ENABLED) {
257 dev_dbg(port->dev, "Setting UART to RS485\n");
261 uart_update_timeout(port, termios->c_cflag, baud);
262 writeb(MCFUART_UCR_CMDRESETRX, port->membase + MCFUART_UCR);
263 writeb(MCFUART_UCR_CMDRESETTX, port->membase + MCFUART_UCR);
264 writeb(MCFUART_UCR_CMDRESETMRPTR, port->membase + MCFUART_UCR);
265 writeb(mr1, port->membase + MCFUART_UMR);
266 writeb(mr2, port->membase + MCFUART_UMR);
267 writeb((baudclk & 0xff00) >> 8, port->membase + MCFUART_UBG1);
268 writeb((baudclk & 0xff), port->membase + MCFUART_UBG2);
270 writeb((baudfr & 0x0f), port->membase + MCFUART_UFPD);
273 port->membase + MCFUART_UCSR);
275 port->membase + MCFUART_UCR);
276 spin_unlock_irqrestore(&port->lock, flags);
283 struct uart_port *port = &pp->port;
286 while ((status = readb(port->membase + MCFUART_USR)) & MCFUART_USR_RXREADY) {
287 ch = readb(port->membase + MCFUART_URB);
289 port->icount.rx++;
293 port->membase + MCFUART_UCR);
296 port->icount.brk++;
297 if (uart_handle_break(port))
300 port->icount.parity++;
302 port->icount.overrun++;
304 port->icount.frame++;
307 status &= port->read_status_mask;
317 if (uart_handle_sysrq_char(port, ch))
319 uart_insert_char(port, status, MCFUART_USR_RXOVERRUN, ch, flag);
322 spin_unlock(&port->lock);
323 tty_flip_buffer_push(&port->state->port);
324 spin_lock(&port->lock);
331 struct uart_port *port = &pp->port;
332 struct circ_buf *xmit = &port->state->xmit;
334 if (port->x_char) {
336 writeb(port->x_char, port->membase + MCFUART_UTB);
337 port->x_char = 0;
338 port->icount.tx++;
342 while (readb(port->membase + MCFUART_USR) & MCFUART_USR_TXREADY) {
345 writeb(xmit->buf[xmit->tail], port->membase + MCFUART_UTB);
347 port->icount.tx++;
351 uart_write_wakeup(port);
355 writeb(pp->imr, port->membase + MCFUART_UIMR);
357 if (port->rs485.flags & SER_RS485_ENABLED)
359 port->membase + MCFUART_UCR);
367 struct uart_port *port = data;
368 struct mcf_uart *pp = container_of(port, struct mcf_uart, port);
372 isr = readb(port->membase + MCFUART_UISR) & pp->imr;
374 spin_lock(&port->lock);
383 spin_unlock(&port->lock);
390 static void mcf_config_port(struct uart_port *port, int flags)
392 port->type = PORT_MCF;
393 port->fifosize = MCFUART_TXFIFOSIZE;
396 writeb(0, port->membase + MCFUART_UIMR);
398 if (request_irq(port->irq, mcf_interrupt, 0, "UART", port))
400 "interrupt vector=%d\n", port->line, port->irq);
405 static const char *mcf_type(struct uart_port *port)
407 return (port->type == PORT_MCF) ? "ColdFire UART" : NULL;
412 static int mcf_request_port(struct uart_port *port)
420 static void mcf_release_port(struct uart_port *port)
427 static int mcf_verify_port(struct uart_port *port, struct serial_struct *ser)
437 static int mcf_config_rs485(struct uart_port *port, struct serial_rs485 *rs485)
442 mr1 = readb(port->membase + MCFUART_UMR);
443 mr2 = readb(port->membase + MCFUART_UMR);
445 dev_dbg(port->dev, "Setting UART to RS485\n");
449 dev_dbg(port->dev, "Setting UART to RS232\n");
452 writeb(mr1, port->membase + MCFUART_UMR);
453 writeb(mr2, port->membase + MCFUART_UMR);
454 port->rs485 = *rs485;
492 struct uart_port *port;
496 port = &mcf_ports[i].port;
498 port->line = i;
499 port->type = PORT_MCF;
500 port->mapbase = platp[i].mapbase;
501 port->membase = (platp[i].membase) ? platp[i].membase :
502 (unsigned char __iomem *) port->mapbase;
503 port->iotype = SERIAL_IO_MEM;
504 port->irq = platp[i].irq;
505 port->uartclk = MCF_BUSCLK;
506 port->flags = UPF_BOOT_AUTOCONF;
507 port->rs485_config = mcf_config_rs485;
508 port->ops = &mcf_uart_ops;
518 struct uart_port *port = &(mcf_ports + co->index)->port;
522 if (readb(port->membase + MCFUART_USR) & MCFUART_USR_TXREADY)
525 writeb(c, port->membase + MCFUART_UTB);
527 if (readb(port->membase + MCFUART_USR) & MCFUART_USR_TXREADY)
547 struct uart_port *port;
555 port = &mcf_ports[co->index].port;
556 if (port->membase == 0)
562 return uart_set_options(port, co, baud, parity, bits, flow);
617 struct uart_port *port;
621 port = &mcf_ports[i].port;
623 port->line = i;
624 port->type = PORT_MCF;
625 port->mapbase = platp[i].mapbase;
626 port->membase = (platp[i].membase) ? platp[i].membase :
628 port->dev = &pdev->dev;
629 port->iotype = SERIAL_IO_MEM;
630 port->irq = platp[i].irq;
631 port->uartclk = MCF_BUSCLK;
632 port->ops = &mcf_uart_ops;
633 port->flags = UPF_BOOT_AUTOCONF;
634 port->rs485_config = mcf_config_rs485;
635 port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_MCF_CONSOLE);
637 uart_add_one_port(&mcf_driver, port);
647 struct uart_port *port;
651 port = &mcf_ports[i].port;
652 if (port)
653 uart_remove_one_port(&mcf_driver, port);