fix extended dma.

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@29 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
nakasima 2007-04-18 08:58:46 +00:00
parent fd94dc485b
commit 8868ca7e6b
4 changed files with 216 additions and 135 deletions

View File

@ -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);
}

View File

@ -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 <twl.h>
/*---------------------------------------------------------------------------*
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 );
}

View File

@ -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,

View File

@ -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