drivers/rtc/: use bcd2bin/bin2bcd
[deliverable/linux.git] / drivers / rtc / rtc-sh.c
index c594b34c67679e3f1d7df1ba143854217bc38455..1ec297128ea639fac6db8f9c7f81f0bd59f3bea3 100644 (file)
@@ -257,12 +257,6 @@ static inline void sh_rtc_setaie(struct device *dev, unsigned int enable)
        spin_unlock_irq(&rtc->lock);
 }
 
-static void sh_rtc_release(struct device *dev)
-{
-       sh_rtc_setpie(dev, 0);
-       sh_rtc_setaie(dev, 0);
-}
-
 static int sh_rtc_proc(struct device *dev, struct seq_file *seq)
 {
        struct sh_rtc *rtc = dev_get_drvdata(dev);
@@ -330,23 +324,23 @@ static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm)
 
                sec128 = readb(rtc->regbase + R64CNT);
 
-               tm->tm_sec      = BCD2BIN(readb(rtc->regbase + RSECCNT));
-               tm->tm_min      = BCD2BIN(readb(rtc->regbase + RMINCNT));
-               tm->tm_hour     = BCD2BIN(readb(rtc->regbase + RHRCNT));
-               tm->tm_wday     = BCD2BIN(readb(rtc->regbase + RWKCNT));
-               tm->tm_mday     = BCD2BIN(readb(rtc->regbase + RDAYCNT));
-               tm->tm_mon      = BCD2BIN(readb(rtc->regbase + RMONCNT)) - 1;
+               tm->tm_sec      = bcd2bin(readb(rtc->regbase + RSECCNT));
+               tm->tm_min      = bcd2bin(readb(rtc->regbase + RMINCNT));
+               tm->tm_hour     = bcd2bin(readb(rtc->regbase + RHRCNT));
+               tm->tm_wday     = bcd2bin(readb(rtc->regbase + RWKCNT));
+               tm->tm_mday     = bcd2bin(readb(rtc->regbase + RDAYCNT));
+               tm->tm_mon      = bcd2bin(readb(rtc->regbase + RMONCNT)) - 1;
 
                if (rtc->capabilities & RTC_CAP_4_DIGIT_YEAR) {
                        yr  = readw(rtc->regbase + RYRCNT);
-                       yr100 = BCD2BIN(yr >> 8);
+                       yr100 = bcd2bin(yr >> 8);
                        yr &= 0xff;
                } else {
                        yr  = readb(rtc->regbase + RYRCNT);
-                       yr100 = BCD2BIN((yr == 0x99) ? 0x19 : 0x20);
+                       yr100 = bcd2bin((yr == 0x99) ? 0x19 : 0x20);
                }
 
-               tm->tm_year = (yr100 * 100 + BCD2BIN(yr)) - 1900;
+               tm->tm_year = (yr100 * 100 + bcd2bin(yr)) - 1900;
 
                sec2 = readb(rtc->regbase + R64CNT);
                cf_bit = readb(rtc->regbase + RCR1) & RCR1_CF;
@@ -361,7 +355,7 @@ static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm)
 
        dev_dbg(dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
                "mday=%d, mon=%d, year=%d, wday=%d\n",
-               __FUNCTION__,
+               __func__,
                tm->tm_sec, tm->tm_min, tm->tm_hour,
                tm->tm_mday, tm->tm_mon + 1, tm->tm_year, tm->tm_wday);
 
@@ -388,20 +382,20 @@ static int sh_rtc_set_time(struct device *dev, struct rtc_time *tm)
        tmp &= ~RCR2_START;
        writeb(tmp, rtc->regbase + RCR2);
 
