qemu-e2k/hw/char
Rob Herring 22709e90a2 pl011: reset the fifo when enabled or disabled
Intermittent issues have been seen where no serial input occurs. It
appears the pl011 gets in a state where the rx interrupt never fires
because the rx interrupt only asserts when crossing the fifo trigger
level. The fifo state appears to get out of sync when the pl011 is
re-configured. This combined with the rx timeout interrupt not being
modeled results in no more rx interrupts.

Disabling the fifo is the recommended way to clear the tx fifo in the
TRM (section 3.3.8). The behavior in this case for the rx fifo is
undefined in the TRM, but having fifo contents to be maintained during
configuration changes is not likely expected behavior. Reseting the
fifo state when the fifo size is changed is the simplest solution.

Signed-off-by: Rob Herring <rob.herring@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1395166721-15716-2-git-send-email-robherring2@gmail.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2014-03-18 19:36:49 +00:00
..
cadence_uart.c char/cadence_uart: Implement Tx flow control 2014-01-08 19:07:21 +00:00
debugcon.c qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
digic-uart.c hw/arm/digic: add UART support 2013-12-17 20:12:51 +00:00
escc.c escc: QOM cast cleanup 2013-07-29 21:06:27 +02:00
etraxfs_ser.c etraxfs_ser: QOM cast cleanups 2013-07-29 20:45:33 +02:00
exynos4210_uart.c exynos4210: Use macro ARRAY_SIZE where possible 2013-12-23 16:02:19 +04:00
grlib_apbuart.c grlib_apbuart: QOM cast cleanup 2013-07-29 21:06:27 +02:00
imx_serial.c imx_serial: QOM cast cleanup 2013-07-29 21:06:27 +02:00
ipoctal232.c ipack: Move IndustryPack out of hw/char/ 2014-02-14 21:11:53 +01:00
lm32_juart.c lm32_uart/lm32_juart: use qemu_chr_fe_write_all() 2014-02-04 19:34:30 +01:00
lm32_uart.c lm32_uart/lm32_juart: use qemu_chr_fe_write_all() 2014-02-04 19:34:30 +01:00
Makefile.objs ipack: Move IndustryPack out of hw/char/ 2014-02-14 21:11:53 +01:00
mcf_uart.c memory: add owner argument to initialization functions 2013-07-04 17:42:44 +02:00
milkymist-uart.c milkymist-uart: use qemu_chr_fe_write_all() instead of qemu_chr_fe_write() 2014-02-04 19:34:29 +01:00
omap_uart.c memory: add owner argument to initialization functions 2013-07-04 17:42:44 +02:00
parallel.c qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
pl011.c pl011: reset the fifo when enabled or disabled 2014-03-18 19:36:49 +00:00
sclpconsole-lm.c s390x/sclpconsole-lm: Fix and simplify irq setup 2014-03-17 22:01:19 +01:00
sclpconsole.c s390x/sclpconsole: Fix and simplify interrupt injection 2014-03-17 22:01:19 +01:00
serial-isa.c qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
serial-pci.c hw: set interrupts using pci irq wrappers 2013-10-14 17:11:45 +03:00
serial.c char/serial: Fix emptyness check 2014-02-15 16:10:25 +04:00
sh_serial.c sh4: Fix serial line access for Linux kernels later than 3.2 2013-10-02 22:55:28 +04:00
spapr_vty.c spapr: add vio-bus devices to categories 2013-11-08 04:33:18 +01:00
virtio-console.c virtio-console: Fix VIRTIO_CONSOLE() cast macro 2014-03-13 21:12:07 +01:00
virtio-serial-bus.c virtio-serial-port: Convert to QOM realize/unrealize 2014-03-13 01:21:57 +01:00
xen_console.c
xilinx_uartlite.c xilinx_uartlite: QOM cast cleanups 2013-07-29 20:45:45 +02:00