diff options
author | Albrecht Dreß <albrecht.dress@arcor.de> | 2009-11-12 15:31:35 -0500 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2009-11-12 15:31:35 -0500 |
commit | 690b846aa1b42b4f35bfac0022b75a288d97fd13 (patch) | |
tree | 091ef9d196c9b80156bc6ce132eaa4f39e02afd4 /arch | |
parent | 02d9e58e464b8aeed9a9cba951c3ae3c6bd06e30 (diff) |
mpc5200/gpt: tiny fix for gpt period limitation
This patch changes the period parameter of mpc52xx_gpt_start_timer to
a u64 to support larger timeout periods.
Signed-off-by: Albrecht Dreß <albrecht.dress@arcor.de>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/include/asm/mpc52xx.h | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/52xx/mpc52xx_gpt.c | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/powerpc/include/asm/mpc52xx.h b/arch/powerpc/include/asm/mpc52xx.h index 707ab7590cfb..933fb8f6e797 100644 --- a/arch/powerpc/include/asm/mpc52xx.h +++ b/arch/powerpc/include/asm/mpc52xx.h | |||
@@ -279,7 +279,7 @@ extern void mpc52xx_restart(char *cmd); | |||
279 | /* mpc52xx_gpt.c */ | 279 | /* mpc52xx_gpt.c */ |
280 | struct mpc52xx_gpt_priv; | 280 | struct mpc52xx_gpt_priv; |
281 | extern struct mpc52xx_gpt_priv *mpc52xx_gpt_from_irq(int irq); | 281 | extern struct mpc52xx_gpt_priv *mpc52xx_gpt_from_irq(int irq); |
282 | extern int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, int period, | 282 | extern int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, u64 period, |
283 | int continuous); | 283 | int continuous); |
284 | extern void mpc52xx_gpt_stop_timer(struct mpc52xx_gpt_priv *gpt); | 284 | extern void mpc52xx_gpt_stop_timer(struct mpc52xx_gpt_priv *gpt); |
285 | 285 | ||
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c index 2c3fa13571ce..77572abca6c3 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c | |||
@@ -378,12 +378,12 @@ EXPORT_SYMBOL(mpc52xx_gpt_from_irq); | |||
378 | /** | 378 | /** |
379 | * mpc52xx_gpt_start_timer - Set and enable the GPT timer | 379 | * mpc52xx_gpt_start_timer - Set and enable the GPT timer |
380 | * @gpt: Pointer to gpt private data structure | 380 | * @gpt: Pointer to gpt private data structure |
381 | * @period: period of timer | 381 | * @period: period of timer in ns; max. ~130s @ 33MHz IPB clock |
382 | * @continuous: set to 1 to make timer continuous free running | 382 | * @continuous: set to 1 to make timer continuous free running |
383 | * | 383 | * |
384 | * An interrupt will be generated every time the timer fires | 384 | * An interrupt will be generated every time the timer fires |
385 | */ | 385 | */ |
386 | int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, int period, | 386 | int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, u64 period, |
387 | int continuous) | 387 | int continuous) |
388 | { | 388 | { |
389 | u32 clear, set; | 389 | u32 clear, set; |
@@ -400,7 +400,7 @@ int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, int period, | |||
400 | * arithmatic is done here to preserve the precision until the value | 400 | * arithmatic is done here to preserve the precision until the value |
401 | * is scaled back down into the u32 range. Period is in 'ns', bus | 401 | * is scaled back down into the u32 range. Period is in 'ns', bus |
402 | * frequency is in Hz. */ | 402 | * frequency is in Hz. */ |
403 | clocks = (u64)period * (u64)gpt->ipb_freq; | 403 | clocks = period * (u64)gpt->ipb_freq; |
404 | do_div(clocks, 1000000000); /* Scale it down to ns range */ | 404 | do_div(clocks, 1000000000); /* Scale it down to ns range */ |
405 | 405 | ||
406 | /* This device cannot handle a clock count greater than 32 bits */ | 406 | /* This device cannot handle a clock count greater than 32 bits */ |