From 17a021d92e0b3cfd1fdfe6c2fc48309191704d40 Mon Sep 17 00:00:00 2001 From: nakasima Date: Thu, 14 Feb 2008 00:57:01 +0000 Subject: [PATCH] =?UTF-8?q?TS-X3=E3=83=9C=E3=83=BC=E3=83=89=E3=81=AEMCU?= =?UTF-8?q?=E3=83=90=E3=83=83=E3=82=AF=E3=83=A9=E3=82=A4=E3=83=88=E8=BC=9D?= =?UTF-8?q?=E5=BA=A6=E5=A4=89=E6=9B=B4=E3=81=B8=E3=81=AE=E5=AF=BE=E5=BF=9C?= =?UTF-8?q?=E3=80=82=20NWM=5FInit=E3=81=AB=E3=81=A6PXI=5FFIFO=5FTAG=5FUSER?= =?UTF-8?q?=5F0=E3=82=92=E4=BD=BF=E7=94=A8=E3=81=97=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=9F=E3=81=9F=E3=82=81PXI=5FFIFO=5FTAG=5FUSER=5F1=E3=81=B8?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@651 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/components/hyena.TWL/src/main.c | 2 +- .../sysmenu/ARM9/src/device.c | 3 +- .../sysmenu/common/include/internal_api.h | 5 +- .../sysmenu/common/src/pxi.c | 104 +++++++++++++++--- build/systemMenu_RED/Launcher/ARM9/src/main.c | 1 + include/sysmenu/sysmenu_lib.h | 1 + include/sysmenu/sysmenu_lib/common/pxi.h | 58 ++++++++++ .../sysmenu/sysmenu_lib/common/sysmenu_api.h | 1 + .../sysmenu/sysmenu_lib/common/sysmenu_work.h | 9 -- 9 files changed, 157 insertions(+), 27 deletions(-) create mode 100644 include/sysmenu/sysmenu_lib/common/pxi.h diff --git a/build/components/hyena.TWL/src/main.c b/build/components/hyena.TWL/src/main.c index 8a29c0f4..dc1f8269 100644 --- a/build/components/hyena.TWL/src/main.c +++ b/build/components/hyena.TWL/src/main.c @@ -122,7 +122,7 @@ TwlSpMain(void) PrintDebugInfo(); // PXIコールバックの設定 -// PXI_SetFifoRecvCallback( SYSMENU_PXI_FIFO_TAG, SYSMi_PXIFifoRecvCallback ); + SYSM_InitPXI(); // ランチャーパラメター取得(Cold/Hotスタート判定含む) ReadLauncherParameter(); diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c index 04de3aa9..b2e020e6 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/device.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/device.c @@ -46,7 +46,8 @@ void SYSM_SetBackLightBrightness( u8 brightness ) if( brightness > LCFG_TWL_BACKLIGHT_LEVEL_MAX ) { OS_Panic( "Backlight brightness over : %d\n", brightness ); } - ( void )PMi_WriteRegister( 0x20, (u16)brightness ); + ( void )SYSMi_SendPXICommand( SYSM_PXI_COMM_BL_BRIGHT, brightness ); + LCFG_TSD_SetBacklightBrightness( brightness ); // [TODO:] バックライト輝度は毎回セーブせずに、アプリ起動やリセット、電源OFF時に値が変わっていたらセーブするようにする。 diff --git a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h index a95c7734..3362975f 100644 --- a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h +++ b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h @@ -2,7 +2,7 @@ Project: TwlIPL File: internal_api.h - Copyright 2007 Nintendo. All rights reserved. + Copyright 2007-2008 Nintendo. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo @@ -19,6 +19,7 @@ #define SYSM_INTERNAL_API_H_ #include +#include #ifdef __cplusplus extern "C" { @@ -78,8 +79,6 @@ void SYSMi_EnableHotSW( BOOL enable ); //======================================================= BOOL SYSMi_IsDebuggerBannerViewMode( void ); BOOL SYSMi_CheckEntryAddress( void ); -BOOL SYSMi_SendPXICommand( SYSMPXICommand command ); -void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err ); #ifdef __cplusplus diff --git a/build/libraries_sysmenu/sysmenu/common/src/pxi.c b/build/libraries_sysmenu/sysmenu/common/src/pxi.c index d14b2192..6b6049a9 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/pxi.c +++ b/build/libraries_sysmenu/sysmenu/common/src/pxi.c @@ -16,6 +16,7 @@ *---------------------------------------------------------------------------*/ #include +#include #include #include "internal_api.h" @@ -27,8 +28,8 @@ typedef union SYSMPXIPacket { struct { u16 data; - u16 command : 14; - u16 stat : 2; + u8 cmd; // PXI_FIFOMESSAGE_BITSZ_DATA = 26 + u8 stat : 2; }; u32 raw; }SYSMPXIPacket; @@ -38,31 +39,73 @@ typedef union SYSMPXIPacket { // function's prototype------------------------------------------------------- // global variable------------------------------------------------------------- // static variable------------------------------------------------------------- -static volatile BOOL s_sending = FALSE; +static volatile BOOL s_sending[SYSM_PXI_COMM_NUM]; // const data------------------------------------------------------------------ +// PXI初期化 +void SYSM_InitPXI( void ) +{ + static BOOL isInitialized; + int i; + + if (isInitialized) + { + return; + } + isInitialized = TRUE; + + for (i=0; i #include +#include #ifdef __cplusplus diff --git a/include/sysmenu/sysmenu_lib/common/pxi.h b/include/sysmenu/sysmenu_lib/common/pxi.h new file mode 100644 index 00000000..c02212ad --- /dev/null +++ b/include/sysmenu/sysmenu_lib/common/pxi.h @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: pxi.h + + Copyright 2008 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 SYSM_COMMON_PXI_H_ +#define SYSM_COMMON_PXI_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +//---------------------------------------------------------------------- +// PXIコマンド +//---------------------------------------------------------------------- +#define SYSMENU_PXI_FIFO_TAG PXI_FIFO_TAG_USER_1 + +typedef enum SYSMPXICommand { + SYSM_PXI_COMM_BL_BRIGHT = 0, + SYSM_PXI_COMM_DISABLE_HOTSW = 1, + + SYSM_PXI_COMM_NUM +}SYSMPXICommand; + +/*---------------------------------------------------------------------------* + 関数定義 + *---------------------------------------------------------------------------*/ + +// PXI初期化 +void SYSM_InitPXI( void ); + +// PXIコマンド送信 +BOOL SYSMi_TrySendPXICommand( SYSMPXICommand cmd, u16 data ); +BOOL SYSMi_SendPXICommand( SYSMPXICommand command, u16 data ); + +// PXIコマンド受信 +void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err ); + + +#ifdef __cplusplus +} +#endif + +#endif // SYSM_COMMON_PXI_H_ diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index 71a6e34c..bbbd31ae 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -83,6 +83,7 @@ extern void SYSM_Free( void *ptr ); // 初期化 extern void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) ); // 初期化。 +extern void SYSM_InitPXI( void ); // PXI初期化 extern void SYSM_SetArena( void ); // システムメニューのアリーナ初期化。OS_Initの後で呼んでください。 extern void SYSM_SetAllocFunc( void *(*pAlloc)(u32), void (*pFree)(void*) ); // SYSM_initで設定した場合は必要なし。 extern TitleProperty *SYSM_ReadParameters( void ); // 本体設定データ、リセットパラメータなどを取得 diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index 65a3f7af..d1682d02 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -41,15 +41,6 @@ typedef struct TitleID_HiLo { }TitleID_HiLo; -//---------------------------------------------------------------------- -// PXIコマンド -//---------------------------------------------------------------------- -#define SYSMENU_PXI_FIFO_TAG PXI_FIFO_TAG_USER_0 - -typedef enum SYSMPXICommand { - SYSM_PXI_COMM_DISABLE_HOTSW = 1 -}SYSMPXICommand; - //---------------------------------------------------------------------- // ROMエミュレーション情報 //----------------------------------------------------------------------