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;
}
static int rtc_ops_set_time(struct device *dev, struct rtc_time *tm)
{
    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;
}