diff options
author | Andriy Skulysh <askulysh@gmail.com> | 2006-09-27 03:20:22 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 03:20:22 -0400 |
commit | 3aa770e7972723f479122cf66b529017d2175289 (patch) | |
tree | f70d870381cec8034693704e346c53b311db688f /arch/sh/kernel/timers | |
parent | ef48e8e3498605351f91f195cc9af0ef981b0dde (diff) |
sh: APM/PM support.
This adds some simple PM stubs and the basic APM interfaces,
primarily for use by hp6xx, where the existing userland
expects it.
Signed-off-by: Andriy Skulysh <askulysh@gmail.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/timers')
-rw-r--r-- | arch/sh/kernel/timers/timer-tmu.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c index d4212add53b2..ea4bdf8cdf0d 100644 --- a/arch/sh/kernel/timers/timer-tmu.c +++ b/arch/sh/kernel/timers/timer-tmu.c | |||
@@ -188,6 +188,18 @@ static struct clk tmu0_clk = { | |||
188 | .ops = &tmu_clk_ops, | 188 | .ops = &tmu_clk_ops, |
189 | }; | 189 | }; |
190 | 190 | ||
191 | static int tmu_timer_start(void) | ||
192 | { | ||
193 | ctrl_outb(TMU_TSTR_INIT, TMU_TSTR); | ||
194 | return 0; | ||
195 | } | ||
196 | |||
197 | static int tmu_timer_stop(void) | ||
198 | { | ||
199 | ctrl_outb(0, TMU_TSTR); | ||
200 | return 0; | ||
201 | } | ||
202 | |||
191 | static int tmu_timer_init(void) | 203 | static int tmu_timer_init(void) |
192 | { | 204 | { |
193 | unsigned long interval; | 205 | unsigned long interval; |
@@ -197,7 +209,7 @@ static int tmu_timer_init(void) | |||
197 | tmu0_clk.parent = clk_get("module_clk"); | 209 | tmu0_clk.parent = clk_get("module_clk"); |
198 | 210 | ||
199 | /* Start TMU0 */ | 211 | /* Start TMU0 */ |
200 | ctrl_outb(0, TMU_TSTR); | 212 | tmu_timer_stop(); |
201 | #if !defined(CONFIG_CPU_SUBTYPE_SH7300) && !defined(CONFIG_CPU_SUBTYPE_SH7760) | 213 | #if !defined(CONFIG_CPU_SUBTYPE_SH7300) && !defined(CONFIG_CPU_SUBTYPE_SH7760) |
202 | ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); | 214 | ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); |
203 | #endif | 215 | #endif |
@@ -211,13 +223,15 @@ static int tmu_timer_init(void) | |||
211 | ctrl_outl(interval, TMU0_TCOR); | 223 | ctrl_outl(interval, TMU0_TCOR); |
212 | ctrl_outl(interval, TMU0_TCNT); | 224 | ctrl_outl(interval, TMU0_TCNT); |
213 | 225 | ||
214 | ctrl_outb(TMU_TSTR_INIT, TMU_TSTR); | 226 | tmu_timer_start(); |
215 | 227 | ||
216 | return 0; | 228 | return 0; |
217 | } | 229 | } |
218 | 230 | ||
219 | struct sys_timer_ops tmu_timer_ops = { | 231 | struct sys_timer_ops tmu_timer_ops = { |
220 | .init = tmu_timer_init, | 232 | .init = tmu_timer_init, |
233 | .start = tmu_timer_start, | ||
234 | .stop = tmu_timer_stop, | ||
221 | .get_frequency = tmu_timer_get_frequency, | 235 | .get_frequency = tmu_timer_get_frequency, |
222 | .get_offset = tmu_timer_get_offset, | 236 | .get_offset = tmu_timer_get_offset, |
223 | }; | 237 | }; |