parent
0e12da4395
commit
84bdcd9a10
|
@ -324,8 +324,37 @@ void Write_SB_E2ST(u32 addr, u32 data)
|
|||
|
||||
void Write_SB_DDST(u32 addr, u32 data)
|
||||
{
|
||||
if (data & 1)
|
||||
die("SB_DDST DMA not implemented");
|
||||
if ((data & 1) && (SB_DDEN & 1))
|
||||
{
|
||||
u32 src = SB_DDSTAR;
|
||||
u32 dst = SB_DDSTAG;
|
||||
u32 len = SB_DDLEN & 0x7FFFFFFF;
|
||||
|
||||
if (SB_DDDIR == 1)
|
||||
{
|
||||
u32 t = src;
|
||||
src = dst;
|
||||
dst = t;
|
||||
DEBUG_LOG(AICA, "G2-DDev DMA: SB_DDDIR==1 DMA Read to 0x%X from 0x%X %d bytes", dst, src, len);
|
||||
}
|
||||
else
|
||||
DEBUG_LOG(AICA, "G2-DDev DMA: SB_DDDIR==0 DMA Write to 0x%X from 0x%X %d bytes", dst, src, len);
|
||||
|
||||
WriteMemBlock_nommu_dma(dst, src, len);
|
||||
|
||||
if (SB_DDLEN & 0x80000000)
|
||||
SB_DDEN = 1;
|
||||
else
|
||||
SB_DDEN = 0;
|
||||
|
||||
SB_DDSTAR += len;
|
||||
SB_DDSTAG += len;
|
||||
SB_DDST = 0x00000000;//dma done
|
||||
SB_DDLEN = 0x00000000;
|
||||
|
||||
|
||||
asic_RaiseInterrupt(holly_DEV_DMA);
|
||||
}
|
||||
}
|
||||
|
||||
void aica_sb_Init()
|
||||
|
|
Loading…
Reference in New Issue