Lines Matching refs:port
42 static void transmit_chars_putchar(struct uart_port *port, struct circ_buf *xmit)
50 uart_xmit_advance(port, 1);
54 static void transmit_chars_write(struct uart_port *port, struct circ_buf *xmit)
65 uart_xmit_advance(port, sent);
69 static int receive_chars_getchar(struct uart_port *port)
82 if (uart_handle_break(port))
90 uart_handle_dcd_change(port, false);
93 uart_handle_dcd_change(port, true);
96 if (port->state == NULL) {
97 uart_handle_sysrq_char(port, c);
101 port->icount.rx++;
103 if (uart_handle_sysrq_char(port, c))
106 tty_insert_flip_char(&port->state->port, c, TTY_NORMAL);
112 static int receive_chars_read(struct uart_port *port)
129 if (uart_handle_break(port))
136 uart_handle_dcd_change(port, false);
146 uart_handle_dcd_change(port, true);
149 if (port->sysrq != 0 && *con_read_page) {
151 uart_handle_sysrq_char(port, con_read_page[i]);
155 if (port->state == NULL)
158 port->icount.rx += bytes_read;
160 tty_insert_flip_string(&port->state->port, con_read_page,
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)
188 if (port->state != NULL) /* Unopened serial console */
189 tport = &port->state->port;
191 if (sunhv_ops->receive_chars(port))
197 static void transmit_chars(struct uart_port *port)
201 if (!port->state)
204 xmit = &port->state->xmit;
205 if (uart_circ_empty(xmit) || uart_tx_stopped(port))
208 sunhv_ops->transmit_chars(port, xmit);
211 uart_write_wakeup(port);
216 struct uart_port *port = dev_id;
220 spin_lock_irqsave(&port->lock, flags);
221 tport = receive_chars(port);
222 transmit_chars(port);
223 spin_unlock_irqrestore(&port->lock, flags);
231 /* port->lock is not held. */
232 static unsigned int sunhv_tx_empty(struct uart_port *port)
241 /* port->lock held by caller. */
242 static void sunhv_set_mctrl(struct uart_port *port, unsigned int mctrl)
247 /* port->lock is held by caller and interrupts are disabled. */
248 static unsigned int sunhv_get_mctrl(struct uart_port *port)
253 /* port->lock held by caller. */
254 static void sunhv_stop_tx(struct uart_port *port)
259 /* port->lock held by caller. */
260 static void sunhv_start_tx(struct uart_port *port)
262 transmit_chars(port);
265 /* port->lock is not held. */
266 static void sunhv_send_xchar(struct uart_port *port, char ch)
274 spin_lock_irqsave(&port->lock, flags);
283 spin_unlock_irqrestore(&port->lock, flags);
286 /* port->lock held by caller. */
287 static void sunhv_stop_rx(struct uart_port *port)
291 /* port->lock is not held. */
292 static void sunhv_break_ctl(struct uart_port *port, int break_state)
298 spin_lock_irqsave(&port->lock, flags);
307 spin_unlock_irqrestore(&port->lock, flags);
311 /* port->lock is not held. */
312 static int sunhv_startup(struct uart_port *port)
317 /* port->lock is not held. */
318 static void sunhv_shutdown(struct uart_port *port)
322 /* port->lock is not held. */
323 static void sunhv_set_termios(struct uart_port *port, struct ktermios *termios,
326 unsigned int baud = uart_get_baud_rate(port, termios, old, 0, 4000000);
327 unsigned int quot = uart_get_divisor(port, baud);
331 spin_lock_irqsave(&port->lock, flags);
336 port->ignore_status_mask = 0;
338 port->ignore_status_mask |= IGNORE_BREAK;
340 port->ignore_status_mask |= IGNORE_ALL;
343 uart_update_timeout(port, cflag,
344 (port->uartclk / (16 * quot)));
346 spin_unlock_irqrestore(&port->lock, flags);
349 static const char *sunhv_type(struct uart_port *port)
354 static void sunhv_release_port(struct uart_port *port)
358 static int sunhv_request_port(struct uart_port *port)
363 static void sunhv_config_port(struct uart_port *port, int flags)
367 static int sunhv_verify_port(struct uart_port *port, struct serial_struct *ser)
435 struct uart_port *port = sunhv_port;
439 if (port->sysrq || oops_in_progress)
440 locked = spin_trylock_irqsave(&port->lock, flags);
442 spin_lock_irqsave(&port->lock, flags);
473 spin_unlock_irqrestore(&port->lock, flags);
476 static inline void sunhv_console_putchar(struct uart_port *port, char c)
490 struct uart_port *port = sunhv_port;
494 if (port->sysrq || oops_in_progress)
495 locked = spin_trylock_irqsave(&port->lock, flags);
497 spin_lock_irqsave(&port->lock, flags);
501 sunhv_console_putchar(port, '\r');
502 sunhv_console_putchar(port, *s++);
506 spin_unlock_irqrestore(&port->lock, flags);
520 struct uart_port *port;
527 port = kzalloc(sizeof(struct uart_port), GFP_KERNEL);
528 if (unlikely(!port))
547 sunhv_port = port;
549 port->has_sysrq = 1;
550 port->line = 0;
551 port->ops = &sunhv_pops;
552 port->type = PORT_SUNHV;
553 port->uartclk = ( 29491200 / 16 ); /* arbitrary */
555 port->membase = (unsigned char __iomem *) __pa(port);
557 port->irq = op->archdata.irqs[0];
559 port->dev = &op->dev;
566 &sunhv_reg, port->line, false);
568 err = uart_add_one_port(&sunhv_reg, port);
572 err = request_irq(port->irq, sunhv_interrupt, 0, "hvcons", port);
576 platform_set_drvdata(op, port);
581 uart_remove_one_port(&sunhv_reg, port);
593 kfree(port);
600 struct uart_port *port = platform_get_drvdata(dev);
602 free_irq(port->irq, port);
604 uart_remove_one_port(&sunhv_reg, port);
609 kfree(port);