forked from Mirrors/opensbi
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:
@@ -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);
|
||||
|
@@ -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,
|
||||
|
@@ -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,
|
||||
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user