TwlIPL/include/firm/mi/exDma.h
yosiokat c829fd9562 gcdライブラリの追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@46 b08762b0-b915-fc4b-9d8c-17b2551a87ff
2007-10-15 08:55:00 +00:00

204 lines
6.7 KiB
C

/*---------------------------------------------------------------------------*
Project: TwlIPL - libraries - mi
File: exDma.h
Copyright 2007 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.
$Date:: $
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#ifndef TWL_MI_EXDMA_H_
#define TWL_MI_EXDMA_H_
#include <twl/misc.h>
#include <twl/types.h>
#include <twl/memorymap.h>
#ifdef __cplusplus
extern "C" {
#endif
//----------------------------------------------------------------------
//---- registers
typedef struct
{
const void * src;
void * dest;
u32 totalCount;
u32 wordCount;
u32 blockInterval;
u32 fillData;
u32 ctrl;
}
t_MIExDmaChanRegs;
typedef volatile t_MIExDmaChanRegs MIExDmaChanRegs;
//================================================================================
// DMA control definition
//================================================================================
//---- DMA channel No.
#define MI_EXDMA_CH_MIN 4
#define MI_EXDMA_CH_MAX 7
#define MI_EXDMA_CH_NUM 4
//================================================================================
// DMA WAIT
//================================================================================
/*---------------------------------------------------------------------------*
Name: MIi_IsExDmaBusy
Description: check whether extended DMA is busy or not
Arguments: dmaNo : DMA channel No.
Returns: TRUE if extended DMA is busy, FALSE if not
*---------------------------------------------------------------------------*/
BOOL MIi_IsExDmaBusy( u32 dmaNo );
/*---------------------------------------------------------------------------*
Name: MIi_WaitExDma
Description: wait while extended DMA is busy
Arguments: dmaNo : DMA channel No.
Returns: None
*---------------------------------------------------------------------------*/
void MIi_WaitExDma( u32 dmaNo );
/*---------------------------------------------------------------------------*
Name: MIi_StopExDma
Description: stop extended DMA
Arguments: dmaNo : DMA channel No.
Returns: None
*---------------------------------------------------------------------------*/
void MIi_StopExDma( u32 dmaNo );
/*---------------------------------------------------------------------------*
Name: MIi_StopDmaAsync
Description: stop extended DMA
async version
Arguments: dmaNo : DMA channel No.
Returns: None
*---------------------------------------------------------------------------*/
void MIi_StopExDmaAsync( u32 dmaNo );
//================================================================================
// memory operation using DMA
//================================================================================
/*---------------------------------------------------------------------------*
Name: MIi_ExDmaSendAsync
Description: send data with DMA
sync version
Arguments: dmaNo : DMA channel No.
dest : destination address
src : source address
size : size (byte)
Returns: None
*---------------------------------------------------------------------------*/
void MIi_ExDmaSendAsync( u32 dmaNo, const void *src, void *dest, u32 size );
/*---------------------------------------------------------------------------*
Name: MIi_ExDmaRecvAsync
Description: receive data with DMA
sync version
Arguments: dmaNo : DMA channel No.
dest : destination address
src : source address
size : size (byte)
Returns: None
*---------------------------------------------------------------------------*/
void MIi_ExDmaRecvAsync( u32 dmaNo, const void *src, void *dest, u32 size );
//----------------- internel functions -------------------
/*---------------------------------------------------------------------------*
Name: MIi_ExDmaSendAsyncCore
Description: send data with DMA
async version
Arguments: dmaNo : DMA channel No.
dest : destination address
src : source address
size : size (byte)
blockSize : block size
Returns: None
*---------------------------------------------------------------------------*/
void MIi_ExDmaSendAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize,
u32 blockSize, u32 interval, u32 prescale,
u32 continuous, u32 srcRld, u32 destRld,
u32 timing );
/*---------------------------------------------------------------------------*
Name: MIi_ExDmaRecvAsyncCore
Description: receive data with DMA
async version
Arguments: dmaNo : DMA channel No.
dest : destination address
src : source address
size : size (byte)
blockSize : block size
Returns: None
*---------------------------------------------------------------------------*/
void MIi_ExDmaRecvAsyncCore( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize,
u32 blockSize, u32 interval, u32 prescale,
u32 continuous, u32 srcRld, u32 destRld,
u32 timing );
/*---------------------------------------------------------------------------*
Name: MIi_SetExDmaParams
Description: set DMA
Arguments: dmaNo : DMA channel No.
dest : destination address
src : source address
size : size (byte)
blockSize : block size
Returns: None
*---------------------------------------------------------------------------*/
void MIi_SetExDmaParams( u32 dmaNo, const void *src, void *dest, u32 size, u32 oneShotSize,
u32 blockSize, u32 interval, u32 prescale,
u32 continuous, u32 srcRld, u32 destRld,
u32 timing,
u32 fillData, u32 srcDir, u32 destDir);
#ifdef __cplusplus
} /* extern "C" */
#endif
/* TWL_MI_EXDMA_H_ */
#endif