Lines Matching refs:data
26 * in S5M_RTC_UDR_CON register. UDR is auto-cleared when data have
173 static void s5m8767_data_to_tm(u8 *data, struct rtc_time *tm,
176 tm->tm_sec = data[RTC_SEC] & 0x7f;
177 tm->tm_min = data[RTC_MIN] & 0x7f;
179 tm->tm_hour = data[RTC_HOUR] & 0x1f;
181 tm->tm_hour = data[RTC_HOUR] & 0x0f;
182 if (data[RTC_HOUR] & HOUR_PM_MASK)
186 tm->tm_wday = ffs(data[RTC_WEEKDAY] & 0x7f);
187 tm->tm_mday = data[RTC_DATE] & 0x1f;
188 tm->tm_mon = (data[RTC_MONTH] & 0x0f) - 1;
189 tm->tm_year = (data[RTC_YEAR1] & 0x7f) + 100;
194 static int s5m8767_tm_to_data(struct rtc_time *tm, u8 *data)
196 data[RTC_SEC] = tm->tm_sec;
197 data[RTC_MIN] = tm->tm_min;
200 data[RTC_HOUR] = tm->tm_hour | HOUR_PM_MASK;
202 data[RTC_HOUR] = tm->tm_hour & ~HOUR_PM_MASK;
204 data[RTC_WEEKDAY] = 1 << tm->tm_wday;
205 data[RTC_DATE] = tm->tm_mday;
206 data[RTC_MONTH] = tm->tm_mon + 1;
207 data[RTC_YEAR1] = tm->tm_year > 100 ? (tm->tm_year - 100) : 0;
225 unsigned int data;
228 ret = regmap_read(info->regmap, info->regs->udr_update, &data);
229 } while (--retry && (data & info->regs->autoclear_udr_mask) && !ret);
273 unsigned int data;
275 ret = regmap_read(info->regmap, info->regs->udr_update, &data);
281 data |= info->regs->write_time_udr_mask;
283 ret = regmap_write(info->regmap, info->regs->udr_update, data);
297 unsigned int data;
299 ret = regmap_read(info->regmap, info->regs->udr_update, &data);
306 data |= info->regs->write_alarm_udr_mask;
310 data &= ~S5M_RTC_TIME_EN_MASK;
321 ret = regmap_write(info->regmap, info->regs->udr_update, data);
338 static void s5m8763_data_to_tm(u8 *data, struct rtc_time *tm)
340 tm->tm_sec = bcd2bin(data[RTC_SEC]);
341 tm->tm_min = bcd2bin(data[RTC_MIN]);
343 if (data[RTC_HOUR] & HOUR_12) {
344 tm->tm_hour = bcd2bin(data[RTC_HOUR] & 0x1f);
345 if (data[RTC_HOUR] & HOUR_PM)
348 tm->tm_hour = bcd2bin(data[RTC_HOUR] & 0x3f);
351 tm->tm_wday = data[RTC_WEEKDAY] & 0x07;
352 tm->tm_mday = bcd2bin(data[RTC_DATE]);
353 tm->tm_mon = bcd2bin(data[RTC_MONTH]);
354 tm->tm_year = bcd2bin(data[RTC_YEAR1]) + bcd2bin(data[RTC_YEAR2]) * 100;
358 static void s5m8763_tm_to_data(struct rtc_time *tm, u8 *data)
360 data[RTC_SEC] = bin2bcd(tm->tm_sec);
361 data[RTC_MIN] = bin2bcd(tm->tm_min);
362 data[RTC_HOUR] = bin2bcd(tm->tm_hour);
363 data[RTC_WEEKDAY] = tm->tm_wday;
364 data[RTC_DATE] = bin2bcd(tm->tm_mday);
365 data[RTC_MONTH] = bin2bcd(tm->tm_mon);
366 data[RTC_YEAR1] = bin2bcd(tm->tm_year % 100);
367 data[RTC_YEAR2] = bin2bcd((tm->tm_year + 1900) / 100);
373 u8 data[RTC_MAX_NUM_TIME_REGS];
388 ret = regmap_bulk_read(info->regmap, info->regs->time, data,
395 s5m8763_data_to_tm(data, tm);
402 s5m8767_data_to_tm(data, tm, info->rtc_24hr_mode);
417 u8 data[RTC_MAX_NUM_TIME_REGS];
422 s5m8763_tm_to_data(tm, data);
428 ret = s5m8767_tm_to_data(tm, data);
439 ret = regmap_raw_write(info->regmap, info->regs->time, data,
452 u8 data[RTC_MAX_NUM_TIME_REGS];
456 ret = regmap_bulk_read(info->regmap, info->regs->alarm0, data,
463 s5m8763_data_to_tm(data, &alrm->time);
475 s5m8767_data_to_tm(data, &alrm->time, info->rtc_24hr_mode);
478 if (data[i] & ALARM_ENABLE_MASK) {
498 u8 data[RTC_MAX_NUM_TIME_REGS];
502 ret = regmap_bulk_read(info->regmap, info->regs->alarm0, data,
507 s5m8767_data_to_tm(data, &tm, info->rtc_24hr_mode);
520 data[i] &= ~ALARM_ENABLE_MASK;
522 ret = regmap_raw_write(info->regmap, info->regs->alarm0, data,
541 u8 data[RTC_MAX_NUM_TIME_REGS];
545 ret = regmap_bulk_read(info->regmap, info->regs->alarm0, data,
550 s5m8767_data_to_tm(data, &tm, info->rtc_24hr_mode);
563 data[RTC_SEC] |= ALARM_ENABLE_MASK;
564 data[RTC_MIN] |= ALARM_ENABLE_MASK;
565 data[RTC_HOUR] |= ALARM_ENABLE_MASK;
566 data[RTC_WEEKDAY] &= ~ALARM_ENABLE_MASK;
567 if (data[RTC_DATE] & 0x1f)
568 data[RTC_DATE] |= ALARM_ENABLE_MASK;
569 if (data[RTC_MONTH] & 0xf)
570 data[RTC_MONTH] |= ALARM_ENABLE_MASK;
571 if (data[RTC_YEAR1] & 0x7f)
572 data[RTC_YEAR1] |= ALARM_ENABLE_MASK;
574 ret = regmap_raw_write(info->regmap, info->regs->alarm0, data,
592 u8 data[RTC_MAX_NUM_TIME_REGS];
597 s5m8763_tm_to_data(&alrm->time, data);
604 s5m8767_tm_to_data(&alrm->time, data);
617 ret = regmap_raw_write(info->regmap, info->regs->alarm0, data,
643 static irqreturn_t s5m_rtc_alarm_irq(int irq, void *data)
645 struct s5m_rtc_info *info = data;
662 u8 data[2];
676 data[0] = (1 << BCD_EN_SHIFT) | (1 << MODEL24_SHIFT);
677 data[1] = (0 << BCD_EN_SHIFT) | (1 << MODEL24_SHIFT);
679 ret = regmap_raw_write(info->regmap, S5M_ALARM0_CONF, data, 2);
685 data[0] = (0 << BCD_EN_SHIFT) | (1 << MODEL24_SHIFT);
686 ret = regmap_write(info->regmap, info->regs->ctrl, data[0]);
722 dev_err(pdev->dev.parent, "Platform data not supplied\n");