Revert to the code which was working on XP
This commit is contained in:
@@ -125,8 +125,8 @@ static void
|
|||||||
ac97_via_sgd_block_start(ac97_via_t *dev)
|
ac97_via_sgd_block_start(ac97_via_t *dev)
|
||||||
{
|
{
|
||||||
/* Start at first entry. */
|
/* Start at first entry. */
|
||||||
/*if (!dev->sgd_entry_ptr)
|
if (!dev->sgd_entry_ptr)
|
||||||
dev->sgd_entry_ptr = (dev->sgd_regs[0x07] << 24) | (dev->sgd_regs[0x06] << 16) | (dev->sgd_regs[0x05] << 8) | (dev->sgd_regs[0x04] & 0xfe);*/
|
dev->sgd_entry_ptr = (dev->sgd_regs[0x07] << 24) | (dev->sgd_regs[0x06] << 16) | (dev->sgd_regs[0x05] << 8) | (dev->sgd_regs[0x04] & 0xfe);
|
||||||
|
|
||||||
/* Read entry. */
|
/* Read entry. */
|
||||||
dev->sgd_entry = ((uint64_t) mem_readl_phys(dev->sgd_entry_ptr + 4) << 32ULL) | (uint64_t) mem_readl_phys(dev->sgd_entry_ptr);
|
dev->sgd_entry = ((uint64_t) mem_readl_phys(dev->sgd_entry_ptr + 4) << 32ULL) | (uint64_t) mem_readl_phys(dev->sgd_entry_ptr);
|
||||||
@@ -291,7 +291,7 @@ ac97_via_sgd_write(uint16_t addr, uint8_t val, void *priv)
|
|||||||
dev->sgd_regs[0x00] &= ~0x44;
|
dev->sgd_regs[0x00] &= ~0x44;
|
||||||
|
|
||||||
dev->sgd_entry = 0;
|
dev->sgd_entry = 0;
|
||||||
dev->sgd_entry_ptr = (dev->sgd_regs[0x07] << 24) | (dev->sgd_regs[0x06] << 16) | (dev->sgd_regs[0x05] << 8) | (dev->sgd_regs[0x04] & 0xfe);
|
dev->sgd_entry_ptr = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Stop SGD if requested. */
|
/* Stop SGD if requested. */
|
||||||
@@ -465,7 +465,6 @@ static void
|
|||||||
ac97_via_poll(void *priv)
|
ac97_via_poll(void *priv)
|
||||||
{
|
{
|
||||||
ac97_via_t *dev = (ac97_via_t *) priv;
|
ac97_via_t *dev = (ac97_via_t *) priv;
|
||||||
uint8_t irq = 0;
|
|
||||||
|
|
||||||
timer_advance_u64(&dev->timer_count, dev->timer_latch);
|
timer_advance_u64(&dev->timer_count, dev->timer_latch);
|
||||||
|
|
||||||
@@ -540,7 +539,7 @@ ac97_via_poll(void *priv)
|
|||||||
ac97_via_log(" restart\n");
|
ac97_via_log(" restart\n");
|
||||||
dev->sgd_regs[0x00] &= ~0x08;
|
dev->sgd_regs[0x00] &= ~0x08;
|
||||||
|
|
||||||
dev->sgd_entry_ptr = (dev->sgd_regs[0x07] << 24) | (dev->sgd_regs[0x06] << 16) | (dev->sgd_regs[0x05] << 8) | (dev->sgd_regs[0x04] & 0xfe);
|
dev->sgd_entry_ptr = 0;
|
||||||
} else {
|
} else {
|
||||||
ac97_via_log(" finish\n");
|
ac97_via_log(" finish\n");
|
||||||
dev->sgd_regs[0x00] &= ~0x80;
|
dev->sgd_regs[0x00] &= ~0x80;
|
||||||
|
|||||||
Reference in New Issue
Block a user