• Home
  • Raw
  • Download

Lines Matching full:port

78 	struct uart_port port;  member
84 static u32 altera_uart_readl(struct uart_port *port, int reg) in altera_uart_readl() argument
86 return readl(port->membase + (reg << port->regshift)); in altera_uart_readl()
89 static void altera_uart_writel(struct uart_port *port, u32 dat, int reg) in altera_uart_writel() argument
91 writel(dat, port->membase + (reg << port->regshift)); in altera_uart_writel()
94 static unsigned int altera_uart_tx_empty(struct uart_port *port) in altera_uart_tx_empty() argument
96 return (altera_uart_readl(port, ALTERA_UART_STATUS_REG) & in altera_uart_tx_empty()
100 static unsigned int altera_uart_get_mctrl(struct uart_port *port) in altera_uart_get_mctrl() argument
102 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_get_mctrl()
105 sigs = (altera_uart_readl(port, ALTERA_UART_STATUS_REG) & in altera_uart_get_mctrl()
120 if (!pp->port.irq) in altera_uart_update_ctrl_reg()
123 altera_uart_writel(&pp->port, imr, ALTERA_UART_CONTROL_REG); in altera_uart_update_ctrl_reg()
126 static void altera_uart_set_mctrl(struct uart_port *port, unsigned int sigs) in altera_uart_set_mctrl() argument
128 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_set_mctrl()
138 static void altera_uart_start_tx(struct uart_port *port) in altera_uart_start_tx() argument
140 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_start_tx()
146 static void altera_uart_stop_tx(struct uart_port *port) in altera_uart_stop_tx() argument
148 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_stop_tx()
154 static void altera_uart_stop_rx(struct uart_port *port) in altera_uart_stop_rx() argument
156 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_stop_rx()
162 static void altera_uart_break_ctl(struct uart_port *port, int break_state) in altera_uart_break_ctl() argument
164 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_break_ctl()
167 spin_lock_irqsave(&port->lock, flags); in altera_uart_break_ctl()
173 spin_unlock_irqrestore(&port->lock, flags); in altera_uart_break_ctl()
176 static void altera_uart_set_termios(struct uart_port *port, in altera_uart_set_termios() argument
183 baud = uart_get_baud_rate(port, termios, old, 0, 4000000); in altera_uart_set_termios()
184 baudclk = port->uartclk / baud; in altera_uart_set_termios()
190 spin_lock_irqsave(&port->lock, flags); in altera_uart_set_termios()
191 uart_update_timeout(port, termios->c_cflag, baud); in altera_uart_set_termios()
192 altera_uart_writel(port, baudclk, ALTERA_UART_DIVISOR_REG); in altera_uart_set_termios()
193 spin_unlock_irqrestore(&port->lock, flags); in altera_uart_set_termios()
196 * FIXME: port->read_status_mask and port->ignore_status_mask in altera_uart_set_termios()
202 static void altera_uart_rx_chars(struct uart_port *port) in altera_uart_rx_chars() argument
207 while ((status = altera_uart_readl(port, ALTERA_UART_STATUS_REG)) & in altera_uart_rx_chars()
209 ch = altera_uart_readl(port, ALTERA_UART_RXDATA_REG); in altera_uart_rx_chars()
211 port->icount.rx++; in altera_uart_rx_chars()
214 altera_uart_writel(port, status, in altera_uart_rx_chars()
218 port->icount.brk++; in altera_uart_rx_chars()
219 if (uart_handle_break(port)) in altera_uart_rx_chars()
222 port->icount.parity++; in altera_uart_rx_chars()
224 port->icount.overrun++; in altera_uart_rx_chars()
226 port->icount.frame++; in altera_uart_rx_chars()
229 status &= port->read_status_mask; in altera_uart_rx_chars()
239 if (uart_handle_sysrq_char(port, ch)) in altera_uart_rx_chars()
241 uart_insert_char(port, status, ALTERA_UART_STATUS_ROE_MSK, ch, in altera_uart_rx_chars()
245 spin_unlock(&port->lock); in altera_uart_rx_chars()
246 tty_flip_buffer_push(&port->state->port); in altera_uart_rx_chars()
247 spin_lock(&port->lock); in altera_uart_rx_chars()
250 static void altera_uart_tx_chars(struct uart_port *port) in altera_uart_tx_chars() argument
252 struct circ_buf *xmit = &port->state->xmit; in altera_uart_tx_chars()
254 if (port->x_char) { in altera_uart_tx_chars()
256 altera_uart_writel(port, port->x_char, ALTERA_UART_TXDATA_REG); in altera_uart_tx_chars()
257 port->x_char = 0; in altera_uart_tx_chars()
258 port->icount.tx++; in altera_uart_tx_chars()
262 while (altera_uart_readl(port, ALTERA_UART_STATUS_REG) & in altera_uart_tx_chars()
266 altera_uart_writel(port, xmit->buf[xmit->tail], in altera_uart_tx_chars()
269 port->icount.tx++; in altera_uart_tx_chars()
273 uart_write_wakeup(port); in altera_uart_tx_chars()
276 altera_uart_stop_tx(port); in altera_uart_tx_chars()
281 struct uart_port *port = data; in altera_uart_interrupt() local
282 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_interrupt()
286 isr = altera_uart_readl(port, ALTERA_UART_STATUS_REG) & pp->imr; in altera_uart_interrupt()
288 spin_lock_irqsave(&port->lock, flags); in altera_uart_interrupt()
290 altera_uart_rx_chars(port); in altera_uart_interrupt()
292 altera_uart_tx_chars(port); in altera_uart_interrupt()
293 spin_unlock_irqrestore(&port->lock, flags); in altera_uart_interrupt()
301 struct uart_port *port = &pp->port; in altera_uart_timer() local
303 altera_uart_interrupt(0, port); in altera_uart_timer()
304 mod_timer(&pp->tmr, jiffies + uart_poll_timeout(port)); in altera_uart_timer()
307 static void altera_uart_config_port(struct uart_port *port, int flags) in altera_uart_config_port() argument
309 port->type = PORT_ALTERA_UART; in altera_uart_config_port()
312 altera_uart_writel(port, 0, ALTERA_UART_CONTROL_REG); in altera_uart_config_port()
314 altera_uart_writel(port, 0, ALTERA_UART_STATUS_REG); in altera_uart_config_port()
317 static int altera_uart_startup(struct uart_port *port) in altera_uart_startup() argument
319 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_startup()
322 if (!port->irq) { in altera_uart_startup()
324 mod_timer(&pp->tmr, jiffies + uart_poll_timeout(port)); in altera_uart_startup()
328 ret = request_irq(port->irq, altera_uart_interrupt, 0, in altera_uart_startup()
329 DRV_NAME, port); in altera_uart_startup()
332 "interrupt vector=%d\n", port->line, port->irq); in altera_uart_startup()
337 spin_lock_irqsave(&port->lock, flags); in altera_uart_startup()
343 spin_unlock_irqrestore(&port->lock, flags); in altera_uart_startup()
348 static void altera_uart_shutdown(struct uart_port *port) in altera_uart_shutdown() argument
350 struct altera_uart *pp = container_of(port, struct altera_uart, port); in altera_uart_shutdown()
353 spin_lock_irqsave(&port->lock, flags); in altera_uart_shutdown()
359 spin_unlock_irqrestore(&port->lock, flags); in altera_uart_shutdown()
361 if (port->irq) in altera_uart_shutdown()
362 free_irq(port->irq, port); in altera_uart_shutdown()
367 static const char *altera_uart_type(struct uart_port *port) in altera_uart_type() argument
369 return (port->type == PORT_ALTERA_UART) ? "Altera UART" : NULL; in altera_uart_type()
372 static int altera_uart_request_port(struct uart_port *port) in altera_uart_request_port() argument
378 static void altera_uart_release_port(struct uart_port *port) in altera_uart_release_port() argument
383 static int altera_uart_verify_port(struct uart_port *port, in altera_uart_verify_port() argument
392 static int altera_uart_poll_get_char(struct uart_port *port) in altera_uart_poll_get_char() argument
394 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) & in altera_uart_poll_get_char()
398 return altera_uart_readl(port, ALTERA_UART_RXDATA_REG); in altera_uart_poll_get_char()
401 static void altera_uart_poll_put_char(struct uart_port *port, unsigned char c) in altera_uart_poll_put_char() argument
403 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) & in altera_uart_poll_put_char()
407 altera_uart_writel(port, c, ALTERA_UART_TXDATA_REG); in altera_uart_poll_put_char()
440 static void altera_uart_console_putc(struct uart_port *port, int c) in altera_uart_console_putc() argument
442 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) & in altera_uart_console_putc()
446 altera_uart_writel(port, c, ALTERA_UART_TXDATA_REG); in altera_uart_console_putc()
452 struct uart_port *port = &(altera_uart_ports + co->index)->port; in altera_uart_console_write() local
454 uart_console_write(port, s, count, altera_uart_console_putc); in altera_uart_console_write()
459 struct uart_port *port; in altera_uart_console_setup() local
467 port = &altera_uart_ports[co->index].port; in altera_uart_console_setup()
468 if (!port->membase) in altera_uart_console_setup()
474 return uart_set_options(port, co, baud, parity, bits, flow); in altera_uart_console_setup()
504 uart_console_write(&dev->port, s, count, altera_uart_console_putc); in altera_uart_earlycon_write()
510 struct uart_port *port = &dev->port; in altera_uart_earlycon_setup() local
512 if (!port->membase) in altera_uart_earlycon_setup()
516 altera_uart_writel(port, ALTERA_UART_CONTROL_RRDY_MSK, in altera_uart_earlycon_setup()
520 unsigned int baudclk = port->uartclk / dev->baud; in altera_uart_earlycon_setup()
522 altera_uart_writel(port, baudclk, ALTERA_UART_DIVISOR_REG); in altera_uart_earlycon_setup()
553 struct uart_port *port; in altera_uart_probe() local
562 if (altera_uart_ports[i].port.mapbase == 0) in altera_uart_probe()
569 port = &altera_uart_ports[i].port; in altera_uart_probe()
573 port->mapbase = res_mem->start; in altera_uart_probe()
575 port->mapbase = platp->mapbase; in altera_uart_probe()
581 port->irq = res_irq->start; in altera_uart_probe()
583 port->irq = platp->irq; in altera_uart_probe()
587 port->uartclk = platp->uartclk; in altera_uart_probe()
590 &port->uartclk); in altera_uart_probe()
595 port->membase = ioremap(port->mapbase, ALTERA_UART_SIZE); in altera_uart_probe()
596 if (!port->membase) in altera_uart_probe()
600 port->regshift = platp->bus_shift; in altera_uart_probe()
602 port->regshift = 0; in altera_uart_probe()
604 port->line = i; in altera_uart_probe()
605 port->type = PORT_ALTERA_UART; in altera_uart_probe()
606 port->iotype = SERIAL_IO_MEM; in altera_uart_probe()
607 port->ops = &altera_uart_ops; in altera_uart_probe()
608 port->flags = UPF_BOOT_AUTOCONF; in altera_uart_probe()
609 port->dev = &pdev->dev; in altera_uart_probe()
611 platform_set_drvdata(pdev, port); in altera_uart_probe()
613 uart_add_one_port(&altera_uart_driver, port); in altera_uart_probe()
620 struct uart_port *port = platform_get_drvdata(pdev); in altera_uart_remove() local
622 if (port) { in altera_uart_remove()
623 uart_remove_one_port(&altera_uart_driver, port); in altera_uart_remove()
624 port->mapbase = 0; in altera_uart_remove()
625 iounmap(port->membase); in altera_uart_remove()