diff options
Diffstat (limited to 'bsps/shared/dev/serial/zynq-uart.c')
-rw-r--r-- | bsps/shared/dev/serial/zynq-uart.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/bsps/shared/dev/serial/zynq-uart.c b/bsps/shared/dev/serial/zynq-uart.c index cd0d0e7584..8503e31d49 100644 --- a/bsps/shared/dev/serial/zynq-uart.c +++ b/bsps/shared/dev/serial/zynq-uart.c @@ -214,9 +214,17 @@ static bool zynq_uart_set_attributes( if (baud > 0) { regs->baud_rate_gen = ZYNQ_UART_BAUD_RATE_GEN_CD(brgr); regs->baud_rate_div = ZYNQ_UART_BAUD_RATE_DIV_BDIV(bauddiv); + regs->control |= ZYNQ_UART_CONTROL_RXRES + | ZYNQ_UART_CONTROL_TXRES; } regs->control |= ZYNQ_UART_CONTROL_RXEN | ZYNQ_UART_CONTROL_TXEN; + /* + * Some ZynqMP UARTs have a hardware bug that causes TX/RX logic restarts to + * require a kick after baud rate registers are initialized. + */ + zynq_uart_write_polled(context, 0); + return true; } |