Hi Ari, The watchdog timer code is in arch/arm/mach-davinci/time.c of the LSP. Loof for the function davinci_watchdog_reset().
The silicon bug workaround has to be done much sooner than where you put it as below, like in platform.s of u-boot. If you are using a different bootloader then it has to be at a similar place for this to work. Sorry I was replying the email while having a flu and couldn't be more specific. Best regards, Loc -----Original Message----- From: taruna54 taruna54 [mailto:[EMAIL PROTECTED] Sent: Tuesday, November 07, 2006 7:38 AM To: [EMAIL PROTECTED]; [email protected] Cc: Truong, Loc Subject: RE: Resetting/restarting davinci It doesn't work as well.. and then I see davinci_wdt structure already defined with volatile keyword. Regards, Ari >From: "Paul Bartholomew" <[EMAIL PROTECTED]> >To: "'taruna54 taruna54'" ><[EMAIL PROTECTED]>,<[email protected]> >CC: <[EMAIL PROTECTED]> >Subject: RE: Resetting/restarting davinci >Date: Tue, 7 Nov 2006 08:20:36 -0500 > >Try using 'volatile' in your "davinci_wdt" declaration: > > volatile davinci_timer_reg *davinci_wdt = (volatile >davinci_timer_reg *) >WDT_BASE_ADDR; > >Without that, the compiler may change this: > > davinci_wdt->wdtcr = 0xA5C64000; > davinci_wdt->wdtcr = 0xDA7E4000; > >To this: > > davinci_wdt->wdtcr = 0xDA7E4000; > > >- Paul > >-----Original Message----- >From: [EMAIL PROTECTED] >[mailto:[EMAIL PROTECTED] On Behalf >Of >taruna54 taruna54 >Sent: Tuesday, November 07, 2006 8:10 AM >To: [email protected] >Cc: [EMAIL PROTECTED] >Subject: RE:Resetting/restarting davinci > > >Hi Loc, > >I just downloaded the lattest u-boot binary and source from dvevmupdates. >Using u-boot-594-nand.bin, I do reset in u-boot prompt and then it goes: > >ARM Clock :- 283MHz >DDR Clock :- 189MHz >Hit any key to stop autoboot: 0 >DaVinci EVM # >ÀaVinci EVM # reset >Booting PSP Boot Loader > >And it just hange there. Then I compiled u-boot from the lattest source >(u-boot-upgrade.tar, and make it work in nand mode).. it also gave the same >response.. Then I modified the file board/davinci/timer.c based on your >recomendation.. on reset_processor() function.. > >void reset_processor(void) >{ > davinci_timer_reg *davinci_wdt = (davinci_timer_reg *) >WDT_BASE_ADDR; > davinci_wdt->tgcr = 0x00000008; > davinci_wdt->tgcr |= 0x00000003; > davinci_wdt->tim12 = 0x00000000; > davinci_wdt->tim34 = 0x00000000; > davinci_wdt->prd12 = 0x00000000; > davinci_wdt->prd34 = 0x00000000; > davinci_wdt->tcr |= 0x00000040; > davinci_wdt->wdtcr |= 0x00004000; > > *(volatile unsigned int *)(0x01c41a20) = 0x00000000; // the >silicon bug workaround > > davinci_wdt->wdtcr = 0xA5C64000; > davinci_wdt->wdtcr = 0xDA7E4000; >} > >But still it's not working well. Is my register clear line already in the >correct place? > >Regards, >Ari > > > >From: "Truong, Loc" <[EMAIL PROTECTED]> > >To: <[email protected]> > >Subject: RE:Resetting/restarting davinci > >Date: Mon, 6 Nov 2006 11:01:24 -0600 > > > > > >There's a silicon bug that requires the register at 0x01c41a20 needs to > >be cleared first thing. This code is already in the u-boot that we > >supplied. Check the latest version at www.ti.com/dvevmupdates. Regards, > >Loc > > > >-------------------------------------------------------- > >Message: 1 > >Date: Mon, 06 Nov 2006 17:23:02 +0800 > >From: "taruna54 taruna54" <[EMAIL PROTECTED]> > >Subject: Resetting/restarting davinci > >To: [email protected] > >Message-ID: <[EMAIL PROTECTED]> > >Content-Type: text/plain; format=flowed > > > >Dear all, > > > >I have problem on implementing software reset on Davinci. > >I made modification to my boot loader to implement reset.. basically > >using watch dog timer.. So, I use this code: > > > >do_reset() > >{ > > disable_interrupts (); > > > > // watchdog timer enabling sequence > > wdt_timer->tgcr = 0xB; // timmode = 2h, tim12rs = 1h, > >tim34rs > >= 1h > > wdt_timer->wdtcr = 0xA5C64000; // WDEN = 1, wdkey = A5C6h > > wdt_timer->wdtcr = 0xDA7E4000; // WDEN = 1, wdkey = DA7Eh > > > > while (1); // loop until reboot > > /* will not reach this line */ > > return (0); > >} > > > > > >It seemed ok at first, the board restart, but then the davinci will > >stuck on waiting for power transition to finish (reading on PSC_PTSTAT > >register).. > >More specifically, it's on the following line: > > > > /* start the state transition for modules in ALWAYSON power > >domain */ > > *(volatile unsigned int*) PTCMD = 1; > > /* Wait for PTSTAT.GOSTAT0 to clear to 0x0 */ > > while(! (((*(volatile unsigned int*) PTSTAT ) & 0x00000001) == > >0)); > > // never stop.. > > > >Anybody has an idea? Is using watchdog timer to reset davinci will be a > >good idea? > > > >Many thanks, > > > >Ari > > > > > >_______________________________________________ > >Davinci-linux-open-source mailing list > >[email protected] > >http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source > >_________________________________________________________________ >Find just what you are after with the more precise, more powerful new MSN >Search. http://search.msn.com.sg/ Try it now. > >_______________________________________________ >Davinci-linux-open-source mailing list >[email protected] >http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source > _________________________________________________________________ Find just what you are after with the more precise, more powerful new MSN Search. http://search.msn.com.sg/ Try it now. _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
