diff options
Diffstat (limited to 'payloads/libpayload/drivers')
-rw-r--r-- | payloads/libpayload/drivers/cbmem_console.c | 10 | ||||
-rw-r--r-- | payloads/libpayload/drivers/serial/8250.c | 2 | ||||
-rw-r--r-- | payloads/libpayload/drivers/serial/tegra.c | 2 | ||||
-rw-r--r-- | payloads/libpayload/drivers/video/video.c | 1 |
4 files changed, 10 insertions, 5 deletions
diff --git a/payloads/libpayload/drivers/cbmem_console.c b/payloads/libpayload/drivers/cbmem_console.c index 0d3b35fccb..687344400c 100644 --- a/payloads/libpayload/drivers/cbmem_console.c +++ b/payloads/libpayload/drivers/cbmem_console.c @@ -40,7 +40,7 @@ static struct cbmem_console *cbmem_console_p; static struct console_output_driver cbmem_console_driver = { - .putchar = &cbmem_console_putc + .write = &cbmem_console_write, }; void cbmem_console_init(void) @@ -50,11 +50,11 @@ void cbmem_console_init(void) console_add_output_driver(&cbmem_console_driver); } -void cbmem_console_putc(unsigned int data) +void cbmem_console_write(const void *buffer, size_t count) { - // Bail out if the buffer is full. - if (cbmem_console_p->cursor >= cbmem_console_p->size) + if (cbmem_console_p->cursor + count >= cbmem_console_p->size) return; - cbmem_console_p->body[cbmem_console_p->cursor++] = data; + memcpy(cbmem_console_p->body + cbmem_console_p->cursor, buffer, count); + cbmem_console_p->cursor += count; } diff --git a/payloads/libpayload/drivers/serial/8250.c b/payloads/libpayload/drivers/serial/8250.c index a4c1b1a2ab..0651f5201f 100644 --- a/payloads/libpayload/drivers/serial/8250.c +++ b/payloads/libpayload/drivers/serial/8250.c @@ -137,6 +137,8 @@ void serial_putchar(unsigned int c) return; while ((serial_read_reg(0x05) & 0x20) == 0) ; serial_write_reg(c, 0x00); + if (c == '\n') + serial_putchar('\r'); } int serial_havechar(void) diff --git a/payloads/libpayload/drivers/serial/tegra.c b/payloads/libpayload/drivers/serial/tegra.c index bcf7b1925d..fa5ff16526 100644 --- a/payloads/libpayload/drivers/serial/tegra.c +++ b/payloads/libpayload/drivers/serial/tegra.c @@ -65,6 +65,8 @@ void serial_putchar(unsigned int c) { while (!(readb(&uart_regs->lsr) & TEGRA_UART_LSR_THRE)); writeb(c, &uart_regs->thr); + if (c == '\n') + serial_putchar('\r'); } int serial_havechar(void) diff --git a/payloads/libpayload/drivers/video/video.c b/payloads/libpayload/drivers/video/video.c index ed47234345..ce0374d6a3 100644 --- a/payloads/libpayload/drivers/video/video.c +++ b/payloads/libpayload/drivers/video/video.c @@ -141,6 +141,7 @@ void video_console_putchar(unsigned int ch) break; case '\n': + cursorx = 0; cursory++; break; |