static int max77663_rtc_set_time(struct device *dev, struct rtc_time *tm) { struct max77663_rtc *rtc = dev_get_drvdata(dev); u8 buf[RTC_NR]; int ret; #if defined(CONFIG_RTC_INTF_SECCLK) secclk_rtc_changed(max77663_rtc_read_time, dev, tm); #endif dev_dbg(rtc->dev, "rtc_set_time: " "tm: %d-%02d-%02d %02d:%02d:%02d, wday=%d\n", tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, tm->tm_wday); ret = max77663_rtc_tm_to_reg(rtc, buf, tm, 0); if (ret < 0) { dev_err(rtc->dev, "rtc_set_time: " "Failed to convert time format into register format\n"); return ret; } dev_dbg(rtc->dev, "rtc_set_time: " "buf: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n", buf[RTC_SEC], buf[RTC_MIN], buf[RTC_HOUR], buf[RTC_WEEKDAY], buf[RTC_MONTH], buf[RTC_YEAR], buf[RTC_MONTHDAY]); return max77663_rtc_write(rtc, MAX77663_RTC_SEC, buf, sizeof(buf), 1); }
static int rtc_ops_set_time(struct device *dev, struct rtc_time *tm) { // printk("mtk_rtc_set_time\n"); #if defined(CONFIG_RTC_INTF_SECCLK) secclk_rtc_changed(rtc_ops_read_time, dev, tm); #endif // unsigned long time, flags; rtc_tm_to_time(tm, &time); if (time > (unsigned long)LONG_MAX) return -EINVAL; tm->tm_year -= RTC_MIN_YEAR_OFFSET; tm->tm_mon++; rtc_xinfo("set tc time = %04d/%02d/%02d %02d:%02d:%02d\n", tm->tm_year + RTC_MIN_YEAR, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); spin_lock_irqsave(&rtc_lock, flags); hal_rtc_set_tick_time(tm); spin_unlock_irqrestore(&rtc_lock, flags); return 0; }