mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-21 19:15:44 +08:00
bsp/edb7312: Improve output char
The output char function used by printk() is now independent of the console driver initialization.
This commit is contained in:
@@ -101,27 +101,36 @@ int uart_poll_read(int minor)
|
||||
return c;
|
||||
}
|
||||
|
||||
static ssize_t uart_do_write(
|
||||
volatile uint32_t *uartdr,
|
||||
const char *buf,
|
||||
size_t len,
|
||||
volatile uint32_t *sysflg
|
||||
)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
/* Wait for fifo to have room */
|
||||
while ((*sysflg & EP7312_UART_UTXFF1) != 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
*uartdr = buf[i];
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
static ssize_t uart_write(int minor, const char *buf, size_t len)
|
||||
{
|
||||
volatile uint32_t *data_reg;
|
||||
volatile uint32_t *ctrl_reg2;
|
||||
size_t i;
|
||||
char c;
|
||||
|
||||
data_reg = (uint32_t *)Console_Port_Tbl[minor]->ulDataPort;
|
||||
ctrl_reg2 = (uint32_t *)Console_Port_Tbl[minor]->ulCtrlPort2;
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
/* Wait for fifo to have room */
|
||||
while ((*ctrl_reg2 & EP7312_UART_UTXFF1) != 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
c = (char) buf[i];
|
||||
*data_reg = c;
|
||||
}
|
||||
|
||||
return len;
|
||||
return uart_do_write(data_reg, buf, len, ctrl_reg2);
|
||||
}
|
||||
|
||||
static void uart_init(int minor)
|
||||
@@ -147,7 +156,7 @@ static void uart_init(int minor)
|
||||
*/
|
||||
static void _BSP_null_char(char c)
|
||||
{
|
||||
uart_write_polled(0, c);
|
||||
uart_do_write(EP7312_UARTDR1, &c, 1, EP7312_SYSFLG1);
|
||||
}
|
||||
|
||||
static int _BSP_get_char(void)
|
||||
|
||||
Reference in New Issue
Block a user