DMA change of the day (December 31st, 2024)
Actually add DMA PS/2 (MCA) XFER commands 0x9 (Set DMA Mask), 0xa (Reset DMA mask) and 0xb to addr 0x1a in both r/w parts.
This commit is contained in:
26
src/dma.c
26
src/dma.c
@@ -665,6 +665,19 @@ dma_ps2_read(uint16_t addr, UNUSED(void *priv))
|
||||
temp = dma_c->arb_level;
|
||||
break;
|
||||
|
||||
case 9: /*Set DMA mask*/
|
||||
dma_m |= (1 << dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
case 0xa: /*Reset DMA mask*/
|
||||
dma_m &= ~(1 << dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
case 0xb:
|
||||
if (!(dma_m & (1 << dma_ps2.xfr_channel)))
|
||||
dma_ps2_run(dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
default:
|
||||
fatal("Bad XFR Read command %i channel %i\n", dma_ps2.xfr_command, dma_ps2.xfr_channel);
|
||||
}
|
||||
@@ -767,6 +780,19 @@ dma_ps2_write(uint16_t addr, uint8_t val, UNUSED(void *priv))
|
||||
dma_c->arb_level = val;
|
||||
break;
|
||||
|
||||
case 9: /*Set DMA mask*/
|
||||
dma_m |= (1 << dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
case 0xa: /*Reset DMA mask*/
|
||||
dma_m &= ~(1 << dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
case 0xb:
|
||||
if (!(dma_m & (1 << dma_ps2.xfr_channel)))
|
||||
dma_ps2_run(dma_ps2.xfr_channel);
|
||||
break;
|
||||
|
||||
default:
|
||||
fatal("Bad XFR command %i channel %i val %02x\n", dma_ps2.xfr_command, dma_ps2.xfr_channel, val);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user