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);
506 struct twl_rtc *twl_rtc;
521 twl_rtc = devm_kzalloc(&pdev->dev, sizeof(*twl_rtc), GFP_KERNEL);
522 if (!twl_rtc)
526 twl_rtc->class = TWL_4030;
527 twl_rtc->reg_map = (u8 *)twl4030_rtc_reg_map;
529 twl_rtc->class = TWL_6030;
530 twl_rtc->reg_map = (u8 *)twl6030_rtc_reg_map;
536 ret = twl_rtc_read_u8(twl_rtc, &rd_reg, REG_RTC_STATUS_REG);
547 ret = twl_rtc_write_u8(twl_rtc, rd_reg, REG_RTC_STATUS_REG);
551 if (twl_rtc->class == TWL_6030) {
558 ret = twl_rtc_write_u8(twl_rtc, BIT_RTC_CTRL_REG_STOP_RTC_M,
564 ret = twl_rtc_write_u8(twl_rtc, 0, REG_RTC_INTERRUPTS_REG);
569 ret = twl_rtc_read_u8(twl_rtc, &twl_rtc->rtc_irq_bits,
574 platform_set_drvdata(pdev, twl_rtc);
577 twl_rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
579 if (IS_ERR(twl_rtc->rtc))
580 return PTR_ERR(twl_rtc->rtc);
585 dev_name(&twl_rtc->rtc->dev), twl_rtc);
602 devm_rtc_nvmem_register(twl_rtc->rtc, &nvmem_cfg);
607 devm_rtc_nvmem_register(twl_rtc->rtc, &nvmem_cfg);
612 devm_rtc_nvmem_register(twl_rtc->rtc, &nvmem_cfg);
624 struct twl_rtc *twl_rtc = platform_get_drvdata(pdev);
627 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_ALARM_M);
628 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M);
629 if (twl_rtc->class == TWL_6030) {
639 struct twl_rtc *twl_rtc = platform_get_drvdata(pdev);
643 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M);
649 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
651 twl_rtc->irqstat = twl_rtc->rtc_irq_bits;
653 mask_rtc_irq_bit(twl_rtc, BIT_RTC_INTERRUPTS_REG_IT_TIMER_M);
659 struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
661 set_rtc_irq_bit(twl_rtc, twl_rtc->irqstat);
679 .name = "twl_rtc",