qemu-patch-raspberry4/hw/audio
Gerd Hoffmann 280c1e1cdb audio/hda: create millisecond timers that handle IO
Currently, the HDA device tries to sync itself with the QEMU audio
backend by waiting for the guest driver to handle buffer completion
interrupts. This causes the backend to often read too much data from the
device, as well as running out of data whenever the guest takes too long
to handle the interrupt.

According to the HDA specification, the guest is also not required to
use interrupts, but can also sync itself by polling the LPIB registers.

This patch will introduce high frequency (1000Hz) timers that interface
with the device and allow for much smoother emulation of the LPIB
registers. Since the timing is now provided by these timers, the need
to wait for buffer completion interrupts also ceases.

Signed-off-by: Martin Schrodt <martin@schrodt.org>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20180622111200.30561-2-kraxel@redhat.com
Message-id: 20171015184033.2951-3-martin@schrodt.org

[ kraxel: keep old code for compatibility with older qemu versions,
          add property to switch code paths at runtime ]
[ kraxel: new code is disabled by default, use-timer=on enables it ]

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2018-06-25 13:57:57 +02:00
..
ac97.c pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
adlib.c audio/adlib: remove limitation of one adlib card 2017-07-17 11:09:02 +02:00
cs4231.c hw/audio: QOM'ify cs4231.c 2016-06-03 11:13:38 +02:00
cs4231a.c hw/audio: Fix crashes when devices are used on ISA bus without DMA 2018-03-26 14:37:13 +02:00
es1370.c pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
fmopl.c hw: use "qemu/osdep.h" as first #include in source files 2017-12-18 17:07:02 +03:00
fmopl.h misc: remove headers implicitly included 2017-12-18 17:07:02 +03:00
gus.c hw/audio: Fix crashes when devices are used on ISA bus without DMA 2018-03-26 14:37:13 +02:00
gusemu.h audio: GUSsample is int16_t 2017-05-04 09:16:05 +02:00
gusemu_hal.c audio: GUSsample is int16_t 2017-05-04 09:16:05 +02:00
gusemu_mixer.c audio: GUSsample is int16_t 2017-05-04 09:16:05 +02:00
gustate.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
hda-codec-common.h hda-codec: make mixemu selectable at runtime 2013-09-24 10:29:34 +02:00
hda-codec.c audio/hda: create millisecond timers that handle IO 2018-06-25 13:57:57 +02:00
intel-hda-defs.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
intel-hda.c audio/hda: create millisecond timers that handle IO 2018-06-25 13:57:57 +02:00
intel-hda.h hw/audio: convert exit callback in HDACodecDeviceClass to void 2017-05-04 08:29:01 +02:00
lm4549.c audio: Clean up includes 2016-02-02 13:57:31 +01:00
lm4549.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
Makefile.objs audio: Move arch_init audio code to hw/audio/soundhw.c 2017-05-19 10:48:53 +02:00
marvell_88w8618.c hw/audio/wm8750: move WM8750 declarations from i2c/i2c.h to audio/wm8750.h 2018-02-02 08:19:25 +01:00
milkymist-ac97.c milkymist: update specification URLs 2016-06-20 18:12:04 +02:00
pcspk.c misc: remove old i386 dependency 2017-12-18 17:07:02 +03:00
pl041.c hw/audio: QOM'ify pl041.c 2017-01-11 09:19:03 +01:00
pl041.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
pl041.hx hw: move target-independent files to subdirectories 2013-04-08 18:13:12 +02:00
sb16.c hw/audio: Fix crashes when devices are used on ISA bus without DMA 2018-03-26 14:37:13 +02:00
soundhw.c audio: Rename hw/audio/audio.h to hw/audio/soundhw.h 2017-05-19 10:48:54 +02:00
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
wm8750.c hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init 2018-06-01 15:14:31 +02:00