Android pcf8563無法保存設置時間的問題

參考文檔: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);
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章