[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v7 11/16] emul/ns16x50: implement FCR register (write-only)
From: Denis Mukhin <dmukhin@xxxxxxxx> Add emulation logic for FCR register. Note, that does not hook FIFO interrupt moderation to the FIFO management code for simplicity. Signed-off-by: Denis Mukhin <dmukhin@xxxxxxxx> --- Changes since v6: - dropped UART_IIR_THR handling from UART_FCR_CLTX case --- xen/common/emul/vuart/ns16x50.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/xen/common/emul/vuart/ns16x50.c b/xen/common/emul/vuart/ns16x50.c index 137ce08f4e1d..a92df6923aa5 100644 --- a/xen/common/emul/vuart/ns16x50.c +++ b/xen/common/emul/vuart/ns16x50.c @@ -374,6 +374,33 @@ static int ns16x50_io_write8( regs[UART_IER] = val & UART_IER_MASK; break; + case UART_FCR: /* WO */ + if ( val & UART_FCR_RSRVD0 ) + ns16x50_warn(vdev, "FCR: attempt to set reserved bit: %x\n", + UART_FCR_RSRVD0); + + if ( val & UART_FCR_RSRVD1 ) + ns16x50_warn(vdev, "FCR: attempt to set reserved bit: %x\n", + UART_FCR_RSRVD1); + + if ( val & UART_FCR_CLRX ) + { + ns16x50_fifo_rx_reset(vdev); + regs[UART_LSR] &= ~UART_LSR_DR; + } + + if ( val & UART_FCR_CLTX ) + ns16x50_fifo_tx_reset(vdev); + + if ( val & UART_FCR_ENABLE ) + val &= UART_FCR_ENABLE | UART_FCR_DMA | UART_FCR_TRG_MASK; + else + val = 0; + + regs[UART_FCR] = val; + + break; + case UART_LCR: regs[UART_LCR] = val; break; -- 2.51.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |