[Lapetus-cvs] lapetus/tests/regtest scu.c,1.4,1.5 scu.h,1.3,1.4
Status: Inactive
Brought to you by:
cyberwarriorx
From: Theo B. <cyb...@us...> - 2008-02-18 23:20:05
|
Update of /cvsroot/lapetus/lapetus/tests/regtest In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv29339 Modified Files: scu.c scu.h Log Message: -Added Indirect DMA test -Changed a couple of values to use defines. Makes things look more cleaner Index: scu.h =================================================================== RCS file: /cvsroot/lapetus/lapetus/tests/regtest/scu.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- scu.h 12 Jan 2008 18:17:51 -0000 1.3 +++ scu.h 18 Feb 2008 23:19:55 -0000 1.4 @@ -44,6 +44,7 @@ void TestDMA1(); void TestDMA2(); void TestDMAMisalignment(); +void TestIndirectDMA(); void TestISTandIMS(); void TestDSP(); void TestMVI_Imm_d(); Index: scu.c =================================================================== RCS file: /cvsroot/lapetus/lapetus/tests/regtest/scu.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- scu.c 12 Jan 2008 23:11:17 -0000 1.4 +++ scu.c 18 Feb 2008 23:19:55 -0000 1.5 @@ -156,7 +156,7 @@ RegisterTest(&TestDMA1, "DMA 1 transfer"); RegisterTest(&TestDMA2, "DMA 2 transfer"); RegisterTest(&TestDMAMisalignment, "Misaligned DMA transfer"); -// RegisterTest(&TestIndirectDMA, "Indirect DMA transfer"); + RegisterTest(&TestIndirectDMA, "Indirect DMA transfer"); // RegisterTest(&TestTransNum0, "0 Transfer Number transfer"); // RegisterTest(&TestDMAStatus, "DMA Status Register"); // Test out DMA start factors here @@ -470,7 +470,7 @@ *((volatile u32 *)0x260F0000) = dmavaltest; BIOS_SetSCUInterrupt(0x4B, dmaint); - BIOS_ChangeSCUInterruptMask(~0x800, 0); + BIOS_ChangeSCUInterruptMask(~MASK_DMA0, 0); stagestatus = STAGESTAT_WAITINGFORINT; // Do a quick DMA @@ -493,7 +493,7 @@ *((volatile u32 *)0x260F0000) = dmavaltest; BIOS_SetSCUInterrupt(0x4A, dmaint); - BIOS_ChangeSCUInterruptMask(~0x400, 0); + BIOS_ChangeSCUInterruptMask(~MASK_DMA1, 0); stagestatus = STAGESTAT_WAITINGFORINT; // Do a quick DMA @@ -516,7 +516,7 @@ *((volatile u32 *)0x260F0000) = dmavaltest; BIOS_SetSCUInterrupt(0x49, dmaint); - BIOS_ChangeSCUInterruptMask(~0x200, 0); + BIOS_ChangeSCUInterruptMask(~MASK_DMA2, 0); stagestatus = STAGESTAT_WAITINGFORINT; // Do a quick DMA @@ -540,7 +540,7 @@ dmavaltest = 0x02030405; BIOS_SetSCUInterrupt(0x4B, dmaint); - BIOS_ChangeSCUInterruptMask(~0x800, 0); + BIOS_ChangeSCUInterruptMask(~MASK_DMA0, 0); stagestatus = STAGESTAT_WAITINGFORINT; // Do a quick DMA @@ -557,6 +557,46 @@ ////////////////////////////////////////////////////////////////////////////// +void TestIndirectDMA() +{ + static u32 dmaarray[3 * 3]; + static u32 dmadataarray[] = { + 0x02030405, + 0x0708090A, + 0x0C0D0E0F, + }; + int i; + + InterruptSetLevelMask(0xF); + + BIOS_SetSCUInterrupt(0x4B, dmaint); + BIOS_ChangeSCUInterruptMask(~MASK_DMA0, 0); + stagestatus = STAGESTAT_WAITINGFORINT; + + dmaarray[0] = 1; + dmaarray[1] = 0x25C40000; + dmaarray[2] = (u32)dmadataarray; + + dmaarray[3] = 2; + dmaarray[4] = 0x25C40001; + dmaarray[5] = (u32)dmadataarray+1; + + dmaarray[6] = 1; + dmaarray[7] = 0x05C40003; + dmaarray[8] = 0x80000000 | ((u32)dmadataarray+3); + + // Do an Indirect DMA + SCUREG_D0EN = 0; + SCUREG_D0W = ((u32)dmaarray); + SCUREG_D0AD = 0x101; + SCUREG_D0MD = 0x01000007; + SCUREG_D0EN = 0x101; + + InterruptSetLevelMask(0x4); +} + +////////////////////////////////////////////////////////////////////////////// + void TestISTandIMS() { // Mask All interrupts |