twl_wrapsdk/include/nitro/pxi/common/fifo.h
nakasima 70b7bc2684 add pxi tag for gcd.
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@214 4ee2a332-4b2b-5046-8439-1ba90f034370
2007-07-31 08:41:32 +00:00

268 lines
8.1 KiB
C

/*---------------------------------------------------------------------------*
Project: NitroSDK - -include - PXI
File: pxi_fifo.c
Copyright 2003-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.
$Log: fifo.h,v $
Revision 1.21 2007/02/20 00:28:11 kitase_hirotake
indent source
Revision 1.20 2006/05/22 07:01:44 okubata_ryoma
割り込み禁止中でもPMの同期関数が動作するように修正
Revision 1.19 2006/05/01 01:14:54 yada
add NITRO_FIFO_TAG_CTRDG_PHI
Revision 1.18 2006/01/18 02:11:20 kitase_hirotake
do-indent
Revision 1.17 2005/11/01 01:17:36 okubata_ryoma
PXI_FIFO_TAG_CTRDG_Exの追加
Revision 1.16 2005/02/28 05:26:03 yosizaki
do-indent.
Revision 1.15 2004/12/20 00:42:41 terui
WVRライブラリ用のTAGを追加。
Revision 1.14 2004/09/27 13:39:56 yada
add PXI_FIFO_TAG_CARD
Revision 1.13 2004/09/13 10:50:15 yada
add PXI tag for CTRDG
Revision 1.12 2004/09/01 04:24:35 yada
add PXI_FIFO_TAG_OS tag
Revision 1.11 2004/07/13 08:29:12 yada
move PXI_IsArm7CallbackReady() and PXI_IsArm9CallbackReady()
from pxi_fifo.c to this header as inline.
Revision 1.10 2004/05/14 09:34:00 yasu
add ARM9/ARM7 sync in PXI_Init
Revision 1.9 2004/04/21 12:04:06 yasu
change pxi tag id for FS
Revision 1.8 2004/04/15 03:01:45 yasu
add PXI_FIFO_TAG_FS
Revision 1.7 2004/03/30 12:18:48 yasu
change parameter of PXI_SetSendCallback
Revision 1.6 2004/03/30 10:47:05 miya
add send FIFO callback functions
Revision 1.5 2004/03/17 02:51:35 yasu
add some tags
Revision 1.4 2004/03/05 06:43:36 ida
add PXI_FIFO_TAG_SOUND
Revision 1.3 2004/03/05 04:18:33 yasu
PXI_MAX_FIFO_TAG=32 fixed
Revision 1.2 2004/03/04 12:38:50 yasu
change prefix, function name and macro
Revision 1.1 2004/03/04 08:44:26 yasu
add defines for fifo access
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef NITRO_PXI_COMMON_FIFO_H_
#define NITRO_PXI_COMMON_FIFO_H_
#include <nitro/types.h>
#include <nitro/memorymap.h>
#include <nitro/pxi/common/regname.h>
#ifdef __cplusplus
extern "C" {
#endif
/* TAG ID definition */
typedef enum
{
PXI_FIFO_TAG_EX = 0, // Extension format
PXI_FIFO_TAG_USER_0, // for application programmer, use it in free
PXI_FIFO_TAG_USER_1, // for application programmer, use it in free
PXI_FIFO_TAG_SYSTEM, // SDK inner usage
PXI_FIFO_TAG_NVRAM, // NVRAM
PXI_FIFO_TAG_RTC, // RTC
PXI_FIFO_TAG_TOUCHPANEL, // Touch Panel
PXI_FIFO_TAG_SOUND, // Sound
PXI_FIFO_TAG_PM, // Power Management
PXI_FIFO_TAG_MIC, // Microphone
PXI_FIFO_TAG_WM, // Wireless Manager
PXI_FIFO_TAG_FS, // File System
PXI_FIFO_TAG_OS, // OS
PXI_FIFO_TAG_CTRDG, // Cartridge
PXI_FIFO_TAG_CARD, // Card
PXI_FIFO_TAG_WVR, // Control driving wireless library
PXI_FIFO_TAG_CTRDG_Ex, // Cartridge Ex
PXI_FIFO_TAG_CTRDG_PHI, // Cartridge PHI
PXI_FIFO_TAG_AES, // AES
PXI_FIFO_TAG_CAMERA, // Camera
PXI_FIFO_TAG_GCD, // Card Ex
PXI_MAX_FIFO_TAG = 32 // MAX FIFO TAG
}
PXIFifoTag;
/* for Compatibility */
#define PXI_FIFO_DEVICE_TEST PXI_FIFO_TAG_USR_0
#define PXI_FIFO_DEVICE_FLASH PXI_FIFO_TAG_NVRAM
#define PXI_FIFO_DEVICE_RTC PXI_FIFO_TAG_RTC
#define PXI_FIFO_DEVICE_TOUCHPANEL PXI_FIFO_TAG_TOUCHPANEL
#define PXI_MAX_DEVICES PXI_MAX_FIFO_TAG
/* PXI_FIFO return code */
typedef enum
{
PXI_FIFO_SUCCESS = 0,
PXI_FIFO_FAIL_SEND_ERR = -1,
PXI_FIFO_FAIL_SEND_FULL = -2,
PXI_FIFO_FAIL_RECV_ERR = -3,
PXI_FIFO_FAIL_RECV_EMPTY = -4,
PXI_FIFO_NO_CALLBACK_ENTRY = -5
}
PXIFifoStatus;
/* type definition */
#define PXI_FIFOMESSAGE_BITSZ_TAG 5
#define PXI_FIFOMESSAGE_BITSZ_ERR 1
#define PXI_FIFOMESSAGE_BITSZ_DATA 26
typedef union
{
struct
{
u32 tag:PXI_FIFOMESSAGE_BITSZ_TAG;
u32 err:PXI_FIFOMESSAGE_BITSZ_ERR;
u32 data:PXI_FIFOMESSAGE_BITSZ_DATA;
}
e;
u32 raw;
}
PXIFifoMessage;
// type definition
typedef void (*PXIFifoCallback) (PXIFifoTag tag, u32 data, BOOL err);
typedef void (*PXIFifoEmtpyCallback) (void);
/*---------------------------------------------------------------------------*
Name: PXI_IsFifoError
Description: Check if error on fifo?
Arguments: status Status
Returns: None.
*---------------------------------------------------------------------------*/
static inline BOOL PXI_IsFifoError(PXIFifoStatus status)
{
return PXI_FIFO_SUCCESS == status;
}
/*---------------------------------------------------------------------------*
Name: PXI_InitFifo
Description: initialize FIFO system
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
void PXI_InitFifo(void);
/*---------------------------------------------------------------------------*
Name: PXI_SetFifoRecvCallback
Description: set callback function when data arrive via FIFO
Arguments: device_no DEVICE NO.
callback callback function to be called
Returns: None.
*---------------------------------------------------------------------------*/
void PXI_SetFifoRecvCallback(int fifotag, PXIFifoCallback callback);
/*---------------------------------------------------------------------------*
Name: PXI_IsCallbackReady
PXI_IsArm7CallbackReady
PXI_IsArm9CallbackReady
Description: check if callback is ready
Arguments: fifotag fifo tag NO (0-31)
proc processor name PXI_PROC_ARM9 or PXI_PROC_ARM7
Returns: TRUE if callback is ready
*---------------------------------------------------------------------------*/
BOOL PXI_IsCallbackReady(int fifotag, PXIProc proc);
static inline BOOL PXI_IsArm7CallbackReady(int fifotag)
{
return PXI_IsCallbackReady(fifotag, PXI_PROC_ARM7);
}
static inline BOOL PXI_IsArm9CallbackReady(int fifotag)
{
return PXI_IsCallbackReady(fifotag, PXI_PROC_ARM9);
}
/*---------------------------------------------------------------------------*
Name: PXI_SetFifoSendCallback
Description: set callback function when data is sent via FIFO
Arguments: callback callback function to be called
Returns: None.
*---------------------------------------------------------------------------*/
void PXI_SetFifoSendCallback(PXIFifoEmtpyCallback callback);
/*---------------------------------------------------------------------------*
Name: PXI_SendWordByFifo
Description: Send 32bit-word to anothre CPU via FIFO
Arguments: device_no DEVICE NO.
data data(26-bit) whichi is sent
Returns: if error occured, returns minus value
*---------------------------------------------------------------------------*/
int PXI_SendWordByFifo(int fifotag, u32 data, BOOL err);
//======================================================================
// Interrupt handler called when RECV FIFO not empty
//======================================================================
void PXIi_HandlerRecvFifoNotEmpty(void);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* NITRO_PXI_COMMON_FIFO_H_ */