/*---------------------------------------------------------------------------* Project: Horizon File: dsp_Common.h Copyright (C)2009 Nintendo Co., Ltd. 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. $Rev: 28315 $ *---------------------------------------------------------------------------*/ #ifndef NN_DSP_CTR_DSP_COMMON_H_ #define NN_DSP_CTR_DSP_COMMON_H_ /*---------------------------------------------------------------------------* * constants *---------------------------------------------------------------------------*/ // IN/OUT定義用の定数。(原則的に 0 : DSP->ARM, 1 : ARM->DSP と定めておく) #ifdef NN_SYSTEM_PROCESS #define NN_DSP_PIPE_INPUT 0 #define NN_DSP_PIPE_OUTPUT 1 #else #define NN_DSP_PIPE_INPUT 1 #define NN_DSP_PIPE_OUTPUT 0 #endif #define NN_DSP_PIPE_PEER_MAX 2 // 定義済みポート #define NN_DSP_PIPE_CONSOLE 0 // DSP->ARM: デバッグコンソール #define NN_DSP_PIPE_DMA 1 // DSP<->ARM: 擬似DMA #define NN_DSP_PIPE_AUDIO 2 // DSP<->ARM: オーディオ汎用通信 #define NN_DSP_PIPE_BINARY 3 // DSP<->ARM: 汎用バイナリ #define NN_DSP_PIPE_EPHEMERAL 4 // DSP_CreatePipe()で確保可能な空き領域 #define NN_DSP_PIPE_DSPSND NN_DSP_PIPE_AUDIO // システムリソース #define NN_DSP_PIPE_PORT_MAX 8 // 使用可能なパイプの最大ポート数 #define NN_DSP_PIPE_DEFAULT_BUFFER_LENGTH 64 // デフォルトのリングバッファサイズ #define NN_DSP_PIPE_FLAG_INPUT 0x0000 // 入力側 #define NN_DSP_PIPE_FLAG_OUTPUT 0x0001 // 出力側 #define NN_DSP_PIPE_FLAG_PORTMASK 0x00FF // ポート番号負フィールド #define NN_DSP_PIPE_FLAG_BOUND 0x0100 // Openされている #define NN_DSP_PIPE_FLAG_EOF 0x0200 // EOF #define NN_DSP_PIPE_FLAG_EXIT_OS 0x8000 // DSPのAHBマスタ終了処理 #define NN_DSP_PIPE_COMMAND_REGISTER 2 // DSPファイルIO用のコマンド構造体。 #define NN_DSP_PIPE_IO_COMMAND_OPEN 0 #define NN_DSP_PIPE_IO_COMMAND_CLOSE 1 #define NN_DSP_PIPE_IO_COMMAND_SEEK 2 #define NN_DSP_PIPE_IO_COMMAND_READ 3 #define NN_DSP_PIPE_IO_COMMAND_WRITE 4 #define NN_DSP_PIPE_IO_COMMAND_MEMMAP 5 #define NN_DSP_PIPE_IO_MODE_R 0x0001 #define NN_DSP_PIPE_IO_MODE_W 0x0002 #define NN_DSP_PIPE_IO_MODE_RW 0x0004 #define NN_DSP_PIPE_IO_MODE_TRUNC 0x0008 #define NN_DSP_PIPE_IO_MODE_CREATE 0x0010 #define NN_DSP_PIPE_IO_SEEK_SET 0 #define NN_DSP_PIPE_IO_SEEK_CUR 1 #define NN_DSP_PIPE_IO_SEEK_END 2 #ifndef CTR_DSP /*---------------------------------------------------------------------------* * includes *---------------------------------------------------------------------------*/ #include #include /*---------------------------------------------------------------------------* * namespaces *---------------------------------------------------------------------------*/ namespace nn { namespace dsp { namespace CTR { typedef enum { INTERRUPT_TYPE_REPLY0 = 0, INTERRUPT_TYPE_REPLY1 = 1, INTERRUPT_TYPE_PIPE = 2 } InterruptType; #endif // CTR_DSP //---------------------------------------------------------------- // dsp_Pipe.h から移動. //---------------------------------------------------------------- // パイプ構造体。 // DSPからARMへの直接アクセス手段が存在しないため // 基本的にARMからAPBP-FIFOでDSP内のバッファを制御する。 // 特に指定が無ければリングバッファとして使用する。 typedef struct DSPPipe { DSPAddr address; // バッファの先頭アドレス DSPByte length; // バッファサイズ DSPByte rpos; // 未読先頭領域 DSPByte wpos; // 追記終端領域 u16 flags; // 属性フラグ } DSPPipe, * pDSPPipe; /*---------------------------------------------------------------------------*/ /* declarations */ // DSPが保持してARMが参照するパイプ情報。 typedef struct DSPPipeMonitor { DSPPipe pipe[NN_DSP_PIPE_PORT_MAX][NN_DSP_PIPE_PEER_MAX]; } DSPPipeMonitor; #ifndef CTR_DSP } // namespace nn { } // namespace dsp { } // namespace CTR { #endif // CTR_DSP #endif // ifndef NN_DSP_CTR_DSP_COMMON_H_