vt8500_rtc
struct vt8500_rtc *vt8500_rtc = dev_get_drvdata(dev);
date = readl(vt8500_rtc->regbase + VT8500_RTC_DR);
time = readl(vt8500_rtc->regbase + VT8500_RTC_TR);
struct vt8500_rtc *vt8500_rtc = dev_get_drvdata(dev);
vt8500_rtc->regbase + VT8500_RTC_DS);
vt8500_rtc->regbase + VT8500_RTC_TS);
struct vt8500_rtc *vt8500_rtc = dev_get_drvdata(dev);
alarm = readl(vt8500_rtc->regbase + VT8500_RTC_AS);
isr = readl(vt8500_rtc->regbase + VT8500_RTC_IS);
struct vt8500_rtc *vt8500_rtc = dev_get_drvdata(dev);
vt8500_rtc->regbase + VT8500_RTC_AS);
struct vt8500_rtc *vt8500_rtc = dev_get_drvdata(dev);
unsigned long tmp = readl(vt8500_rtc->regbase + VT8500_RTC_AS);
writel(tmp, vt8500_rtc->regbase + VT8500_RTC_AS);
struct vt8500_rtc *vt8500_rtc;
vt8500_rtc = devm_kzalloc(&pdev->dev,
sizeof(struct vt8500_rtc), GFP_KERNEL);
if (!vt8500_rtc)
spin_lock_init(&vt8500_rtc->lock);
platform_set_drvdata(pdev, vt8500_rtc);
vt8500_rtc->irq_alarm = platform_get_irq(pdev, 0);
if (vt8500_rtc->irq_alarm < 0)
return vt8500_rtc->irq_alarm;
vt8500_rtc->regbase = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(vt8500_rtc->regbase))
return PTR_ERR(vt8500_rtc->regbase);
vt8500_rtc->regbase + VT8500_RTC_CR);
vt8500_rtc->rtc = devm_rtc_allocate_device(&pdev->dev);
if (IS_ERR(vt8500_rtc->rtc))
return PTR_ERR(vt8500_rtc->rtc);
vt8500_rtc->rtc->ops = &vt8500_rtc_ops;
vt8500_rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
vt8500_rtc->rtc->range_max = RTC_TIMESTAMP_END_2199;
ret = devm_request_irq(&pdev->dev, vt8500_rtc->irq_alarm,
vt8500_rtc_irq, 0, "rtc alarm", vt8500_rtc);
vt8500_rtc->irq_alarm, ret);
return devm_rtc_register_device(vt8500_rtc->rtc);
struct vt8500_rtc *vt8500_rtc = platform_get_drvdata(pdev);
writel(0, vt8500_rtc->regbase + VT8500_RTC_IS);
struct vt8500_rtc *vt8500_rtc = dev_id;
spin_lock(&vt8500_rtc->lock);
isr = readl(vt8500_rtc->regbase + VT8500_RTC_IS);
writel(isr, vt8500_rtc->regbase + VT8500_RTC_IS);
spin_unlock(&vt8500_rtc->lock);
rtc_update_irq(vt8500_rtc->rtc, 1, events);