Lines Matching refs:port
45 static void transmit_chars_putchar(struct uart_port *port, struct circ_buf *xmit) in transmit_chars_putchar() argument
54 port->icount.tx++; in transmit_chars_putchar()
58 static void transmit_chars_write(struct uart_port *port, struct circ_buf *xmit) in transmit_chars_write() argument
70 port->icount.tx += sent; in transmit_chars_write()
74 static int receive_chars_getchar(struct uart_port *port) in receive_chars_getchar() argument
87 if (uart_handle_break(port)) in receive_chars_getchar()
95 uart_handle_dcd_change(port, 0); in receive_chars_getchar()
98 uart_handle_dcd_change(port, 1); in receive_chars_getchar()
101 if (port->state == NULL) { in receive_chars_getchar()
102 uart_handle_sysrq_char(port, c); in receive_chars_getchar()
106 port->icount.rx++; in receive_chars_getchar()
108 if (uart_handle_sysrq_char(port, c)) in receive_chars_getchar()
111 tty_insert_flip_char(&port->state->port, c, TTY_NORMAL); in receive_chars_getchar()
117 static int receive_chars_read(struct uart_port *port) in receive_chars_read() argument
131 if (uart_handle_break(port)) in receive_chars_read()
138 uart_handle_dcd_change(port, 0); in receive_chars_read()
148 uart_handle_dcd_change(port, 1); in receive_chars_read()
151 if (port->sysrq != 0 && *con_read_page) { in receive_chars_read()
153 uart_handle_sysrq_char(port, con_read_page[i]); in receive_chars_read()
156 if (port->state == NULL) in receive_chars_read()
159 port->icount.rx += bytes_read; in receive_chars_read()
161 tty_insert_flip_string(&port->state->port, con_read_page, in receive_chars_read()
169 void (*transmit_chars)(struct uart_port *port, struct circ_buf *xmit);
170 int (*receive_chars)(struct uart_port *port);
185 static struct tty_port *receive_chars(struct uart_port *port) in receive_chars() argument
189 if (port->state != NULL) /* Unopened serial console */ in receive_chars()
190 tport = &port->state->port; in receive_chars()
192 if (sunhv_ops->receive_chars(port)) in receive_chars()
198 static void transmit_chars(struct uart_port *port) in transmit_chars() argument
202 if (!port->state) in transmit_chars()
205 xmit = &port->state->xmit; in transmit_chars()
206 if (uart_circ_empty(xmit) || uart_tx_stopped(port)) in transmit_chars()
209 sunhv_ops->transmit_chars(port, xmit); in transmit_chars()
212 uart_write_wakeup(port); in transmit_chars()
217 struct uart_port *port = dev_id; in sunhv_interrupt() local
221 spin_lock_irqsave(&port->lock, flags); in sunhv_interrupt()
222 tport = receive_chars(port); in sunhv_interrupt()
223 transmit_chars(port); in sunhv_interrupt()
224 spin_unlock_irqrestore(&port->lock, flags); in sunhv_interrupt()
233 static unsigned int sunhv_tx_empty(struct uart_port *port) in sunhv_tx_empty() argument
243 static void sunhv_set_mctrl(struct uart_port *port, unsigned int mctrl) in sunhv_set_mctrl() argument
249 static unsigned int sunhv_get_mctrl(struct uart_port *port) in sunhv_get_mctrl() argument
255 static void sunhv_stop_tx(struct uart_port *port) in sunhv_stop_tx() argument
261 static void sunhv_start_tx(struct uart_port *port) in sunhv_start_tx() argument
263 transmit_chars(port); in sunhv_start_tx()
267 static void sunhv_send_xchar(struct uart_port *port, char ch) in sunhv_send_xchar() argument
275 spin_lock_irqsave(&port->lock, flags); in sunhv_send_xchar()
284 spin_unlock_irqrestore(&port->lock, flags); in sunhv_send_xchar()
288 static void sunhv_stop_rx(struct uart_port *port) in sunhv_stop_rx() argument
293 static void sunhv_break_ctl(struct uart_port *port, int break_state) in sunhv_break_ctl() argument
299 spin_lock_irqsave(&port->lock, flags); in sunhv_break_ctl()
308 spin_unlock_irqrestore(&port->lock, flags); in sunhv_break_ctl()
313 static int sunhv_startup(struct uart_port *port) in sunhv_startup() argument
319 static void sunhv_shutdown(struct uart_port *port) in sunhv_shutdown() argument
324 static void sunhv_set_termios(struct uart_port *port, struct ktermios *termios, in sunhv_set_termios() argument
327 unsigned int baud = uart_get_baud_rate(port, termios, old, 0, 4000000); in sunhv_set_termios()
328 unsigned int quot = uart_get_divisor(port, baud); in sunhv_set_termios()
332 spin_lock_irqsave(&port->lock, flags); in sunhv_set_termios()
337 port->ignore_status_mask = 0; in sunhv_set_termios()
339 port->ignore_status_mask |= IGNORE_BREAK; in sunhv_set_termios()
341 port->ignore_status_mask |= IGNORE_ALL; in sunhv_set_termios()
344 uart_update_timeout(port, cflag, in sunhv_set_termios()
345 (port->uartclk / (16 * quot))); in sunhv_set_termios()
347 spin_unlock_irqrestore(&port->lock, flags); in sunhv_set_termios()
350 static const char *sunhv_type(struct uart_port *port) in sunhv_type() argument
355 static void sunhv_release_port(struct uart_port *port) in sunhv_release_port() argument
359 static int sunhv_request_port(struct uart_port *port) in sunhv_request_port() argument
364 static void sunhv_config_port(struct uart_port *port, int flags) in sunhv_config_port() argument
368 static int sunhv_verify_port(struct uart_port *port, struct serial_struct *ser) in sunhv_verify_port() argument
430 struct uart_port *port = sunhv_port; in sunhv_console_write_paged() local
434 if (port->sysrq || oops_in_progress) in sunhv_console_write_paged()
435 locked = spin_trylock_irqsave(&port->lock, flags); in sunhv_console_write_paged()
437 spin_lock_irqsave(&port->lock, flags); in sunhv_console_write_paged()
468 spin_unlock_irqrestore(&port->lock, flags); in sunhv_console_write_paged()
471 static inline void sunhv_console_putchar(struct uart_port *port, char c) in sunhv_console_putchar() argument
485 struct uart_port *port = sunhv_port; in sunhv_console_write_bychar() local
489 if (port->sysrq || oops_in_progress) in sunhv_console_write_bychar()
490 locked = spin_trylock_irqsave(&port->lock, flags); in sunhv_console_write_bychar()
492 spin_lock_irqsave(&port->lock, flags); in sunhv_console_write_bychar()
493 if (port->sysrq) { in sunhv_console_write_bychar()
496 locked = spin_trylock(&port->lock); in sunhv_console_write_bychar()
498 spin_lock(&port->lock); in sunhv_console_write_bychar()
502 sunhv_console_putchar(port, '\r'); in sunhv_console_write_bychar()
503 sunhv_console_putchar(port, *s++); in sunhv_console_write_bychar()
507 spin_unlock_irqrestore(&port->lock, flags); in sunhv_console_write_bychar()
521 struct uart_port *port; in hv_probe() local
528 port = kzalloc(sizeof(struct uart_port), GFP_KERNEL); in hv_probe()
529 if (unlikely(!port)) in hv_probe()
548 sunhv_port = port; in hv_probe()
550 port->line = 0; in hv_probe()
551 port->ops = &sunhv_pops; in hv_probe()
552 port->type = PORT_SUNHV; in hv_probe()
553 port->uartclk = ( 29491200 / 16 ); /* arbitrary */ in hv_probe()
555 port->membase = (unsigned char __iomem *) __pa(port); in hv_probe()
557 port->irq = op->archdata.irqs[0]; in hv_probe()
559 port->dev = &op->dev; in hv_probe()
566 &sunhv_reg, port->line, false); in hv_probe()
568 err = uart_add_one_port(&sunhv_reg, port); in hv_probe()
572 err = request_irq(port->irq, sunhv_interrupt, 0, "hvcons", port); in hv_probe()
576 platform_set_drvdata(op, port); in hv_probe()
581 uart_remove_one_port(&sunhv_reg, port); in hv_probe()
593 kfree(port); in hv_probe()
600 struct uart_port *port = platform_get_drvdata(dev); in hv_remove() local
602 free_irq(port->irq, port); in hv_remove()
604 uart_remove_one_port(&sunhv_reg, port); in hv_remove()
608 kfree(port); in hv_remove()