ae3xx: timer: Fix ae3xx timer work abnormal in 64 bit.
authorRick Chen <rick@andestech.com>
Thu, 23 Nov 2017 03:04:34 +0000 (11:04 +0800)
committerRick Chen <rickchen36@gmail.com>
Thu, 30 Nov 2017 01:38:21 +0000 (09:38 +0800)
It will be work fine with unsigned long declaretion in timer
register struct when system is 32 bit. But it will not work
well when system is 64 bit. Replace it by u32 and verify both
ok in 32/64 bit.

Signed-off-by: Rick Chen <rick@andestech.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/timer/ae3xx_timer.c

index bcc07a0c86483ab4b85b4707a9467497e4665c3d..b710c28f6c6618c5af7c106f913f04e5559f57f6 100644 (file)
@@ -14,7 +14,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define REG32_TMR(x)   (*(unsigned long *)     ((plat->regs) + (x>>2)))
+#define REG32_TMR(x)   (*(u32 *)       ((plat->regs) + (x>>2)))
 
 /*
  * Definition of register offsets
@@ -68,7 +68,7 @@ struct atctmr_timer_regs {
 };
 
 struct atftmr_timer_platdata {
-       unsigned long *regs;
+       u32 *regs;
 };
 
 static int atftmr_timer_get_count(struct udevice *dev, u64 *count)