Revert "[bugfix] support rtc alarm"
This reverts commit adce4c766e0922a8063941620e63a721f6866d7f.
Reason for revert: <INSERT REASONING HERE>
Change-Id: I521b3704c5c3fb315c5e64f13f304ef5774b7f47
diff --git a/src/bsp/lk/platform/mt2735/drivers/pmic/pmic.c b/src/bsp/lk/platform/mt2735/drivers/pmic/pmic.c
index c0e48de..17280bd 100644
--- a/src/bsp/lk/platform/mt2735/drivers/pmic/pmic.c
+++ b/src/bsp/lk/platform/mt2735/drivers/pmic/pmic.c
@@ -412,7 +412,7 @@
pmic_read_interface(PMIC_PUP_PKEY_RELEASE_ADDR, &g_pwrkey_release,
PMIC_PUP_PKEY_RELEASE_MASK, PMIC_PUP_PKEY_RELEASE_SHIFT);
/*--UVLO off--*/
- dprintf(ALWAYS, "[PMIC]TOP_RST_STATUS[0x%x]=0x%x\n",
+ dprintf(INFO, "[PMIC]TOP_RST_STATUS[0x%x]=0x%x\n",
MT6330_TOP_RST_STATUS, upmu_get_reg_value(MT6330_TOP_RST_STATUS));
/*special for RTC Alarm and SPAR*/
pon_sts = upmu_get_reg_value(MT6330_PONSTS);
diff --git a/src/bsp/lk/platform/mt2735/drivers/rtc/rtc.c b/src/bsp/lk/platform/mt2735/drivers/rtc/rtc.c
index aeb27f1..5e14d1a 100644
--- a/src/bsp/lk/platform/mt2735/drivers/rtc/rtc.c
+++ b/src/bsp/lk/platform/mt2735/drivers/rtc/rtc.c
@@ -1033,7 +1033,6 @@
Write_trigger();
}
#endif
- RTC_LOG("Power on alarm\n");
return true;
} else if (now_time < time) { /* set power-on alarm */
RTC_Write(RTC_AL_YEA, (RTC_Read(RTC_AL_YEA) & (~RTC_AL_YEA_MASK)) | ((yea - RTC_MIN_YEAR) & RTC_AL_YEA_MASK));
@@ -1047,7 +1046,6 @@
irqen = RTC_Read(RTC_IRQ_EN) | RTC_IRQ_EN_ONESHOT_AL;
RTC_Write(RTC_IRQ_EN, irqen);
Write_trigger();
- RTC_LOG("Not power on alarm\n");
} else {
pdn1 = (pdn1 & ~RTC_PDN1_PWRON_TIME);
#if defined (MTK_KERNEL_POWER_OFF_CHARGING)
@@ -1058,10 +1056,7 @@
Write_trigger();
RTC_LOG("Expired alarm\n");
}
-
- } else {
- RTC_LOG("Not power on alarm\n");
- }
+ }
}
if ((pdn1 & RTC_PDN1_RECOVERY_MASK) == RTC_PDN1_FAC_RESET) { /* factory data reset */
diff --git a/src/bsp/lk/platform/mt2735/drivers/wdt/mtk_wdt.c b/src/bsp/lk/platform/mt2735/drivers/wdt/mtk_wdt.c
index 9bec99c..a2477ef 100644
--- a/src/bsp/lk/platform/mt2735/drivers/wdt/mtk_wdt.c
+++ b/src/bsp/lk/platform/mt2735/drivers/wdt/mtk_wdt.c
@@ -72,50 +72,6 @@
static uint32_t wdt_reset_status;
static uint8_t wdt_inited = 0U;
-static unsigned int rgu_mode;
-
-enum {
- MTK_WDT_NONRST2_BOOT_MASK = 0xF,
- MTK_WDT_NONRST2_BOOT_CHARGER = 1,
- MTK_WDT_NONRST2_BOOT_RECOVERY = 2,
- MTK_WDT_NONRST2_BOOT_BOOTLOADER = 3,
- MTK_WDT_NONRST2_BOOT_DM_VERITY = 4,
- MTK_WDT_NONRST2_BOOT_KPOC = 5,
- MTK_WDT_NONRST2_BOOT_DDR_RSVD = 6,
- MTK_WDT_NONRST2_BOOT_META = 7,
- MTK_WDT_NONRST2_BOOT_RPMBPK = 8,
- MTK_WDT_NONRST2_BYPASS_PWR_KEY = 1 << 13,
- MTK_WDT_NONRST2_STAGE_OFS = 29,
- MTK_WDT_NONRST2_LAST_STAGE_OFS = 26
-};
-
-static unsigned int mtk_wdt_get_status(void)
-{
- static unsigned int wdt_sta = 0;
- static unsigned int wdt_sta_handled = 0;
- unsigned int reg;
-
- /*
- * Note:
- * Because WDT_STA register will be cleared after writing WDT_MODE,
- * we use a static variable to keep orinigal WDT_STA.
- *
- * After reset, static varialbe will always be clear to 0,
- * so only read WDT_STA when static variable is 0 is OK
- *
- * Use "wdt_sta_handled" to indicate if WDT_STATUS is preserved.
- * Do not use "wdt_sta" as indication because dummy handling will be
- * executed in case WDT_STATUS is 0 originally.
- */
- if (wdt_sta_handled == 0) {
-
- wdt_sta = wdt_readl(WDT_STA);
-
- wdt_sta_handled = 1;
- }
-
- return wdt_sta;
-}
static inline void mtk_wdt_clear_all_status(void)
@@ -190,19 +146,6 @@
void mtk_wdt_init(void)
{
unsigned int wdt_ctrl;
- rgu_mode = wdt_readl(WDT_MODE);
-
- dprintf(ALWAYS, "MODE: 0x%x\n", wdt_readl(WDT_MODE));
- dprintf(ALWAYS, "STA: 0x%x\n", mtk_wdt_get_status());
- dprintf(ALWAYS, "LENGTH: 0x%x\n", wdt_readl(WDT_LENGTH));
- dprintf(ALWAYS, "INTERVAL: 0x%x\n", wdt_readl(WDT_INTERNAL));
- dprintf(ALWAYS, "SWSYSRST: 0x%x\n", wdt_readl(WDT_SWSYSRST));
- dprintf(ALWAYS, "LATCH_CTL: 0x%x\n", wdt_readl(WDT_LATCH_CTL));
- dprintf(ALWAYS, "NONRST_REG: 0x%x\n", wdt_readl(WDT_NONRST_REG));
- dprintf(ALWAYS, "NONRST_REG2: 0x%x\n", wdt_readl(WDT_NONRST_REG2));
-
- if (wdt_readl(WDT_NONRST_REG2) & MTK_WDT_NONRST2_BYPASS_PWR_KEY)
- rgu_mode |= MTK_WDT_NONRST2_BYPASS_PWR_KEY;
mtk_wdt_set_default_mode(WDT_DISABLE, WDT_TIMEOUT_LK_SEC);
if (wdt_inited == 0U) {
@@ -374,44 +317,6 @@
}
return WDT_NOT_WDT_REBOOT;
}
-#else
-int mtk_wdt_boot_check(void)
-{
- unsigned int wdt_sta = wdt_reset_status;
- int ret = WDT_NOT_WDT_REBOOT;
-
- /*
- * For DA download hope to timeout reboot, and boot to u-boot/kernel configurable reason,
- * we set both timeout reboot and software reboot can check whether bypass power key.
- */
- if (wdt_sta & (MTK_WDT_STATUS_HWWDT_RST | MTK_WDT_STATUS_SWWDT_RST |
- MTK_WDT_STATUS_MD_THERMAL_RST | MTK_WDT_STATUS_SPMWDT_RST |
- MTK_WDT_STATUS_THERMAL_DIRECT_RST | MTK_WDT_STATUS_SECURITY_RST |
- MTK_WDT_STATUS_DEBUGWDT_RST | MTK_WDT_STATUS_EINT_RST |
- MTK_WDT_STATUS_SYSRST_RST | MTK_WDT_STATUS_DVFSP_RST | MTK_WDT_STATUS_MCUPM_RST |
- MTK_WDT_STATUS_SSPM_RST)) {
- if (rgu_mode & MTK_WDT_NONRST2_BYPASS_PWR_KEY) {
- /* HW or SW reboot, and auto restart is set, means bypass power key */
- ret = WDT_BY_PASS_PWK_REBOOT;
-
- } else {
-
- /* HW or SW reboot, but auto restart is not set, means NOT bypass power key */
- ret = WDT_NORMAL_REBOOT;
- }
- } else {
- /*
- * For PMIC full reset, return "bypass pwr key reboot" to help AEE works.
- * I.e., Prevent entering charger mode.
- */
- if (mtk_wdt_is_pmic_full_reset()) {
- dprintf(INFO, "PMIC full rst: true\n");
- ret = WDT_BY_PASS_PWK_REBOOT;
- }
- }
-
- return ret;
-}
#endif
#else /* !ENABLE_WDT_MODULE */
diff --git a/src/bsp/lk/platform/mt2735/include/platform/mtk_wdt.h b/src/bsp/lk/platform/mt2735/include/platform/mtk_wdt.h
index c4b4b3d..f4b91b8 100644
--- a/src/bsp/lk/platform/mt2735/include/platform/mtk_wdt.h
+++ b/src/bsp/lk/platform/mt2735/include/platform/mtk_wdt.h
@@ -60,28 +60,21 @@
*/
void mtk_arch_reset(char bypass_pwrkey);
+#if LK_AS_BL33
+
#define WDT_NORMAL_REBOOT (0x100)
#define WDT_BY_PASS_PWK_REBOOT (0x200)
#define WDT_NOT_WDT_REBOOT (0x400)
/*WDT_STATUS*/
#define MTK_WDT_STATUS_HWWDT_RST_WITH_IRQ (0xA0000000)
+#define MTK_WDT_STATUS_HWWDT_RST (0x80000000)
+#define MTK_WDT_STATUS_SWWDT_RST (0x40000000)
+#define MTK_WDT_STATUS_IRQWDT_RST (0x20000000)
+#define MTK_WDT_STATUS_SECURITY_RST (1<<28)
+#define MTK_WDT_STATUS_DEBUGWDT_RST (0x00080000)
+#define MTK_WDT_STATUS_SPMWDT_RST (0x0001)
#define MTK_WDT_STATUS_THERMAL_CTL_RST (1<<18)
-#define MTK_WDT_STATUS_MD_THERMAL_RST (1)
-#define MTK_WDT_STATUS_SPMWDT_RST (1<<1)
-#define MTK_WDT_STATUS_EINT_RST (1<<2)
-#define MTK_WDT_STATUS_SYSRST_RST (1<<3)
-#define MTK_WDT_STATUS_DVFSP_RST (1<<4)
-#define MTK_WDT_STATUS_MCUPM_RST (1<<5)
-#define MTK_WDT_STATUS_PCIE_PERST_RST (1<<7)
-#define MTK_WDT_STATUS_SSPM_RST (1<<16)
-#define MTK_WDT_STATUS_MDDBG_RST (1<<17)
-#define MTK_WDT_STATUS_THERMAL_DIRECT_RST (1<<18)
-#define MTK_WDT_STATUS_DEBUGWDT_RST (1<<19)
-#define MTK_WDT_STATUS_SECURITY_RST (1<<28)
-#define MTK_WDT_STATUS_IRQWDT_RST (1<<29)
-#define MTK_WDT_STATUS_SWWDT_RST (1<<30)
-#define MTK_WDT_STATUS_HWWDT_RST (1<<31)
/* Reboot reason */
#define RE_BOOT_REASON_UNKNOW (0x00)
@@ -103,3 +96,4 @@
int mtk_wdt_boot_check(void);
+#endif
diff --git a/src/bsp/lk/platform/mt2735/include/platform/platform_blx.h b/src/bsp/lk/platform/mt2735/include/platform/platform_blx.h
index 929526f..ab0818d 100644
--- a/src/bsp/lk/platform/mt2735/include/platform/platform_blx.h
+++ b/src/bsp/lk/platform/mt2735/include/platform/platform_blx.h
@@ -36,9 +36,6 @@
BR_KERNEL_PANIC,
BR_WDT_SW,
BR_WST_HW,
- BR_POWER_EXC = 30,
- BR_LONG_POWKEY,
- BR_POWER_LOSS
} boot_reason_t;
void platform_memory_init(void);
diff --git a/src/bsp/lk/platform/mt2735/platform_bl2.c b/src/bsp/lk/platform/mt2735/platform_bl2.c
index cc6f475..c18da3f 100644
--- a/src/bsp/lk/platform/mt2735/platform_bl2.c
+++ b/src/bsp/lk/platform/mt2735/platform_bl2.c
@@ -50,7 +50,7 @@
#include <platform/rtc.h>
#include <boot_args.h>
#include <string.h>
-#include <platform/platform_blx.h>
+
static uint32_t g_boot_reason = 0;
static uint32_t g_rgu_mode = 0;
@@ -117,21 +117,6 @@
.priority = 0,
};
#endif /* WITH_KERNEL_VM */
-extern U32 upmu_is_chr_det(void);
-
-int usb_accessory_in(void)
-{
-#if !CFG_FPGA_PLATFORM
- int exist = 0;
-
- if (upmu_is_chr_det() == KAL_TRUE) {
- exist = 1;
- }
- return exist;
-#else
- return 1;
-#endif
-}
static inline size_t query_plat_dram_sz(void)
{
@@ -252,7 +237,6 @@
void platform_early_init_blx(void)
{
- boot_reason_t reason;
mtk_timer_init();
#if !CFG_FPGA_PLATFORM
@@ -290,10 +274,6 @@
clk_buf_init();
mt_dcm_init();
-
- reason = platform_boot_status();
- if (reason == BR_RTC || reason == BR_POWER_KEY || reason == BR_USB || reason == BR_WDT || reason == BR_WDT_BY_PASS_PWK || reason == BR_2SEC_REBOOT)
- rtc_bbpu_power_on();
#endif
bgr_init();
@@ -301,65 +281,6 @@
dprintf(CRITICAL, "BL2 Build Time: %s %s\n", __DATE__, __TIME__);
}
-int platform_wdt_boot_check(void)
-{
- return mtk_wdt_boot_check();
-}
-
-boot_reason_t platform_boot_status(void)
-{
- u32 pmic_reboot = get_pmic_boot_status();
-
- if (rtc_boot_check()) {
- dprintf(CRITICAL, "%s RTC boot!\n");
- return BR_RTC;
- }
-
- if (pmic_reboot == 1) {
- dprintf(CRITICAL, "pmic: power exception(OC/PG)!\n");
- return BR_POWER_EXC;
- } else if (pmic_reboot == 2) {
- dprintf(CRITICAL, "pmic: long power key press reboot!\n");
- return BR_LONG_POWKEY;
- } else if (pmic_reboot == 3) {
- if(rtc_2sec_reboot_check()) {
- dprintf(CRITICAL, "pmic: 2sec reboot!\n");
- return BR_2SEC_REBOOT;
- } else {
- dprintf(CRITICAL, "pmic: power miss!\n");
- return BR_POWER_LOSS;
- }
- }
-
- if (platform_wdt_boot_check() == WDT_NORMAL_REBOOT) {
- dprintf(CRITICAL, "SW reset without bypass power key flag\n");
- dprintf(CRITICAL, "WDT normal boot!\n");
- return BR_WDT;
- } else if(platform_wdt_boot_check() == WDT_BY_PASS_PWK_REBOOT) {
- dprintf(CRITICAL, "SW reset with bypass power key flag\n");
- dprintf(CRITICAL, "WDT reboot bypass power key!\n");
- return BR_WDT_BY_PASS_PWK;
- }
-
- if (usb_accessory_in()) {
- dprintf(CRITICAL, "%s USB/charger boot!\n");
- return BR_USB;
- }
-
-#if !CFG_FPGA_PLATFORM
- /* check power key */
- if ((pmic_detect_powerkey() && !is_pwrkey_short_press())
- || is_pmic_long_press_reset()) {
- dprintf(CRITICAL, "%s Power key boot!\n");
- return BR_POWER_KEY;
- }
-#endif
-
- pl_power_off();
-
- return BR_UNKNOWN;
-}
-
void platform_init_blx()
{
}
diff --git a/src/kernel/linux/v4.19/drivers/rtc/interface.c b/src/kernel/linux/v4.19/drivers/rtc/interface.c
index 089ff8c..ce051f9 100644
--- a/src/kernel/linux/v4.19/drivers/rtc/interface.c
+++ b/src/kernel/linux/v4.19/drivers/rtc/interface.c
@@ -482,7 +482,6 @@
rtc->aie_timer.node.expires = rtc_tm_to_ktime(alarm->time);
rtc->aie_timer.period = 0;
- rtc->aie_timer.enabled = alarm->enabled;
if (alarm->enabled)
err = rtc_timer_enqueue(rtc, &rtc->aie_timer);
@@ -822,8 +821,7 @@
struct rtc_time tm;
ktime_t now;
- if(timer->enabled == 0)
- timer->enabled = 1;
+ timer->enabled = 1;
__rtc_read_time(rtc, &tm);
now = rtc_tm_to_ktime(tm);
@@ -840,7 +838,7 @@
struct rtc_wkalrm alarm;
int err;
alarm.time = rtc_ktime_to_tm(timer->node.expires);
- alarm.enabled = timer->enabled;
+ alarm.enabled = 1;
err = __rtc_set_alarm(rtc, &alarm);
if (err == -ETIME) {
pm_stay_awake(rtc->dev.parent);
diff --git a/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c b/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
index c7bf779..3dc075c 100644
--- a/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
+++ b/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
@@ -78,13 +78,9 @@
#define RTC_AL_DOW_MASK 0x0007
#define RTC_AL_MTH_MASK 0x000f
#define RTC_AL_YEA_MASK 0x007f
-#define RTC_PDN1 0x002c
-#define RTC_PDN1_PWRON_TIME BIT(7)
#define RTC_PDN2 0x002e
#define RTC_PDN2_PWRON_ALARM BIT(4)
-#define RTC_SPAR0 0x0030
-#define RTC_SPAR1 0x0032
#define RTC_SPAR0_L 0x0030
#define RTC_INT_CNT_L 0x0040
@@ -94,32 +90,7 @@
#define RTC_NUM_YEARS 128
#define RTC_MIN_YEAR_OFFSET (RTC_MIN_YEAR - RTC_BASE_YEAR)
-#define RTC_PWRON_YEA RTC_PDN2
-#define RTC_PWRON_YEA_MASK 0x7f00
-#define RTC_PWRON_YEA_SHIFT 8
-
-#define RTC_PWRON_MTH RTC_PDN2
-#define RTC_PWRON_MTH_MASK 0x000f
-#define RTC_PWRON_MTH_SHIFT 0
-
-#define RTC_PWRON_SEC RTC_SPAR0
-#define RTC_PWRON_SEC_MASK 0x003f
-#define RTC_PWRON_SEC_SHIFT 0
-
-#define RTC_PWRON_MIN RTC_SPAR1
-#define RTC_PWRON_MIN_MASK 0x003f
-#define RTC_PWRON_MIN_SHIFT 0
-
-#define RTC_PWRON_HOU RTC_SPAR1
-#define RTC_PWRON_HOU_MASK 0x07c0
-#define RTC_PWRON_HOU_SHIFT 6
-
-#define RTC_PWRON_DOM RTC_SPAR1
-#define RTC_PWRON_DOM_MASK 0xf800
-#define RTC_PWRON_DOM_SHIFT 11
-
#define SPARE_REG_WIDTH 1
-#define RTC_POFF_ALM_SET _IOW('p', 0x15, struct rtc_time) /* Set alarm time */
enum mtk_rtc_spare_enum {
SPARE_AL_HOU,
@@ -128,12 +99,6 @@
SPARE_RG_MAX,
};
-enum rtc_reg_set {
- RTC_REG,
- RTC_MASK,
- RTC_SHIFT
-};
-
enum rtc_eosc_cali_td {
EOSC_CALI_TD_01_SEC = 0x3,
EOSC_CALI_TD_02_SEC,
@@ -176,16 +141,6 @@
static int mtk_rtc_write_trigger(struct mt6330_rtc *rtc);
-static u16 rtc_pwron_reg[RTC_OFFSET_COUNT][3] = {
- {RTC_PWRON_SEC, RTC_PWRON_SEC_MASK, RTC_PWRON_SEC_SHIFT},
- {RTC_PWRON_MIN, RTC_PWRON_MIN_MASK, RTC_PWRON_MIN_SHIFT},
- {RTC_PWRON_HOU, RTC_PWRON_HOU_MASK, RTC_PWRON_HOU_SHIFT},
- {RTC_PWRON_DOM, RTC_PWRON_DOM_MASK, RTC_PWRON_DOM_SHIFT},
- {0, 0, 0},
- {RTC_PWRON_MTH, RTC_PWRON_MTH_MASK, RTC_PWRON_MTH_SHIFT},
- {RTC_PWRON_YEA, RTC_PWRON_YEA_MASK, RTC_PWRON_YEA_SHIFT},
-};
-
static const struct reg_field mt6330_cali_reg_fields[CALI_FILED_MAX] = {
[RTC_EOSC32_CK_PDN] = REG_FIELD(MT6330_SCK_TOP_CKPDN_CON0_L, 2, 2),
[EOSC_CALI_TD] = REG_FIELD(MT6330_RTC_AL_DOW_L, 8, 10),
@@ -303,7 +258,6 @@
return ret;
}
-
static int rtc_write(struct mt6330_rtc *rtc, unsigned int reg,
unsigned int val)
{
@@ -488,81 +442,6 @@
return ret;
}
-static void mtk_rtc_set_pwron_time(struct mt6330_rtc *rtc, struct rtc_time *tm)
-{
- u32 data[RTC_OFFSET_COUNT];
- int ret, i;
-
- data[RTC_OFFSET_SEC] =
- ((tm->tm_sec << RTC_PWRON_SEC_SHIFT) & RTC_PWRON_SEC_MASK);
- data[RTC_OFFSET_MIN] =
- ((tm->tm_min << RTC_PWRON_MIN_SHIFT) & RTC_PWRON_MIN_MASK);
- data[RTC_OFFSET_HOUR] =
- ((tm->tm_hour << RTC_PWRON_HOU_SHIFT) & RTC_PWRON_HOU_MASK);
- data[RTC_OFFSET_DOM] =
- ((tm->tm_mday << RTC_PWRON_DOM_SHIFT) & RTC_PWRON_DOM_MASK);
- data[RTC_OFFSET_MTH] =
- ((tm->tm_mon << RTC_PWRON_MTH_SHIFT) & RTC_PWRON_MTH_MASK);
- data[RTC_OFFSET_YEAR] =
- ((tm->tm_year << RTC_PWRON_YEA_SHIFT) & RTC_PWRON_YEA_MASK);
-
- printk_deferred(" %s set PWRON_SEC %x\n", __func__, data[RTC_OFFSET_SEC]);
-
- for (i = RTC_OFFSET_SEC; i < RTC_OFFSET_COUNT; i++) {
- if (i == RTC_OFFSET_DOW)
- continue;
- ret = rtc_update_bits(rtc,
- rtc->addr_base + rtc_pwron_reg[i][RTC_REG],
- rtc_pwron_reg[i][RTC_MASK],
- data[i]);
-
- if (ret < 0)
- goto exit;
- mtk_rtc_write_trigger(rtc);
- }
-
- if (ret < 0)
- goto exit;
-
- return;
-
-exit:
- dev_err(rtc->dev, "%s error\n", __func__);
- printk_deferred("%s error\n", __func__);
-
-}
-
-void mtk_rtc_save_pwron_time(struct mt6330_rtc *rtc,
- bool enable, struct rtc_time *tm)
-{
- u32 pdn1 = 0;
- int ret;
-
- /* set power on time */
- mtk_rtc_set_pwron_time(rtc, tm);
-
- /* update power on alarm related flags */
- if (enable)
- pdn1 = RTC_PDN1_PWRON_TIME;
-
- ret = rtc_update_bits(rtc,
- rtc->addr_base + RTC_PDN1,
- RTC_PDN1_PWRON_TIME,
- pdn1);
-
- mtk_rtc_write_trigger(rtc);
-
- if (ret < 0)
- goto exit;
-
-// mtk_rtc_write_trigger(rtc);
-
- return;
-
-exit:
- dev_err(rtc->dev, "%s error\n", __func__);
-}
-
static int mtk_rtc_read_time(struct device *dev, struct rtc_time *tm)
{
time64_t time;
@@ -678,16 +557,6 @@
struct mt6330_rtc *rtc = dev_get_drvdata(dev);
int ret;
u16 data[RTC_OFFSET_COUNT] = { 0 };
- ktime_t target;
-
- printk_deferred(" %s set %d\n", __func__, alm->enabled);
-
- if (alm->enabled == 1) {
- /* Add one more second to postpone wake time. */
- target = rtc_tm_to_ktime(*tm);
- target = ktime_add_ns(target, NSEC_PER_SEC);
- *tm = rtc_ktime_to_tm(target);
- }
if (tm->tm_year > 195) {
dev_err(rtc->dev, "%s: invalid year %04d > 2095\n",
@@ -699,27 +568,6 @@
tm->tm_mon++;
mutex_lock(&rtc->lock);
- switch (alm->enabled) {
- case 3:
- /* enable power-on alarm with logo */
- mtk_rtc_save_pwron_time(rtc, true, tm);
- break;
- case 4:
- /* disable power-on alarm */
- mtk_rtc_save_pwron_time(rtc, false, tm);
- break;
- default:
- break;
- }
-
- ret = rtc_update_bits(rtc,
- rtc->addr_base + RTC_PDN2,
- RTC_PDN2_PWRON_ALARM,
- 0);
-
- if (ret < 0)
- goto exit;
- mtk_rtc_write_trigger(rtc);
ret = rtc_bulk_read(rtc, rtc->addr_base + RTC_AL_SEC,
data, RTC_OFFSET_COUNT * 2);
if (ret < 0)
@@ -737,7 +585,6 @@
(tm->tm_mon & RTC_AL_MTH_MASK));
data[RTC_OFFSET_YEAR] = ((data[RTC_OFFSET_YEAR] & ~(RTC_AL_YEA_MASK)) |
(tm->tm_year & RTC_AL_YEA_MASK));
- printk_deferred(" %s set AL_SEC %x\n", __func__, data[RTC_OFFSET_SEC]);
if (alm->enabled) {
ret = rtc_bulk_read(rtc, rtc->addr_base + RTC_AL_SEC,
@@ -795,54 +642,7 @@
return ret;
}
-int alarm_set_power_on(struct device *dev, struct rtc_wkalrm *alm)
-{
- int err = 0;
- struct rtc_time tm;
- time64_t now, scheduled;
-
- err = rtc_valid_tm(&alm->time);
- if (err != 0)
- return err;
- scheduled = rtc_tm_to_time64(&alm->time);
-
- err = mtk_rtc_read_time(dev, &tm);
- if (err != 0)
- return err;
- now = rtc_tm_to_time64(&tm);
-
- if (scheduled <= now)
- alm->enabled = 4;
- else
- alm->enabled = 3;
-
- mtk_rtc_set_alarm(dev, alm);
-
- return err;
-}
-
-static int mtk_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
-{
- void __user *uarg = (void __user *) arg;
- int err = 0;
- struct rtc_wkalrm alm;
-
- switch (cmd) {
- case RTC_POFF_ALM_SET:
- if (copy_from_user(&alm.time, uarg, sizeof(alm.time)))
- return -EFAULT;
- err = alarm_set_power_on(dev, &alm);
- break;
- default:
- err = -EINVAL;
- break;
- }
-
- return err;
-}
-
static const struct rtc_class_ops mtk_rtc_ops = {
- .ioctl = mtk_rtc_ioctl,
.read_time = mtk_rtc_read_time,
.set_time = mtk_rtc_set_time,
.read_alarm = mtk_rtc_read_alarm,
diff --git a/src/kernel/linux/v4.19/drivers/rtc/rtc-sysfs.c b/src/kernel/linux/v4.19/drivers/rtc/rtc-sysfs.c
index 3825e91..9746c32 100644
--- a/src/kernel/linux/v4.19/drivers/rtc/rtc-sysfs.c
+++ b/src/kernel/linux/v4.19/drivers/rtc/rtc-sysfs.c
@@ -164,7 +164,7 @@
struct rtc_device *rtc = to_rtc_device(dev);
const char *buf_ptr;
int adjust = 0;
- printk_deferred("%s \n", __func__);
+
/* Only request alarms that trigger in the future. Disable them
* by writing another time, e.g. 0 meaning Jan 1 1970 UTC.
*/
@@ -221,101 +221,6 @@
static DEVICE_ATTR_RW(wakealarm);
static ssize_t
-poweralarm_show(struct device *dev, struct device_attribute *attr, char *buf)
-{
- ssize_t retval;
- time64_t alarm;
- struct rtc_wkalrm alm;
-
- /* Don't show disabled alarms. For uniformity, RTC alarms are
- * conceptually one-shot, even though some common RTCs (on PCs)
- * don't actually work that way.
- *
- * NOTE: RTC implementations where the alarm doesn't match an
- * exact YYYY-MM-DD HH:MM[:SS] date *must* disable their RTC
- * alarms after they trigger, to ensure one-shot semantics.
- */
- retval = rtc_read_alarm(to_rtc_device(dev), &alm);
- if (retval == 0 && alm.enabled) {
- alarm = rtc_tm_to_time64(&alm.time);
- retval = sprintf(buf, "%lld\n", alarm);
- }
-
- return retval;
-}
-
-
-static ssize_t
-poweralarm_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t n)
-{
- ssize_t retval;
- time64_t now, alarm;
- time64_t push = 0;
- struct rtc_wkalrm alm;
- struct rtc_device *rtc = to_rtc_device(dev);
- const char *buf_ptr;
- int adjust = 0;
-
- printk_deferred("%s \n", __func__);
-
- /* Only request alarms that trigger in the future. Disable them
- * by writing another time, e.g. 0 meaning Jan 1 1970 UTC.
- */
- retval = rtc_read_time(rtc, &alm.time);
- if (retval < 0)
- return retval;
- now = rtc_tm_to_time64(&alm.time);
-
- buf_ptr = buf;
- if (*buf_ptr == '+') {
- buf_ptr++;
- if (*buf_ptr == '=') {
- buf_ptr++;
- push = 1;
- } else
- adjust = 1;
- }
- retval = kstrtos64(buf_ptr, 0, &alarm);
- if (retval)
- return retval;
- if (adjust) {
- alarm += now;
- }
- if (alarm > now || push) {
- /* Avoid accidentally clobbering active alarms; we can't
- * entirely prevent that here, without even the minimal
- * locking from the /dev/rtcN api.
- */
- retval = rtc_read_alarm(rtc, &alm);
- if (retval < 0)
- return retval;
- if (alm.enabled) {
-
- if (push) {
- push = rtc_tm_to_time64(&alm.time);
- alarm += push;
- } else
- return -EBUSY;
- } else if (push)
- return -EINVAL;
- alm.enabled = 3;
- } else {
- alm.enabled = 4;
-
- /* Provide a valid future alarm time. Linux isn't EFI,
- * this time won't be ignored when disabling the alarm.
- */
- alarm = now + 300;
- }
- rtc_time64_to_tm(alarm, &alm.time);
-
- retval = rtc_set_alarm(rtc, &alm);
- return (retval < 0) ? retval : n;
-}
-static DEVICE_ATTR_RW(poweralarm);
-
-static ssize_t
offset_show(struct device *dev, struct device_attribute *attr, char *buf)
{
ssize_t retval;
@@ -359,7 +264,6 @@
&dev_attr_max_user_freq.attr,
&dev_attr_hctosys.attr,
&dev_attr_wakealarm.attr,
- &dev_attr_poweralarm.attr,
&dev_attr_offset.attr,
&dev_attr_range.attr,
NULL,