Lines Matching refs:port

95 static inline u32 uart_in32(u32 offset, struct uart_port *port)  in uart_in32()  argument
97 struct uartlite_reg_ops *reg_ops = port->private_data; in uart_in32()
99 return reg_ops->in(port->membase + offset); in uart_in32()
102 static inline void uart_out32(u32 val, u32 offset, struct uart_port *port) in uart_out32() argument
104 struct uartlite_reg_ops *reg_ops = port->private_data; in uart_out32()
106 reg_ops->out(val, port->membase + offset); in uart_out32()
115 static int ulite_receive(struct uart_port *port, int stat) in ulite_receive() argument
117 struct tty_port *tport = &port->state->port; in ulite_receive()
127 port->icount.rx++; in ulite_receive()
128 ch = uart_in32(ULITE_RX, port); in ulite_receive()
131 port->icount.parity++; in ulite_receive()
135 port->icount.overrun++; in ulite_receive()
138 port->icount.frame++; in ulite_receive()
142 if (stat & port->ignore_status_mask & ULITE_STATUS_PARITY) in ulite_receive()
145 stat &= port->read_status_mask; in ulite_receive()
151 stat &= ~port->ignore_status_mask; in ulite_receive()
165 static int ulite_transmit(struct uart_port *port, int stat) in ulite_transmit() argument
167 struct circ_buf *xmit = &port->state->xmit; in ulite_transmit()
172 if (port->x_char) { in ulite_transmit()
173 uart_out32(port->x_char, ULITE_TX, port); in ulite_transmit()
174 port->x_char = 0; in ulite_transmit()
175 port->icount.tx++; in ulite_transmit()
179 if (uart_circ_empty(xmit) || uart_tx_stopped(port)) in ulite_transmit()
182 uart_out32(xmit->buf[xmit->tail], ULITE_TX, port); in ulite_transmit()
184 port->icount.tx++; in ulite_transmit()
188 uart_write_wakeup(port); in ulite_transmit()
195 struct uart_port *port = dev_id; in ulite_isr() local
199 int stat = uart_in32(ULITE_STATUS, port); in ulite_isr()
200 busy = ulite_receive(port, stat); in ulite_isr()
201 busy |= ulite_transmit(port, stat); in ulite_isr()
207 tty_flip_buffer_push(&port->state->port); in ulite_isr()
214 static unsigned int ulite_tx_empty(struct uart_port *port) in ulite_tx_empty() argument
219 spin_lock_irqsave(&port->lock, flags); in ulite_tx_empty()
220 ret = uart_in32(ULITE_STATUS, port); in ulite_tx_empty()
221 spin_unlock_irqrestore(&port->lock, flags); in ulite_tx_empty()
226 static unsigned int ulite_get_mctrl(struct uart_port *port) in ulite_get_mctrl() argument
231 static void ulite_set_mctrl(struct uart_port *port, unsigned int mctrl) in ulite_set_mctrl() argument
236 static void ulite_stop_tx(struct uart_port *port) in ulite_stop_tx() argument
241 static void ulite_start_tx(struct uart_port *port) in ulite_start_tx() argument
243 ulite_transmit(port, uart_in32(ULITE_STATUS, port)); in ulite_start_tx()
246 static void ulite_stop_rx(struct uart_port *port) in ulite_stop_rx() argument
249 port->ignore_status_mask = ULITE_STATUS_RXVALID | ULITE_STATUS_PARITY in ulite_stop_rx()
253 static void ulite_break_ctl(struct uart_port *port, int ctl) in ulite_break_ctl() argument
258 static int ulite_startup(struct uart_port *port) in ulite_startup() argument
262 ret = request_irq(port->irq, ulite_isr, IRQF_SHARED, "uartlite", port); in ulite_startup()
267 ULITE_CONTROL, port); in ulite_startup()
268 uart_out32(ULITE_CONTROL_IE, ULITE_CONTROL, port); in ulite_startup()
273 static void ulite_shutdown(struct uart_port *port) in ulite_shutdown() argument
275 uart_out32(0, ULITE_CONTROL, port); in ulite_shutdown()
276 uart_in32(ULITE_CONTROL, port); /* dummy */ in ulite_shutdown()
277 free_irq(port->irq, port); in ulite_shutdown()
280 static void ulite_set_termios(struct uart_port *port, struct ktermios *termios, in ulite_set_termios() argument
286 spin_lock_irqsave(&port->lock, flags); in ulite_set_termios()
288 port->read_status_mask = ULITE_STATUS_RXVALID | ULITE_STATUS_OVERRUN in ulite_set_termios()
292 port->read_status_mask |= in ulite_set_termios()
295 port->ignore_status_mask = 0; in ulite_set_termios()
297 port->ignore_status_mask |= ULITE_STATUS_PARITY in ulite_set_termios()
302 port->ignore_status_mask |= in ulite_set_termios()
307 baud = uart_get_baud_rate(port, termios, old, 0, 460800); in ulite_set_termios()
308 uart_update_timeout(port, termios->c_cflag, baud); in ulite_set_termios()
310 spin_unlock_irqrestore(&port->lock, flags); in ulite_set_termios()
313 static const char *ulite_type(struct uart_port *port) in ulite_type() argument
315 return port->type == PORT_UARTLITE ? "uartlite" : NULL; in ulite_type()
318 static void ulite_release_port(struct uart_port *port) in ulite_release_port() argument
320 release_mem_region(port->mapbase, ULITE_REGION); in ulite_release_port()
321 iounmap(port->membase); in ulite_release_port()
322 port->membase = NULL; in ulite_release_port()
325 static int ulite_request_port(struct uart_port *port) in ulite_request_port() argument
330 port, (unsigned long long) port->mapbase); in ulite_request_port()
332 if (!request_mem_region(port->mapbase, ULITE_REGION, "uartlite")) { in ulite_request_port()
333 dev_err(port->dev, "Memory region busy\n"); in ulite_request_port()
337 port->membase = ioremap(port->mapbase, ULITE_REGION); in ulite_request_port()
338 if (!port->membase) { in ulite_request_port()
339 dev_err(port->dev, "Unable to map registers\n"); in ulite_request_port()
340 release_mem_region(port->mapbase, ULITE_REGION); in ulite_request_port()
344 port->private_data = &uartlite_be; in ulite_request_port()
345 ret = uart_in32(ULITE_CONTROL, port); in ulite_request_port()
346 uart_out32(ULITE_CONTROL_RST_TX, ULITE_CONTROL, port); in ulite_request_port()
347 ret = uart_in32(ULITE_STATUS, port); in ulite_request_port()
350 port->private_data = &uartlite_le; in ulite_request_port()
355 static void ulite_config_port(struct uart_port *port, int flags) in ulite_config_port() argument
357 if (!ulite_request_port(port)) in ulite_config_port()
358 port->type = PORT_UARTLITE; in ulite_config_port()
361 static int ulite_verify_port(struct uart_port *port, struct serial_struct *ser) in ulite_verify_port() argument
368 static int ulite_get_poll_char(struct uart_port *port) in ulite_get_poll_char() argument
370 if (!(uart_in32(ULITE_STATUS, port) & ULITE_STATUS_RXVALID)) in ulite_get_poll_char()
373 return uart_in32(ULITE_RX, port); in ulite_get_poll_char()
376 static void ulite_put_poll_char(struct uart_port *port, unsigned char ch) in ulite_put_poll_char() argument
378 while (uart_in32(ULITE_STATUS, port) & ULITE_STATUS_TXFULL) in ulite_put_poll_char()
382 uart_out32(ch, ULITE_TX, port); in ulite_put_poll_char()
413 static void ulite_console_wait_tx(struct uart_port *port) in ulite_console_wait_tx() argument
424 val = uart_in32(ULITE_STATUS, port); in ulite_console_wait_tx()
428 dev_warn(port->dev, in ulite_console_wait_tx()
436 static void ulite_console_putchar(struct uart_port *port, int ch) in ulite_console_putchar() argument
438 ulite_console_wait_tx(port); in ulite_console_putchar()
439 uart_out32(ch, ULITE_TX, port); in ulite_console_putchar()
445 struct uart_port *port = &ulite_ports[co->index]; in ulite_console_write() local
451 locked = spin_trylock_irqsave(&port->lock, flags); in ulite_console_write()
453 spin_lock_irqsave(&port->lock, flags); in ulite_console_write()
456 ier = uart_in32(ULITE_STATUS, port) & ULITE_STATUS_IE; in ulite_console_write()
457 uart_out32(0, ULITE_CONTROL, port); in ulite_console_write()
459 uart_console_write(port, s, count, ulite_console_putchar); in ulite_console_write()
461 ulite_console_wait_tx(port); in ulite_console_write()
465 uart_out32(ULITE_CONTROL_IE, ULITE_CONTROL, port); in ulite_console_write()
468 spin_unlock_irqrestore(&port->lock, flags); in ulite_console_write()
473 struct uart_port *port; in ulite_console_setup() local
482 port = &ulite_ports[co->index]; in ulite_console_setup()
485 if (!port->mapbase) { in ulite_console_setup()
491 if (!port->membase) { in ulite_console_setup()
492 if (ulite_request_port(port)) in ulite_console_setup()
499 return uart_set_options(port, co, baud, parity, bits, flow); in ulite_console_setup()
551 struct uart_port *port; in ulite_assign() local
571 port = &ulite_ports[id]; in ulite_assign()
573 spin_lock_init(&port->lock); in ulite_assign()
574 port->fifosize = 16; in ulite_assign()
575 port->regshift = 2; in ulite_assign()
576 port->iotype = UPIO_MEM; in ulite_assign()
577 port->iobase = 1; /* mark port in use */ in ulite_assign()
578 port->mapbase = base; in ulite_assign()
579 port->membase = NULL; in ulite_assign()
580 port->ops = &ulite_ops; in ulite_assign()
581 port->irq = irq; in ulite_assign()
582 port->flags = UPF_BOOT_AUTOCONF; in ulite_assign()
583 port->dev = dev; in ulite_assign()
584 port->type = PORT_UNKNOWN; in ulite_assign()
585 port->line = id; in ulite_assign()
587 dev_set_drvdata(dev, port); in ulite_assign()
590 rc = uart_add_one_port(&ulite_uart_driver, port); in ulite_assign()
593 port->mapbase = 0; in ulite_assign()
607 struct uart_port *port = dev_get_drvdata(dev); in ulite_release() local
610 if (port) { in ulite_release()
611 rc = uart_remove_one_port(&ulite_uart_driver, port); in ulite_release()
613 port->mapbase = 0; in ulite_release()