aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlbrecht Dreß <albrecht.dress@arcor.de>2009-11-12 15:31:35 -0500
committerGrant Likely <grant.likely@secretlab.ca>2009-11-12 15:31:35 -0500
commit690b846aa1b42b4f35bfac0022b75a288d97fd13 (patch)
tree091ef9d196c9b80156bc6ce132eaa4f39e02afd4
parent02d9e58e464b8aeed9a9cba951c3ae3c6bd06e30 (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>
-rw-r--r--arch/powerpc/include/asm/mpc52xx.h2
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_gpt.c6
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 */
280struct mpc52xx_gpt_priv; 280struct mpc52xx_gpt_priv;
281extern struct mpc52xx_gpt_priv *mpc52xx_gpt_from_irq(int irq); 281extern struct mpc52xx_gpt_priv *mpc52xx_gpt_from_irq(int irq);
282extern int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, int period, 282extern int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, u64 period,
283 int continuous); 283 int continuous);
284extern void mpc52xx_gpt_stop_timer(struct mpc52xx_gpt_priv *gpt); 284extern 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 */
386int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, int period, 386int 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 */