diff options
Diffstat (limited to 'drivers/serial/uartlite.c')
-rw-r--r-- | drivers/serial/uartlite.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/drivers/serial/uartlite.c b/drivers/serial/uartlite.c index 9b03d7b3e456..c4bf54bb3fc7 100644 --- a/drivers/serial/uartlite.c +++ b/drivers/serial/uartlite.c | |||
@@ -322,6 +322,26 @@ static int ulite_verify_port(struct uart_port *port, struct serial_struct *ser) | |||
322 | return -EINVAL; | 322 | return -EINVAL; |
323 | } | 323 | } |
324 | 324 | ||
325 | #ifdef CONFIG_CONSOLE_POLL | ||
326 | static int ulite_get_poll_char(struct uart_port *port) | ||
327 | { | ||
328 | if (!(ioread32be(port->membase + ULITE_STATUS) | ||
329 | & ULITE_STATUS_RXVALID)) | ||
330 | return NO_POLL_CHAR; | ||
331 | |||
332 | return ioread32be(port->membase + ULITE_RX); | ||
333 | } | ||
334 | |||
335 | static void ulite_put_poll_char(struct uart_port *port, unsigned char ch) | ||
336 | { | ||
337 | while (ioread32be(port->membase + ULITE_STATUS) & ULITE_STATUS_TXFULL) | ||
338 | cpu_relax(); | ||
339 | |||
340 | /* write char to device */ | ||
341 | iowrite32be(ch, port->membase + ULITE_TX); | ||
342 | } | ||
343 | #endif | ||
344 | |||
325 | static struct uart_ops ulite_ops = { | 345 | static struct uart_ops ulite_ops = { |
326 | .tx_empty = ulite_tx_empty, | 346 | .tx_empty = ulite_tx_empty, |
327 | .set_mctrl = ulite_set_mctrl, | 347 | .set_mctrl = ulite_set_mctrl, |
@@ -338,7 +358,11 @@ static struct uart_ops ulite_ops = { | |||
338 | .release_port = ulite_release_port, | 358 | .release_port = ulite_release_port, |
339 | .request_port = ulite_request_port, | 359 | .request_port = ulite_request_port, |
340 | .config_port = ulite_config_port, | 360 | .config_port = ulite_config_port, |
341 | .verify_port = ulite_verify_port | 361 | .verify_port = ulite_verify_port, |
362 | #ifdef CONFIG_CONSOLE_POLL | ||
363 | .poll_get_char = ulite_get_poll_char, | ||
364 | .poll_put_char = ulite_put_poll_char, | ||
365 | #endif | ||
342 | }; | 366 | }; |
343 | 367 | ||
344 | /* --------------------------------------------------------------------- | 368 | /* --------------------------------------------------------------------- |