コード例 #1
0
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);
}
コード例 #2
0
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;
}