qemu-e2k/hw/char
Mark Cave-Ayland 319e89cdc3 escc: update the R_SPEC register SPEC_ALLSENT bit when writing to W_TXCTRL1
The ESCC datasheet states that SPEC_ALLSENT is always set in sync mode and set
in async mode once all characters have cleared the transmitter. Since writes to
SERIAL_DATA use a synchronous chardev API, the guest can never see the state when
transmission is in progress so it is possible to set SPEC_ALLSENT in the
R_SPEC register unconditionally.

This fixes a hang when using the Sun PROM as it attempts to enumerate the
onboard serial devices, and a similar hang in OpenBSD SPARC32 where in both cases
the boot process will not proceed until SPEC_ALLSENT has been set after writing
to W_TXCTRL1.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-Id: <20211118181835.18497-3-mark.cave-ayland@ilande.co.uk>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
2021-11-21 09:56:52 +00:00
..
avr_usart.c
bcm2835_aux.c
cadence_uart.c hw/char: cadence_uart: Log a guest error when device is unclocked or in reset 2021-09-13 16:07:21 +01:00
cmsdk-apb-uart.c
debugcon.c
digic-uart.c
escc.c escc: update the R_SPEC register SPEC_ALLSENT bit when writing to W_TXCTRL1 2021-11-21 09:56:52 +00:00
etraxfs_ser.c
exynos4210_uart.c
goldfish_tty.c hw/m68k: Fix typo in SPDX tag 2021-11-09 10:11:27 +01:00
grlib_apbuart.c
ibex_uart.c hw/char: ibex_uart: Register device in 'input' category 2021-10-07 08:41:33 +10:00
imx_serial.c
ipoctal232.c
Kconfig
mcf_uart.c
mchp_pfsoc_mmuart.c hw/char/mchp_pfsoc_mmuart: QOM'ify PolarFire MMUART 2021-10-07 08:41:33 +10:00
meson.build
nrf51_uart.c
omap_uart.c
parallel-isa.c
parallel.c
pl011.c
renesas_sci.c
riscv_htif.c
sclpconsole-lm.c
sclpconsole.c
serial-isa.c
serial-pci-multi.c
serial-pci.c
serial.c
sh_serial.c hw/char/sh_serial: Add device id to trace output 2021-10-30 18:39:37 +02:00
shakti_uart.c hw/char: shakti_uart: Register device in 'input' category 2021-10-07 08:41:33 +10:00
sifive_uart.c hw/char: sifive_uart: Register device in 'input' category 2021-10-07 08:41:33 +10:00
spapr_vty.c
stm32f2xx_usart.c
terminal3270.c
trace-events hw/char/sh_serial: Add device id to trace output 2021-10-30 18:39:37 +02:00
trace.h
virtio-console.c
virtio-serial-bus.c qbus: Rename qbus_create_inplace() to qbus_init() 2021-09-30 13:42:10 +01:00
xen_console.c
xilinx_uartlite.c