Lines Matching full:rtc

15 #include <linux/rtc.h>
41 static int dc_rtc_cmds(struct dc_rtc *rtc, const u8 *cmds, int len) in dc_rtc_cmds() argument
48 rtc->regs + DC_RTC_CONTROL); in dc_rtc_cmds()
50 rtc->regs + DC_RTC_CONTROL, val, in dc_rtc_cmds()
59 static int dc_rtc_read(struct dc_rtc *rtc, unsigned long *val) in dc_rtc_read() argument
65 ret = dc_rtc_cmds(rtc, read_cmds, ARRAY_SIZE(read_cmds)); in dc_rtc_read()
69 reference = readl_relaxed(rtc->regs + DC_RTC_REFERENCE); in dc_rtc_read()
70 time1 = readl_relaxed(rtc->regs + DC_RTC_TIME); in dc_rtc_read()
73 time2 = readl_relaxed(rtc->regs + DC_RTC_TIME); in dc_rtc_read()
83 static int dc_rtc_write(struct dc_rtc *rtc, u32 val) in dc_rtc_write() argument
87 writel_relaxed(val, rtc->regs + DC_RTC_REFERENCE); in dc_rtc_write()
88 return dc_rtc_cmds(rtc, write_cmds, ARRAY_SIZE(write_cmds)); in dc_rtc_write()
93 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_read_time() local
97 ret = dc_rtc_read(rtc, &now); in dc_rtc_read_time()
107 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_set_time() local
109 return dc_rtc_write(rtc, rtc_tm_to_time64(tm)); in dc_rtc_set_time()
114 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_read_alarm() local
119 alarm_reg = readl_relaxed(rtc->regs + DC_RTC_ALARM); in dc_rtc_read_alarm()
120 reference = readl_relaxed(rtc->regs + DC_RTC_REFERENCE); in dc_rtc_read_alarm()
123 ret = dc_rtc_read(rtc, &now); in dc_rtc_read_alarm()
128 alarm->enabled = readl_relaxed(rtc->regs + DC_RTC_INTENABLE); in dc_rtc_read_alarm()
135 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_set_alarm() local
141 reference = readl_relaxed(rtc->regs + DC_RTC_REFERENCE); in dc_rtc_set_alarm()
142 writel_relaxed(alarm_time - reference, rtc->regs + DC_RTC_ALARM); in dc_rtc_set_alarm()
144 writeb_relaxed(!!alarm->enabled, rtc->regs + DC_RTC_INTENABLE); in dc_rtc_set_alarm()
151 struct dc_rtc *rtc = dev_get_drvdata(dev); in dc_rtc_alarm_irq_enable() local
153 writeb_relaxed(!!enabled, rtc->regs + DC_RTC_INTENABLE); in dc_rtc_alarm_irq_enable()
168 struct dc_rtc *rtc = dev_id; in dc_rtc_irq() local
170 writeb_relaxed(1, rtc->regs + DC_RTC_INTFLAG_CLEAR); in dc_rtc_irq()
171 rtc_update_irq(rtc->rtc_dev, 1, RTC_AF | RTC_IRQF); in dc_rtc_irq()
178 struct dc_rtc *rtc; in dc_rtc_probe() local
181 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); in dc_rtc_probe()
182 if (!rtc) in dc_rtc_probe()
185 rtc->regs = devm_platform_ioremap_resource(pdev, 0); in dc_rtc_probe()
186 if (IS_ERR(rtc->regs)) in dc_rtc_probe()
187 return PTR_ERR(rtc->regs); in dc_rtc_probe()
189 rtc->rtc_dev = devm_rtc_allocate_device(&pdev->dev); in dc_rtc_probe()
190 if (IS_ERR(rtc->rtc_dev)) in dc_rtc_probe()
191 return PTR_ERR(rtc->rtc_dev); in dc_rtc_probe()
196 ret = devm_request_irq(&pdev->dev, irq, dc_rtc_irq, 0, pdev->name, rtc); in dc_rtc_probe()
200 platform_set_drvdata(pdev, rtc); in dc_rtc_probe()
202 rtc->rtc_dev->ops = &dc_rtc_ops; in dc_rtc_probe()
203 rtc->rtc_dev->range_max = U32_MAX; in dc_rtc_probe()
205 return devm_rtc_register_device(rtc->rtc_dev); in dc_rtc_probe()
209 { .compatible = "cnxt,cx92755-rtc" },
223 MODULE_DESCRIPTION("Conexant Digicolor Realtime Clock Driver (RTC)");