Lines Matching refs:port

46 static void transmit_chars_putchar(struct uart_port *port, struct circ_buf *xmit)  in transmit_chars_putchar()  argument
55 port->icount.tx++; in transmit_chars_putchar()
59 static void transmit_chars_write(struct uart_port *port, struct circ_buf *xmit) in transmit_chars_write() argument
71 port->icount.tx += sent; in transmit_chars_write()
75 static int receive_chars_getchar(struct uart_port *port) in receive_chars_getchar() argument
88 if (uart_handle_break(port)) in receive_chars_getchar()
96 uart_handle_dcd_change(port, 0); in receive_chars_getchar()
99 uart_handle_dcd_change(port, 1); in receive_chars_getchar()
102 if (port->state == NULL) { in receive_chars_getchar()
103 uart_handle_sysrq_char(port, c); in receive_chars_getchar()
107 port->icount.rx++; in receive_chars_getchar()
109 if (uart_handle_sysrq_char(port, c)) in receive_chars_getchar()
112 tty_insert_flip_char(&port->state->port, c, TTY_NORMAL); in receive_chars_getchar()
118 static int receive_chars_read(struct uart_port *port) in receive_chars_read() argument
132 if (uart_handle_break(port)) in receive_chars_read()
139 uart_handle_dcd_change(port, 0); in receive_chars_read()
149 uart_handle_dcd_change(port, 1); in receive_chars_read()
153 uart_handle_sysrq_char(port, con_read_page[i]); in receive_chars_read()
155 if (port->state == NULL) in receive_chars_read()
158 port->icount.rx += bytes_read; in receive_chars_read()
160 tty_insert_flip_string(&port->state->port, con_read_page, in receive_chars_read()
168 void (*transmit_chars)(struct uart_port *port, struct circ_buf *xmit);
169 int (*receive_chars)(struct uart_port *port);
184 static struct tty_port *receive_chars(struct uart_port *port) in receive_chars() argument
188 if (port->state != NULL) /* Unopened serial console */ in receive_chars()
189 tport = &port->state->port; in receive_chars()
191 if (sunhv_ops->receive_chars(port)) in receive_chars()
197 static void transmit_chars(struct uart_port *port) in transmit_chars() argument
201 if (!port->state) in transmit_chars()
204 xmit = &port->state->xmit; in transmit_chars()
205 if (uart_circ_empty(xmit) || uart_tx_stopped(port)) in transmit_chars()
208 sunhv_ops->transmit_chars(port, xmit); in transmit_chars()
211 uart_write_wakeup(port); in transmit_chars()
216 struct uart_port *port = dev_id; in sunhv_interrupt() local
220 spin_lock_irqsave(&port->lock, flags); in sunhv_interrupt()
221 tport = receive_chars(port); in sunhv_interrupt()
222 transmit_chars(port); in sunhv_interrupt()
223 spin_unlock_irqrestore(&port->lock, flags); in sunhv_interrupt()
232 static unsigned int sunhv_tx_empty(struct uart_port *port) in sunhv_tx_empty() argument
242 static void sunhv_set_mctrl(struct uart_port *port, unsigned int mctrl) in sunhv_set_mctrl() argument
248 static unsigned int sunhv_get_mctrl(struct uart_port *port) in sunhv_get_mctrl() argument
254 static void sunhv_stop_tx(struct uart_port *port) in sunhv_stop_tx() argument
260 static void sunhv_start_tx(struct uart_port *port) in sunhv_start_tx() argument
262 transmit_chars(port); in sunhv_start_tx()
266 static void sunhv_send_xchar(struct uart_port *port, char ch) in sunhv_send_xchar() argument
274 spin_lock_irqsave(&port->lock, flags); in sunhv_send_xchar()
283 spin_unlock_irqrestore(&port->lock, flags); in sunhv_send_xchar()
287 static void sunhv_stop_rx(struct uart_port *port) in sunhv_stop_rx() argument
292 static void sunhv_break_ctl(struct uart_port *port, int break_state) in sunhv_break_ctl() argument
298 spin_lock_irqsave(&port->lock, flags); in sunhv_break_ctl()
307 spin_unlock_irqrestore(&port->lock, flags); in sunhv_break_ctl()
312 static int sunhv_startup(struct uart_port *port) in sunhv_startup() argument
318 static void sunhv_shutdown(struct uart_port *port) in sunhv_shutdown() argument
323 static void sunhv_set_termios(struct uart_port *port, struct ktermios *termios, in sunhv_set_termios() argument
326 unsigned int baud = uart_get_baud_rate(port, termios, old, 0, 4000000); in sunhv_set_termios()
327 unsigned int quot = uart_get_divisor(port, baud); in sunhv_set_termios()
331 spin_lock_irqsave(&port->lock, flags); in sunhv_set_termios()
336 port->ignore_status_mask = 0; in sunhv_set_termios()
338 port->ignore_status_mask |= IGNORE_BREAK; in sunhv_set_termios()
340 port->ignore_status_mask |= IGNORE_ALL; in sunhv_set_termios()
343 uart_update_timeout(port, cflag, in sunhv_set_termios()
344 (port->uartclk / (16 * quot))); in sunhv_set_termios()
346 spin_unlock_irqrestore(&port->lock, flags); in sunhv_set_termios()
349 static const char *sunhv_type(struct uart_port *port) in sunhv_type() argument
354 static void sunhv_release_port(struct uart_port *port) in sunhv_release_port() argument
358 static int sunhv_request_port(struct uart_port *port) in sunhv_request_port() argument
363 static void sunhv_config_port(struct uart_port *port, int flags) in sunhv_config_port() argument
367 static int sunhv_verify_port(struct uart_port *port, struct serial_struct *ser) in sunhv_verify_port() argument
429 struct uart_port *port = sunhv_port; in sunhv_console_write_paged() local
433 if (port->sysrq || oops_in_progress) in sunhv_console_write_paged()
434 locked = spin_trylock_irqsave(&port->lock, flags); in sunhv_console_write_paged()
436 spin_lock_irqsave(&port->lock, flags); in sunhv_console_write_paged()
467 spin_unlock_irqrestore(&port->lock, flags); in sunhv_console_write_paged()
470 static inline void sunhv_console_putchar(struct uart_port *port, char c) in sunhv_console_putchar() argument
484 struct uart_port *port = sunhv_port; in sunhv_console_write_bychar() local
488 if (port->sysrq || oops_in_progress) in sunhv_console_write_bychar()
489 locked = spin_trylock_irqsave(&port->lock, flags); in sunhv_console_write_bychar()
491 spin_lock_irqsave(&port->lock, flags); in sunhv_console_write_bychar()
492 if (port->sysrq) { in sunhv_console_write_bychar()
495 locked = spin_trylock(&port->lock); in sunhv_console_write_bychar()
497 spin_lock(&port->lock); in sunhv_console_write_bychar()
501 sunhv_console_putchar(port, '\r'); in sunhv_console_write_bychar()
502 sunhv_console_putchar(port, *s++); in sunhv_console_write_bychar()
506 spin_unlock_irqrestore(&port->lock, flags); in sunhv_console_write_bychar()
520 struct uart_port *port; in hv_probe() local
527 port = kzalloc(sizeof(struct uart_port), GFP_KERNEL); in hv_probe()
528 if (unlikely(!port)) in hv_probe()
547 sunhv_port = port; in hv_probe()
549 port->line = 0; in hv_probe()
550 port->ops = &sunhv_pops; in hv_probe()
551 port->type = PORT_SUNHV; in hv_probe()
552 port->uartclk = ( 29491200 / 16 ); /* arbitrary */ in hv_probe()
554 port->membase = (unsigned char __iomem *) __pa(port); in hv_probe()
556 port->irq = op->archdata.irqs[0]; in hv_probe()
558 port->dev = &op->dev; in hv_probe()
565 &sunhv_reg, port->line, false); in hv_probe()
567 err = uart_add_one_port(&sunhv_reg, port); in hv_probe()
571 err = request_irq(port->irq, sunhv_interrupt, 0, "hvcons", port); in hv_probe()
575 platform_set_drvdata(op, port); in hv_probe()
580 uart_remove_one_port(&sunhv_reg, port); in hv_probe()
592 kfree(port); in hv_probe()
599 struct uart_port *port = platform_get_drvdata(dev); in hv_remove() local
601 free_irq(port->irq, port); in hv_remove()
603 uart_remove_one_port(&sunhv_reg, port); in hv_remove()
607 kfree(port); in hv_remove()