intel-hda: fix position buffer
Fix position buffer updates to use the correct stream offset. Without this patch both IN (record) and OUT (playback) streams will update the IN buffer positions. The linux kernel notices and complains: hda-intel: Invalid position buffer, using LPIB read method instead. The bug may also lead to glitches when recording and playing at the same time: https://bugzilla.redhat.com/show_bug.cgi?id=947785 Cc: qemu-stable@nongnu.org Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
7f0ba7bb43
commit
d58ce68a45
@ -444,6 +444,7 @@ static bool intel_hda_xfer(HDACodecDevice *dev, uint32_t stnr, bool output,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d->dp_lbase & 0x01) {
|
if (d->dp_lbase & 0x01) {
|
||||||
|
s = st - d->st;
|
||||||
addr = intel_hda_addr(d->dp_lbase & ~0x01, d->dp_ubase);
|
addr = intel_hda_addr(d->dp_lbase & ~0x01, d->dp_ubase);
|
||||||
stl_le_pci_dma(&d->pci, addr + 8*s, st->lpib);
|
stl_le_pci_dma(&d->pci, addr + 8*s, st->lpib);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user