Lines Matching refs:rtc

45 static int dc_rtc_cmds(struct dc_rtc *rtc, const u8 *cmds, int len)  in dc_rtc_cmds()  argument
52 rtc->regs + DC_RTC_CONTROL); in dc_rtc_cmds()
54 rtc->regs + DC_RTC_CONTROL, val, in dc_rtc_cmds()
63 static int dc_rtc_read(struct dc_rtc *rtc, unsigned long *val) in dc_rtc_read() argument
69 ret = dc_rtc_cmds(rtc, read_cmds, ARRAY_SIZE(read_cmds)); in dc_rtc_read()
73 reference = readl_relaxed(rtc->regs + DC_RTC_REFERENCE); in dc_rtc_read()
74 time1 = readl_relaxed(rtc->regs + DC_RTC_TIME); in dc_rtc_read()
77 time2 = readl_relaxed(rtc->regs + DC_RTC_TIME); in dc_rtc_read()
87 static int dc_rtc_write(struct dc_rtc *rtc, u32 val) in dc_rtc_write() argument
91 writel_relaxed(val, rtc->regs + DC_RTC_REFERENCE); in dc_rtc_write()
92 return dc_rtc_cmds(rtc, write_cmds, ARRAY_SIZE(write_cmds)); in dc_rtc_write()
97 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_read_time() local
101 ret = dc_rtc_read(rtc, &now); in dc_rtc_read_time()
111 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_set_mmss() local
113 return dc_rtc_write(rtc, secs); in dc_rtc_set_mmss()
118 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_read_alarm() local
123 alarm_reg = readl_relaxed(rtc->regs + DC_RTC_ALARM); in dc_rtc_read_alarm()
124 reference = readl_relaxed(rtc->regs + DC_RTC_REFERENCE); in dc_rtc_read_alarm()
127 ret = dc_rtc_read(rtc, &now); in dc_rtc_read_alarm()
132 alarm->enabled = readl_relaxed(rtc->regs + DC_RTC_INTENABLE); in dc_rtc_read_alarm()
139 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_set_alarm() local
145 reference = readl_relaxed(rtc->regs + DC_RTC_REFERENCE); in dc_rtc_set_alarm()
146 writel_relaxed(alarm_time - reference, rtc->regs + DC_RTC_ALARM); in dc_rtc_set_alarm()
148 writeb_relaxed(!!alarm->enabled, rtc->regs + DC_RTC_INTENABLE); in dc_rtc_set_alarm()
155 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_alarm_irq_enable() local
157 writeb_relaxed(!!enabled, rtc->regs + DC_RTC_INTENABLE); in dc_rtc_alarm_irq_enable()
172 struct dc_rtc *rtc = dev_id; in dc_rtc_irq() local
174 writeb_relaxed(1, rtc->regs + DC_RTC_INTFLAG_CLEAR); in dc_rtc_irq()
175 rtc_update_irq(rtc->rtc_dev, 1, RTC_AF | RTC_IRQF); in dc_rtc_irq()
183 struct dc_rtc *rtc; in dc_rtc_probe() local
186 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); in dc_rtc_probe()
187 if (!rtc) in dc_rtc_probe()
191 rtc->regs = devm_ioremap_resource(&pdev->dev, res); in dc_rtc_probe()
192 if (IS_ERR(rtc->regs)) in dc_rtc_probe()
193 return PTR_ERR(rtc->regs); in dc_rtc_probe()
198 ret = devm_request_irq(&pdev->dev, irq, dc_rtc_irq, 0, pdev->name, rtc); in dc_rtc_probe()
202 platform_set_drvdata(pdev, rtc); in dc_rtc_probe()
203 rtc->rtc_dev = devm_rtc_device_register(&pdev->dev, pdev->name, in dc_rtc_probe()
205 if (IS_ERR(rtc->rtc_dev)) in dc_rtc_probe()
206 return PTR_ERR(rtc->rtc_dev); in dc_rtc_probe()