summaryrefslogtreecommitdiff
path: root/drivers/rtc/rtc-ab.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-ab.c')
-rw-r--r--drivers/rtc/rtc-ab.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/rtc/rtc-ab.c b/drivers/rtc/rtc-ab.c
index 3d3c216995d..8e595e05d99 100644
--- a/drivers/rtc/rtc-ab.c
+++ b/drivers/rtc/rtc-ab.c
@@ -141,8 +141,8 @@ static unsigned long
ab5500_rtc_regs_to_time(struct device *dev, u8 *regs)
{
u64 fat_time = ((u64)regs[5] << 40) | ((u64)regs[4] << 32) |
- (regs[3] << 24) | (regs[2] << 16) |
- (regs[1] << 8) | regs[0];
+ ((u64)regs[3] << 24) | ((u64)regs[2] << 16) |
+ ((u64)regs[1] << 8) | regs[0];
unsigned long secs = (fat_time & 0x1fffff) / AB5500_RTC_CLOCK_RATE;
unsigned long mins = fat_time >> 21;
@@ -170,7 +170,9 @@ ab5500_rtc_alarm_to_regs(struct device *dev, unsigned long secs, u8 *regs)
static unsigned long
ab5500_rtc_regs_to_alarm(struct device *dev, u8 *regs)
{
- unsigned long mins = (regs[2] << 16) | (regs[1] << 8) | regs[0];
+ unsigned long mins = ((unsigned long)regs[2] << 16) |
+ ((unsigned long)regs[1] << 8) |
+ regs[0];
unsigned long secs = mins * 60;
return secs;