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

Reply via email to