twl_wrapsdk/build/libraries/spi/ARM7/include/tp_sp.h
kamikawa bfc9350270 libraries/snd/ARM7/src/snd_mic.c で定義されていたマイク関数を削除し、新規にlibralies/mic 関数を追加。
CODEC関連コードを更新。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@287 4ee2a332-4b2b-5046-8439-1ba90f034370
2007-09-28 10:35:18 +00:00

226 lines
8.5 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------------*
Project: NitroSDK - libraries - spi
File: tp_sp.h
Copyright 2003-2006 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: tp_sp.h,v $
Revision 1.7 2006/01/18 02:12:27 kitase_hirotake
do-indent
Revision 1.6 2005/02/28 05:26:27 yosizaki
do-indent.
Revision 1.5 2004/12/29 02:03:59 takano_makoto
SetStability関数のretryパラメータを廃止, rangeの自動調整スイッチを有効に変更
Revision 1.4 2004/12/20 00:40:55 takano_makoto
自動サンプリング時のVAlarmのdelayを設定
Revision 1.3 2004/12/15 09:12:40 takano_makoto
rangeの自動調整を追加。SDK_TP_AUTO_ADJUST_RANGEによって有効になる。
Revision 1.2 2004/11/05 05:47:24 terui
SPIコマンドについての制約事項をコメントに追加。
Revision 1.1 2004/09/06 12:54:18 terui
libraries/spi/includeからlibraries/spi/ARM7/includeに移動。
SPI処理予約方式の実装に伴う修正。
Revision 1.9 2004/08/09 13:23:25 takano_makoto
MIC自動サンプリングの合間にTPの回サンプリングが実行できるように修正
Revision 1.8 2004/07/31 08:06:45 terui
サンプリングコマンドをターゲットHWにより振り分ける仕様を追加
Revision 1.7 2004/06/17 11:07:43 terui
接触判定コマンド定義を変更。0x94 -> 0x84
Revision 1.6 2004/05/25 00:58:01 terui
SPI各デバイス用ライブラリ細分化に伴う修正
Revision 1.5 2004/05/14 04:50:36 yosiokat
TEGとTSの両方に対応するよう変更
Revision 1.4 2004/04/29 10:25:59 terui
関数定義の引数削除に伴う変更
Revision 1.3 2004/04/14 06:26:46 terui
SPIライブラリのソース整理に伴う更新
Revision 1.2 2004/04/05 04:47:05 terui
Change composition.
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef LIBRARIES_TP_SP_H_
#define LIBRARIES_TP_SP_H_
#include <nitro/types.h>
#include "spi_sp.h"
/////////////////////////////// TWL
#include "tp_reg.h"
///////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif
/*===========================================================================*/
/*---------------------------------------------------------------------------*
定数定義
*---------------------------------------------------------------------------*/
/* 2004/11/04 照井
*
* 新規別デバイスのために、以下のコマンド以外は予約とします。
* ARM7がTPコントローラにこれら以外のコマンドを発行する必要がある場合は
* 予約されていることを考慮して注意して使用して下さい。
*
* 0x0000 ダミー命令
* 0x0084 接触判定
* 0x0091 Y方向サンプリング
* 0x0093 Y方向サンプリング(旧バージョン)
* 0x00D1 X方向サンプリング
* 0x00D3 X方向サンプリング(旧バージョン)
*
*/
#ifdef SDK_TEG
// 内部リファレンスを使用
#define TP_COMMAND_SAMPLING_X 0x00D3 // X方向サンプリング命令
#define TP_COMMAND_SAMPLING_Y 0x0093 // Y方向サンプリング命令
#else // SDK_TS
#if ( SDK_TS_VERSION >= 100 ) // 青箱Ver.D以降
// 外部リファレンスを使用
#define TP_COMMAND_SAMPLING_X 0x00D1 // X方向サンプリング命令
#define TP_COMMAND_SAMPLING_Y 0x0091 // Y方向サンプリング命令
#else // 青箱Ver.D未満
// 内部リファレンスを使用
#define TP_COMMAND_SAMPLING_X 0x00D3 // X方向サンプリング命令
#define TP_COMMAND_SAMPLING_Y 0x0093 // Y方向サンプリング命令
#endif
#endif
#define TP_COMMAND_DETECT_TOUCH 0x0084 // 接触判定命令
#define TP_VALID_BIT_MASK 0x7ff8 // 有効データビット
#define TP_VALID_BIT_SHIFT 3 // xooooooo oooooxxx
#define TP_VALARM_DELAY_MAX 10
#define TP_DATA_SAMPLE_DEPTH_MAX 8
#define TP_DATA_SAMPLE_DEPTH_DEFAULT 5
/*---------------------------------------------------------------------------*
構造体定義
*---------------------------------------------------------------------------*/
// タッチパネルに関する内部的な状態
typedef enum TPStatus
{
TP_STATUS_READY = 0, // 通常操作待ち状態
TP_STATUS_AUTO_START, // 自動サンプリング開始待ち状態
TP_STATUS_AUTO_SAMPLING, // 自動サンプリング中
TP_STATUS_AUTO_WAIT_END // 自動サンプリング停止待ち状態
}
TPStatus;
// タッチパネル用ワーク構造体
typedef struct TPWork
{
u16 command[SPI_PXI_CONTINUOUS_PACKET_MAX];
TPStatus status; // タッチパネル内部状態管理変数
s32 range; // 安定判定時の許容する振れ幅のデフォルト値
s32 rangeMin; // 安定判定時の許容する振れ幅の最小値(range自動調整で使用)
OSVAlarm vAlarm[SPI_TP_SAMPLING_FREQUENCY_MAX]; // タッチパネル用Vアラーム
u16 vCount[SPI_TP_SAMPLING_FREQUENCY_MAX]; // タッチパネル用Vカウント退避エリア
}
TPWork;
/*---------------------------------------------------------------------------*
関数定義
*---------------------------------------------------------------------------*/
void TP_Init(void);
void TP_AnalyzeCommand(u32 data);
void TP_ExecuteProcess(SPIEntry * entry);
//////////////////////////// TWL
void TWL_TP_Init(void);
//void TWL_TP_AnalyzeCommand(u32 data);
//void TWL_TP_ExecuteProcess(SPIEntry * entry);
void TWL_TP_SetStabilizationTime( TpSetupTime_t time );
void TWL_TP_SetPrechargeTime( TpSetupTime_t time );
void TWL_TP_SetSenseTime( TpSetupTime_t time );
void TWL_TP_SetDebounceTime( tpDebounce_t time );
void TWL_TP_SetResolution( TpResolution_t res );
void TWL_TP_GetResolution( TpResolution_t *res );
void TWL_TP_SetTouchPanelDataDepth(u8 depth);
void TWL_TP_SetConversionMode( TpCnversionControl_t control, TpConversionMode_t mode, TpCnversionPin_t pin );
void TWL_TP_SetInterval( tpInterval_t interval );
void TWL_TP_EnableNewBufferMode( void );
void TWL_TP_DisableNewBufferMode( void );
////////////////////////////
#define SDK_TP_AUTO_ADJUST_RANGE // range自動調整スイッチ
#ifdef SDK_TP_AUTO_ADJUST_RANGE // range自動調整スイッチ
void TP_ExecSampling(SPITpData *data, s32 range, u16 *density);
BOOL TWL_TP_ReadBuffer( SPITpData *data, u8 range, u16* density );
#else
void TP_ExecSampling(SPITpData *data, s32 range);
BOOL TWL_TP_ReadBuffer( SPITpData *data, u8 range );
#endif
/*---------------------------------------------------------------------------*
インライン関数定義
*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*
Name: TP_SPIChangeMode
Description: SPIコントロールレジスタを編集してタッチパネル用コマンド転送準備を
整える。この時同時に、SPI連続クロック発振モードを切り替える。
CODECの制限により、
DSモードではSPIクロックは2MHzが限度となるので注意。
TWLモードではSPIクロックは4MHzとなるため、
この関数ではなくCDCi_ChangeSpiModeを使用する。
Arguments: continuous - SPI連続クロック発振可否。'1'で1byte通信の都度CSを上げ
ないモード。ただし連続転送の最後の1バイトでは'0'にして
1byte転送モードにしないと永久にCSが上がらない。
Returns: None.
*---------------------------------------------------------------------------*/
static inline void TP_SPIChangeMode(SPITransMode continuous)
{
reg_SPI_SPICNT = (u16)((0x0001 << REG_SPI_SPICNT_E_SHIFT) | (0x0000 << REG_SPI_SPICNT_I_SHIFT) | (SPI_COMMPARTNER_TP << REG_SPI_SPICNT_SEL_SHIFT) | // 吉岡変更
// ( SPI_COMMPARTNER_PMIC << REG_SPI_SPICNT_SEL_SHIFT ) | // 吉岡変更前
(continuous << REG_SPI_SPICNT_MODE_SHIFT) |
(0x0000 << REG_SPI_SPICNT_BUSY_SHIFT) |
(SPI_BAUDRATE_2MHZ << REG_SPI_SPICNT_BAUDRATE_SHIFT));
}
/*===========================================================================*/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* LIBRARIES_TP_SP_H_ */
/*---------------------------------------------------------------------------*
End of file
*---------------------------------------------------------------------------*/