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;
|
temp = dma_c->arb_level;
|
||||||
break;
|
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:
|
default:
|
||||||
fatal("Bad XFR Read command %i channel %i\n", dma_ps2.xfr_command, dma_ps2.xfr_channel);
|
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;
|
dma_c->arb_level = val;
|
||||||
break;
|
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:
|
default:
|
||||||
fatal("Bad XFR command %i channel %i val %02x\n", dma_ps2.xfr_command, dma_ps2.xfr_channel, val);
|
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