I've been working on some stuff for AICA + KOS, and it's coming along well except for this strange issue with DMA. In short, I have no issues with DMA from SH4 to ARM, -except- when I want to use the DMA to copy the ARM driver. It seems I'm stuck using PIO mode for that, and it makes me sad. So my question is, what am I missing here? From what I understand it should be possible to do this, but it appears to not be the case. It's almost as if the ARM needs to be running for it work, but that doesn't seem right.
From the KOS side a few notes - I made sure to call
The queues are initialised in the ARM driver, so it really seems like the driver is just not being copied/run at at all!
From the KOS side a few notes - I made sure to call
spu_dma_init
-before- snd_init
. I'm also using spu_dma_transfer
to transfer data SH4 -> ARM, which itself just wraps g2_dma_transfer
and writes to a destination relative to 0x00800000
. The driver itself is unmodified from the KOS source. It fails when I try to play a sound, at snd_sh4_to_aica
, at line 96 -
Code:
assert_msg(g2_read_32(qa + offsetof(aica_queue_t, valid)), "Queue is not yet valid");
The queues are initialised in the ARM driver, so it really seems like the driver is just not being copied/run at at all!
Last edited: