mirror of https://github.com/proxmox/mirror_qemu
audio/intel-hda: support FIFORDY
linux kernel 3.12 has changed intel-hda driver to always check for FIFORDY, this causes long hangs in guest since QEMU always has this bit set to 0. We now simply set it to 1 always, since we're synchronous anyway and always ready to receive the stream Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>master
parent
c5fa6c86d0
commit
a2554a334a
|
@ -574,7 +574,7 @@ static void intel_hda_set_st_ctl(IntelHDAState *d, const IntelHDAReg *reg, uint3
|
||||||
if (st->ctl & 0x01) {
|
if (st->ctl & 0x01) {
|
||||||
/* reset */
|
/* reset */
|
||||||
dprint(d, 1, "st #%d: reset\n", reg->stream);
|
dprint(d, 1, "st #%d: reset\n", reg->stream);
|
||||||
st->ctl = 0;
|
st->ctl = SD_STS_FIFO_READY << 24;
|
||||||
}
|
}
|
||||||
if ((st->ctl & 0x02) != (old & 0x02)) {
|
if ((st->ctl & 0x02) != (old & 0x02)) {
|
||||||
uint32_t stnr = (st->ctl >> 20) & 0x0f;
|
uint32_t stnr = (st->ctl >> 20) & 0x0f;
|
||||||
|
@ -829,6 +829,7 @@ static const struct IntelHDAReg regtab[] = {
|
||||||
.wclear = 0x1c000000, \
|
.wclear = 0x1c000000, \
|
||||||
.offset = offsetof(IntelHDAState, st[_i].ctl), \
|
.offset = offsetof(IntelHDAState, st[_i].ctl), \
|
||||||
.whandler = intel_hda_set_st_ctl, \
|
.whandler = intel_hda_set_st_ctl, \
|
||||||
|
.reset = SD_STS_FIFO_READY << 24 \
|
||||||
}, \
|
}, \
|
||||||
[ ST_REG(_i, ICH6_REG_SD_LPIB) ] = { \
|
[ ST_REG(_i, ICH6_REG_SD_LPIB) ] = { \
|
||||||
.stream = _i, \
|
.stream = _i, \
|
||||||
|
|
Loading…
Reference in New Issue