Lines Matching refs:rtc
47 ds1685_read(struct ds1685_priv *rtc, int reg) in ds1685_read() argument
49 return readb((u8 __iomem *)rtc->regs + in ds1685_read()
50 (reg * rtc->regstep)); in ds1685_read()
60 ds1685_write(struct ds1685_priv *rtc, int reg, u8 value) in ds1685_write() argument
62 writeb(value, ((u8 __iomem *)rtc->regs + in ds1685_write()
63 (reg * rtc->regstep))); in ds1685_write()
81 ds1685_rtc_bcd2bin(struct ds1685_priv *rtc, u8 val, u8 bcd_mask, u8 bin_mask) in ds1685_rtc_bcd2bin() argument
83 if (rtc->bcd_mode) in ds1685_rtc_bcd2bin()
99 ds1685_rtc_bin2bcd(struct ds1685_priv *rtc, u8 val, u8 bin_mask, u8 bcd_mask) in ds1685_rtc_bin2bcd() argument
101 if (rtc->bcd_mode) in ds1685_rtc_bin2bcd()
112 ds1685_rtc_switch_to_bank0(struct ds1685_priv *rtc) in ds1685_rtc_switch_to_bank0() argument
114 rtc->write(rtc, RTC_CTRL_A, in ds1685_rtc_switch_to_bank0()
115 (rtc->read(rtc, RTC_CTRL_A) & ~(RTC_CTRL_A_DV0))); in ds1685_rtc_switch_to_bank0()
123 ds1685_rtc_switch_to_bank1(struct ds1685_priv *rtc) in ds1685_rtc_switch_to_bank1() argument
125 rtc->write(rtc, RTC_CTRL_A, in ds1685_rtc_switch_to_bank1()
126 (rtc->read(rtc, RTC_CTRL_A) | RTC_CTRL_A_DV0)); in ds1685_rtc_switch_to_bank1()
143 ds1685_rtc_begin_data_access(struct ds1685_priv *rtc) in ds1685_rtc_begin_data_access() argument
146 rtc->write(rtc, RTC_CTRL_B, in ds1685_rtc_begin_data_access()
147 (rtc->read(rtc, RTC_CTRL_B) | RTC_CTRL_B_SET)); in ds1685_rtc_begin_data_access()
150 while (rtc->read(rtc, RTC_EXT_CTRL_4A) & RTC_CTRL_4A_INCR) in ds1685_rtc_begin_data_access()
154 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_begin_data_access()
166 ds1685_rtc_end_data_access(struct ds1685_priv *rtc) in ds1685_rtc_end_data_access() argument
169 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_end_data_access()
172 rtc->write(rtc, RTC_CTRL_B, in ds1685_rtc_end_data_access()
173 (rtc->read(rtc, RTC_CTRL_B) & ~(RTC_CTRL_B_SET))); in ds1685_rtc_end_data_access()
190 ds1685_rtc_begin_ctrl_access(struct ds1685_priv *rtc, unsigned long *flags) in ds1685_rtc_begin_ctrl_access() argument
192 spin_lock_irqsave(&rtc->lock, *flags); in ds1685_rtc_begin_ctrl_access()
193 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_begin_ctrl_access()
206 ds1685_rtc_end_ctrl_access(struct ds1685_priv *rtc, unsigned long flags) in ds1685_rtc_end_ctrl_access() argument
208 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_end_ctrl_access()
209 spin_unlock_irqrestore(&rtc->lock, flags); in ds1685_rtc_end_ctrl_access()
227 ds1685_rtc_get_ssn(struct ds1685_priv *rtc, u8 *ssn) in ds1685_rtc_get_ssn() argument
229 ssn[0] = rtc->read(rtc, RTC_BANK1_SSN_MODEL); in ds1685_rtc_get_ssn()
230 ssn[1] = rtc->read(rtc, RTC_BANK1_SSN_BYTE_1); in ds1685_rtc_get_ssn()
231 ssn[2] = rtc->read(rtc, RTC_BANK1_SSN_BYTE_2); in ds1685_rtc_get_ssn()
232 ssn[3] = rtc->read(rtc, RTC_BANK1_SSN_BYTE_3); in ds1685_rtc_get_ssn()
233 ssn[4] = rtc->read(rtc, RTC_BANK1_SSN_BYTE_4); in ds1685_rtc_get_ssn()
234 ssn[5] = rtc->read(rtc, RTC_BANK1_SSN_BYTE_5); in ds1685_rtc_get_ssn()
235 ssn[6] = rtc->read(rtc, RTC_BANK1_SSN_BYTE_6); in ds1685_rtc_get_ssn()
236 ssn[7] = rtc->read(rtc, RTC_BANK1_SSN_CRC); in ds1685_rtc_get_ssn()
253 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_read_time() local
258 ds1685_rtc_begin_data_access(rtc); in ds1685_rtc_read_time()
259 seconds = rtc->read(rtc, RTC_SECS); in ds1685_rtc_read_time()
260 minutes = rtc->read(rtc, RTC_MINS); in ds1685_rtc_read_time()
261 hours = rtc->read(rtc, RTC_HRS); in ds1685_rtc_read_time()
262 wday = rtc->read(rtc, RTC_WDAY); in ds1685_rtc_read_time()
263 mday = rtc->read(rtc, RTC_MDAY); in ds1685_rtc_read_time()
264 month = rtc->read(rtc, RTC_MONTH); in ds1685_rtc_read_time()
265 years = rtc->read(rtc, RTC_YEAR); in ds1685_rtc_read_time()
266 century = rtc->read(rtc, RTC_CENTURY); in ds1685_rtc_read_time()
267 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_read_time()
268 ds1685_rtc_end_data_access(rtc); in ds1685_rtc_read_time()
271 years = ds1685_rtc_bcd2bin(rtc, years, RTC_YEAR_BCD_MASK, in ds1685_rtc_read_time()
273 century = ds1685_rtc_bcd2bin(rtc, century, RTC_CENTURY_MASK, in ds1685_rtc_read_time()
275 tm->tm_sec = ds1685_rtc_bcd2bin(rtc, seconds, RTC_SECS_BCD_MASK, in ds1685_rtc_read_time()
277 tm->tm_min = ds1685_rtc_bcd2bin(rtc, minutes, RTC_MINS_BCD_MASK, in ds1685_rtc_read_time()
279 tm->tm_hour = ds1685_rtc_bcd2bin(rtc, hours, RTC_HRS_24_BCD_MASK, in ds1685_rtc_read_time()
281 tm->tm_wday = (ds1685_rtc_bcd2bin(rtc, wday, RTC_WDAY_MASK, in ds1685_rtc_read_time()
283 tm->tm_mday = ds1685_rtc_bcd2bin(rtc, mday, RTC_MDAY_BCD_MASK, in ds1685_rtc_read_time()
285 tm->tm_mon = (ds1685_rtc_bcd2bin(rtc, month, RTC_MONTH_BCD_MASK, in ds1685_rtc_read_time()
303 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_set_time() local
307 seconds = ds1685_rtc_bin2bcd(rtc, tm->tm_sec, RTC_SECS_BIN_MASK, in ds1685_rtc_set_time()
309 minutes = ds1685_rtc_bin2bcd(rtc, tm->tm_min, RTC_MINS_BIN_MASK, in ds1685_rtc_set_time()
311 hours = ds1685_rtc_bin2bcd(rtc, tm->tm_hour, RTC_HRS_24_BIN_MASK, in ds1685_rtc_set_time()
313 wday = ds1685_rtc_bin2bcd(rtc, (tm->tm_wday + 1), RTC_WDAY_MASK, in ds1685_rtc_set_time()
315 mday = ds1685_rtc_bin2bcd(rtc, tm->tm_mday, RTC_MDAY_BIN_MASK, in ds1685_rtc_set_time()
317 month = ds1685_rtc_bin2bcd(rtc, (tm->tm_mon + 1), RTC_MONTH_BIN_MASK, in ds1685_rtc_set_time()
319 years = ds1685_rtc_bin2bcd(rtc, (tm->tm_year % 100), in ds1685_rtc_set_time()
321 century = ds1685_rtc_bin2bcd(rtc, ((tm->tm_year + 1900) / 100), in ds1685_rtc_set_time()
344 ds1685_rtc_begin_data_access(rtc); in ds1685_rtc_set_time()
345 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_set_time()
346 if (rtc->bcd_mode) in ds1685_rtc_set_time()
350 rtc->write(rtc, RTC_CTRL_B, ctrlb); in ds1685_rtc_set_time()
351 rtc->write(rtc, RTC_SECS, seconds); in ds1685_rtc_set_time()
352 rtc->write(rtc, RTC_MINS, minutes); in ds1685_rtc_set_time()
353 rtc->write(rtc, RTC_HRS, hours); in ds1685_rtc_set_time()
354 rtc->write(rtc, RTC_WDAY, wday); in ds1685_rtc_set_time()
355 rtc->write(rtc, RTC_MDAY, mday); in ds1685_rtc_set_time()
356 rtc->write(rtc, RTC_MONTH, month); in ds1685_rtc_set_time()
357 rtc->write(rtc, RTC_YEAR, years); in ds1685_rtc_set_time()
358 rtc->write(rtc, RTC_CENTURY, century); in ds1685_rtc_set_time()
359 ds1685_rtc_end_data_access(rtc); in ds1685_rtc_set_time()
380 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_read_alarm() local
384 ds1685_rtc_begin_data_access(rtc); in ds1685_rtc_read_alarm()
385 seconds = rtc->read(rtc, RTC_SECS_ALARM); in ds1685_rtc_read_alarm()
386 minutes = rtc->read(rtc, RTC_MINS_ALARM); in ds1685_rtc_read_alarm()
387 hours = rtc->read(rtc, RTC_HRS_ALARM); in ds1685_rtc_read_alarm()
388 mday = rtc->read(rtc, RTC_MDAY_ALARM); in ds1685_rtc_read_alarm()
389 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_read_alarm()
390 ctrlc = rtc->read(rtc, RTC_CTRL_C); in ds1685_rtc_read_alarm()
391 ds1685_rtc_end_data_access(rtc); in ds1685_rtc_read_alarm()
407 alrm->time.tm_sec = ds1685_rtc_bcd2bin(rtc, seconds, in ds1685_rtc_read_alarm()
414 alrm->time.tm_min = ds1685_rtc_bcd2bin(rtc, minutes, in ds1685_rtc_read_alarm()
421 alrm->time.tm_hour = ds1685_rtc_bcd2bin(rtc, hours, in ds1685_rtc_read_alarm()
426 alrm->time.tm_mday = ds1685_rtc_bcd2bin(rtc, mday, RTC_MDAY_BCD_MASK, in ds1685_rtc_read_alarm()
448 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_set_alarm() local
452 seconds = ds1685_rtc_bin2bcd(rtc, alrm->time.tm_sec, in ds1685_rtc_set_alarm()
455 minutes = ds1685_rtc_bin2bcd(rtc, alrm->time.tm_min, in ds1685_rtc_set_alarm()
458 hours = ds1685_rtc_bin2bcd(rtc, alrm->time.tm_hour, in ds1685_rtc_set_alarm()
461 mday = ds1685_rtc_bin2bcd(rtc, alrm->time.tm_mday, in ds1685_rtc_set_alarm()
493 ds1685_rtc_begin_data_access(rtc); in ds1685_rtc_set_alarm()
494 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_set_alarm()
495 rtc->write(rtc, RTC_CTRL_B, (ctrlb & ~(RTC_CTRL_B_AIE))); in ds1685_rtc_set_alarm()
498 rtc->read(rtc, RTC_CTRL_C); in ds1685_rtc_set_alarm()
504 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_set_alarm()
505 if (rtc->bcd_mode) in ds1685_rtc_set_alarm()
509 rtc->write(rtc, RTC_CTRL_B, ctrlb); in ds1685_rtc_set_alarm()
510 rtc->write(rtc, RTC_SECS_ALARM, seconds); in ds1685_rtc_set_alarm()
511 rtc->write(rtc, RTC_MINS_ALARM, minutes); in ds1685_rtc_set_alarm()
512 rtc->write(rtc, RTC_HRS_ALARM, hours); in ds1685_rtc_set_alarm()
513 rtc->write(rtc, RTC_MDAY_ALARM, mday); in ds1685_rtc_set_alarm()
517 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_set_alarm()
519 rtc->write(rtc, RTC_CTRL_B, ctrlb); in ds1685_rtc_set_alarm()
523 ds1685_rtc_end_data_access(rtc); in ds1685_rtc_set_alarm()
541 struct ds1685_priv *rtc = dev_get_drvdata(dev); in ds1685_rtc_alarm_irq_enable() local
545 spin_lock_irqsave(&rtc->lock, flags); in ds1685_rtc_alarm_irq_enable()
549 rtc->write(rtc, RTC_CTRL_B, (rtc->read(rtc, RTC_CTRL_B) | in ds1685_rtc_alarm_irq_enable()
552 rtc->write(rtc, RTC_CTRL_B, (rtc->read(rtc, RTC_CTRL_B) & in ds1685_rtc_alarm_irq_enable()
556 rtc->read(rtc, RTC_CTRL_C); in ds1685_rtc_alarm_irq_enable()
557 spin_unlock_irqrestore(&rtc->lock, flags); in ds1685_rtc_alarm_irq_enable()
576 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_irq_handler() local
582 if (unlikely(!rtc)) in ds1685_rtc_irq_handler()
586 spin_lock(&rtc->lock); in ds1685_rtc_irq_handler()
587 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_irq_handler()
588 ctrlc = rtc->read(rtc, RTC_CTRL_C); in ds1685_rtc_irq_handler()
621 rtc_update_irq(rtc->dev, num_irqs, events); in ds1685_rtc_irq_handler()
631 spin_unlock(&rtc->lock); in ds1685_rtc_irq_handler()
632 schedule_work(&rtc->work); in ds1685_rtc_irq_handler()
633 rtc_update_irq(rtc->dev, 0, 0); in ds1685_rtc_irq_handler()
637 spin_unlock(&rtc->lock); in ds1685_rtc_irq_handler()
649 struct ds1685_priv *rtc = container_of(work, in ds1685_rtc_work_queue() local
651 struct platform_device *pdev = to_platform_device(&rtc->dev->dev); in ds1685_rtc_work_queue()
652 struct mutex *rtc_mutex = &rtc->dev->ops_lock; in ds1685_rtc_work_queue()
657 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_work_queue()
658 ctrl4a = rtc->read(rtc, RTC_EXT_CTRL_4A); in ds1685_rtc_work_queue()
659 ctrl4b = rtc->read(rtc, RTC_EXT_CTRL_4B); in ds1685_rtc_work_queue()
668 rtc->write(rtc, RTC_EXT_CTRL_4B, in ds1685_rtc_work_queue()
669 (rtc->read(rtc, RTC_EXT_CTRL_4B) & in ds1685_rtc_work_queue()
673 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_work_queue()
683 rtc->write(rtc, RTC_EXT_CTRL_4B, in ds1685_rtc_work_queue()
684 (rtc->read(rtc, RTC_EXT_CTRL_4B) | in ds1685_rtc_work_queue()
688 if (rtc->prepare_poweroff != NULL) in ds1685_rtc_work_queue()
689 rtc->prepare_poweroff(); in ds1685_rtc_work_queue()
701 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_work_queue()
705 if (rtc->wake_alarm != NULL) in ds1685_rtc_work_queue()
706 rtc->wake_alarm(); in ds1685_rtc_work_queue()
723 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_work_queue()
728 if (rtc->post_ram_clear != NULL) in ds1685_rtc_work_queue()
729 rtc->post_ram_clear(); in ds1685_rtc_work_queue()
734 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_work_queue()
802 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_proc() local
810 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_proc()
811 ds1685_rtc_get_ssn(rtc, ssn); in ds1685_rtc_proc()
812 ctrla = rtc->read(rtc, RTC_CTRL_A); in ds1685_rtc_proc()
813 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_proc()
814 ctrlc = rtc->read(rtc, RTC_CTRL_C); in ds1685_rtc_proc()
815 ctrld = rtc->read(rtc, RTC_CTRL_D); in ds1685_rtc_proc()
816 ctrl4a = rtc->read(rtc, RTC_EXT_CTRL_4A); in ds1685_rtc_proc()
817 ctrl4b = rtc->read(rtc, RTC_EXT_CTRL_4B); in ds1685_rtc_proc()
818 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_proc()
944 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_sysfs_nvram_read() local
948 spin_lock_irqsave(&rtc->lock, flags); in ds1685_rtc_sysfs_nvram_read()
949 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_sysfs_nvram_read()
955 *buf++ = rtc->read(rtc, (NVRAM_TIME_BASE + pos++)); in ds1685_rtc_sysfs_nvram_read()
957 *buf++ = rtc->read(rtc, (NVRAM_BANK0_BASE + pos++)); in ds1685_rtc_sysfs_nvram_read()
962 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_sysfs_nvram_read()
966 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_sysfs_nvram_read()
967 (rtc->read(rtc, RTC_EXT_CTRL_4A) | in ds1685_rtc_sysfs_nvram_read()
972 rtc->write(rtc, RTC_BANK1_RAM_ADDR_LSB, in ds1685_rtc_sysfs_nvram_read()
982 rtc->write(rtc, RTC_BANK1_RAM_ADDR, in ds1685_rtc_sysfs_nvram_read()
985 *buf++ = rtc->read(rtc, RTC_BANK1_RAM_DATA_PORT); in ds1685_rtc_sysfs_nvram_read()
991 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_sysfs_nvram_read()
992 (rtc->read(rtc, RTC_EXT_CTRL_4A) & in ds1685_rtc_sysfs_nvram_read()
995 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_sysfs_nvram_read()
998 spin_unlock_irqrestore(&rtc->lock, flags); in ds1685_rtc_sysfs_nvram_read()
1024 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_sysfs_nvram_write() local
1028 spin_lock_irqsave(&rtc->lock, flags); in ds1685_rtc_sysfs_nvram_write()
1029 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_sysfs_nvram_write()
1035 rtc->write(rtc, (NVRAM_TIME_BASE + pos++), in ds1685_rtc_sysfs_nvram_write()
1038 rtc->write(rtc, (NVRAM_BANK0_BASE), *buf++); in ds1685_rtc_sysfs_nvram_write()
1042 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_sysfs_nvram_write()
1046 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_sysfs_nvram_write()
1047 (rtc->read(rtc, RTC_EXT_CTRL_4A) | in ds1685_rtc_sysfs_nvram_write()
1052 rtc->write(rtc, RTC_BANK1_RAM_ADDR_LSB, in ds1685_rtc_sysfs_nvram_write()
1062 rtc->write(rtc, RTC_BANK1_RAM_ADDR, in ds1685_rtc_sysfs_nvram_write()
1065 rtc->write(rtc, RTC_BANK1_RAM_DATA_PORT, *buf++); in ds1685_rtc_sysfs_nvram_write()
1071 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_sysfs_nvram_write()
1072 (rtc->read(rtc, RTC_EXT_CTRL_4A) & in ds1685_rtc_sysfs_nvram_write()
1075 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_sysfs_nvram_write()
1078 spin_unlock_irqrestore(&rtc->lock, flags); in ds1685_rtc_sysfs_nvram_write()
1112 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_sysfs_battery_show() local
1115 ctrld = rtc->read(rtc, RTC_CTRL_D); in ds1685_rtc_sysfs_battery_show()
1133 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_sysfs_auxbatt_show() local
1136 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_sysfs_auxbatt_show()
1137 ctrl4a = rtc->read(rtc, RTC_EXT_CTRL_4A); in ds1685_rtc_sysfs_auxbatt_show()
1138 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_sysfs_auxbatt_show()
1156 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_sysfs_serial_show() local
1159 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_sysfs_serial_show()
1160 ds1685_rtc_get_ssn(rtc, ssn); in ds1685_rtc_sysfs_serial_show()
1161 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_sysfs_serial_show()
1277 struct ds1685_priv *rtc = dev_get_drvdata(dev); in ds1685_rtc_sysfs_ctrl_regs_show() local
1286 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_sysfs_ctrl_regs_show()
1287 tmp = rtc->read(rtc, reg_info->reg) & reg_info->bit; in ds1685_rtc_sysfs_ctrl_regs_show()
1288 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_sysfs_ctrl_regs_show()
1305 struct ds1685_priv *rtc = dev_get_drvdata(dev); in ds1685_rtc_sysfs_ctrl_regs_store() local
1328 ds1685_rtc_begin_ctrl_access(rtc, &flags); in ds1685_rtc_sysfs_ctrl_regs_store()
1329 tmp = rtc->read(rtc, reg); in ds1685_rtc_sysfs_ctrl_regs_store()
1330 rtc->write(rtc, reg, (val ? (tmp | bit) : (tmp & ~(bit)))); in ds1685_rtc_sysfs_ctrl_regs_store()
1331 ds1685_rtc_end_ctrl_access(rtc, flags); in ds1685_rtc_sysfs_ctrl_regs_store()
1608 struct ds1685_priv *rtc = dev_get_drvdata(dev); in ds1685_rtc_sysfs_time_regs_show() local
1619 ds1685_rtc_begin_data_access(rtc); in ds1685_rtc_sysfs_time_regs_show()
1620 tmp = rtc->read(rtc, bcd_reg_info->reg); in ds1685_rtc_sysfs_time_regs_show()
1621 ds1685_rtc_end_data_access(rtc); in ds1685_rtc_sysfs_time_regs_show()
1623 tmp = ds1685_rtc_bcd2bin(rtc, tmp, bcd_reg_info->mask, in ds1685_rtc_sysfs_time_regs_show()
1642 struct ds1685_priv *rtc = dev_get_drvdata(dev); in ds1685_rtc_sysfs_time_regs_store() local
1657 if (rtc->bcd_mode) { in ds1685_rtc_sysfs_time_regs_store()
1665 val = ds1685_rtc_bin2bcd(rtc, val, bin_reg_info->mask, in ds1685_rtc_sysfs_time_regs_store()
1669 ds1685_rtc_begin_data_access(rtc); in ds1685_rtc_sysfs_time_regs_store()
1670 rtc->write(rtc, bcd_reg_info->reg, val); in ds1685_rtc_sysfs_time_regs_store()
1671 ds1685_rtc_end_data_access(rtc); in ds1685_rtc_sysfs_time_regs_store()
1830 struct ds1685_priv *rtc; in ds1685_rtc_probe() local
1842 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); in ds1685_rtc_probe()
1843 if (!rtc) in ds1685_rtc_probe()
1857 rtc->size = resource_size(res); in ds1685_rtc_probe()
1861 if (!devm_request_mem_region(&pdev->dev, res->start, rtc->size, in ds1685_rtc_probe()
1869 rtc->baseaddr = res->start; in ds1685_rtc_probe()
1870 rtc->regs = devm_ioremap(&pdev->dev, res->start, rtc->size); in ds1685_rtc_probe()
1871 if (!rtc->regs) in ds1685_rtc_probe()
1874 rtc->alloc_io_resources = pdata->alloc_io_resources; in ds1685_rtc_probe()
1878 rtc->regstep = pdata->regstep; in ds1685_rtc_probe()
1880 rtc->regstep = 1; in ds1685_rtc_probe()
1884 rtc->read = pdata->plat_read; in ds1685_rtc_probe()
1887 rtc->read = ds1685_read; in ds1685_rtc_probe()
1893 rtc->write = pdata->plat_write; in ds1685_rtc_probe()
1896 rtc->write = ds1685_write; in ds1685_rtc_probe()
1902 rtc->prepare_poweroff = pdata->plat_prepare_poweroff; in ds1685_rtc_probe()
1906 rtc->wake_alarm = pdata->plat_wake_alarm; in ds1685_rtc_probe()
1910 rtc->post_ram_clear = pdata->plat_post_ram_clear; in ds1685_rtc_probe()
1913 spin_lock_init(&rtc->lock); in ds1685_rtc_probe()
1914 INIT_WORK(&rtc->work, ds1685_rtc_work_queue); in ds1685_rtc_probe()
1915 platform_set_drvdata(pdev, rtc); in ds1685_rtc_probe()
1918 ctrla = rtc->read(rtc, RTC_CTRL_A); in ds1685_rtc_probe()
1933 rtc->write(rtc, RTC_CTRL_A, ctrla); in ds1685_rtc_probe()
1936 rtc->write(rtc, RTC_EXT_CTRL_4B, in ds1685_rtc_probe()
1937 (rtc->read(rtc, RTC_EXT_CTRL_4B) | RTC_CTRL_4B_E32K)); in ds1685_rtc_probe()
1940 rtc->write(rtc, RTC_CTRL_B, in ds1685_rtc_probe()
1941 (rtc->read(rtc, RTC_CTRL_B) | RTC_CTRL_B_SET)); in ds1685_rtc_probe()
1944 while (rtc->read(rtc, RTC_EXT_CTRL_4A) & RTC_CTRL_4A_INCR) in ds1685_rtc_probe()
1951 ctrlb = rtc->read(rtc, RTC_CTRL_B); in ds1685_rtc_probe()
1956 rtc->bcd_mode = pdata->bcd_mode; in ds1685_rtc_probe()
1969 hours = rtc->read(rtc, RTC_HRS); in ds1685_rtc_probe()
1971 hours = ds1685_rtc_bcd2bin(rtc, hours, RTC_HRS_12_BCD_MASK, in ds1685_rtc_probe()
1979 rtc->write(rtc, RTC_CTRL_B, ctrlb); in ds1685_rtc_probe()
1982 rtc->write(rtc, RTC_HRS, in ds1685_rtc_probe()
1983 ds1685_rtc_bin2bcd(rtc, hours, in ds1685_rtc_probe()
1988 hours = rtc->read(rtc, RTC_HRS_ALARM); in ds1685_rtc_probe()
1990 hours = ds1685_rtc_bcd2bin(rtc, hours, RTC_HRS_12_BCD_MASK, in ds1685_rtc_probe()
1995 rtc->write(rtc, RTC_HRS_ALARM, in ds1685_rtc_probe()
1996 ds1685_rtc_bin2bcd(rtc, hours, in ds1685_rtc_probe()
2001 rtc->write(rtc, RTC_CTRL_B, ctrlb); in ds1685_rtc_probe()
2005 rtc->write(rtc, RTC_CTRL_B, in ds1685_rtc_probe()
2006 (rtc->read(rtc, RTC_CTRL_B) & ~(RTC_CTRL_B_SET))); in ds1685_rtc_probe()
2009 if (!(rtc->read(rtc, RTC_CTRL_D) & RTC_CTRL_D_VRT)) in ds1685_rtc_probe()
2014 if (!(rtc->read(rtc, RTC_EXT_CTRL_4A) & RTC_CTRL_4A_VRT2)) in ds1685_rtc_probe()
2019 rtc->write(rtc, RTC_CTRL_B, in ds1685_rtc_probe()
2020 (rtc->read(rtc, RTC_CTRL_B) & ~(RTC_CTRL_B_PAU_MASK))); in ds1685_rtc_probe()
2023 rtc->read(rtc, RTC_CTRL_C); in ds1685_rtc_probe()
2026 rtc->write(rtc, RTC_EXT_CTRL_4B, in ds1685_rtc_probe()
2027 (rtc->read(rtc, RTC_EXT_CTRL_4B) & ~(RTC_CTRL_4B_RWK_MASK))); in ds1685_rtc_probe()
2030 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_probe()
2031 (rtc->read(rtc, RTC_EXT_CTRL_4A) & ~(RTC_CTRL_4A_RWK_MASK))); in ds1685_rtc_probe()
2037 rtc->write(rtc, RTC_EXT_CTRL_4B, in ds1685_rtc_probe()
2038 (rtc->read(rtc, RTC_EXT_CTRL_4B) | RTC_CTRL_4B_KSE)); in ds1685_rtc_probe()
2051 rtc->irq_num = ret; in ds1685_rtc_probe()
2054 ret = devm_request_irq(&pdev->dev, rtc->irq_num, in ds1685_rtc_probe()
2062 rtc->irq_num = 0; in ds1685_rtc_probe()
2067 rtc->no_irq = pdata->no_irq; in ds1685_rtc_probe()
2070 ds1685_rtc_switch_to_bank0(rtc); in ds1685_rtc_probe()
2086 rtc->uie_unsupported = pdata->uie_unsupported; in ds1685_rtc_probe()
2088 rtc->dev = rtc_dev; in ds1685_rtc_probe()
2093 rtc_device_unregister(rtc->dev); in ds1685_rtc_probe()
2107 struct ds1685_priv *rtc = platform_get_drvdata(pdev); in ds1685_rtc_remove() local
2113 rtc_device_unregister(rtc->dev); in ds1685_rtc_remove()
2116 rtc->write(rtc, RTC_CTRL_B, in ds1685_rtc_remove()
2117 (rtc->read(rtc, RTC_CTRL_B) & in ds1685_rtc_remove()
2121 rtc->read(rtc, RTC_CTRL_C); in ds1685_rtc_remove()
2124 rtc->write(rtc, RTC_EXT_CTRL_4B, in ds1685_rtc_remove()
2125 (rtc->read(rtc, RTC_EXT_CTRL_4B) & in ds1685_rtc_remove()
2129 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_remove()
2130 (rtc->read(rtc, RTC_EXT_CTRL_4A) & in ds1685_rtc_remove()
2133 cancel_work_sync(&rtc->work); in ds1685_rtc_remove()
2163 struct ds1685_priv *rtc; in ds1685_rtc_poweroff() local
2171 rtc = platform_get_drvdata(pdev); in ds1685_rtc_poweroff()
2179 if (!rtc->no_irq) in ds1685_rtc_poweroff()
2180 disable_irq_nosync(rtc->irq_num); in ds1685_rtc_poweroff()
2183 ctrla = rtc->read(rtc, RTC_CTRL_A); in ds1685_rtc_poweroff()
2186 rtc->write(rtc, RTC_CTRL_A, ctrla); in ds1685_rtc_poweroff()
2193 ds1685_rtc_switch_to_bank1(rtc); in ds1685_rtc_poweroff()
2194 ctrl4a = rtc->read(rtc, RTC_EXT_CTRL_4A); in ds1685_rtc_poweroff()
2198 rtc->write(rtc, RTC_EXT_CTRL_4A, ctrl4a); in ds1685_rtc_poweroff()
2206 ctrl4b = rtc->read(rtc, RTC_EXT_CTRL_4B); in ds1685_rtc_poweroff()
2209 rtc->write(rtc, RTC_EXT_CTRL_4B, ctrl4b); in ds1685_rtc_poweroff()
2215 rtc->write(rtc, RTC_EXT_CTRL_4A, in ds1685_rtc_poweroff()