Lines Matching refs:port

82 	struct uart_port port;
88 static u32 altera_uart_readl(struct uart_port *port, int reg)
90 return readl(port->membase + (reg << port->regshift));
93 static void altera_uart_writel(struct uart_port *port, u32 dat, int reg)
95 writel(dat, port->membase + (reg << port->regshift));
98 static unsigned int altera_uart_tx_empty(struct uart_port *port)
100 return (altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
104 static unsigned int altera_uart_get_mctrl(struct uart_port *port)
106 struct altera_uart *pp = container_of(port, struct altera_uart, port);
109 sigs = (altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
116 static void altera_uart_set_mctrl(struct uart_port *port, unsigned int sigs)
118 struct altera_uart *pp = container_of(port, struct altera_uart, port);
125 altera_uart_writel(port, pp->imr, ALTERA_UART_CONTROL_REG);
128 static void altera_uart_start_tx(struct uart_port *port)
130 struct altera_uart *pp = container_of(port, struct altera_uart, port);
133 altera_uart_writel(port, pp->imr, ALTERA_UART_CONTROL_REG);
136 static void altera_uart_stop_tx(struct uart_port *port)
138 struct altera_uart *pp = container_of(port, struct altera_uart, port);
141 altera_uart_writel(port, pp->imr, ALTERA_UART_CONTROL_REG);
144 static void altera_uart_stop_rx(struct uart_port *port)
146 struct altera_uart *pp = container_of(port, struct altera_uart, port);
149 altera_uart_writel(port, pp->imr, ALTERA_UART_CONTROL_REG);
152 static void altera_uart_break_ctl(struct uart_port *port, int break_state)
154 struct altera_uart *pp = container_of(port, struct altera_uart, port);
157 spin_lock_irqsave(&port->lock, flags);
162 altera_uart_writel(port, pp->imr, ALTERA_UART_CONTROL_REG);
163 spin_unlock_irqrestore(&port->lock, flags);
166 static void altera_uart_enable_ms(struct uart_port *port)
170 static void altera_uart_set_termios(struct uart_port *port,
177 baud = uart_get_baud_rate(port, termios, old, 0, 4000000);
178 baudclk = port->uartclk / baud;
184 spin_lock_irqsave(&port->lock, flags);
185 uart_update_timeout(port, termios->c_cflag, baud);
186 altera_uart_writel(port, baudclk, ALTERA_UART_DIVISOR_REG);
187 spin_unlock_irqrestore(&port->lock, flags);
192 struct uart_port *port = &pp->port;
196 while ((status = altera_uart_readl(port, ALTERA_UART_STATUS_REG)) &
198 ch = altera_uart_readl(port, ALTERA_UART_RXDATA_REG);
200 port->icount.rx++;
203 altera_uart_writel(port, status,
207 port->icount.brk++;
208 if (uart_handle_break(port))
211 port->icount.parity++;
213 port->icount.overrun++;
215 port->icount.frame++;
218 status &= port->read_status_mask;
228 if (uart_handle_sysrq_char(port, ch))
230 uart_insert_char(port, status, ALTERA_UART_STATUS_ROE_MSK, ch,
234 tty_flip_buffer_push(port->state->port.tty);
239 struct uart_port *port = &pp->port;
240 struct circ_buf *xmit = &port->state->xmit;
242 if (port->x_char) {
244 altera_uart_writel(port, port->x_char, ALTERA_UART_TXDATA_REG);
245 port->x_char = 0;
246 port->icount.tx++;
250 while (altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
254 altera_uart_writel(port, xmit->buf[xmit->tail],
257 port->icount.tx++;
261 uart_write_wakeup(port);
265 altera_uart_writel(port, pp->imr, ALTERA_UART_CONTROL_REG);
271 struct uart_port *port = data;
272 struct altera_uart *pp = container_of(port, struct altera_uart, port);
275 isr = altera_uart_readl(port, ALTERA_UART_STATUS_REG) & pp->imr;
277 spin_lock(&port->lock);
282 spin_unlock(&port->lock);
289 struct uart_port *port = (void *)data;
290 struct altera_uart *pp = container_of(port, struct altera_uart, port);
292 altera_uart_interrupt(0, port);
293 mod_timer(&pp->tmr, jiffies + uart_poll_timeout(port));
296 static void altera_uart_config_port(struct uart_port *port, int flags)
298 port->type = PORT_ALTERA_UART;
301 altera_uart_writel(port, 0, ALTERA_UART_CONTROL_REG);
303 altera_uart_writel(port, 0, ALTERA_UART_STATUS_REG);
306 static int altera_uart_startup(struct uart_port *port)
308 struct altera_uart *pp = container_of(port, struct altera_uart, port);
312 if (!port->irq) {
313 setup_timer(&pp->tmr, altera_uart_timer, (unsigned long)port);
314 mod_timer(&pp->tmr, jiffies + uart_poll_timeout(port));
318 ret = request_irq(port->irq, altera_uart_interrupt, 0,
319 DRV_NAME, port);
322 "interrupt vector=%d\n", port->line, port->irq);
326 spin_lock_irqsave(&port->lock, flags);
330 writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG);
332 spin_unlock_irqrestore(&port->lock, flags);
337 static void altera_uart_shutdown(struct uart_port *port)
339 struct altera_uart *pp = container_of(port, struct altera_uart, port);
342 spin_lock_irqsave(&port->lock, flags);
346 writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG);
348 spin_unlock_irqrestore(&port->lock, flags);
350 if (port->irq)
351 free_irq(port->irq, port);
356 static const char *altera_uart_type(struct uart_port *port)
358 return (port->type == PORT_ALTERA_UART) ? "Altera UART" : NULL;
361 static int altera_uart_request_port(struct uart_port *port)
367 static void altera_uart_release_port(struct uart_port *port)
372 static int altera_uart_verify_port(struct uart_port *port,
381 static int altera_uart_poll_get_char(struct uart_port *port)
383 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
387 return altera_uart_readl(port, ALTERA_UART_RXDATA_REG);
390 static void altera_uart_poll_put_char(struct uart_port *port, unsigned char c)
392 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
396 altera_uart_writel(port, c, ALTERA_UART_TXDATA_REG);
430 static void altera_uart_console_putc(struct uart_port *port, const char c)
432 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
436 writel(c, port->membase + ALTERA_UART_TXDATA_REG);
442 struct uart_port *port = &(altera_uart_ports + co->index)->port;
445 altera_uart_console_putc(port, *s);
447 altera_uart_console_putc(port, '\r');
453 struct uart_port *port;
461 port = &altera_uart_ports[co->index].port;
462 if (!port->membase)
468 return uart_set_options(port, co, baud, parity, bits, flow);
514 struct uart_port *port)
523 port->uartclk = be32_to_cpup(clk);
529 struct uart_port *port)
538 struct uart_port *port;
547 if (altera_uart_ports[i].port.mapbase == 0)
554 port = &altera_uart_ports[i].port;
558 port->mapbase = res_mem->start;
560 port->mapbase = platp->mapbase;
566 port->irq = res_irq->start;
568 port->irq = platp->irq;
572 port->uartclk = platp->uartclk;
574 ret = altera_uart_get_of_uartclk(pdev, port);
579 port->membase = ioremap(port->mapbase, ALTERA_UART_SIZE);
580 if (!port->membase)
584 port->regshift = platp->bus_shift;
586 port->regshift = 0;
588 port->line = i;
589 port->type = PORT_ALTERA_UART;
590 port->iotype = SERIAL_IO_MEM;
591 port->ops = &altera_uart_ops;
592 port->flags = UPF_BOOT_AUTOCONF;
594 dev_set_drvdata(&pdev->dev, port);
596 uart_add_one_port(&altera_uart_driver, port);
603 struct uart_port *port = dev_get_drvdata(&pdev->dev);
605 if (port) {
606 uart_remove_one_port(&altera_uart_driver, port);
608 port->mapbase = 0;