參考文檔:https://blog.csdn.net/hclydao/article/details/79034222
https://blog.csdn.net/pcwung/article/details/78712231
https://blog.csdn.net/qq84395064/article/details/83310861
https://blog.csdn.net/heabby2010/article/details/78622797
https://www.cnblogs.com/tc310/p/10922464.html
1.通過SecureCRT 發 dmesg | grep rtc
2.通過adb發送hwclock -w和hwclock
3.1通過SecureCRT 發 date 052514192019.22 set
命令格式:date MMddHHmmyyyy.ss set (月日時分年.秒) 例如:date 052514192019.22 set
3.
首先在struct rtc_class_ops中增加set_alarm接口如下:
static const struct rtc_class_ops pcf8563_rtc_ops = {
.read_time = pcf8563_rtc_read_time,
.set_time = pcf8563_rtc_set_time,
.set_alarm = pcf8563_rtc_set_alarm,//add by hclydao
};
具體函數實現如下:
static int pcf8563_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
{
struct rtc_time *tm = &alrm->time;
return pcf8563_set_datetime(to_i2c_client(dev), tm);
}
Android4.4以後是使用rtc驅動中的set_alarm進行設置時間,所以需要增加上面的接口.
同時在probe函數中增加喚醒的設置,部分代碼如下
dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n");
i2c_set_clientdata(client, pcf8563);
/* cpu init code should really have flagged this device as
* being wake-capable; if it didn't, do that here.
*/
if (!device_can_wakeup(&client->dev)) { //add by hclydao
device_init_wakeup(&client->dev, 1);
}
pcf8563->rtc = rtc_device_register(pcf8563_driver.driver.name,
&client->dev, &pcf8563_rtc_ops, THIS_MODULE);