Lines Matching refs:port

117 	struct uart_port port;
121 #define to_rda_uart_port(port) container_of(port, struct rda_uart_port, port)
125 static inline void rda_uart_write(struct uart_port *port, u32 val,
128 writel(val, port->membase + off);
131 static inline u32 rda_uart_read(struct uart_port *port, unsigned int off)
133 return readl(port->membase + off);
136 static unsigned int rda_uart_tx_empty(struct uart_port *port)
142 spin_lock_irqsave(&port->lock, flags);
144 val = rda_uart_read(port, RDA_UART_STATUS);
147 spin_unlock_irqrestore(&port->lock, flags);
152 static unsigned int rda_uart_get_mctrl(struct uart_port *port)
157 cmd_set = rda_uart_read(port, RDA_UART_CMD_SET);
158 status = rda_uart_read(port, RDA_UART_STATUS);
167 static void rda_uart_set_mctrl(struct uart_port *port, unsigned int mctrl)
172 val = rda_uart_read(port, RDA_UART_CMD_SET);
173 rda_uart_write(port, (val | RDA_UART_RTS), RDA_UART_CMD_SET);
176 val = rda_uart_read(port, RDA_UART_CMD_CLR);
177 rda_uart_write(port, (val | RDA_UART_RTS), RDA_UART_CMD_CLR);
180 val = rda_uart_read(port, RDA_UART_CTRL);
187 rda_uart_write(port, val, RDA_UART_CTRL);
190 static void rda_uart_stop_tx(struct uart_port *port)
194 val = rda_uart_read(port, RDA_UART_IRQ_MASK);
196 rda_uart_write(port, val, RDA_UART_IRQ_MASK);
198 val = rda_uart_read(port, RDA_UART_CMD_SET);
200 rda_uart_write(port, val, RDA_UART_CMD_SET);
203 static void rda_uart_stop_rx(struct uart_port *port)
207 val = rda_uart_read(port, RDA_UART_IRQ_MASK);
209 rda_uart_write(port, val, RDA_UART_IRQ_MASK);
212 val = rda_uart_read(port, RDA_UART_RXTX_BUFFER);
214 val = rda_uart_read(port, RDA_UART_CMD_SET);
216 rda_uart_write(port, val, RDA_UART_CMD_SET);
219 static void rda_uart_start_tx(struct uart_port *port)
223 if (uart_tx_stopped(port)) {
224 rda_uart_stop_tx(port);
228 val = rda_uart_read(port, RDA_UART_IRQ_MASK);
230 rda_uart_write(port, val, RDA_UART_IRQ_MASK);
239 static void rda_uart_set_termios(struct uart_port *port,
243 struct rda_uart_port *rda_port = to_rda_uart_port(port);
249 spin_lock_irqsave(&port->lock, flags);
251 baud = uart_get_baud_rate(port, termios, old, 9600, port->uartclk / 4);
254 ctrl = rda_uart_read(port, RDA_UART_CTRL);
255 cmd_set = rda_uart_read(port, RDA_UART_CMD_SET);
256 cmd_clr = rda_uart_read(port, RDA_UART_CMD_CLR);
261 dev_warn(port->dev, "bit size not supported, using 7 bits\n");
311 irq_mask = rda_uart_read(port, RDA_UART_IRQ_MASK);
312 rda_uart_write(port, 0, RDA_UART_IRQ_MASK);
314 rda_uart_write(port, triggers, RDA_UART_IRQ_TRIGGERS);
315 rda_uart_write(port, ctrl, RDA_UART_CTRL);
316 rda_uart_write(port, cmd_set, RDA_UART_CMD_SET);
317 rda_uart_write(port, cmd_clr, RDA_UART_CMD_CLR);
319 rda_uart_write(port, irq_mask, RDA_UART_IRQ_MASK);
325 /* update the per-port timeout */
326 uart_update_timeout(port, termios->c_cflag, baud);
328 spin_unlock_irqrestore(&port->lock, flags);
331 static void rda_uart_send_chars(struct uart_port *port)
333 struct circ_buf *xmit = &port->state->xmit;
337 if (uart_tx_stopped(port))
340 if (port->x_char) {
341 while (!(rda_uart_read(port, RDA_UART_STATUS) &
345 rda_uart_write(port, port->x_char, RDA_UART_RXTX_BUFFER);
346 port->icount.tx++;
347 port->x_char = 0;
350 while (rda_uart_read(port, RDA_UART_STATUS) & RDA_UART_TX_FIFO_MASK) {
355 rda_uart_write(port, ch, RDA_UART_RXTX_BUFFER);
357 port->icount.tx++;
361 uart_write_wakeup(port);
365 val = rda_uart_read(port, RDA_UART_IRQ_MASK);
367 rda_uart_write(port, val, RDA_UART_IRQ_MASK);
371 static void rda_uart_receive_chars(struct uart_port *port)
375 status = rda_uart_read(port, RDA_UART_STATUS);
380 port->icount.parity++;
385 port->icount.frame++;
390 port->icount.overrun++;
394 val = rda_uart_read(port, RDA_UART_RXTX_BUFFER);
397 port->icount.rx++;
398 tty_insert_flip_char(&port->state->port, val, flag);
400 status = rda_uart_read(port, RDA_UART_STATUS);
403 spin_unlock(&port->lock);
404 tty_flip_buffer_push(&port->state->port);
405 spin_lock(&port->lock);
410 struct uart_port *port = dev_id;
414 spin_lock_irqsave(&port->lock, flags);
417 val = rda_uart_read(port, RDA_UART_IRQ_CAUSE);
418 rda_uart_write(port, val, RDA_UART_IRQ_CAUSE);
421 rda_uart_receive_chars(port);
424 irq_mask = rda_uart_read(port, RDA_UART_IRQ_MASK);
426 rda_uart_write(port, irq_mask, RDA_UART_IRQ_MASK);
428 rda_uart_send_chars(port);
431 spin_unlock_irqrestore(&port->lock, flags);
436 static int rda_uart_startup(struct uart_port *port)
442 spin_lock_irqsave(&port->lock, flags);
443 rda_uart_write(port, 0, RDA_UART_IRQ_MASK);
444 spin_unlock_irqrestore(&port->lock, flags);
446 ret = request_irq(port->irq, rda_interrupt, IRQF_NO_SUSPEND,
447 "rda-uart", port);
451 spin_lock_irqsave(&port->lock, flags);
453 val = rda_uart_read(port, RDA_UART_CTRL);
455 rda_uart_write(port, val, RDA_UART_CTRL);
458 val = rda_uart_read(port, RDA_UART_IRQ_MASK);
460 rda_uart_write(port, val, RDA_UART_IRQ_MASK);
462 spin_unlock_irqrestore(&port->lock, flags);
467 static void rda_uart_shutdown(struct uart_port *port)
472 spin_lock_irqsave(&port->lock, flags);
474 rda_uart_stop_tx(port);
475 rda_uart_stop_rx(port);
477 val = rda_uart_read(port, RDA_UART_CTRL);
479 rda_uart_write(port, val, RDA_UART_CTRL);
481 spin_unlock_irqrestore(&port->lock, flags);
484 static const char *rda_uart_type(struct uart_port *port)
486 return (port->type == PORT_RDA) ? "rda-uart" : NULL;
489 static int rda_uart_request_port(struct uart_port *port)
491 struct platform_device *pdev = to_platform_device(port->dev);
498 if (!devm_request_mem_region(port->dev, port->mapbase,
499 resource_size(res), dev_name(port->dev)))
502 if (port->flags & UPF_IOREMAP) {
503 port->membase = devm_ioremap(port->dev, port->mapbase,
505 if (!port->membase)
512 static void rda_uart_config_port(struct uart_port *port, int flags)
517 port->type = PORT_RDA;
518 rda_uart_request_port(port);
521 spin_lock_irqsave(&port->lock, irq_flags);
524 rda_uart_write(port, 0, RDA_UART_IRQ_MASK);
527 rda_uart_write(port, 0, RDA_UART_STATUS);
529 spin_unlock_irqrestore(&port->lock, irq_flags);
532 static void rda_uart_release_port(struct uart_port *port)
534 struct platform_device *pdev = to_platform_device(port->dev);
541 if (port->flags & UPF_IOREMAP) {
542 devm_release_mem_region(port->dev, port->mapbase,
544 devm_iounmap(port->dev, port->membase);
545 port->membase = NULL;
549 static int rda_uart_verify_port(struct uart_port *port,
552 if (port->type != PORT_RDA)
555 if (port->irq != ser->irq)
580 static void rda_console_putchar(struct uart_port *port, int ch)
582 if (!port->membase)
585 while (!(rda_uart_read(port, RDA_UART_STATUS) & RDA_UART_TX_FIFO_MASK))
588 rda_uart_write(port, ch, RDA_UART_RXTX_BUFFER);
591 static void rda_uart_port_write(struct uart_port *port, const char *s,
600 if (port->sysrq) {
603 locked = spin_trylock(&port->lock);
605 spin_lock(&port->lock);
609 old_irq_mask = rda_uart_read(port, RDA_UART_IRQ_MASK);
610 rda_uart_write(port, 0, RDA_UART_IRQ_MASK);
612 uart_console_write(port, s, count, rda_console_putchar);
615 while (!(rda_uart_read(port, RDA_UART_STATUS) & RDA_UART_TX_FIFO_MASK))
618 rda_uart_write(port, old_irq_mask, RDA_UART_IRQ_MASK);
621 spin_unlock(&port->lock);
635 rda_uart_port_write(&rda_port->port, s, count);
650 if (!rda_port || !rda_port->port.membase)
656 return uart_set_options(&rda_port->port, co, baud, parity, bits, flow);
683 rda_uart_port_write(&dev->port, s, count);
689 if (!device->port.membase)
744 dev_err(&pdev->dev, "port %d already allocated\n", pdev->id);
758 rda_port->port.dev = &pdev->dev;
759 rda_port->port.regshift = 0;
760 rda_port->port.line = pdev->id;
761 rda_port->port.type = PORT_RDA;
762 rda_port->port.iotype = UPIO_MEM;
763 rda_port->port.mapbase = res_mem->start;
764 rda_port->port.irq = irq;
765 rda_port->port.uartclk = clk_get_rate(rda_port->clk);
766 if (rda_port->port.uartclk == 0) {
770 rda_port->port.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP |
772 rda_port->port.x_char = 0;
773 rda_port->port.fifosize = RDA_UART_TX_FIFO_SIZE;
774 rda_port->port.ops = &rda_uart_ops;
779 ret = uart_add_one_port(&rda_uart_driver, &rda_port->port);
790 uart_remove_one_port(&rda_uart_driver, &rda_port->port);