-       writeb(BIN2BCD(tm->tm_sec),  rtc->regbase + RSECCNT);
-       writeb(BIN2BCD(tm->tm_min),  rtc->regbase + RMINCNT);
-       writeb(BIN2BCD(tm->tm_hour), rtc->regbase + RHRCNT);
-       writeb(BIN2BCD(tm->tm_wday), rtc->regbase + RWKCNT);
-       writeb(BIN2BCD(tm->tm_mday), rtc->regbase + RDAYCNT);
-       writeb(BIN2BCD(tm->tm_mon + 1), rtc->regbase + RMONCNT);
+       writeb(bin2bcd(tm->tm_sec),  rtc->regbase + RSECCNT);
+       writeb(bin2bcd(tm->tm_min),  rtc->regbase + RMINCNT);
+       writeb(bin2bcd(tm->tm_hour), rtc->regbase + RHRCNT);
+       writeb(bin2bcd(tm->tm_wday), rtc->regbase + RWKCNT);
+       writeb(bin2bcd(tm->tm_mday), rtc->regbase + RDAYCNT);
+       writeb(bin2bcd(tm->tm_mon + 1), rtc->regbase + RMONCNT);
 
        if (rtc->capabilities & RTC_CAP_4_DIGIT_YEAR) {
-               year = (BIN2BCD((tm->tm_year + 1900) / 100) << 8) |
-                       BIN2BCD(tm->tm_year % 100);
+               year = (bin2bcd((tm->tm_year + 1900) / 100) << 8) |
+                       bin2bcd(tm->tm_year % 100);
                writew(year, rtc->regbase + RYRCNT);
        } else {
                year = tm->tm_year % 100;
-               writeb(BIN2BCD(year), rtc->regbase + RYRCNT);
+               writeb(bin2bcd(year), rtc->regbase + RYRCNT);
        }
 
        /* Start RTC */
@@ -423,7 +417,7 @@ static inline int sh_rtc_read_alarm_value(struct sh_rtc *rtc, int reg_off)
        byte = readb(rtc->regbase + reg_off);
        if (byte & AR_ENB) {
                byte &= ~AR_ENB;        /* strip the enable bit */
-               value = BCD2BIN(byte);
+               value = bcd2bin(byte);
        }
 
        return value;
@@ -461,7 +455,7 @@ static inline void sh_rtc_write_alarm_value(struct sh_rtc *rtc,
        if (value < 0)
                writeb(0, rtc->regbase + reg_off);
        else
-               writeb(BIN2BCD(value) | AR_ENB,  rtc->regbase + reg_off);
+               writeb(bin2bcd(value) | AR_ENB,  rtc->regbase + reg_off);
 }
 
 static int sh_rtc_check_alarm(struct rtc_time *tm)
@@ -559,7 +553,6 @@ static int sh_rtc_irq_set_freq(struct device *dev, int freq)
 }
 
 static struct rtc_class_ops sh_rtc_ops = {
-       .release        = sh_rtc_release,
        .ioctl          = sh_rtc_ioctl,
        .read_time      = sh_rtc_read_time,
        .set_time       = sh_rtc_set_time,
@@ -616,7 +609,7 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
                goto err_badres;
        }
 
-       rtc->regbase = (void __iomem *)rtc->res->start;
+       rtc->regbase = ioremap_nocache(rtc->res->start, rtc->regsize);
        if (unlikely(!rtc->regbase)) {
                ret = -EINVAL;
                goto err_badmap;
@@ -626,7 +619,7 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
                                           &sh_rtc_ops, THIS_MODULE);
        if (IS_ERR(rtc->rtc_dev)) {
                ret = PTR_ERR(rtc->rtc_dev);
-               goto err_badmap;
+               goto err_unmap;
        }
 
        rtc->capabilities = RTC_DEF_CAPABILITIES;
@@ -653,7 +646,7 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
                dev_err(&pdev->dev,
                        "request period IRQ failed with %d, IRQ %d\n", ret,
                        rtc->periodic_irq);
-               goto err_badmap;
+               goto err_unmap;
        }
 
        ret = request_irq(rtc->carry_irq, sh_rtc_interrupt, IRQF_DISABLED,
@@ -663,7 +656,7 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
                        "request carry IRQ failed with %d, IRQ %d\n", ret,
                        rtc->carry_irq);
                free_irq(rtc->periodic_irq, rtc);
-               goto err_badmap;
+               goto err_unmap;
        }
 
        ret = request_irq(rtc->alarm_irq, sh_rtc_alarm, IRQF_DISABLED,
@@ -674,7 +667,7 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
                        rtc->alarm_irq);
                free_irq(rtc->carry_irq, rtc);
                free_irq(rtc->periodic_irq, rtc);
-               goto err_badmap;
+               goto err_unmap;
        }
 
        tmp = readb(rtc->regbase + RCR1);
@@ -684,6 +677,8 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev)
 
        return 0;
 
+err_unmap:
+       iounmap(rtc->regbase);
 err_badmap:
        release_resource(rtc->res);
 err_badres:
@@ -708,6 +703,8 @@ static int __devexit sh_rtc_remove(struct platform_device *pdev)
 
        release_resource(rtc->res);
 
+       iounmap(rtc->regbase);
+
        platform_set_drvdata(pdev, NULL);
 
        kfree(rtc);
This page took 0.028053 seconds and 5 git commands to generate.