Lines Matching refs:rtc
59 static void cpcap2rtc_time(struct rtc_time *rtc, struct cpcap_time *cpcap) in cpcap2rtc_time() argument
67 rtc_time_to_tm(time, rtc); in cpcap2rtc_time()
70 static void rtc2cpcap_time(struct cpcap_time *cpcap, struct rtc_time *rtc) in rtc2cpcap_time() argument
74 rtc_tm_to_time(rtc, &time); in rtc2cpcap_time()
84 struct cpcap_rtc *rtc = dev_get_drvdata(dev); in cpcap_rtc_alarm_irq_enable() local
86 if (rtc->alarm_enabled == enabled) in cpcap_rtc_alarm_irq_enable()
90 enable_irq(rtc->alarm_irq); in cpcap_rtc_alarm_irq_enable()
92 disable_irq(rtc->alarm_irq); in cpcap_rtc_alarm_irq_enable()
94 rtc->alarm_enabled = !!enabled; in cpcap_rtc_alarm_irq_enable()
101 struct cpcap_rtc *rtc; in cpcap_rtc_read_time() local
106 rtc = dev_get_drvdata(dev); in cpcap_rtc_read_time()
108 ret = regmap_read(rtc->regmap, CPCAP_REG_TOD2, &temp_tod2); in cpcap_rtc_read_time()
109 ret |= regmap_read(rtc->regmap, CPCAP_REG_DAY, &cpcap_tm.day); in cpcap_rtc_read_time()
110 ret |= regmap_read(rtc->regmap, CPCAP_REG_TOD1, &cpcap_tm.tod1); in cpcap_rtc_read_time()
111 ret |= regmap_read(rtc->regmap, CPCAP_REG_TOD2, &cpcap_tm.tod2); in cpcap_rtc_read_time()
114 ret |= regmap_read(rtc->regmap, CPCAP_REG_DAY, &cpcap_tm.day); in cpcap_rtc_read_time()
128 struct cpcap_rtc *rtc; in cpcap_rtc_set_time() local
132 rtc = dev_get_drvdata(dev); in cpcap_rtc_set_time()
136 if (rtc->alarm_enabled) in cpcap_rtc_set_time()
137 disable_irq(rtc->alarm_irq); in cpcap_rtc_set_time()
138 if (rtc->update_enabled) in cpcap_rtc_set_time()
139 disable_irq(rtc->update_irq); in cpcap_rtc_set_time()
141 if (rtc->vendor == CPCAP_VENDOR_ST) { in cpcap_rtc_set_time()
145 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_TOD1, in cpcap_rtc_set_time()
147 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_TOD2, in cpcap_rtc_set_time()
149 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_DAY, in cpcap_rtc_set_time()
159 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_TOD1, in cpcap_rtc_set_time()
161 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_DAY, in cpcap_rtc_set_time()
163 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_TOD2, in cpcap_rtc_set_time()
165 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_TOD1, in cpcap_rtc_set_time()
169 if (rtc->update_enabled) in cpcap_rtc_set_time()
170 enable_irq(rtc->update_irq); in cpcap_rtc_set_time()
171 if (rtc->alarm_enabled) in cpcap_rtc_set_time()
172 enable_irq(rtc->alarm_irq); in cpcap_rtc_set_time()
179 struct cpcap_rtc *rtc; in cpcap_rtc_read_alarm() local
183 rtc = dev_get_drvdata(dev); in cpcap_rtc_read_alarm()
185 alrm->enabled = rtc->alarm_enabled; in cpcap_rtc_read_alarm()
187 ret = regmap_read(rtc->regmap, CPCAP_REG_DAYA, &cpcap_tm.day); in cpcap_rtc_read_alarm()
188 ret |= regmap_read(rtc->regmap, CPCAP_REG_TODA2, &cpcap_tm.tod2); in cpcap_rtc_read_alarm()
189 ret |= regmap_read(rtc->regmap, CPCAP_REG_TODA1, &cpcap_tm.tod1); in cpcap_rtc_read_alarm()
202 struct cpcap_rtc *rtc; in cpcap_rtc_set_alarm() local
206 rtc = dev_get_drvdata(dev); in cpcap_rtc_set_alarm()
210 if (rtc->alarm_enabled) in cpcap_rtc_set_alarm()
211 disable_irq(rtc->alarm_irq); in cpcap_rtc_set_alarm()
213 ret = regmap_update_bits(rtc->regmap, CPCAP_REG_DAYA, DAY_MASK, in cpcap_rtc_set_alarm()
215 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_TODA2, TOD2_MASK, in cpcap_rtc_set_alarm()
217 ret |= regmap_update_bits(rtc->regmap, CPCAP_REG_TODA1, TOD1_MASK, in cpcap_rtc_set_alarm()
221 enable_irq(rtc->alarm_irq); in cpcap_rtc_set_alarm()
222 rtc->alarm_enabled = true; in cpcap_rtc_set_alarm()
238 struct cpcap_rtc *rtc = data; in cpcap_rtc_alarm_irq() local
240 rtc_update_irq(rtc->rtc_dev, 1, RTC_AF | RTC_IRQF); in cpcap_rtc_alarm_irq()
246 struct cpcap_rtc *rtc = data; in cpcap_rtc_update_irq() local
248 rtc_update_irq(rtc->rtc_dev, 1, RTC_UF | RTC_IRQF); in cpcap_rtc_update_irq()
255 struct cpcap_rtc *rtc; in cpcap_rtc_probe() local
258 rtc = devm_kzalloc(dev, sizeof(*rtc), GFP_KERNEL); in cpcap_rtc_probe()
259 if (!rtc) in cpcap_rtc_probe()
262 rtc->regmap = dev_get_regmap(dev->parent, NULL); in cpcap_rtc_probe()
263 if (!rtc->regmap) in cpcap_rtc_probe()
266 platform_set_drvdata(pdev, rtc); in cpcap_rtc_probe()
267 rtc->rtc_dev = devm_rtc_device_register(dev, "cpcap_rtc", in cpcap_rtc_probe()
270 if (IS_ERR(rtc->rtc_dev)) in cpcap_rtc_probe()
271 return PTR_ERR(rtc->rtc_dev); in cpcap_rtc_probe()
273 err = cpcap_get_vendor(dev, rtc->regmap, &rtc->vendor); in cpcap_rtc_probe()
277 rtc->alarm_irq = platform_get_irq(pdev, 0); in cpcap_rtc_probe()
278 err = devm_request_threaded_irq(dev, rtc->alarm_irq, NULL, in cpcap_rtc_probe()
280 "rtc_alarm", rtc); in cpcap_rtc_probe()
285 disable_irq(rtc->alarm_irq); in cpcap_rtc_probe()
293 rtc->update_irq = platform_get_irq(pdev, 1); in cpcap_rtc_probe()
294 err = devm_request_threaded_irq(dev, rtc->update_irq, NULL, in cpcap_rtc_probe()
296 "rtc_1hz", rtc); in cpcap_rtc_probe()
301 disable_irq(rtc->update_irq); in cpcap_rtc_probe()