hw/audio/via-ac97: Route interrupts using via_isa_set_irq()
This device is a function of VIA south bridge and should allow setting
interrupt routing within that chip. This is implemented in
via_isa_set_irq().
Fixes: eb604411a7
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Message-ID: <5329840e4be6dd8ae143d07cbfe61d8d2d106654.1701035944.git.balaton@eik.bme.hu>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
01f13ee245
commit
0ed083a1bc
@ -211,14 +211,14 @@ static void out_cb(void *opaque, int avail)
|
||||
AUD_set_active_out(s->vo, 0);
|
||||
}
|
||||
if (c->type & STAT_EOL) {
|
||||
pci_set_irq(&s->dev, 1);
|
||||
via_isa_set_irq(&s->dev, 0, 1);
|
||||
}
|
||||
}
|
||||
if (CLEN_IS_FLAG(c)) {
|
||||
c->stat |= STAT_FLAG;
|
||||
c->stat |= STAT_PAUSED;
|
||||
if (c->type & STAT_FLAG) {
|
||||
pci_set_irq(&s->dev, 1);
|
||||
via_isa_set_irq(&s->dev, 0, 1);
|
||||
}
|
||||
}
|
||||
if (CLEN_IS_STOP(c)) {
|
||||
@ -305,13 +305,13 @@ static void sgd_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
|
||||
if (val & STAT_EOL) {
|
||||
s->aur.stat &= ~(STAT_EOL | STAT_PAUSED);
|
||||
if (s->aur.type & STAT_EOL) {
|
||||
pci_set_irq(&s->dev, 0);
|
||||
via_isa_set_irq(&s->dev, 0, 0);
|
||||
}
|
||||
}
|
||||
if (val & STAT_FLAG) {
|
||||
s->aur.stat &= ~(STAT_FLAG | STAT_PAUSED);
|
||||
if (s->aur.type & STAT_FLAG) {
|
||||
pci_set_irq(&s->dev, 0);
|
||||
via_isa_set_irq(&s->dev, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -622,6 +622,7 @@ void via_isa_set_irq(PCIDevice *d, int pin, int level)
|
||||
break;
|
||||
case 2: /* USB ports 0-1 */
|
||||
case 3: /* USB ports 2-3 */
|
||||
case 5: /* AC97 audio */
|
||||
max_irq = 14;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user