Lines Matching refs:twl_rtc
139 struct twl_rtc {
158 static int twl_rtc_read_u8(struct twl_rtc *twl_rtc, u8 *data, u8 reg)
162 ret = twl_i2c_read_u8(TWL_MODULE_RTC, data, (twl_rtc->reg_map[reg]));
171 static int twl_rtc_write_u8(struct twl_rtc *twl_rtc, u8 data, u8 reg)
175 ret = twl_i2c_write_u8(TWL_MODULE_RTC, data, (twl_rtc->reg_map[reg]));
185 static int set_rtc_irq_bit(struct twl_rtc *twl_rtc, unsigned char bit)
191 if (twl_rtc->rtc_irq_bits & bit)
194 val = twl_rtc->rtc_irq_bits | bit;
196 ret = twl_rtc_write_u8(twl_rtc, val, REG_RTC_INTERRUPTS_REG);
198 twl_rtc->rtc_irq_bits = val;
206 static int mask_rtc_irq_bit(struct twl_rtc *twl_rtc, unsigned char bit)
212 if (!(twl_rtc->rtc_irq_bits & bit))
215 val = twl_rtc->rtc_irq_bits & ~bit;
216 ret = twl_rtc_write_u8(twl_rtc, val, REG_RTC_INTERRUPTS_REG);
218 twl_rtc->rtc_irq_bits = val;
226 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
231 ret = set_rtc_irq_bit(twl_rtc,
233 if (device_can_wakeup(dev) && !twl_rtc->wake_enabled) {
235 twl_rtc->wake_enabled = true;
238 ret = mask_rtc_irq_bit(twl_rtc,
240 if (twl_rtc->wake_enabled) {
242 twl_rtc->wake_enabled = false;
260 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
266 ret = twl_rtc_read_u8(twl_rtc, &save_control, REG_RTC_CTRL_REG);
272 if (twl_rtc->class == TWL_6030) {
275 ret = twl_rtc_write_u8(twl_rtc, save_control,
289 if (twl_rtc->class == TWL_6030)
292 ret = twl_rtc_write_u8(twl_rtc, rtc_control, REG_RTC_CTRL_REG);
299 (twl_rtc->reg_map[REG_SECONDS_REG]), ALL_TIME_REGS);
307 if (twl_rtc->class == TWL_6030) {
308 ret = twl_rtc_write_u8(twl_rtc, save_control, REG_RTC_CTRL_REG);
328 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
341 ret = twl_rtc_read_u8(twl_rtc, &save_control, REG_RTC_CTRL_REG);
346 ret = twl_rtc_write_u8(twl_rtc, save_control, REG_RTC_CTRL_REG);
352 (twl_rtc->reg_map[REG_SECONDS_REG]), ALL_TIME_REGS);
360 ret = twl_rtc_write_u8(twl_rtc, save_control, REG_RTC_CTRL_REG);
371 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
376 twl_rtc->reg_map[REG_ALARM_SECONDS_REG], ALL_TIME_REGS);
391 if (twl_rtc->rtc_irq_bits & BIT_RTC_INTERRUPTS_REG_IT_ALARM_M)
399 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
417 twl_rtc->reg_map[REG_ALARM_SECONDS_REG], ALL_TIME_REGS);
431 struct twl_rtc *twl_rtc = data;
437 res = twl_rtc_read_u8(twl_rtc, &rd_reg, REG_RTC_STATUS_REG);
451 res = twl_rtc_write_u8(twl_rtc, BIT_RTC_STATUS_REG_ALARM_M,
456 if (twl_rtc->class == TWL_4030) {
475 rtc_update_irq(twl_rtc->rtc, 1, events);
494 struct twl_rtc *twl_rtc;
508 twl_rtc = devm_kzalloc(&pdev->dev, sizeof(*twl_rtc), GFP_KERNEL);
509 if (!twl_rtc)
513 twl_rtc->class = TWL_4030;
514 twl_rtc->reg_map = (u8 *)twl4030_rtc_reg_map;
516 twl_rtc->class = TWL_6030;
517 twl_rtc->reg_map = (u8 *)twl6030_rtc_reg_map;
523 ret = twl_rtc_read_u8(twl_rtc, &rd_reg, REG_RTC_STATUS_REG);
534 ret = twl_rtc_write_u8(twl_rtc, rd_reg, REG_RTC_STATUS_REG);
538 if (twl_rtc->class == TWL_6030) {
546 ret = twl_rtc_write_u8(twl_rtc, BIT_RTC_CTRL_REG_STOP_RTC_M,
552 ret = twl_rtc_write_u8(twl_rtc, 0, REG_RTC_INTERRUPTS_REG);
557 ret = twl_rtc_read_u8(twl_rtc, &twl_rtc->rtc_irq_bits,
562 platform_set_drvdata(pdev, twl_rtc);
565 twl_rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
567 if (IS_ERR(twl_rtc->rtc)) {
569 PTR_ERR(twl_rtc->rtc));
570 return PTR_ERR(twl_rtc->rtc);
576 dev_name(&twl_rtc->rtc->dev), twl_rtc);
591 struct twl_rtc *twl_rtc = platform_get_drvdata(pdev);
594 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_ALARM_M);
595 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M);
596 if (twl_rtc->class == TWL_6030) {
608 struct twl_rtc *twl_rtc = platform_get_drvdata(pdev);
612 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M);
618 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
620 twl_rtc->irqstat = twl_rtc->rtc_irq_bits;
622 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M);
628 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
630 set_rtc_irq_bit(twl_rtc, twl_rtc->irqstat);
648 .name = "twl_rtc",