From 72aa2161eef1b47dd7c0cecc21577720f1a30442 Mon Sep 17 00:00:00 2001 From: yutaka Date: Tue, 26 Feb 2008 06:11:19 +0000 Subject: [PATCH] =?UTF-8?q?SDK=5FTS=5FVERSION=20>=3D=20300=E3=81=AE?= =?UTF-8?q?=E6=99=82=E3=81=AFMCU=E4=BA=92=E6=8F=9B=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E3=82=92=E5=A4=96=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F?= 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@743 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/gcdfirm/sdmc-launcher/ARM7/main.c | 37 +++++++++++++++------ build/nandfirm/menu-launcher/ARM7/main.c | 39 ++++++++++++++++------- build/nandfirm/menu-launcher2/ARM7/main.c | 39 ++++++++++++++++------- build/nandfirm/sdmc-launcher/ARM7/main.c | 37 +++++++++++++++------ 4 files changed, 112 insertions(+), 40 deletions(-) diff --git a/build/gcdfirm/sdmc-launcher/ARM7/main.c b/build/gcdfirm/sdmc-launcher/ARM7/main.c index 58f665d9..f377d966 100644 --- a/build/gcdfirm/sdmc-launcher/ARM7/main.c +++ b/build/gcdfirm/sdmc-launcher/ARM7/main.c @@ -86,6 +86,15 @@ static void CreateIdleThread(void) OS_WakeupThreadDirect(&idleThread); } +// MCU旧バージョン対策 +#if SDK_TS_VERSION <= 200 +static u8 version = 0; +#define IS_OLD_MCU (version ? (version < 0x20) : ((version=MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR )) < 0x20)) +#else +#define IS_OLD_MCU FALSE +#define MCU_OLD_REG_TEMP_ADDR MCU_REG_TEMP_ADDR // avoid compiler error +#endif + /*************************************************************** PreInit @@ -97,13 +106,16 @@ static void PreInit(void) /* バッテリー残量チェック */ - if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + if ( !IS_OLD_MCU ) // MCU旧バージョン対策 { + if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + { #ifndef SDK_FINALROM - OS_TPanic("Battery is empty.\n"); + OS_TPanic("Battery is empty.\n"); #else - PM_Shutdown(); + PM_Shutdown(); #endif + } } /* FromBrom関連 @@ -116,10 +128,14 @@ static void PreInit(void) リセットパラメータ(1バイト)を共有領域(1バイト)にコピー */ #define HOTSTART_FLAG_ENABLE 0x80 - if ( MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR ) >= 0x20 ) // MCU旧バージョン対策 - *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + if ( IS_OLD_MCU ) // MCU旧バージョン対策 + { + *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_OLD_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + } else - *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_OLD_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + { + *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + } } /*************************************************************** @@ -138,13 +154,16 @@ static void PostInit(void) /* バッテリー残量チェック */ - if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + if ( !IS_OLD_MCU ) // MCU旧バージョン対策 { + if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + { #ifndef SDK_FINALROM - OS_TPanic("Battery is empty.\n"); + OS_TPanic("Battery is empty.\n"); #else - PM_Shutdown(); + PM_Shutdown(); #endif + } } } diff --git a/build/nandfirm/menu-launcher/ARM7/main.c b/build/nandfirm/menu-launcher/ARM7/main.c index 2e317776..b2d70b58 100644 --- a/build/nandfirm/menu-launcher/ARM7/main.c +++ b/build/nandfirm/menu-launcher/ARM7/main.c @@ -86,6 +86,15 @@ static void CreateIdleThread(void) OS_WakeupThreadDirect(&idleThread); } +// MCU旧バージョン対策 +#if SDK_TS_VERSION <= 200 +static u8 version = 0; +#define IS_OLD_MCU (version ? (version < 0x20) : ((version=MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR )) < 0x20)) +#else +#define IS_OLD_MCU FALSE +#define MCU_OLD_REG_TEMP_ADDR MCU_REG_TEMP_ADDR // avoid compiler error +#endif + /*************************************************************** PreInit @@ -97,14 +106,16 @@ static void PreInit(void) /* バッテリー残量チェック */ - if ( MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR ) >= 0x20 ) // MCU旧バージョン対策 - if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + if ( !IS_OLD_MCU ) // MCU旧バージョン対策 { + if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + { #ifndef SDK_FINALROM - OS_TPanic("Battery is empty.\n"); + OS_TPanic("Battery is empty.\n"); #else - PM_Shutdown(); + PM_Shutdown(); #endif + } } /* FromBrom関連 @@ -117,10 +128,14 @@ static void PreInit(void) リセットパラメータ(1バイト)を共有領域(1バイト)にコピー */ #define HOTSTART_FLAG_ENABLE 0x80 - if ( MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR ) >= 0x20 ) // MCU旧バージョン対策 - *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + if ( IS_OLD_MCU ) // MCU旧バージョン対策 + { + *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_OLD_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + } else - *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_OLD_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + { + *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + } } /*************************************************************** @@ -139,14 +154,16 @@ static void PostInit(void) /* バッテリー残量チェック */ - if ( MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR ) >= 0x20 ) // MCU旧バージョン対策 - if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + if ( !IS_OLD_MCU ) // MCU旧バージョン対策 { + if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + { #ifndef SDK_FINALROM - OS_TPanic("Battery is empty.\n"); + OS_TPanic("Battery is empty.\n"); #else - PM_Shutdown(); + PM_Shutdown(); #endif + } } } diff --git a/build/nandfirm/menu-launcher2/ARM7/main.c b/build/nandfirm/menu-launcher2/ARM7/main.c index 6c06db65..b09b5b57 100644 --- a/build/nandfirm/menu-launcher2/ARM7/main.c +++ b/build/nandfirm/menu-launcher2/ARM7/main.c @@ -87,6 +87,15 @@ static void CreateIdleThread(void) OS_WakeupThreadDirect(&idleThread); } +// MCU旧バージョン対策 +#if SDK_TS_VERSION <= 200 +static u8 version = 0; +#define IS_OLD_MCU (version ? (version < 0x20) : ((version=MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR )) < 0x20)) +#else +#define IS_OLD_MCU FALSE +#define MCU_OLD_REG_TEMP_ADDR MCU_REG_TEMP_ADDR // avoid compiler error +#endif + /*************************************************************** PreInit @@ -98,14 +107,16 @@ static void PreInit(void) /* バッテリー残量チェック */ - if ( MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR ) >= 0x20 ) // MCU旧バージョン対策 - if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + if ( !IS_OLD_MCU ) // MCU旧バージョン対策 { + if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + { #ifndef SDK_FINALROM - OS_TPanic("Battery is empty.\n"); + OS_TPanic("Battery is empty.\n"); #else - PM_Shutdown(); + PM_Shutdown(); #endif + } } /* FromBrom関連 @@ -118,10 +129,14 @@ static void PreInit(void) リセットパラメータ(1バイト)を共有領域(1バイト)にコピー */ #define HOTSTART_FLAG_ENABLE 0x80 - if ( MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR ) >= 0x20 ) // MCU旧バージョン対策 - *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + if ( IS_OLD_MCU ) // MCU旧バージョン対策 + { + *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_OLD_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + } else - *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_OLD_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + { + *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + } } /*************************************************************** @@ -140,14 +155,16 @@ static void PostInit(void) /* バッテリー残量チェック */ - if ( MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR ) >= 0x20 ) // MCU旧バージョン対策 - if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + if ( !IS_OLD_MCU ) // MCU旧バージョン対策 { + if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + { #ifndef SDK_FINALROM - OS_TPanic("Battery is empty.\n"); + OS_TPanic("Battery is empty.\n"); #else - PM_Shutdown(); + PM_Shutdown(); #endif + } } } diff --git a/build/nandfirm/sdmc-launcher/ARM7/main.c b/build/nandfirm/sdmc-launcher/ARM7/main.c index efddd5b1..46649285 100644 --- a/build/nandfirm/sdmc-launcher/ARM7/main.c +++ b/build/nandfirm/sdmc-launcher/ARM7/main.c @@ -86,6 +86,15 @@ static void CreateIdleThread(void) OS_WakeupThreadDirect(&idleThread); } +// MCU旧バージョン対策 +#if SDK_TS_VERSION <= 200 +static u8 version = 0; +#define IS_OLD_MCU (version ? (version < 0x20) : ((version=MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR )) < 0x20)) +#else +#define IS_OLD_MCU FALSE +#define MCU_OLD_REG_TEMP_ADDR MCU_REG_TEMP_ADDR // avoid compiler error +#endif + /*************************************************************** PreInit @@ -97,13 +106,16 @@ static void PreInit(void) /* バッテリー残量チェック */ - if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + if ( !IS_OLD_MCU ) // MCU旧バージョン対策 { + if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + { #ifndef SDK_FINALROM - OS_TPanic("Battery is empty.\n"); + OS_TPanic("Battery is empty.\n"); #else - PM_Shutdown(); + PM_Shutdown(); #endif + } } /* FromBrom関連 @@ -116,10 +128,14 @@ static void PreInit(void) リセットパラメータ(1バイト)を共有領域(1バイト)にコピー */ #define HOTSTART_FLAG_ENABLE 0x80 - if ( MCUi_ReadRegister( MCU_REG_VER_INFO_ADDR ) >= 0x20 ) // MCU旧バージョン対策 - *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + if ( IS_OLD_MCU ) // MCU旧バージョン対策 + { + *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_OLD_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + } else - *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_OLD_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + { + *(u8 *)HW_NAND_FIRM_HOTSTART_FLAG = (u8)(MCUi_ReadRegister( (u16)(MCU_REG_TEMP_ADDR + OS_MCU_RESET_VALUE_OFS) ) | HOTSTART_FLAG_ENABLE); + } } /*************************************************************** @@ -138,13 +154,16 @@ static void PostInit(void) /* バッテリー残量チェック */ - if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + if ( !IS_OLD_MCU ) // MCU旧バージョン対策 { + if ( (MCUi_ReadRegister( MCU_REG_POWER_INFO_ADDR ) & MCU_REG_POWER_INFO_LEVEL_MASK) == 0 ) + { #ifndef SDK_FINALROM - OS_TPanic("Battery is empty.\n"); + OS_TPanic("Battery is empty.\n"); #else - PM_Shutdown(); + PM_Shutdown(); #endif + } } }