diff --git a/build/libraries/mi/common/mi_exDma.c b/build/libraries/mi/common/mi_exDma.c index d27b505..858a475 100644 --- a/build/libraries/mi/common/mi_exDma.c +++ b/build/libraries/mi/common/mi_exDma.c @@ -20,7 +20,7 @@ static BOOL isArbitrated = FALSE; static u32 intervalTable[] = { - 200, 100, 50, 4, + 8, 8, 8, 8, }; //================================================================================ @@ -60,16 +60,20 @@ void MIi_SetExDmaArbiter( MIEDmaArbitration arb, MIEDmaYieldCycles yld ) Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaFill( MIExDmaNo dmaNo, void *dest, u32 data, u32 size ) +void MIi_ExDmaFill( u32 dmaNo, void *dest, u32 data, u32 size ) { - MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; - u32 interval = intervalTable[dmaNo]; - MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - MIi_ExDmaFillCore( dmaNo, dest, data, size, size, + { + MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; + u32 interval = intervalTable[idx]; + MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + + MIi_ExDmaFillCore( dmaNo, dest, data, size, size, blockSize, interval, prescale, MI_EDMA_CONTINUOUS_OFF, MI_EDMA_SRC_RLD_OFF, MI_EDMA_DEST_RLD_OFF, MI_EDMA_TIMING_IMM ); + } } /*---------------------------------------------------------------------------* @@ -85,16 +89,20 @@ void MIi_ExDmaFill( MIExDmaNo dmaNo, void *dest, u32 data, u32 size ) Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaCopy( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) +void MIi_ExDmaCopy( u32 dmaNo, const void *src, void *dest, u32 size ) { - MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; - u32 interval = intervalTable[dmaNo]; - MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - MIi_ExDmaCopyCore( dmaNo, src, dest, size, size, + { + MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; + u32 interval = intervalTable[idx]; + MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + + MIi_ExDmaCopyCore( dmaNo, src, dest, size, size, blockSize, interval, prescale, MI_EDMA_CONTINUOUS_OFF, MI_EDMA_SRC_RLD_OFF, MI_EDMA_DEST_RLD_OFF, MI_EDMA_TIMING_IMM ); + } } /*---------------------------------------------------------------------------* @@ -110,16 +118,20 @@ void MIi_ExDmaCopy( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaSend( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) +void MIi_ExDmaSend( u32 dmaNo, const void *src, void *dest, u32 size ) { - MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; - u32 interval = intervalTable[dmaNo]; - MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - MIi_ExDmaSendCore( dmaNo, src, dest, size, size, + { + MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; + u32 interval = intervalTable[idx]; + MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + + MIi_ExDmaSendCore( dmaNo, src, dest, size, size, blockSize, interval, prescale, MI_EDMA_CONTINUOUS_OFF, MI_EDMA_SRC_RLD_OFF, MI_EDMA_DEST_RLD_OFF, MI_EDMA_TIMING_IMM ); + } } /*---------------------------------------------------------------------------* @@ -135,16 +147,20 @@ void MIi_ExDmaSend( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaRecv( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) +void MIi_ExDmaRecv( u32 dmaNo, const void *src, void *dest, u32 size ) { - MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; - u32 interval = intervalTable[dmaNo]; - MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - MIi_ExDmaRecvCore( dmaNo, src, dest, size, size, + { + MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; + u32 interval = intervalTable[idx]; + MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + + MIi_ExDmaRecvCore( dmaNo, src, dest, size, size, blockSize, interval, prescale, MI_EDMA_CONTINUOUS_OFF, MI_EDMA_SRC_RLD_OFF, MI_EDMA_DEST_RLD_OFF, MI_EDMA_TIMING_IMM ); + } } /*---------------------------------------------------------------------------* @@ -160,16 +176,20 @@ void MIi_ExDmaRecv( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaFillAsync( MIExDmaNo dmaNo, void *dest, u32 data, u32 size ) +void MIi_ExDmaFillAsync( u32 dmaNo, void *dest, u32 data, u32 size ) { - MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; - u32 interval = intervalTable[dmaNo]; - MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - MIi_ExDmaFillAsyncCore( dmaNo, dest, data, size, size, + { + MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; + u32 interval = intervalTable[idx]; + MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + + MIi_ExDmaFillAsyncCore( dmaNo, dest, data, size, size, blockSize, interval, prescale, MI_EDMA_CONTINUOUS_OFF, MI_EDMA_SRC_RLD_OFF, MI_EDMA_DEST_RLD_OFF, MI_EDMA_TIMING_IMM ); + } } /*---------------------------------------------------------------------------* @@ -185,16 +205,20 @@ void MIi_ExDmaFillAsync( MIExDmaNo dmaNo, void *dest, u32 data, u32 size ) Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaCopyAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) +void MIi_ExDmaCopyAsync( u32 dmaNo, const void *src, void *dest, u32 size ) { - MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; - u32 interval = intervalTable[dmaNo]; - MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - MIi_ExDmaCopyAsyncCore( dmaNo, src, dest, size, size, + { + MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; + u32 interval = intervalTable[idx]; + MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + + MIi_ExDmaCopyAsyncCore( dmaNo, src, dest, size, size, blockSize, interval, prescale, MI_EDMA_CONTINUOUS_OFF, MI_EDMA_SRC_RLD_OFF, MI_EDMA_DEST_RLD_OFF, MI_EDMA_TIMING_IMM); + } } /*---------------------------------------------------------------------------* @@ -210,16 +234,20 @@ void MIi_ExDmaCopyAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaSendAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) +void MIi_ExDmaSendAsync( u32 dmaNo, const void *src, void *dest, u32 size ) { - MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; - u32 interval = intervalTable[dmaNo]; - MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - MIi_ExDmaSendAsyncCore( dmaNo, src, dest, size, size, + { + MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; + u32 interval = intervalTable[idx]; + MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + + MIi_ExDmaSendAsyncCore( dmaNo, src, dest, size, size, blockSize, interval, prescale, MI_EDMA_CONTINUOUS_OFF, MI_EDMA_SRC_RLD_OFF, MI_EDMA_DEST_RLD_OFF, MI_EDMA_TIMING_IMM ); + } } /*---------------------------------------------------------------------------* @@ -235,16 +263,20 @@ void MIi_ExDmaSendAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaRecvAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ) +void MIi_ExDmaRecvAsync( u32 dmaNo, const void *src, void *dest, u32 size ) { - MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; - u32 interval = intervalTable[dmaNo]; - MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - MIi_ExDmaRecvAsyncCore( dmaNo, src, dest, size, size, + { + MIEDmaBlockSize blockSize = MI_EDMA_BLOCK_32B; + u32 interval = intervalTable[idx]; + MIEDmaPrescaler prescale = MI_EDMA_PRESCALER_1; + + MIi_ExDmaRecvAsyncCore( dmaNo, src, dest, size, size, blockSize, interval, prescale, MI_EDMA_CONTINUOUS_OFF, MI_EDMA_SRC_RLD_OFF, MI_EDMA_DEST_RLD_OFF, MI_EDMA_TIMING_IMM ); + } } //----------------- internel functions ------------------- @@ -263,7 +295,7 @@ void MIi_ExDmaRecvAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaFillCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u32 oneShotSize, +void MIi_ExDmaFillCore( u32 dmaNo, void *dest, u32 data, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) @@ -290,7 +322,7 @@ void MIi_ExDmaFillCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u32 one Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaCopyCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaCopyCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) @@ -317,7 +349,7 @@ void MIi_ExDmaCopyCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaSendCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaSendCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) @@ -344,7 +376,7 @@ void MIi_ExDmaSendCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaRecvCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaRecvCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) @@ -371,7 +403,7 @@ void MIi_ExDmaRecvCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaFillAsyncCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u32 oneShotSize, +void MIi_ExDmaFillAsyncCore( u32 dmaNo, void *dest, u32 data, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) @@ -381,11 +413,6 @@ void MIi_ExDmaFillAsyncCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u3 MIi_WaitExDma( dmaNo ); - if (!isArbitrated ) - { - MIi_SetExDmaArbiter( MI_EDMAGBL_ARB_ROUND_ROBIN, MI_EDMAGBL_YLD_CYCLE_16 ); - } - MIi_SetExDmaParams( dmaNo, src, dest, size, oneShotSize, blockSize, interval, prescale, continuous, srcRld, destRld, @@ -407,18 +434,13 @@ void MIi_ExDmaFillAsyncCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u3 Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaCopyAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaCopyAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) { MIi_WaitExDma( dmaNo ); - if (!isArbitrated ) - { - MIi_SetExDmaArbiter( MI_EDMAGBL_ARB_ROUND_ROBIN, MI_EDMAGBL_YLD_CYCLE_16 ); - } - MIi_SetExDmaParams( dmaNo, src, dest, size, oneShotSize, blockSize, interval, prescale, continuous, srcRld, destRld, @@ -440,18 +462,13 @@ void MIi_ExDmaCopyAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 s Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaSendAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaSendAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) { MIi_WaitExDma( dmaNo ); - if (!isArbitrated ) - { - MIi_SetExDmaArbiter( MI_EDMAGBL_ARB_ROUND_ROBIN, MI_EDMAGBL_YLD_CYCLE_16 ); - } - MIi_SetExDmaParams( dmaNo, src, dest, size, oneShotSize, blockSize, interval, prescale, continuous, srcRld, destRld, @@ -473,18 +490,13 @@ void MIi_ExDmaSendAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 s Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaRecvAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaRecvAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) { MIi_WaitExDma( dmaNo ); - if (!isArbitrated ) - { - MIi_SetExDmaArbiter( MI_EDMAGBL_ARB_ROUND_ROBIN, MI_EDMAGBL_YLD_CYCLE_16 ); - } - MIi_SetExDmaParams( dmaNo, src, dest, size, oneShotSize, blockSize, interval, prescale, continuous, srcRld, destRld, @@ -506,18 +518,13 @@ void MIi_ExDmaRecvAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 s Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaBypassAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaBypassAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ) { MIi_WaitExDma( dmaNo ); - if (!isArbitrated ) - { - MIi_SetExDmaArbiter( MI_EDMAGBL_ARB_ROUND_ROBIN, MI_EDMAGBL_YLD_CYCLE_16 ); - } - MIi_SetExDmaParams( dmaNo, src, dest, size, oneShotSize, blockSize, interval, prescale, continuous, srcRld, destRld, @@ -539,16 +546,19 @@ void MIi_ExDmaBypassAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 Returns: None *---------------------------------------------------------------------------*/ -void MIi_SetExDmaParams( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_SetExDmaParams( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing, u32 fillData, u32 srcDir, u32 destDir ) { + u32 idx = dmaNo - MI_EDMA_CH_MIN; + + if ( idx < MI_EDMA_CH_NUM ) { OSIntrMode enabled = OS_DisableInterrupts(); - MIEDmaChanRegs *reg = &((MIEDmaChanRegs*)REG_DMA4SAD_ADDR)[dmaNo]; + MIEDmaChanRegs *reg = &((MIEDmaChanRegs*)REG_DMA4SAD_ADDR)[idx]; reg->src = src; reg->dest = dest; @@ -579,11 +589,15 @@ void MIi_SetExDmaParams( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, Returns: TRUE if extended DMA is busy, FALSE if not *---------------------------------------------------------------------------*/ -BOOL MIi_IsExDmaBusy( MIExDmaNo dmaNo ) +BOOL MIi_IsExDmaBusy( u32 dmaNo ) { - MIEDmaChanRegs *reg = &((MIEDmaChanRegs*)REG_DMA4SAD_ADDR)[dmaNo]; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - return (BOOL)((reg->ctrl & REG_MI_DMA4CNT_E_MASK) >> REG_MI_DMA4CNT_E_SHIFT); + { + MIEDmaChanRegs *reg = &((MIEDmaChanRegs*)REG_DMA4SAD_ADDR)[idx]; + + return (BOOL)((reg->ctrl & REG_MI_DMA4CNT_E_MASK) >> REG_MI_DMA4CNT_E_SHIFT); + } } /*---------------------------------------------------------------------------* @@ -595,12 +609,16 @@ BOOL MIi_IsExDmaBusy( MIExDmaNo dmaNo ) Returns: None *---------------------------------------------------------------------------*/ -void MIi_WaitExDma( MIExDmaNo dmaNo ) +void MIi_WaitExDma( u32 dmaNo ) { - MIEDmaChanRegs *reg = &((MIEDmaChanRegs*)REG_DMA4SAD_ADDR)[dmaNo]; + u32 idx = dmaNo - MI_EDMA_CH_MIN; - while (reg->ctrl & REG_MI_DMA4CNT_E_MASK) { + MIEDmaChanRegs *reg = &((MIEDmaChanRegs*)REG_DMA4SAD_ADDR)[idx]; + + while (reg->ctrl & REG_MI_DMA4CNT_E_MASK) + { + } } } @@ -613,12 +631,18 @@ void MIi_WaitExDma( MIExDmaNo dmaNo ) Returns: None *---------------------------------------------------------------------------*/ -void MIi_StopExDma( MIExDmaNo dmaNo ) +void MIi_StopExDma( u32 dmaNo ) { OSIntrMode enabled = OS_DisableInterrupts(); - MIEDmaChanRegs *reg = &((MIEDmaChanRegs*)REG_DMA4SAD_ADDR)[dmaNo]; - reg->ctrl &= ~MI_EDMA_ENABLE; + u32 idx = dmaNo - MI_EDMA_CH_MIN; + + if ( idx < MI_EDMA_CH_NUM ) + { + MIEDmaChanRegs *reg = &((MIEDmaChanRegs*)REG_DMA4SAD_ADDR)[idx]; + + reg->ctrl &= ~MI_EDMA_ENABLE; + } (void)OS_RestoreInterrupts(enabled); } diff --git a/build/libraries/mi/common/mi_init.c b/build/libraries/mi/common/mi_init.c new file mode 100644 index 0000000..0f0e0e5 --- /dev/null +++ b/build/libraries/mi/common/mi_init.c @@ -0,0 +1,51 @@ +/*---------------------------------------------------------------------------* + Project: NitroSDK - MI + File: mi_init.c + + Copyright 2005 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: mi_init.c,v $ + Revision 1.3 2005/02/28 05:26:25 yosizaki + do-indent. + + Revision 1.2 2005/02/10 07:44:48 yada + fix include + + Revision 1.1 2005/02/09 05:10:02 yada + initial release + + $NoKeywords: $ + *---------------------------------------------------------------------------*/ + +#include + +/*---------------------------------------------------------------------------* + Name: MI_Init + + Description: initialize MI functions + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +void MI_Init(void) +{ +#ifdef SDK_ARM9 + //---- Init Work RAM (allocate both wram (block0/1) to ARM7) + MI_SetWramBank(MI_WRAM_ARM7_ALL); +#endif + + //---- dummy DMA + MI_StopDma(0); + + //---- add for TWL + + //---- DMA arbitration + MIi_SetExDmaArbiter( MI_EDMAGBL_ARB_ROUND_ROBIN, MI_EDMAGBL_YLD_CYCLE_16 ); +} diff --git a/include/twl/mi/exDma.h b/include/twl/mi/exDma.h index 3b172d6..ee93f30 100644 --- a/include/twl/mi/exDma.h +++ b/include/twl/mi/exDma.h @@ -25,19 +25,6 @@ extern "C" { #endif //---------------------------------------------------------------------- -//---- DMA channel -typedef enum -{ - MI_EDMA_NONE = -1, - MI_EDMA_0 = 0, - MI_EDMA_1 = 1, - MI_EDMA_2 = 2, - MI_EDMA_3 = 3, - MI_EDMA_NO_MIN = MI_EDMA_0, - MI_EDMA_NO_MAX = MI_EDMA_3 -} -MIExDmaNo; - //---- timing typedef enum { @@ -136,8 +123,11 @@ typedef volatile t_MIEDmaChanRegs MIEDmaChanRegs; //================================================================================ // DMA control definition //================================================================================ -//---- maximum DMA channel No. -#define MI_EDMA_MAX_NUM 3 +//---- DMA channel No. +#define MI_EDMA_CH_MIN 4 +#define MI_EDMA_CH_MAX 7 + +#define MI_EDMA_CH_NUM 4 //---- enable #define MI_EDMA_ENABLE (1UL << REG_MI_DMA4CNT_E_SHIFT) // DMA enable @@ -202,7 +192,7 @@ typedef volatile t_MIEDmaChanRegs MIEDmaChanRegs; Returns: TRUE if extended DMA is busy, FALSE if not *---------------------------------------------------------------------------*/ -BOOL MIi_IsExDmaBusy( MIExDmaNo dmaNo ); +BOOL MIi_IsExDmaBusy( u32 dmaNo ); /*---------------------------------------------------------------------------* Name: MIi_WaitExDma @@ -213,7 +203,7 @@ BOOL MIi_IsExDmaBusy( MIExDmaNo dmaNo ); Returns: None *---------------------------------------------------------------------------*/ -void MIi_WaitExDma( MIExDmaNo dmaNo ); +void MIi_WaitExDma( u32 dmaNo ); /*---------------------------------------------------------------------------* Name: MIi_StopExDma @@ -224,7 +214,7 @@ void MIi_WaitExDma( MIExDmaNo dmaNo ); Returns: None *---------------------------------------------------------------------------*/ -void MIi_StopExDma( MIExDmaNo dmaNo ); +void MIi_StopExDma( u32 dmaNo ); //================================================================================ // memory operation using DMA @@ -242,7 +232,7 @@ void MIi_StopExDma( MIExDmaNo dmaNo ); Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaFill( MIExDmaNo dmaNo, void *dest, u32 data, u32 size ); +void MIi_ExDmaFill( u32 dmaNo, void *dest, u32 data, u32 size ); /*---------------------------------------------------------------------------* Name: MIi_ExDmaCopy @@ -257,7 +247,7 @@ void MIi_ExDmaFill( MIExDmaNo dmaNo, void *dest, u32 data, u32 size ); Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaCopy( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); +void MIi_ExDmaCopy( u32 dmaNo, const void *src, void *dest, u32 size ); /*---------------------------------------------------------------------------* Name: MIi_ExDmaSend @@ -272,7 +262,7 @@ void MIi_ExDmaCopy( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaSend( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); +void MIi_ExDmaSend( u32 dmaNo, const void *src, void *dest, u32 size ); /*---------------------------------------------------------------------------* Name: MIi_ExDmaRecv @@ -287,7 +277,7 @@ void MIi_ExDmaSend( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaRecv( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); +void MIi_ExDmaRecv( u32 dmaNo, const void *src, void *dest, u32 size ); /*---------------------------------------------------------------------------* Name: MIi_ExDmaFillAsync @@ -302,7 +292,7 @@ void MIi_ExDmaRecv( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaFillAsync( MIExDmaNo dmaNo, void *dest, u32 data, u32 size ); +void MIi_ExDmaFillAsync( u32 dmaNo, void *dest, u32 data, u32 size ); /*---------------------------------------------------------------------------* Name: MIi_ExDmaCopyAsync @@ -317,7 +307,7 @@ void MIi_ExDmaFillAsync( MIExDmaNo dmaNo, void *dest, u32 data, u32 size ); Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaCopyAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); +void MIi_ExDmaCopyAsync( u32 dmaNo, const void *src, void *dest, u32 size ); /*---------------------------------------------------------------------------* Name: MIi_ExDmaSendAsync @@ -332,7 +322,7 @@ void MIi_ExDmaCopyAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaSendAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); +void MIi_ExDmaSendAsync( u32 dmaNo, const void *src, void *dest, u32 size ); /*---------------------------------------------------------------------------* Name: MIi_ExDmaRecvAsync @@ -347,7 +337,7 @@ void MIi_ExDmaSendAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaRecvAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size ); +void MIi_ExDmaRecvAsync( u32 dmaNo, const void *src, void *dest, u32 size ); //----------------- internel functions ------------------- @@ -365,7 +355,7 @@ void MIi_ExDmaRecvAsync( MIExDmaNo dmaNo, const void *src, void *dest, u32 size Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaFillCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u32 oneShotSize, +void MIi_ExDmaFillCore( u32 dmaNo, void *dest, u32 data, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -384,7 +374,7 @@ void MIi_ExDmaFillCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u32 one Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaCopyCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaCopyCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -403,7 +393,7 @@ void MIi_ExDmaCopyCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaSendCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaSendCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -422,7 +412,7 @@ void MIi_ExDmaSendCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaRecvCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaRecvCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -441,7 +431,7 @@ void MIi_ExDmaRecvCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaFillAsyncCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u32 oneShotSize, +void MIi_ExDmaFillAsyncCore( u32 dmaNo, void *dest, u32 data, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -460,7 +450,7 @@ void MIi_ExDmaFillAsyncCore( MIExDmaNo dmaNo, void *dest, u32 data, u32 size, u3 Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaCopyAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaCopyAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -479,7 +469,7 @@ void MIi_ExDmaCopyAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 s Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaSendAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaSendAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -498,7 +488,7 @@ void MIi_ExDmaSendAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 s Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaRecvAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaRecvAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -517,7 +507,7 @@ void MIi_ExDmaRecvAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 s Returns: None *---------------------------------------------------------------------------*/ -void MIi_ExDmaBypassAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_ExDmaBypassAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing ); @@ -536,7 +526,7 @@ void MIi_ExDmaBypassAsyncCore( MIExDmaNo dmaNo, const void *src, void *dest, u32 Returns: None *---------------------------------------------------------------------------*/ -void MIi_SetExDmaParams( MIExDmaNo dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, +void MIi_SetExDmaParams( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize, MIEDmaBlockSize blockSize, u32 interval, MIEDmaPrescaler prescale, u32 continuous, u32 srcRld, u32 destRld, MIEDmaTiming timing, diff --git a/tools/axd/ARM9.ses b/tools/axd/ARM9.ses index 71992c7..c58d086 100644 --- a/tools/axd/ARM9.ses +++ b/tools/axd/ARM9.ses @@ -1,3 +1,17 @@ +[Breakpoints\1] +Processor=ARM946E_S_0 +dwTarget Count=1 +dwAction=0 +dwState=0 +Parent Image=C:\twl\bootrom\build\bootrom\ts\ARM9\bin\ARM9-BB.thumb\Release\brom9_ts.axf +dwSet By Source Pos=0 +Image=C:\twl\bootrom\build\bootrom\ts\ARM9\bin\ARM9-BB.thumb\Release\brom9_ts.axf +File=C:\twl\bootrom\build\bootrom\ts\ARM9\bin\ARM9-BB.thumb\Release\main.c +dwLine=20 +dwColumn=1 +dwAddressLo=-59312 +dwAddressHi=0 +dwBreakpoint Size=0 [CLI] dwParse=1 dwEcho=1 @@ -24,7 +38,7 @@ biBarID_0=AMAAAAAABJAAAAAAAMAAAAAAIEAAAAAAAMAAAAAAHLBAAAAAOPPPPPPPMEAAAAAAAAAAAA biBarID_4=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPJACAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA biBarID_65539=LCCAAAAAKJBAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOHCAAAAAPFCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA biBarID_1114115=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPJACAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -biBarID_65538=BEBAAAAAIGBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAAJDAAAAAAGKBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +biBarID_65538=BEBAAAAAIGBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAICAAAAAABCAAAAAACPBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA biBarID_1=AMAAAAAABJAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAAOPPPPPPPCHBAAAAAAAAAAAAAAAPIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA biBarID_65540=JCBAAAAAEKBAAAAAAMAAAAAAIEAAAAAAAMAAAAAAMGAAAAAALEDAAAAADHBAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA biBarID_7=MFBAAAAAIKAAAAAAILDAAAAABJAAAAAAMGAAAAAAAIAAAAAADFDAAAAAEGCAAAAACAAAAAAABAPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -38,7 +52,7 @@ biBarID_65538=BAAAAAAA biBarID_65539=BAAAAAAA biBarID_65540=BAAAAAAA [Images\Image_0] -Filename=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf +Filename=C:\twl\bootrom\build\bootrom\ts\ARM9\bin\ARM9-BB.thumb\Release\brom9_ts.axf Processor=ARM946E_S_0 dwProfileState=0 [Interface\AutoRefresh] @@ -68,6 +82,8 @@ dwReselect Target=1 dwReload Images=0 dwRun Config Script=0 Config Script Name=C:\Iris\geometry\geometry.ses +[Interface\SourcePaths] +Paths=C:\twl\bootrom\build\libraries\init\ARM9\ [Interface\Toolbars] dwTBFile=1 dwTBSearch=1 @@ -100,7 +116,7 @@ dwListSize=4 dwTargetAccessSize=0 dwAutoRefresh=1 [Memory\Tab_1] -dwStartAddress=41940992 +dwStartAddress=50329600 Format=hex_noprefix_32 dwFormatID=-1 dwListBigEndian=0 @@ -110,7 +126,7 @@ dwListSize=4 dwTargetAccessSize=0 dwAutoRefresh=1 [Memory\Tab_2] -dwStartAddress=41942016 +dwStartAddress=50330624 Format=hex_noprefix_32 dwFormatID=-1 dwListBigEndian=0 @@ -130,7 +146,7 @@ dwListSize=4 dwTargetAccessSize=0 dwAutoRefresh=1 [Output] -dwActiveTab=0 +dwActiveTab=1 [ProcessorRegisters\ARM946E_S_0] dwFormatID=-1 dwRefresh=0 @@ -140,10 +156,10 @@ dwRefresh=1 [RecentFileList] dwFileCount=4 [RecentImageList] -File_1=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf -File_2=C:\Iris\IrisMon\IrisMon_Data\ThumbRelease\IrisMon.axf -File_3=C:\Iris\ipl2_test\ipl2_test_Data\ThumbDebugRel\ipl2_test.axf -File_4=C:\Iris\two_quads\two_quads_Data\ThumbDebugRel\two_quads.axf +File_1=C:\twl\bootrom\build\bootrom\ts\ARM9\bin\ARM9-BB.thumb\Release\brom9_ts.axf +File_2=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf +File_3=C:\Iris\IrisMon\IrisMon_Data\ThumbRelease\IrisMon.axf +File_4=C:\Iris\ipl2_test\ipl2_test_Data\ThumbDebugRel\ipl2_test.axf dwFileCount=4 [RecentSymbolsList] File_1=C:\IrisSubp\IrisSubpMon\IrisSubpMon_Data\ThumbRelease\IrisSubpMon.axf @@ -199,8 +215,8 @@ dwBar#2=0 dwBarID=59423 dwHorz=1 dwFloating=1 -dwXPos=61 -dwYPos=442 +dwXPos=37 +dwYPos=518 dwBars=3 dwBar#0=0 dwBar#1=2 @@ -244,9 +260,9 @@ dwRefresh=1 dwLastView=0 [Views\View_0] UnitName=ARM946E_S_0 -ImageName=C:\twl\twlsdk_bak\build\tests\os\alarm-1\bin\ARM9-TS\Release\alerm.axf +ImageName=C:\twl\bootrom\build\bootrom\ts\ARM9\bin\ARM9-BB.thumb\Release\brom9_ts.axf dwDisassembly=0 -FileName=C:\twl\twlsdk_bak\build\libraries\init\ARM9\crt0.c +FileName=C:\twl\bootrom\build\libraries\init\ARM9\crt0.c dwMixedView=0 dwShowMargin=1 dwShowLineNumbers=1