1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: dsp_Common.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 20614 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_DSP_CTR_DSP_COMMON_H_ 17 #define NN_DSP_CTR_DSP_COMMON_H_ 18 19 /*---------------------------------------------------------------------------* 20 * constants 21 *---------------------------------------------------------------------------*/ 22 23 // IN/OUT定義用の定数。(原則的に 0 : DSP->ARM, 1 : ARM->DSP と定めておく) 24 #ifdef NN_SYSTEM_PROCESS 25 #define NN_DSP_PIPE_INPUT 0 26 #define NN_DSP_PIPE_OUTPUT 1 27 #else 28 #define NN_DSP_PIPE_INPUT 1 29 #define NN_DSP_PIPE_OUTPUT 0 30 #endif 31 #define NN_DSP_PIPE_PEER_MAX 2 32 33 // 定義済みポート 34 #define NN_DSP_PIPE_CONSOLE 0 // DSP->ARM: デバッグコンソール 35 #define NN_DSP_PIPE_DMA 1 // DSP<->ARM: 擬似DMA 36 #define NN_DSP_PIPE_AUDIO 2 // DSP<->ARM: オーディオ汎用通信 37 #define NN_DSP_PIPE_BINARY 3 // DSP<->ARM: 汎用バイナリ 38 #define NN_DSP_PIPE_EPHEMERAL 4 // DSP_CreatePipe()で確保可能な空き領域 39 #define NN_DSP_PIPE_DSPSND NN_DSP_PIPE_AUDIO 40 41 // システムリソース 42 #define NN_DSP_PIPE_PORT_MAX 8 // 使用可能なパイプの最大ポート数 43 #define NN_DSP_PIPE_DEFAULT_BUFFER_LENGTH 64 // デフォルトのリングバッファサイズ 44 45 #define NN_DSP_PIPE_FLAG_INPUT 0x0000 // 入力側 46 #define NN_DSP_PIPE_FLAG_OUTPUT 0x0001 // 出力側 47 #define NN_DSP_PIPE_FLAG_PORTMASK 0x00FF // ポート番号負フィールド 48 #define NN_DSP_PIPE_FLAG_BOUND 0x0100 // Openされている 49 #define NN_DSP_PIPE_FLAG_EOF 0x0200 // EOF 50 51 #define NN_DSP_PIPE_FLAG_EXIT_OS 0x8000 // DSPのAHBマスタ終了処理 52 53 #define NN_DSP_PIPE_COMMAND_REGISTER 2 54 55 // DSPファイルIO用のコマンド構造体。 56 #define NN_DSP_PIPE_IO_COMMAND_OPEN 0 57 #define NN_DSP_PIPE_IO_COMMAND_CLOSE 1 58 #define NN_DSP_PIPE_IO_COMMAND_SEEK 2 59 #define NN_DSP_PIPE_IO_COMMAND_READ 3 60 #define NN_DSP_PIPE_IO_COMMAND_WRITE 4 61 #define NN_DSP_PIPE_IO_COMMAND_MEMMAP 5 62 63 #define NN_DSP_PIPE_IO_MODE_R 0x0001 64 #define NN_DSP_PIPE_IO_MODE_W 0x0002 65 #define NN_DSP_PIPE_IO_MODE_RW 0x0004 66 #define NN_DSP_PIPE_IO_MODE_TRUNC 0x0008 67 #define NN_DSP_PIPE_IO_MODE_CREATE 0x0010 68 69 #define NN_DSP_PIPE_IO_SEEK_SET 0 70 #define NN_DSP_PIPE_IO_SEEK_CUR 1 71 #define NN_DSP_PIPE_IO_SEEK_END 2 72 73 #ifndef CTR_DSP 74 /*---------------------------------------------------------------------------* 75 * includes 76 *---------------------------------------------------------------------------*/ 77 #include <nn/types.h> 78 #include <nn/dsp/CTR/Common/dsp_Types.h> 79 80 /*---------------------------------------------------------------------------* 81 * namespaces 82 *---------------------------------------------------------------------------*/ 83 84 namespace nn { 85 namespace dsp { 86 namespace CTR { 87 88 typedef enum 89 { 90 INTERRUPT_TYPE_REPLY0, 91 INTERRUPT_TYPE_REPLY1, 92 INTERRUPT_TYPE_PIPE 93 } InterruptType; 94 95 #endif // CTR_DSP 96 97 //---------------------------------------------------------------- 98 // dsp_Pipe.h から移動. 99 //---------------------------------------------------------------- 100 // パイプ構造体。 101 // DSPからARMへの直接アクセス手段が存在しないため 102 // 基本的にARMからAPBP-FIFOでDSP内のバッファを制御する。 103 // 特に指定が無ければリングバッファとして使用する。 104 typedef struct DSPPipe 105 { 106 DSPAddr address; // バッファの先頭アドレス 107 DSPByte length; // バッファサイズ 108 DSPByte rpos; // 未読先頭領域 109 DSPByte wpos; // 追記終端領域 110 u16 flags; // 属性フラグ 111 } 112 DSPPipe, * pDSPPipe; 113 114 /*---------------------------------------------------------------------------*/ 115 /* declarations */ 116 117 // DSPが保持してARMが参照するパイプ情報。 118 typedef struct DSPPipeMonitor 119 { 120 DSPPipe pipe[NN_DSP_PIPE_PORT_MAX][NN_DSP_PIPE_PEER_MAX]; 121 } 122 DSPPipeMonitor; 123 124 #ifndef CTR_DSP 125 } // namespace nn { 126 } // namespace dsp { 127 } // namespace CTR { 128 #endif // CTR_DSP 129 130 #endif // ifndef NN_DSP_CTR_DSP_COMMON_H_ 131 132