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