Revert to the code which was working on XP

This commit is contained in:
RichardG867
2021-07-11 17:04:41 -03:00
parent b9c68bf277
commit 2fa909ab91

View File

@@ -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;