From 15cf158bd478b1ad6ad5b92a4988aa0d70aef4f1 Mon Sep 17 00:00:00 2001 From: nakasima Date: Thu, 6 Mar 2008 02:11:53 +0000 Subject: [PATCH] =?UTF-8?q?NandInitializer=E3=81=AEARM7=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=8D=E3=83=B3=E3=83=88=E3=81=B8initScfg.?= =?UTF-8?q?c=E8=BF=BD=E5=8A=A0=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@831 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../NandInitializer/ARM7.TWL/Makefile | 6 +- .../NandInitializer/ARM7.TWL/main.lsf | 1 + .../NandInitializer/ARM7.TWL/src/initScfg.c | 111 ++++++++++++++++++ 3 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 build/systemMenu_RED/NandInitializer/ARM7.TWL/src/initScfg.c diff --git a/build/systemMenu_RED/NandInitializer/ARM7.TWL/Makefile b/build/systemMenu_RED/NandInitializer/ARM7.TWL/Makefile index a5fa3654..c74c5046 100644 --- a/build/systemMenu_RED/NandInitializer/ARM7.TWL/Makefile +++ b/build/systemMenu_RED/NandInitializer/ARM7.TWL/Makefile @@ -31,7 +31,11 @@ LCFILE_SPEC = main.lsf LCFILE_TEMPLATE = racoon.lcf.template LDRES_TEMPLATE = racoon.response.template -SRCS = main.c kami_pxi.c formatter.c nvram_misc.c +SRCS = main.c \ + kami_pxi.c \ + formatter.c \ + nvram_misc.c \ + initScfg.c \ LINCLUDES = ../common/include $(ROOT)/build/libraries/spi/ARM7/include diff --git a/build/systemMenu_RED/NandInitializer/ARM7.TWL/main.lsf b/build/systemMenu_RED/NandInitializer/ARM7.TWL/main.lsf index e0f1e72f..b5665902 100644 --- a/build/systemMenu_RED/NandInitializer/ARM7.TWL/main.lsf +++ b/build/systemMenu_RED/NandInitializer/ARM7.TWL/main.lsf @@ -22,6 +22,7 @@ Static $(TARGET_NAME) { Address 0x02380000 Library crt0.LTD.TWL.o + Object $(OBJDIR)/initScfg.o StackSize 1024 1024 } diff --git a/build/systemMenu_RED/NandInitializer/ARM7.TWL/src/initScfg.c b/build/systemMenu_RED/NandInitializer/ARM7.TWL/src/initScfg.c new file mode 100644 index 00000000..a48e13ff --- /dev/null +++ b/build/systemMenu_RED/NandInitializer/ARM7.TWL/src/initScfg.c @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------* + Project: TwlSDK - components - mongoose.TWL + File: initScfg.c + + 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:: 2008-03-03#$ + $Rev: 4466 $ + $Author: terui $ + *---------------------------------------------------------------------------*/ + +#include +#include + +extern void INIT_InitializeScfg(void); + +#include +/*---------------------------------------------------------------------------* + Name: INIT_InitializeScfg + + Description: ローダーが行う SCFG ブロックへの設定処理を代行する為の関数。 + crt0 内の弱シンボルを上書きする。 + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +asm void +INIT_InitializeScfg(void) +{ + // SCFG enable? + ldr r2, =REG_EXT_ADDR + ldr r0, [r2] + tst r0, #REG_SCFG_EXT_CFG_MASK + beq @end + + /* NITRO 互換無線の送受信機能を動作 */ + ldr r1, =REG_WL_ADDR + ldrh r0, [r1] + orr r0, r0, #REG_SCFG_WL_OFFB_MASK + strh r0, [r1] + + /* 新規サウンドブロックへのクロック供給 */ + ldr r1, =REG_CLK_ADDR + ldrh r0, [r1] + orr r0, r0, #REG_SCFG_CLK_SNDMCLK_MASK + strh r0, [r1] + + /* ARM7 側の DMA には新 DMA 回路を採用し、サウンドにも新 DMA 回路を利用 */ + ldr r1, =REG_EXT_ADDR + ldr r0, [r1] + orr r0, r0, #REG_SCFG_EXT_DMAC_MASK + orr r0, r0, #REG_SCFG_EXT_DSEL_MASK + str r0, [r1] + + ldr r2, =HW_PRV_WRAM_SYSRV + //EXT(extentions) + ldr r3, =REG_EXT_ADDR + ldr r0, [r3] + str r0, [r2, #HWi_WSYS04_WRAMOFFSET] + //OPT(bonding option) + ldr r3, =REG_OP_ADDR + ldrb r0, [r3] + //A9ROM(ARM9 ROM) + ldr r3, =REG_A9ROM_ADDR + ldrb r1, [r3] + and r12,r1, #(REG_SCFG_A9ROM_RSEL_MASK | REG_SCFG_A9ROM_SEC_MASK) + orr r0, r0, r12, LSL #(HWi_WSYS08_ROM_ARM9RSEL_SHIFT - REG_SCFG_A9ROM_RSEL_SHIFT) + //A7ROM(ARM7 ROM) + ldr r3, =REG_A7ROM_ADDR + ldrb r1, [r3] + and r12,r1, #(REG_SCFG_A7ROM_RSEL_MASK | REG_SCFG_A7ROM_FUSE_MASK) + orr r0, r0, r12, LSL #(HWi_WSYS08_ROM_ARM7RSEL_SHIFT - REG_SCFG_A7ROM_RSEL_SHIFT) + //DS-WL(DS wireless) + ldr r3, =REG_WL_ADDR + ldrb r1, [r3] + and r12,r1, #REG_SCFG_WL_OFFB_MASK + orr r0, r0, r12, LSL #(HWi_WSYS08_WL_OFFB_SHIFT - REG_SCFG_WL_OFFB_SHIFT) + strb r0, [r2, #HWi_WSYS08_WRAMOFFSET] + //OPT(JTAG info) + ldr r3, =REG_JTAG_ADDR + ldrh r0, [r3] + and r12,r0, #REG_SCFG_JTAG_DSPJE_MASK + orr r0, r0, r12, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT) + //CLK(only wram clock) + ldr r3, =REG_CLK_ADDR + ldrh r1, [r3] + and r12,r1, #(REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK) + orr r0, r0, r12, LSL #(HWi_WSYS09_CLK_SD1HCLK_SHIFT - REG_SCFG_CLK_SD1HCLK_SHIFT) + and r12,r1, #(REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK) + orr r0, r0, r12, LSR #(REG_SCFG_CLK_WRAMHCLK_SHIFT - HWi_WSYS09_CLK_WRAMHCLK_SHIFT) + strb r0, [r2, #HWi_WSYS09_WRAMOFFSET] + +#if 0 + /* A7-SCFG ブロックへのアクセスを無効化 */ + ldr r1, =REG_EXT_ADDR + ldr r0, [r1] + bic r0, r0, #REG_SCFG_EXT_CFG_MASK + str r0, [r1] +#endif + +@end: + bx lr +} +#include