lib:platform: Fix sbi_getc return type.

As per the current SBI specification, sbi_getc should return
an int instead of char.

In case of FIFO is empty, return -1 as per the specification.

Reported-by: Sergi Granell <xerpi.g.12@gmail.com>
Suggested-by:Thadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Signed-off-by: Atish Patra <atish.patra@wdc.com>
This commit is contained in:
Atish Patra
2019-02-27 17:42:17 -08:00
committed by Anup Patel
parent 05602e2bf4
commit 86cc9b8633
11 changed files with 20 additions and 19 deletions

View File

@@ -14,7 +14,7 @@
void sifive_uart_putc(char ch);
char sifive_uart_getc(void);
int sifive_uart_getc(void);
int sifive_uart_init(unsigned long base,
u32 in_freq, u32 baudrate);

View File

@@ -14,7 +14,7 @@
void uart8250_putc(char ch);
char uart8250_getc(void);
int uart8250_getc(void);
int uart8250_init(unsigned long base,
u32 in_freq, u32 baudrate,

View File

@@ -69,12 +69,12 @@ void sifive_uart_putc(char ch)
set_reg(UART_REG_TXFIFO, ch);
}
char sifive_uart_getc(void)
int sifive_uart_getc(void)
{
u32 ret = get_reg(UART_REG_RXFIFO);
if (!(ret & UART_RXFIFO_EMPTY))
return ret & UART_RXFIFO_DATA;
return 0;
return -1;
}
int sifive_uart_init(unsigned long base,

View File

@@ -71,11 +71,11 @@ void uart8250_putc(char ch)
set_reg(UART_THR_OFFSET, ch);
}
char uart8250_getc(void)
int uart8250_getc(void)
{
if (get_reg(UART_LSR_OFFSET) & UART_LSR_DR)
return get_reg(UART_RBR_OFFSET);
return 0;
return -1;
}
int uart8250_init(unsigned long base,