Lines Matching refs:port
78 struct uart_port port;
84 static u32 altera_uart_readl(struct uart_port *port, int reg)
86 return readl(port->membase + (reg << port->regshift));
89 static void altera_uart_writel(struct uart_port *port, u32 dat, int reg)
91 writel(dat, port->membase + (reg << port->regshift));
94 static unsigned int altera_uart_tx_empty(struct uart_port *port)
96 return (altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
100 static unsigned int altera_uart_get_mctrl(struct uart_port *port)
102 struct altera_uart *pp = container_of(port, struct altera_uart, port);
105 sigs = (altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
120 if (!pp->port.irq)
123 altera_uart_writel(&pp->port, imr, ALTERA_UART_CONTROL_REG);
126 static void altera_uart_set_mctrl(struct uart_port *port, unsigned int sigs)
128 struct altera_uart *pp = container_of(port, struct altera_uart, port);
138 static void altera_uart_start_tx(struct uart_port *port)
140 struct altera_uart *pp = container_of(port, struct altera_uart, port);
146 static void altera_uart_stop_tx(struct uart_port *port)
148 struct altera_uart *pp = container_of(port, struct altera_uart, port);
154 static void altera_uart_stop_rx(struct uart_port *port)
156 struct altera_uart *pp = container_of(port, struct altera_uart, port);
162 static void altera_uart_break_ctl(struct uart_port *port, int break_state)
164 struct altera_uart *pp = container_of(port, struct altera_uart, port);
167 spin_lock_irqsave(&port->lock, flags);
173 spin_unlock_irqrestore(&port->lock, flags);
176 static void altera_uart_set_termios(struct uart_port *port,
183 baud = uart_get_baud_rate(port, termios, old, 0, 4000000);
184 baudclk = port->uartclk / baud;
190 spin_lock_irqsave(&port->lock, flags);
191 uart_update_timeout(port, termios->c_cflag, baud);
192 altera_uart_writel(port, baudclk, ALTERA_UART_DIVISOR_REG);
193 spin_unlock_irqrestore(&port->lock, flags);
196 * FIXME: port->read_status_mask and port->ignore_status_mask
202 static void altera_uart_rx_chars(struct uart_port *port)
207 while ((status = altera_uart_readl(port, ALTERA_UART_STATUS_REG)) &
209 ch = altera_uart_readl(port, ALTERA_UART_RXDATA_REG);
211 port->icount.rx++;
214 altera_uart_writel(port, status,
218 port->icount.brk++;
219 if (uart_handle_break(port))
222 port->icount.parity++;
224 port->icount.overrun++;
226 port->icount.frame++;
229 status &= port->read_status_mask;
239 if (uart_handle_sysrq_char(port, ch))
241 uart_insert_char(port, status, ALTERA_UART_STATUS_ROE_MSK, ch,
245 tty_flip_buffer_push(&port->state->port);
248 static void altera_uart_tx_chars(struct uart_port *port)
252 uart_port_tx(port, ch,
253 altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
255 altera_uart_writel(port, ch, ALTERA_UART_TXDATA_REG));
260 struct uart_port *port = data;
261 struct altera_uart *pp = container_of(port, struct altera_uart, port);
265 isr = altera_uart_readl(port, ALTERA_UART_STATUS_REG) & pp->imr;
267 spin_lock_irqsave(&port->lock, flags);
269 altera_uart_rx_chars(port);
271 altera_uart_tx_chars(port);
272 spin_unlock_irqrestore(&port->lock, flags);
280 struct uart_port *port = &pp->port;
282 altera_uart_interrupt(0, port);
283 mod_timer(&pp->tmr, jiffies + uart_poll_timeout(port));
286 static void altera_uart_config_port(struct uart_port *port, int flags)
288 port->type = PORT_ALTERA_UART;
291 altera_uart_writel(port, 0, ALTERA_UART_CONTROL_REG);
293 altera_uart_writel(port, 0, ALTERA_UART_STATUS_REG);
296 static int altera_uart_startup(struct uart_port *port)
298 struct altera_uart *pp = container_of(port, struct altera_uart, port);
301 if (!port->irq) {
303 mod_timer(&pp->tmr, jiffies + uart_poll_timeout(port));
307 ret = request_irq(port->irq, altera_uart_interrupt, 0,
308 DRV_NAME, port);
311 "interrupt vector=%d\n", port->line, port->irq);
316 spin_lock_irqsave(&port->lock, flags);
322 spin_unlock_irqrestore(&port->lock, flags);
327 static void altera_uart_shutdown(struct uart_port *port)
329 struct altera_uart *pp = container_of(port, struct altera_uart, port);
332 spin_lock_irqsave(&port->lock, flags);
338 spin_unlock_irqrestore(&port->lock, flags);
340 if (port->irq)
341 free_irq(port->irq, port);
346 static const char *altera_uart_type(struct uart_port *port)
348 return (port->type == PORT_ALTERA_UART) ? "Altera UART" : NULL;
351 static int altera_uart_request_port(struct uart_port *port)
357 static void altera_uart_release_port(struct uart_port *port)
362 static int altera_uart_verify_port(struct uart_port *port,
371 static int altera_uart_poll_get_char(struct uart_port *port)
373 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
377 return altera_uart_readl(port, ALTERA_UART_RXDATA_REG);
380 static void altera_uart_poll_put_char(struct uart_port *port, unsigned char c)
382 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
386 altera_uart_writel(port, c, ALTERA_UART_TXDATA_REG);
419 static void altera_uart_console_putc(struct uart_port *port, unsigned char c)
421 while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
425 altera_uart_writel(port, c, ALTERA_UART_TXDATA_REG);
431 struct uart_port *port = &(altera_uart_ports + co->index)->port;
433 uart_console_write(port, s, count, altera_uart_console_putc);
438 struct uart_port *port;
446 port = &altera_uart_ports[co->index].port;
447 if (!port->membase)
453 return uart_set_options(port, co, baud, parity, bits, flow);
483 uart_console_write(&dev->port, s, count, altera_uart_console_putc);
489 struct uart_port *port = &dev->port;
491 if (!port->membase)
495 altera_uart_writel(port, ALTERA_UART_CONTROL_RRDY_MSK,
499 unsigned int baudclk = port->uartclk / dev->baud;
501 altera_uart_writel(port, baudclk, ALTERA_UART_DIVISOR_REG);
532 struct uart_port *port;
540 if (altera_uart_ports[i].port.mapbase == 0)
547 port = &altera_uart_ports[i].port;
551 port->mapbase = res_mem->start;
553 port->mapbase = platp->mapbase;
561 port->irq = ret;
563 port->irq = platp->irq;
567 port->uartclk = platp->uartclk;
570 &port->uartclk);
575 port->membase = ioremap(port->mapbase, ALTERA_UART_SIZE);
576 if (!port->membase)
580 port->regshift = platp->bus_shift;
582 port->regshift = 0;
584 port->line = i;
585 port->type = PORT_ALTERA_UART;
586 port->iotype = SERIAL_IO_MEM;
587 port->ops = &altera_uart_ops;
588 port->flags = UPF_BOOT_AUTOCONF;
589 port->dev = &pdev->dev;
591 platform_set_drvdata(pdev, port);
593 uart_add_one_port(&altera_uart_driver, port);
600 struct uart_port *port = platform_get_drvdata(pdev);
602 if (port) {
603 uart_remove_one_port(&altera_uart_driver, port);
604 port->mapbase = 0;
605 iounmap(port->membase);