From c1b2ef277b72a921db244c9a5a0e7513f22997d1 Mon Sep 17 00:00:00 2001 From: Wan ZongShun Date: Tue, 10 Aug 2010 18:02:05 -0700 Subject: [PATCH] --- yaml --- r: 208453 b: refs/heads/master c: 0a89b55364e0a4fd4be9bc2c9a697f9b027eb395 h: refs/heads/master i: 208451: b7fcb6c2f6f3f362d52d3082d8bad8053a40fdcd v: v3 --- [refs] | 2 +- trunk/drivers/rtc/rtc-nuc900.c | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index b50ac9e8098c..fc2a82186a9a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5fc79d85d2ab7ce144bc75e06cab58126249afbb +refs/heads/master: 0a89b55364e0a4fd4be9bc2c9a697f9b027eb395 diff --git a/trunk/drivers/rtc/rtc-nuc900.c b/trunk/drivers/rtc/rtc-nuc900.c index a351bd5d8176..21d13309fb20 100644 --- a/trunk/drivers/rtc/rtc-nuc900.c +++ b/trunk/drivers/rtc/rtc-nuc900.c @@ -85,22 +85,21 @@ static irqreturn_t nuc900_rtc_interrupt(int irq, void *_rtc) static int *check_rtc_access_enable(struct nuc900_rtc *nuc900_rtc) { - unsigned int i; + unsigned int i, timeout = 0x1000; __raw_writel(INIRRESET, nuc900_rtc->rtc_reg + REG_RTC_INIR); mdelay(10); __raw_writel(AERPOWERON, nuc900_rtc->rtc_reg + REG_RTC_AER); - for (i = 0; i < 1000; i++) { - if (__raw_readl(nuc900_rtc->rtc_reg + REG_RTC_AER) & AERRWENB) - return 0; - } + while (!(__raw_readl(nuc900_rtc->rtc_reg + REG_RTC_AER) & AERRWENB) + && timeout--) + mdelay(1); - if ((__raw_readl(nuc900_rtc->rtc_reg + REG_RTC_AER) & AERRWENB) == 0x0) - return ERR_PTR(-ENODEV); + if (!timeout) + return ERR_PTR(-EPERM); - return ERR_PTR(-EPERM); + return 0; } static void nuc900_rtc_bcd2bin(unsigned int timereg,