Message ID | 20210110231752.1418816-5-alexandre.belloni@bootlin.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | rtc: constify all rtc_class_ops | expand |
this patch cause suspend failed on my Bay trail z3735f tablet. [ 162.038713] PM: dpm_run_callback(): platform_pm_suspend+0x0/0x40 returns -22 [ 162.038760] alarmtimer alarmtimer.0.auto: PM: failed to suspend: error -22
Hello, On 29/04/2021 02:49:46+0800, youling257 wrote: > this patch cause suspend failed on my Bay trail z3735f tablet. > > [ 162.038713] PM: dpm_run_callback(): platform_pm_suspend+0x0/0x40 returns -22 > [ 162.038760] alarmtimer alarmtimer.0.auto: PM: failed to suspend: error -22 I think I know what is happening, there is one patch I wanted to send this cycle but didn't, can you test it? https://github.com/alexandrebelloni/linux/commit/50641a5a19cedf7561410d7db614da46c228bacc Thanks for the report!
test this patch can fix my problem. 2021-04-29 4:20 GMT+08:00, Alexandre Belloni <alexandre.belloni@bootlin.com>: > Hello, > > On 29/04/2021 02:49:46+0800, youling257 wrote: >> this patch cause suspend failed on my Bay trail z3735f tablet. >> >> [ 162.038713] PM: dpm_run_callback(): platform_pm_suspend+0x0/0x40 >> returns -22 >> [ 162.038760] alarmtimer alarmtimer.0.auto: PM: failed to suspend: error >> -22 > > I think I know what is happening, there is one patch I wanted to send > this cycle but didn't, can you test it? > > https://github.com/alexandrebelloni/linux/commit/50641a5a19cedf7561410d7db614da46c228bacc > > Thanks for the report! > > -- > Alexandre Belloni, co-owner and COO, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com >
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index 51e80bc70d42..c3746e249f5a 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -574,12 +574,6 @@ static const struct rtc_class_ops cmos_rtc_ops = { .alarm_irq_enable = cmos_alarm_irq_enable, }; -static const struct rtc_class_ops cmos_rtc_ops_no_alarm = { - .read_time = cmos_read_time, - .set_time = cmos_set_time, - .proc = cmos_procfs, -}; - /*----------------------------------------------------------------*/ /* @@ -857,12 +851,12 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq) dev_dbg(dev, "IRQ %d is already in use\n", rtc_irq); goto cleanup1; } - - cmos_rtc.rtc->ops = &cmos_rtc_ops; } else { - cmos_rtc.rtc->ops = &cmos_rtc_ops_no_alarm; + clear_bit(RTC_FEATURE_ALARM, cmos_rtc.rtc->features); } + cmos_rtc.rtc->ops = &cmos_rtc_ops; + retval = devm_rtc_register_device(cmos_rtc.rtc); if (retval) goto cleanup2;
Clear RTC_FEATURE_ALARM to signal that alarms are not available instead of having a supplementary struct rtc_class_ops with a NULL .set_alarm. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> --- drivers/rtc/rtc-cmos.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-)