mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
TS-X3ボードのMCUバックライト輝度変更への対応。
NWM_InitにてPXI_FIFO_TAG_USER_0を使用していたためPXI_FIFO_TAG_USER_1へ変更。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@651 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
3eed6100e7
commit
17a021d92e
@ -122,7 +122,7 @@ TwlSpMain(void)
|
||||
PrintDebugInfo();
|
||||
|
||||
// PXIコールバックの設定
|
||||
// PXI_SetFifoRecvCallback( SYSMENU_PXI_FIFO_TAG, SYSMi_PXIFifoRecvCallback );
|
||||
SYSM_InitPXI();
|
||||
|
||||
// ランチャーパラメター取得(Cold/Hotスタート判定含む)
|
||||
ReadLauncherParameter();
|
||||
|
||||
@ -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時に値が変わっていたらセーブするようにする。
|
||||
|
||||
@ -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 <twl.h>
|
||||
#include <sysmenu/sysmenu_lib/common/pxi.h>
|
||||
|
||||
#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
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/mcu.h>
|
||||
#include <sysmenu.h>
|
||||
#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<58>‰Šú‰»
|
||||
void SYSM_InitPXI( void )
|
||||
{
|
||||
static BOOL isInitialized;
|
||||
int i;
|
||||
|
||||
if (isInitialized)
|
||||
{
|
||||
return;
|
||||
}
|
||||
isInitialized = TRUE;
|
||||
|
||||
for (i=0; i<SYSM_PXI_COMM_NUM; i++)
|
||||
{
|
||||
s_sending[i] = FALSE;
|
||||
}
|
||||
|
||||
//---- setting PXI
|
||||
PXI_Init();
|
||||
#ifdef SDK_ARM9
|
||||
while (!PXI_IsCallbackReady(SYSMENU_PXI_FIFO_TAG, PXI_PROC_ARM7))
|
||||
{
|
||||
}
|
||||
#endif // SDK_ARM9
|
||||
PXI_SetFifoRecvCallback(SYSMENU_PXI_FIFO_TAG, SYSMi_PXIFifoRecvCallback);
|
||||
}
|
||||
|
||||
// PXIƒRƒ}ƒ“ƒh‘—<E28098>M
|
||||
BOOL SYSMi_SendPXICommand( SYSMPXICommand command )
|
||||
BOOL SYSMi_TrySendPXICommand( SYSMPXICommand cmd, u16 data )
|
||||
{
|
||||
SYSMPXIPacket packet;
|
||||
|
||||
OSIntrMode saved = OS_DisableInterrupts();
|
||||
if( s_sending ) {
|
||||
if( s_sending[cmd] )
|
||||
{
|
||||
OS_RestoreInterrupts( saved );
|
||||
return FALSE;
|
||||
}
|
||||
s_sending = TRUE;
|
||||
s_sending[cmd] = TRUE;
|
||||
OS_RestoreInterrupts( saved );
|
||||
|
||||
packet.stat = SYSM_PXI_COMM_STAT_REQ;
|
||||
packet.command = (u16)command;
|
||||
packet.data = 0;
|
||||
packet.stat = SYSM_PXI_COMM_STAT_REQ;
|
||||
packet.cmd = cmd;
|
||||
packet.data = data;
|
||||
|
||||
while( PXI_SendWordByFifo( SYSMENU_PXI_FIFO_TAG, packet.raw, 0 ) < 0 ) {}
|
||||
while( PXI_SendWordByFifo( SYSMENU_PXI_FIFO_TAG, packet.raw, FALSE) != PXI_FIFO_SUCCESS )
|
||||
{
|
||||
SVC_WaitByLoop(1);
|
||||
}
|
||||
|
||||
while( s_sending ) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL SYSMi_SendPXICommand( SYSMPXICommand cmd, u16 data )
|
||||
{
|
||||
while( ! SYSMi_TrySendPXICommand( cmd, data ) )
|
||||
{
|
||||
OS_WaitAnyIrq();
|
||||
}
|
||||
while( s_sending[cmd] )
|
||||
{
|
||||
OS_WaitAnyIrq();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -70,13 +113,48 @@ void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err )
|
||||
{
|
||||
#pragma unused( tag, err )
|
||||
SYSMPXIPacket packet;
|
||||
u8 cmd;
|
||||
packet.raw = data;
|
||||
cmd = packet.cmd;
|
||||
|
||||
if( packet.stat == SYSM_PXI_COMM_STAT_ACK )
|
||||
{
|
||||
s_sending[cmd] = FALSE;
|
||||
}
|
||||
if( packet.stat == SYSM_PXI_COMM_STAT_REQ )
|
||||
{
|
||||
packet.stat = SYSM_PXI_COMM_STAT_ACK;
|
||||
}
|
||||
|
||||
#ifdef SDK_ARM7
|
||||
|
||||
switch( cmd )
|
||||
{
|
||||
case SYSM_PXI_COMM_BL_BRIGHT:
|
||||
#ifdef PMIC_FINAL
|
||||
MCU_WriteRegister(MCU_REG_BL_ADDR, (u8)packet.data );
|
||||
#else // PMIC_FINAL
|
||||
PMi_SetRegister( REG_PMIC_BL_BRT_B_ADDR, (u8)packet.data );
|
||||
#endif // PMIC_FINAL
|
||||
break;
|
||||
default:
|
||||
#ifndef SDK_FINALROM
|
||||
OS_Panic("illegal SYSM pxi command.");
|
||||
#else
|
||||
OS_Panic("");
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
// PXI‰ž“š•Ô<E280A2>M
|
||||
PXI_SendWordByFifo( SYSMENU_PXI_FIFO_TAG, packet.raw, FALSE );
|
||||
|
||||
#endif // SDK_ARM7
|
||||
|
||||
#if 0
|
||||
|
||||
#ifdef SDK_ARM9
|
||||
|
||||
s_sending = FALSE;
|
||||
|
||||
if( packet.stat == SYSM_PXI_COMM_STAT_ACK ) {
|
||||
switch( data ) {
|
||||
case SYSM_PXI_COMM_DISABLE_HOTSW:
|
||||
|
||||
@ -91,6 +91,7 @@ void TwlMain( void )
|
||||
SYSM_Init( Alloc, Free ); // OS_Initの前でコールする必要あり。
|
||||
OS_Init();
|
||||
SYSM_SetArena(); // OS_Initの後でコールする必要あり。
|
||||
SYSM_InitPXI(); // OS_Initの後でコールする必要あり。
|
||||
|
||||
// OS初期化------------------------
|
||||
OS_InitTick();
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
|
||||
#include <sysmenu/sysmenu_lib/common/sysmenu_api.h>
|
||||
#include <sysmenu/sysmenu_lib/common/sysmenu_work.h>
|
||||
#include <sysmenu/sysmenu_lib/common/pxi.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
58
include/sysmenu/sysmenu_lib/common/pxi.h
Normal file
58
include/sysmenu/sysmenu_lib/common/pxi.h
Normal file
@ -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 <nitro/pxi.h>
|
||||
|
||||
#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_
|
||||
@ -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<58>‰Šú‰»
|
||||
extern void SYSM_SetArena( void ); // システムメニューのアリーナ初期化。OS_Initの後で呼んでください。
|
||||
extern void SYSM_SetAllocFunc( void *(*pAlloc)(u32), void (*pFree)(void*) ); // SYSM_initで設定した場合は必要なし。
|
||||
extern TitleProperty *SYSM_ReadParameters( void ); // 本体設定データ、リセットパラメータなどを取得
|
||||
|
||||
@ -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エミュレーション情報
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
Loading…
Reference in New Issue
Block a user