--- zzzz-none-000/linux-2.6.19.2/arch/arm/kernel/head.S 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/arch/arm/kernel/head.S 2008-01-14 15:31:55.000000000 +0000 @@ -79,6 +79,10 @@ bl __lookup_machine_type @ r5=machinfo movs r8, r5 @ invalid machine (r5=0)? beq __error_a @ yes, error 'a' +#if defined(CONFIG_ARCH_DAVINCI) + bl davinci_disable_dsp + nop +#endif bl __create_page_tables /* @@ -312,6 +316,62 @@ #endif #endif mov pc, lr + +#if defined(CONFIG_ARCH_DAVINCI) + + /*------------------------------------------------------------------------------------------*\ + * set GEM into reset before the kernel starts and resets the mmu + * the GEM could corrupt the kernelmemory!!! + \*------------------------------------------------------------------------------------------*/ + +#define PTCMD_OFF 0x120 +#define PTSTAT_OFF 0x128 +#define MDSTAT_BASE_OFF 0x800 +#define MDCTL_BASE_OFF 0xA00 +davinci_disable_dsp: + + /*------------------------------------------------------------------------------------------*\ + * Put the GEM in reset + \*------------------------------------------------------------------------------------------*/ + LDR R6, PSC_ADDR /*--- 0x01C41120 ---*/ + + LDR R8, PSC_GEM_FLAG_CLEAR + LDR R7, [R6,#(MDCTL_BASE_OFF+0x9C)] + AND R7, R7, R8 + STR R7, [R6,#(MDCTL_BASE_OFF+0x9C)] + + /*------------------------------------------------------------------------------------------*\ + * Enable the Power Domain Transition Command + \*------------------------------------------------------------------------------------------*/ + LDR R7, [R6,#PTCMD_OFF] + ORR R7, R7, #0x2 + STR R7, [R6,#PTCMD_OFF] + + /*------------------------------------------------------------------------------------------*\ + * Check for Transition Complete(PTSTAT) + \*------------------------------------------------------------------------------------------*/ +checkStatClkStopGem: + LDR R7, [R6,#PTSTAT_OFF] /*--- 0x01C41128 ---*/ + AND R7, R7, #0x2 + CMP R7, #0x0 + BNE checkStatClkStopGem + + /*------------------------------------------------------------------------------------------*\ + * Check for GEM Reset Completion + \*------------------------------------------------------------------------------------------*/ +checkGemStatClkStop: + LDR R7, [R6,#(MDSTAT_BASE_OFF+0x9C)] + AND R7, R7, #0x100 + CMP R7, #0x0 + BNE checkGemStatClkStop + + mov pc, lr + + .ltorg +PSC_ADDR: .word 0x01C41000 +PSC_GEM_FLAG_CLEAR: .word 0xFFFFFEFF +#endif + .ltorg #include "head-common.S"