高通平台关机闹钟设置

版权声明:转载请注明,谢谢。 https://blog.csdn.net/u012899335/article/details/82530130

高通平台Andorid默认不支持关机闹钟,需要手动修改。Andorid O以前的Andorid版本可通过如下修改达到关机闹钟的功能。

1、修改设备树文件,将qcom,qpnp-rtc-alarm-pwrup值改为1。

    qcom,pm8941_rtc {
        spmi-dev-container;
        compatible = "qcom,qpnp-rtc";
        #address-cells = <1>;
        #size-cells = <1>;
        qcom,qpnp-rtc-write = <0>;
        qcom,qpnp-rtc-alarm-pwrup = <1>;

2、经过上诉修改之后设置闹钟,关机,闹钟时间到后,设备会开机,但是开机完成后,闹钟时间也就过了,所以闹钟不会响。这时候我们需要让设备提前开机,在设定闹钟时间到之前开机,我这里是设置提前两分钟开机。设置方法如下:

修改alarmtimer.c文件

Index: alarmtimer.c
===================================================================
--- alarmtimer.c	(revision 2721)
+++ alarmtimer.c	(revision 2722)
@@ -26,6 +26,10 @@
 #include <linux/workqueue.h>
 #include <linux/freezer.h>
 
+#define ALARM_DELTA 120
+
 #ifdef CONFIG_MSM_PM
 #include "lpm-levels.h"
 #endif
@@ -147,6 +151,19 @@
 	alarm_delta = wall_time.tv_sec - rtc_secs;
 	alarm_time = alarm_secs - alarm_delta;
 
+	/*
+	 * Substract ALARM_DELTA from actual alarm time
+	 * to powerup the device before actual alarm
+	 * expiration.
+	 */
+	if ((alarm_time - ALARM_DELTA) > rtc_secs)
+		alarm_time -= ALARM_DELTA;
+
+	if (alarm_time <= rtc_secs)
+		goto disable_alarm;
+
 	rtc_time_to_tm(alarm_time, &alarm.time);
 	alarm.enabled = 1;
 	rc = rtc_set_alarm(rtcdev, &alarm);

猜你喜欢

转载自blog.csdn.net/u012899335/article/details/82530130