mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
X3バックライト対応その2:X3以降ではバックライト輝度値の保存にLCFGを使用しないよう変更
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@821 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
f0e34f5fd5
commit
a7f1f274a2
@ -41,6 +41,44 @@ u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void
|
|||||||
//
|
//
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
|
// 輝度取得で呼ぶSYSM_ReadMcuRegisterAsyncのコールバック
|
||||||
|
static OSThreadQueue s_callback_queue;
|
||||||
|
static SYSMMcuResult s_callback_result;
|
||||||
|
static void BackLightBlightnessCallBack( SYSMMcuResult result, void *arg )
|
||||||
|
{
|
||||||
|
#pragma unused(arg)
|
||||||
|
s_callback_result = result;
|
||||||
|
OS_WakeupThread( &s_callback_queue );
|
||||||
|
}
|
||||||
|
|
||||||
|
// バックライト輝度取得
|
||||||
|
u8 SYSM_GetBackLightBlightness( void )
|
||||||
|
{
|
||||||
|
u8 brightness;
|
||||||
|
#ifdef SDK_SUPPORT_PMIC_2
|
||||||
|
if ( SYSMi_GetMcuVersion() <= 1 )
|
||||||
|
{
|
||||||
|
// X2以前
|
||||||
|
brightness = (u8)LCFG_TSD_GetBacklightBrightness();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif // SDK_SUPPORT_PMIC_2
|
||||||
|
{
|
||||||
|
// X3以降
|
||||||
|
while( 1 )
|
||||||
|
{
|
||||||
|
// BUSYだと失敗するので成功するまでトライ
|
||||||
|
if ( MCU_RESULT_SUCCESS == SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, BackLightBlightnessCallBack, NULL ) )
|
||||||
|
{
|
||||||
|
OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return brightness;
|
||||||
|
}
|
||||||
|
|
||||||
// バックライト輝度調整
|
// バックライト輝度調整
|
||||||
void SYSM_SetBackLightBrightness( u8 brightness )
|
void SYSM_SetBackLightBrightness( u8 brightness )
|
||||||
{
|
{
|
||||||
@ -52,23 +90,31 @@ void SYSM_SetBackLightBrightness( u8 brightness )
|
|||||||
if ( SYSMi_GetMcuVersion() <= 1 )
|
if ( SYSMi_GetMcuVersion() <= 1 )
|
||||||
{
|
{
|
||||||
( void )PMi_WriteRegister( REG_PMIC_BL_BRT_B_ADDR, (u8)(brightness * 2) );
|
( void )PMi_WriteRegister( REG_PMIC_BL_BRT_B_ADDR, (u8)(brightness * 2) );
|
||||||
|
|
||||||
|
// X2以前のボードのみLCFGに値を保存
|
||||||
|
LCFG_TSD_SetBacklightBrightness( brightness );
|
||||||
|
{
|
||||||
|
u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP );
|
||||||
|
if( pBuffer != NULL ) {
|
||||||
|
LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
|
||||||
|
SYSM_Free( pBuffer );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif // SDK_SUPPORT_PMIC_2
|
#endif // SDK_SUPPORT_PMIC_2
|
||||||
{
|
{
|
||||||
( void )SYSM_WriteMcuRegisterAsync( MCU_REG_BL_ADDR, brightness, NULL, NULL );
|
// X3以降はマイコンに保存するだけ
|
||||||
}
|
while( 1 )
|
||||||
|
{
|
||||||
LCFG_TSD_SetBacklightBrightness( brightness );
|
// BUSYだと失敗するので成功するまでトライ
|
||||||
|
if ( MCU_RESULT_SUCCESS == SYSM_WriteMcuRegisterAsync( MCU_REG_BL_ADDR, brightness, NULL, NULL ) )
|
||||||
// [TODO:] バックライト輝度は毎回セーブせずに、アプリ起動やリセット、電源OFF時に値が変わっていたらセーブするようにする。
|
{
|
||||||
{
|
break;
|
||||||
u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP );
|
}
|
||||||
if( pBuffer != NULL ) {
|
|
||||||
LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
|
|
||||||
SYSM_Free( pBuffer );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -177,7 +177,11 @@ TitleProperty *SYSM_ReadParameters( void )
|
|||||||
SYSMi_GetWork()->flags.common.isFatalError = TRUE;
|
SYSMi_GetWork()->flags.common.isFatalError = TRUE;
|
||||||
}else if( LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ) ) { // NANDからTWL本体設定データをリード
|
}else if( LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ) ) { // NANDからTWL本体設定データをリード
|
||||||
SYSM_CaribrateTP(); // 読み出したTWL本体設定データをもとにTPキャリブレーション。
|
SYSM_CaribrateTP(); // 読み出したTWL本体設定データをもとにTPキャリブレーション。
|
||||||
brightness = (u8)LCFG_TSD_GetBacklightBrightness();
|
if ( SYSMi_GetMcuVersion() <= 1 )
|
||||||
|
{
|
||||||
|
// X2ボード以前だけ輝度読み込み
|
||||||
|
brightness = (u8)LCFG_TSD_GetBacklightBrightness();
|
||||||
|
}
|
||||||
}else {
|
}else {
|
||||||
SYSMi_GetWork()->flags.common.isInitialSettings = TRUE; // リード失敗なら初回起動シーケンスへ
|
SYSMi_GetWork()->flags.common.isInitialSettings = TRUE; // リード失敗なら初回起動シーケンスへ
|
||||||
}
|
}
|
||||||
|
|||||||
@ -125,11 +125,6 @@ static BannerCounter banner_counter[LAUNCHER_TITLE_LIST_NUM];
|
|||||||
// ランチャー
|
// ランチャー
|
||||||
//======================================================
|
//======================================================
|
||||||
|
|
||||||
// バナー表示関係(暫定)
|
|
||||||
#define DBGBNR
|
|
||||||
#ifdef DBGBNR
|
|
||||||
|
|
||||||
|
|
||||||
static void LoadBannerFiles( void )
|
static void LoadBannerFiles( void )
|
||||||
{
|
{
|
||||||
// デフォルトバナーファイルの読み込み。最終的にリブートしてしまうので、解放処理は無し
|
// デフォルトバナーファイルの読み込み。最終的にリブートしてしまうので、解放処理は無し
|
||||||
@ -369,9 +364,6 @@ static void BannerDraw(int selected, TitleProperty *titleprop)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //DBGBNR
|
|
||||||
|
|
||||||
|
|
||||||
// ランチャーの初期化
|
// ランチャーの初期化
|
||||||
void LauncherInit( TitleProperty *pTitleList )
|
void LauncherInit( TitleProperty *pTitleList )
|
||||||
{
|
{
|
||||||
@ -415,56 +407,7 @@ void LauncherInit( TitleProperty *pTitleList )
|
|||||||
//FS_InitFile(&strm.file);
|
//FS_InitFile(&strm.file);
|
||||||
//strm.isPlay = FALSE;
|
//strm.isPlay = FALSE;
|
||||||
|
|
||||||
#ifdef DBGBNR
|
|
||||||
BannerInit();
|
BannerInit();
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// 輝度表示ポーリングで呼んだSYSM_ReadMcuRegisterAsyncのコールバック
|
|
||||||
static OSThreadQueue s_callback_queue;
|
|
||||||
static SYSMMcuResult s_callback_result;
|
|
||||||
static void PollBackLightBlightnessCallBack( SYSMMcuResult result, void *arg )
|
|
||||||
{
|
|
||||||
s_callback_result = result;
|
|
||||||
OS_WakeupThread( &s_callback_queue );
|
|
||||||
}
|
|
||||||
|
|
||||||
// 輝度表示ポーリング
|
|
||||||
// X3基盤から、Select+音量で輝度変更できるようになったため、輝度スイッチ表示切り替えタイミングを変更
|
|
||||||
// 変化があれば輝度スイッチ表示を切り替えるように
|
|
||||||
static void PollBackLightBrightness( void )
|
|
||||||
{
|
|
||||||
static int old_brightness = -1;
|
|
||||||
#ifdef SDK_SUPPORT_PMIC_2
|
|
||||||
if ( SYSMi_GetMcuVersion() <= 1 )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif // SDK_SUPPORT_PMIC_2
|
|
||||||
{
|
|
||||||
u8 brightness;
|
|
||||||
( void )SYSM_ReadMcuRegisterAsync( MCU_REG_BL_ADDR, &brightness, PollBackLightBlightnessCallBack, NULL );
|
|
||||||
OS_SleepThread( &s_callback_queue ); // 値が返ってくるまでスリープ
|
|
||||||
if( s_callback_result==MCU_RESULT_SUCCESS && LCFG_TSD_GetBacklightBrightness() != brightness )
|
|
||||||
{
|
|
||||||
// マイコンから取ってきた輝度とLCFGの設定値がズレていたらLCFGの値を設定しなおし
|
|
||||||
LCFG_TSD_SetBacklightBrightness( brightness );
|
|
||||||
{
|
|
||||||
u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP );
|
|
||||||
if( pBuffer != NULL ) {
|
|
||||||
LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer );
|
|
||||||
SYSM_Free( pBuffer );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 1フレーム前の古い値とLCFGの値が違っていたら描画しなおし
|
|
||||||
if( old_brightness != LCFG_TSD_GetBacklightBrightness() )
|
|
||||||
{
|
|
||||||
old_brightness = LCFG_TSD_GetBacklightBrightness();
|
|
||||||
DrawBackLightSwitch();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ROMのローディング中のランチャーフェードアウト
|
// ROMのローディング中のランチャーフェードアウト
|
||||||
@ -473,16 +416,13 @@ BOOL LauncherFadeout( TitleProperty *pTitleList )
|
|||||||
static int fadecount = 0;
|
static int fadecount = 0;
|
||||||
|
|
||||||
// 描画関係
|
// 描画関係
|
||||||
|
|
||||||
// 輝度表示
|
// 輝度表示
|
||||||
|
DrawBackLightSwitch();
|
||||||
PollBackLightBrightness();
|
|
||||||
|
|
||||||
DrawScrollBar( pTitleList );
|
DrawScrollBar( pTitleList );
|
||||||
|
|
||||||
#ifdef DBGBNR
|
|
||||||
BannerDraw( selected, pTitleList );
|
BannerDraw( selected, pTitleList );
|
||||||
#endif
|
|
||||||
|
|
||||||
// 描画少し追加
|
// 描画少し追加
|
||||||
{
|
{
|
||||||
@ -575,14 +515,14 @@ static void ProcessBackLightPads( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( (pad.trg & PAD_KEY_UP) || up_bl_trg ) {
|
if( (pad.trg & PAD_KEY_UP) || up_bl_trg ) {
|
||||||
brightness = LCFG_TSD_GetBacklightBrightness() + 1;
|
brightness = SYSM_GetBackLightBlightness() + 1;
|
||||||
if( brightness > LCFG_TWL_BACKLIGHT_LEVEL_MAX ) {
|
if( brightness > LCFG_TWL_BACKLIGHT_LEVEL_MAX ) {
|
||||||
brightness = LCFG_TWL_BACKLIGHT_LEVEL_MAX;
|
brightness = LCFG_TWL_BACKLIGHT_LEVEL_MAX;
|
||||||
}
|
}
|
||||||
SYSM_SetBackLightBrightness( (u8)brightness );
|
SYSM_SetBackLightBrightness( (u8)brightness );
|
||||||
}
|
}
|
||||||
if( ( pad.trg & PAD_KEY_DOWN) || dw_bl_trg ) {
|
if( ( pad.trg & PAD_KEY_DOWN) || dw_bl_trg ) {
|
||||||
brightness = LCFG_TSD_GetBacklightBrightness() - 1;
|
brightness = SYSM_GetBackLightBlightness() - 1;
|
||||||
if( brightness < 0 ) {
|
if( brightness < 0 ) {
|
||||||
brightness = 0;
|
brightness = 0;
|
||||||
}
|
}
|
||||||
@ -800,13 +740,11 @@ typedef struct NandFirmResetParameter {
|
|||||||
MoveByScrollBar();
|
MoveByScrollBar();
|
||||||
|
|
||||||
// 描画関係
|
// 描画関係
|
||||||
PollBackLightBrightness();
|
DrawBackLightSwitch();
|
||||||
|
|
||||||
DrawScrollBar( pTitleList );
|
DrawScrollBar( pTitleList );
|
||||||
|
|
||||||
#ifdef DBGBNR
|
|
||||||
BannerDraw( selected, pTitleList );
|
BannerDraw( selected, pTitleList );
|
||||||
#endif
|
|
||||||
|
|
||||||
// RTC情報の取得&表示
|
// RTC情報の取得&表示
|
||||||
GetAndDrawRTCData( &g_rtcDraw, FALSE );
|
GetAndDrawRTCData( &g_rtcDraw, FALSE );
|
||||||
@ -817,9 +755,20 @@ typedef struct NandFirmResetParameter {
|
|||||||
// バックライトスイッチの表示
|
// バックライトスイッチの表示
|
||||||
static void DrawBackLightSwitch(void)
|
static void DrawBackLightSwitch(void)
|
||||||
{
|
{
|
||||||
NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_NULL, B_LIGHT_DW_BUTTON_TOP_X + 24, B_LIGHT_DW_BUTTON_TOP_Y, 40, 13 );
|
static int old_brightness = -1;
|
||||||
PutStringUTF16( B_LIGHT_DW_BUTTON_TOP_X, B_LIGHT_DW_BUTTON_TOP_Y, TXT_COLOR_RED,
|
u8 brightness;
|
||||||
L"\xE01c \xE01b" );
|
|
||||||
PrintfSJIS( B_LIGHT_DW_BUTTON_TOP_X + 11, B_LIGHT_DW_BUTTON_TOP_Y, TXT_COLOR_RED,
|
brightness = SYSM_GetBackLightBlightness();
|
||||||
"BL:%2d\n", LCFG_TSD_GetBacklightBrightness() );
|
|
||||||
|
// 1フレーム前の古い値と輝度値が違っていたら描画しなおし
|
||||||
|
if( old_brightness != brightness )
|
||||||
|
{
|
||||||
|
old_brightness = brightness;
|
||||||
|
|
||||||
|
NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_NULL, B_LIGHT_DW_BUTTON_TOP_X + 24, B_LIGHT_DW_BUTTON_TOP_Y, 40, 13 );
|
||||||
|
PutStringUTF16( B_LIGHT_DW_BUTTON_TOP_X, B_LIGHT_DW_BUTTON_TOP_Y, TXT_COLOR_RED,
|
||||||
|
L"\xE01c \xE01b" );
|
||||||
|
PrintfSJIS( B_LIGHT_DW_BUTTON_TOP_X + 11, B_LIGHT_DW_BUTTON_TOP_Y, TXT_COLOR_RED,
|
||||||
|
"BL:%2d\n", brightness );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,6 +105,7 @@ extern AuthResult SYSM_TryToBootTitle( TitleProperty *pBootTitle ); //
|
|||||||
// デバイス制御
|
// デバイス制御
|
||||||
extern void SYSM_CaribrateTP( void ); // タッチパネルキャリブレーション
|
extern void SYSM_CaribrateTP( void ); // タッチパネルキャリブレーション
|
||||||
extern void SYSM_SetBackLightBrightness( u8 brightness ); // バックライトを制御(本体設定データへの値セーブも行う)
|
extern void SYSM_SetBackLightBrightness( u8 brightness ); // バックライトを制御(本体設定データへの値セーブも行う)
|
||||||
|
extern u8 SYSM_GetBackLightBlightness( void ); // バックライト輝度を取得(X2以前とX3以降で挙動に違い)
|
||||||
|
|
||||||
// Nintendoロゴ制御
|
// Nintendoロゴ制御
|
||||||
extern BOOL SYSM_CheckNintendoLogo( u16 *pLogoData ); // Nintendoロゴデータのチェック
|
extern BOOL SYSM_CheckNintendoLogo( u16 *pLogoData ); // Nintendoロゴデータのチェック
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user