This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TSK_Sleep and watchdog timer

Other Parts Discussed in Thread: OMAP-L138, OMAP-L137

Hi

I'm experiencing a problem when using both watchdog timer and TSK_Sleep function on the DSP on OMAP-L138. Here is a similar problem for OMAP-L137:
http://e2e.ti.com/support/embedded/f/355/t/69643.aspx.

My problem is a little bit different though. From what I established, DSP/BIOS uses TIMER1 for its CLK module:
prog.module("CLK").TIMERSELECT = "Timer 1"; //line from bios_5_41_00_06/packages/ti/bios/config/bios_6748.tci

Unfortunately, TIMER1 is also used for watchdog timer in Linux. Up until now I did not use the watchdog code in Linux and everything was going smoothly. But when I call davinci_wdog_init() and start kicking it with davinci_wdog_kick(), the first call of TSK_Sleep on the DSP hangs. I posted this on BIOS forum, because I'm looking for a solution that would not involve altering Linux code. Linux is using TIMER0 internally, and I don't want to be forced to change that.

I tried changing:
prog.module("CLK").TIMERSELECT = "Timer 1"; TO prog.module("CLK").TIMERSELECT = "Timer 2"; OR prog.module("CLK").TIMERSELECT = "Timer 3";
but my code doesn't compile and issues an error:
js: "./cct_omap_dsp.tcf", line 127: Can't set field

Also, I do not know how to populate the field right above:
prog.module("ISRC").instance("Timer_1").iIntrSelectNum = 40;

How should this be populated for TIMER2 or TIMER3? Their DSP Interrupt descriptions are somewhat different from those of TIMER0 and TIMER1.

The main question: is it feasible to achevie a working internal watchdog timer and have a fully-functional DSP/BIOS system at the same time?

Kind regards
Szymon