Lines Matching refs:twl_rtc
143 struct twl_rtc { struct
162 static int twl_rtc_read_u8(struct twl_rtc *twl_rtc, u8 *data, u8 reg) in twl_rtc_read_u8() argument
166 ret = twl_i2c_read_u8(TWL_MODULE_RTC, data, (twl_rtc->reg_map[reg])); in twl_rtc_read_u8()
175 static int twl_rtc_write_u8(struct twl_rtc *twl_rtc, u8 data, u8 reg) in twl_rtc_write_u8() argument
179 ret = twl_i2c_write_u8(TWL_MODULE_RTC, data, (twl_rtc->reg_map[reg])); in twl_rtc_write_u8()
189 static int set_rtc_irq_bit(struct twl_rtc *twl_rtc, unsigned char bit) in set_rtc_irq_bit() argument
195 if (twl_rtc->rtc_irq_bits & bit) in set_rtc_irq_bit()
198 val = twl_rtc->rtc_irq_bits | bit; in set_rtc_irq_bit()
200 ret = twl_rtc_write_u8(twl_rtc, val, REG_RTC_INTERRUPTS_REG); in set_rtc_irq_bit()
202 twl_rtc->rtc_irq_bits = val; in set_rtc_irq_bit()
210 static int mask_rtc_irq_bit(struct twl_rtc *twl_rtc, unsigned char bit) in mask_rtc_irq_bit() argument
216 if (!(twl_rtc->rtc_irq_bits & bit)) in mask_rtc_irq_bit()
219 val = twl_rtc->rtc_irq_bits & ~bit; in mask_rtc_irq_bit()
220 ret = twl_rtc_write_u8(twl_rtc, val, REG_RTC_INTERRUPTS_REG); in mask_rtc_irq_bit()
222 twl_rtc->rtc_irq_bits = val; in mask_rtc_irq_bit()
230 struct twl_rtc *twl_rtc = dev_get_drvdata(dev); in twl_rtc_alarm_irq_enable() local
235 ret = set_rtc_irq_bit(twl_rtc, in twl_rtc_alarm_irq_enable()
237 if (device_can_wakeup(dev) && !twl_rtc->wake_enabled) { in twl_rtc_alarm_irq_enable()
239 twl_rtc->wake_enabled = true; in twl_rtc_alarm_irq_enable()
242 ret = mask_rtc_irq_bit(twl_rtc, in twl_rtc_alarm_irq_enable()
244 if (twl_rtc->wake_enabled) { in twl_rtc_alarm_irq_enable()
246 twl_rtc->wake_enabled = false; in twl_rtc_alarm_irq_enable()
264 struct twl_rtc *twl_rtc = dev_get_drvdata(dev); in twl_rtc_read_time() local
270 ret = twl_rtc_read_u8(twl_rtc, &save_control, REG_RTC_CTRL_REG); in twl_rtc_read_time()
276 if (twl_rtc->class == TWL_6030) { in twl_rtc_read_time()
279 ret = twl_rtc_write_u8(twl_rtc, save_control, in twl_rtc_read_time()
293 if (twl_rtc->class == TWL_6030) in twl_rtc_read_time()
296 ret = twl_rtc_write_u8(twl_rtc, rtc_control, REG_RTC_CTRL_REG); in twl_rtc_read_time()
303 (twl_rtc->reg_map[REG_SECONDS_REG]), ALL_TIME_REGS); in twl_rtc_read_time()
311 if (twl_rtc->class == TWL_6030) { in twl_rtc_read_time()
312 ret = twl_rtc_write_u8(twl_rtc, save_control, REG_RTC_CTRL_REG); in twl_rtc_read_time()
332 struct twl_rtc *twl_rtc = dev_get_drvdata(dev); in twl_rtc_set_time() local
345 ret = twl_rtc_read_u8(twl_rtc, &save_control, REG_RTC_CTRL_REG); in twl_rtc_set_time()
350 ret = twl_rtc_write_u8(twl_rtc, save_control, REG_RTC_CTRL_REG); in twl_rtc_set_time()
356 (twl_rtc->reg_map[REG_SECONDS_REG]), ALL_TIME_REGS); in twl_rtc_set_time()
364 ret = twl_rtc_write_u8(twl_rtc, save_control, REG_RTC_CTRL_REG); in twl_rtc_set_time()
375 struct twl_rtc *twl_rtc = dev_get_drvdata(dev); in twl_rtc_read_alarm() local
380 twl_rtc->reg_map[REG_ALARM_SECONDS_REG], ALL_TIME_REGS); in twl_rtc_read_alarm()
395 if (twl_rtc->rtc_irq_bits & BIT_RTC_INTERRUPTS_REG_IT_ALARM_M) in twl_rtc_read_alarm()
403 struct twl_rtc *twl_rtc = dev_get_drvdata(dev); in twl_rtc_set_alarm() local
421 twl_rtc->reg_map[REG_ALARM_SECONDS_REG], ALL_TIME_REGS); in twl_rtc_set_alarm()
435 struct twl_rtc *twl_rtc = data; in twl_rtc_interrupt() local
441 res = twl_rtc_read_u8(twl_rtc, &rd_reg, REG_RTC_STATUS_REG); in twl_rtc_interrupt()
455 res = twl_rtc_write_u8(twl_rtc, BIT_RTC_STATUS_REG_ALARM_M, in twl_rtc_interrupt()
460 if (twl_rtc->class == TWL_4030) { in twl_rtc_interrupt()
479 rtc_update_irq(twl_rtc->rtc, 1, events); in twl_rtc_interrupt()
498 struct twl_rtc *twl_rtc; in twl_rtc_probe() local
512 twl_rtc = devm_kzalloc(&pdev->dev, sizeof(*twl_rtc), GFP_KERNEL); in twl_rtc_probe()
513 if (!twl_rtc) in twl_rtc_probe()
517 twl_rtc->class = TWL_4030; in twl_rtc_probe()
518 twl_rtc->reg_map = (u8 *)twl4030_rtc_reg_map; in twl_rtc_probe()
520 twl_rtc->class = TWL_6030; in twl_rtc_probe()
521 twl_rtc->reg_map = (u8 *)twl6030_rtc_reg_map; in twl_rtc_probe()
527 ret = twl_rtc_read_u8(twl_rtc, &rd_reg, REG_RTC_STATUS_REG); in twl_rtc_probe()
538 ret = twl_rtc_write_u8(twl_rtc, rd_reg, REG_RTC_STATUS_REG); in twl_rtc_probe()
542 if (twl_rtc->class == TWL_6030) { in twl_rtc_probe()
550 ret = twl_rtc_write_u8(twl_rtc, BIT_RTC_CTRL_REG_STOP_RTC_M, in twl_rtc_probe()
556 ret = twl_rtc_write_u8(twl_rtc, 0, REG_RTC_INTERRUPTS_REG); in twl_rtc_probe()
561 ret = twl_rtc_read_u8(twl_rtc, &twl_rtc->rtc_irq_bits, in twl_rtc_probe()
566 platform_set_drvdata(pdev, twl_rtc); in twl_rtc_probe()
569 twl_rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, in twl_rtc_probe()
571 if (IS_ERR(twl_rtc->rtc)) { in twl_rtc_probe()
573 PTR_ERR(twl_rtc->rtc)); in twl_rtc_probe()
574 return PTR_ERR(twl_rtc->rtc); in twl_rtc_probe()
580 dev_name(&twl_rtc->rtc->dev), twl_rtc); in twl_rtc_probe()
595 struct twl_rtc *twl_rtc = platform_get_drvdata(pdev); in twl_rtc_remove() local
598 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_ALARM_M); in twl_rtc_remove()
599 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M); in twl_rtc_remove()
600 if (twl_rtc->class == TWL_6030) { in twl_rtc_remove()
612 struct twl_rtc *twl_rtc = platform_get_drvdata(pdev); in twl_rtc_shutdown() local
616 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M); in twl_rtc_shutdown()
622 struct twl_rtc *twl_rtc = dev_get_drvdata(dev); in twl_rtc_suspend() local
624 twl_rtc->irqstat = twl_rtc->rtc_irq_bits; in twl_rtc_suspend()
626 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M); in twl_rtc_suspend()
632 struct twl_rtc *twl_rtc = dev_get_drvdata(dev); in twl_rtc_resume() local
634 set_rtc_irq_bit(twl_rtc, twl_rtc->irqstat); in twl_rtc_resume()