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();
|
PrintDebugInfo();
|
||||||
|
|
||||||
// PXIコールバックの設定
|
// PXIコールバックの設定
|
||||||
// PXI_SetFifoRecvCallback( SYSMENU_PXI_FIFO_TAG, SYSMi_PXIFifoRecvCallback );
|
SYSM_InitPXI();
|
||||||
|
|
||||||
// ランチャーパラメター取得(Cold/Hotスタート判定含む)
|
// ランチャーパラメター取得(Cold/Hotスタート判定含む)
|
||||||
ReadLauncherParameter();
|
ReadLauncherParameter();
|
||||||
|
|||||||
@ -46,7 +46,8 @@ void SYSM_SetBackLightBrightness( u8 brightness )
|
|||||||
if( brightness > LCFG_TWL_BACKLIGHT_LEVEL_MAX ) {
|
if( brightness > LCFG_TWL_BACKLIGHT_LEVEL_MAX ) {
|
||||||
OS_Panic( "Backlight brightness over : %d\n", brightness );
|
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 );
|
LCFG_TSD_SetBacklightBrightness( brightness );
|
||||||
|
|
||||||
// [TODO:] バックライト輝度は毎回セーブせずに、アプリ起動やリセット、電源OFF時に値が変わっていたらセーブするようにする。
|
// [TODO:] バックライト輝度は毎回セーブせずに、アプリ起動やリセット、電源OFF時に値が変わっていたらセーブするようにする。
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
Project: TwlIPL
|
Project: TwlIPL
|
||||||
File: internal_api.h
|
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
|
These coded instructions, statements, and computer programs contain
|
||||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
@ -19,6 +19,7 @@
|
|||||||
#define SYSM_INTERNAL_API_H_
|
#define SYSM_INTERNAL_API_H_
|
||||||
|
|
||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
|
#include <sysmenu/sysmenu_lib/common/pxi.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -78,8 +79,6 @@ void SYSMi_EnableHotSW( BOOL enable );
|
|||||||
//=======================================================
|
//=======================================================
|
||||||
BOOL SYSMi_IsDebuggerBannerViewMode( void );
|
BOOL SYSMi_IsDebuggerBannerViewMode( void );
|
||||||
BOOL SYSMi_CheckEntryAddress( void );
|
BOOL SYSMi_CheckEntryAddress( void );
|
||||||
BOOL SYSMi_SendPXICommand( SYSMPXICommand command );
|
|
||||||
void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err );
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
|
#include <twl/mcu.h>
|
||||||
#include <sysmenu.h>
|
#include <sysmenu.h>
|
||||||
#include "internal_api.h"
|
#include "internal_api.h"
|
||||||
|
|
||||||
@ -27,8 +28,8 @@
|
|||||||
typedef union SYSMPXIPacket {
|
typedef union SYSMPXIPacket {
|
||||||
struct {
|
struct {
|
||||||
u16 data;
|
u16 data;
|
||||||
u16 command : 14;
|
u8 cmd; // PXI_FIFOMESSAGE_BITSZ_DATA = 26
|
||||||
u16 stat : 2;
|
u8 stat : 2;
|
||||||
};
|
};
|
||||||
u32 raw;
|
u32 raw;
|
||||||
}SYSMPXIPacket;
|
}SYSMPXIPacket;
|
||||||
@ -38,31 +39,73 @@ typedef union SYSMPXIPacket {
|
|||||||
// function's prototype-------------------------------------------------------
|
// function's prototype-------------------------------------------------------
|
||||||
// global variable-------------------------------------------------------------
|
// global variable-------------------------------------------------------------
|
||||||
// static variable-------------------------------------------------------------
|
// static variable-------------------------------------------------------------
|
||||||
static volatile BOOL s_sending = FALSE;
|
static volatile BOOL s_sending[SYSM_PXI_COMM_NUM];
|
||||||
// const data------------------------------------------------------------------
|
// 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
|
// PXIƒRƒ}ƒ“ƒh‘—<E28098>M
|
||||||
BOOL SYSMi_SendPXICommand( SYSMPXICommand command )
|
BOOL SYSMi_TrySendPXICommand( SYSMPXICommand cmd, u16 data )
|
||||||
{
|
{
|
||||||
SYSMPXIPacket packet;
|
SYSMPXIPacket packet;
|
||||||
|
|
||||||
OSIntrMode saved = OS_DisableInterrupts();
|
OSIntrMode saved = OS_DisableInterrupts();
|
||||||
if( s_sending ) {
|
if( s_sending[cmd] )
|
||||||
|
{
|
||||||
OS_RestoreInterrupts( saved );
|
OS_RestoreInterrupts( saved );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
s_sending = TRUE;
|
s_sending[cmd] = TRUE;
|
||||||
OS_RestoreInterrupts( saved );
|
OS_RestoreInterrupts( saved );
|
||||||
|
|
||||||
packet.stat = SYSM_PXI_COMM_STAT_REQ;
|
packet.stat = SYSM_PXI_COMM_STAT_REQ;
|
||||||
packet.command = (u16)command;
|
packet.cmd = cmd;
|
||||||
packet.data = 0;
|
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();
|
OS_WaitAnyIrq();
|
||||||
}
|
}
|
||||||
|
while( s_sending[cmd] )
|
||||||
|
{
|
||||||
|
OS_WaitAnyIrq();
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,13 +113,48 @@ void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err )
|
|||||||
{
|
{
|
||||||
#pragma unused( tag, err )
|
#pragma unused( tag, err )
|
||||||
SYSMPXIPacket packet;
|
SYSMPXIPacket packet;
|
||||||
|
u8 cmd;
|
||||||
packet.raw = data;
|
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
|
#if 0
|
||||||
|
|
||||||
#ifdef SDK_ARM9
|
#ifdef SDK_ARM9
|
||||||
|
|
||||||
s_sending = FALSE;
|
|
||||||
|
|
||||||
if( packet.stat == SYSM_PXI_COMM_STAT_ACK ) {
|
if( packet.stat == SYSM_PXI_COMM_STAT_ACK ) {
|
||||||
switch( data ) {
|
switch( data ) {
|
||||||
case SYSM_PXI_COMM_DISABLE_HOTSW:
|
case SYSM_PXI_COMM_DISABLE_HOTSW:
|
||||||
|
|||||||
@ -91,6 +91,7 @@ void TwlMain( void )
|
|||||||
SYSM_Init( Alloc, Free ); // OS_Initの前でコールする必要あり。
|
SYSM_Init( Alloc, Free ); // OS_Initの前でコールする必要あり。
|
||||||
OS_Init();
|
OS_Init();
|
||||||
SYSM_SetArena(); // OS_Initの後でコールする必要あり。
|
SYSM_SetArena(); // OS_Initの後でコールする必要あり。
|
||||||
|
SYSM_InitPXI(); // OS_Initの後でコールする必要あり。
|
||||||
|
|
||||||
// OS初期化------------------------
|
// OS初期化------------------------
|
||||||
OS_InitTick();
|
OS_InitTick();
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <sysmenu/sysmenu_lib/common/sysmenu_api.h>
|
#include <sysmenu/sysmenu_lib/common/sysmenu_api.h>
|
||||||
#include <sysmenu/sysmenu_lib/common/sysmenu_work.h>
|
#include <sysmenu/sysmenu_lib/common/sysmenu_work.h>
|
||||||
|
#include <sysmenu/sysmenu_lib/common/pxi.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#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_Init( void *(*pAlloc)(u32), void (*pFree)(void*) ); // 初期化。
|
||||||
|
extern void SYSM_InitPXI( void ); // PXI<58>‰Šú‰»
|
||||||
extern void SYSM_SetArena( void ); // システムメニューのアリーナ初期化。OS_Initの後で呼んでください。
|
extern void SYSM_SetArena( void ); // システムメニューのアリーナ初期化。OS_Initの後で呼んでください。
|
||||||
extern void SYSM_SetAllocFunc( void *(*pAlloc)(u32), void (*pFree)(void*) ); // SYSM_initで設定した場合は必要なし。
|
extern void SYSM_SetAllocFunc( void *(*pAlloc)(u32), void (*pFree)(void*) ); // SYSM_initで設定した場合は必要なし。
|
||||||
extern TitleProperty *SYSM_ReadParameters( void ); // 本体設定データ、リセットパラメータなどを取得
|
extern TitleProperty *SYSM_ReadParameters( void ); // 本体設定データ、リセットパラメータなどを取得
|
||||||
|
|||||||
@ -41,15 +41,6 @@ typedef struct TitleID_HiLo {
|
|||||||
}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エミュレーション情報
|
// ROMエミュレーション情報
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user