Title: [6476] trunk/arch/blackfin/kernel/time-ts.c: Port commit 6475 to trunk
Revision
6476
Author
gyang
Date
2009-05-26 05:02:06 -0500 (Tue, 26 May 2009)

Log Message

Port commit 6475 to trunk

Modified Paths


Diff

Modified: trunk/arch/blackfin/kernel/time-ts.c (6475 => 6476)


--- trunk/arch/blackfin/kernel/time-ts.c	2009-05-26 09:53:11 UTC (rev 6475)
+++ trunk/arch/blackfin/kernel/time-ts.c	2009-05-26 10:02:06 UTC (rev 6476)
@@ -182,6 +182,8 @@
 static int bfin_timer_set_next_event(unsigned long cycles,
                                      struct clock_event_device *evt)
 {
+	disable_gptimers(TIMER0bit);
+
 	/* it starts counting three SCLK cycles after the TIMENx bit is set */
 	set_gptimer_pwidth(TIMER0_id, cycles - 3);
 	enable_gptimers(TIMER0bit);
@@ -198,17 +200,14 @@
 			TIMER_PERIOD_CNT | TIMER_MODE_PWM);
 		set_gptimer_period(TIMER0_id, get_sclk() / HZ);
 		set_gptimer_pwidth(TIMER0_id, get_sclk() / HZ - 1);
-		SSYNC();
 		enable_gptimers(TIMER0bit);
 		break;
 	}
 	case CLOCK_EVT_MODE_ONESHOT:
+		disable_gptimers(TIMER0bit);
 		set_gptimer_config(TIMER0_id, \
 			TIMER_OUT_DIS | TIMER_IRQ_ENA | TIMER_MODE_PWM);
 		set_gptimer_period(TIMER0_id, 0);
-		set_gptimer_pwidth(TIMER0_id, get_sclk() / HZ);
-		SSYNC();
-		enable_gptimers(TIMER0bit);
 		break;
 	case CLOCK_EVT_MODE_UNUSED:
 	case CLOCK_EVT_MODE_SHUTDOWN:
@@ -240,31 +239,35 @@
 static int bfin_timer_set_next_event(unsigned long cycles,
 				struct clock_event_device *evt)
 {
+	bfin_write_TCNTL(TMPWR);
+	CSYNC();
 	bfin_write_TCOUNT(cycles);
 	CSYNC();
+	bfin_write_TCNTL(TMPWR | TMREN);
 	return 0;
 }
 
 static void bfin_timer_set_mode(enum clock_event_mode mode,
-                                struct clock_event_device *evt)
+				struct clock_event_device *evt)
 {
 	switch (mode) {
 	case CLOCK_EVT_MODE_PERIODIC: {
 		unsigned long tcount = ((get_cclk() / (HZ * TIME_SCALE)) - 1);
 		bfin_write_TCNTL(TMPWR);
+		CSYNC();
 		bfin_write_TSCALE(TIME_SCALE - 1);
-		CSYNC();
 		bfin_write_TPERIOD(tcount);
 		bfin_write_TCOUNT(tcount);
+		CSYNC();
 		bfin_write_TCNTL(TMPWR | TMREN | TAUTORLD);
-		CSYNC();
 		break;
 	}
 	case CLOCK_EVT_MODE_ONESHOT:
+		bfin_write_TCNTL(TMPWR);
+		CSYNC();
 		bfin_write_TSCALE(TIME_SCALE - 1);
+		bfin_write_TPERIOD(0);
 		bfin_write_TCOUNT(0);
-		bfin_write_TCNTL(TMPWR | TMREN);
-		CSYNC();
 		break;
 	case CLOCK_EVT_MODE_UNUSED:
 	case CLOCK_EVT_MODE_SHUTDOWN:
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to