kerneltest/e32test/system/d_mstim.cpp
changeset 90 947f0dc9f7a8
parent 33 0173bcd7697c
child 133 2a0ada0a1bf8
--- a/kerneltest/e32test/system/d_mstim.cpp	Tue Feb 02 01:24:03 2010 +0200
+++ b/kerneltest/e32test/system/d_mstim.cpp	Fri Apr 16 16:24:37 2010 +0300
@@ -91,7 +91,7 @@
 #endif
 #ifdef __NE1_TB__
 inline TCounter TIMER()
-	{ return NETimer::Timer(2).iTimerCount; }
+	{ return NETimer::Timer(5).iTimerCount; }
 #endif
 #if defined(__EPOC32__) && defined(__CPU_X86)
 TCounter TIMER();
@@ -188,8 +188,8 @@
 	return aTicks*500;					// 2kHz tick
 #endif
 #if defined(__NE1_TB__)
-	NETimer& T2 = NETimer::Timer(2);
-	TUint prescale = __e32_find_ms1_32(T2.iPrescaler & 0x3f);
+	NETimer& T5 = NETimer::Timer(5);
+	TUint prescale = __e32_find_ms1_32(T5.iPrescaler & 0x3f);
 	TInt f = 66666667 >> prescale;
 	TInt64 x = I64LIT(1000000);
 	x *= TInt64(aTicks);
@@ -264,7 +264,24 @@
 	TRvEmuBoard::EnableTimer(KHwCounterTimer1, TRvEmuBoard::EEnable);
 #endif
 #if defined(__NE1_TB__)
-	// nothing to do since variant has already set up timer
+    // set up timer 5
+    NETimer& T5 = NETimer::Timer(5);
+
+	T5.iTimerCtrl = 0;						// stop and reset timer 5
+	T5.iGTICtrl = 0;						// disable timer 5 capture modes
+	__e32_io_completion_barrier();
+	T5.iPrescaler = KNETimerPrescaleBy32;	// Timer 5 prescaled by 32 (=2.0833MHz)
+	__e32_io_completion_barrier();
+	T5.iGTInterruptEnable = 0;
+	__e32_io_completion_barrier();
+	T5.iGTInterrupt = KNETimerGTIInt_All;
+	__e32_io_completion_barrier();
+	T5.iTimerCtrl = KNETimerCtrl_CE;		// deassert reset for timer 5, count still stopped
+	__e32_io_completion_barrier();
+	T5.iTimerReset = 0xffffffffu;			// timer 5 wraps after 2^32 counts
+	__e32_io_completion_barrier();
+	T5.iTimerCtrl = KNETimerCtrl_CE | KNETimerCtrl_CAE;	// start timer 5
+	__e32_io_completion_barrier();		
 #endif
 #if defined(__EPOC32__) && defined(__CPU_X86)
 	// Set up timer channel 2 as free running counter at 14318180/12 Hz