Patch "rtc: s3c: fix disabled clocks for alarm" has been added to the 4.1-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
rtc: s3c: fix disabled clocks for alarm
to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
rtc-s3c-fix-disabled-clocks-for-alarm.patch
and it can be found in the queue-4.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
1fb1c35f56bb6ab4a65920c648154b0f78f634a5Mon Sep 17 00:00:00 2001
From: Joonyoung Shim <[email protected]>
Date: Wed, 12 Aug 2015 19:21:46 +0900
Subject: rtc: s3c: fix disabled clocks for alarm
From: Joonyoung Shim <[email protected]>
commit 1fb1c35f56bb6ab4a65920c648154b0f78f634a5 upstream.
The clock enable/disable codes for alarm have been removed from commit 24e1455493da ("drivers/rtc/rtc-s3c.c: delete duplicate clock control") and the clocks are disabled even if alarm is set, so alarm interrupt can't happen.
The s3c_rtc_setaie function can be called several times with 'enabled' argument having same value, so it needs to check whether clocks are enabled or not.
--- drivers/rtc/rtc-s3c.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-)
drivers/rtc/rtc-s3c.c +18 -6
@@ -39,6 +39,7 @@ struct s3c_rtc {void __iomem *base;struct clk *rtc_clk;struct clk *rtc_src_clk; +bool clk_disabled;struct s3c_rtc_data *data;
@@ -71,9 +72,12 @@ static void s3c_rtc_enable_clk(struct s3unsigned long irq_flags;spin_lock_irqsave (&info->alarm_clk_lock, irq_flags); -clk_enable (info->rtc_clk); -if (info->data->needs_src_clk) -clk_enable (info->rtc_src_clk); +if (info->clk_disabled) { +clk_enable (info->rtc_clk); +if (info->data->needs_src_clk) +clk_enable (info->rtc_src_clk); + info->clk_disabled = false; + }spin_unlock_irqrestore (&info->alarm_clk_lock, irq_flags); }
@@ -82,9 +86,12 @@ static void s3c_rtc_disable_clk(struct sunsigned long irq_flags;spin_lock_irqsave (&info->alarm_clk_lock, irq_flags); -if (info->data->needs_src_clk) -clk_disable (info->rtc_src_clk); -clk_disable (info->rtc_clk); +if (!info->clk_disabled) { +if (info->data->needs_src_clk) +clk_disable (info->rtc_src_clk); +clk_disable (info->rtc_clk); + info->clk_disabled = true; + }spin_unlock_irqrestore (&info->alarm_clk_lock, irq_flags); }
@@ -128,6 +135,11 @@ static int s3c_rtc_setaie(struct devices3c_rtc_disable_clk (info); +if (enabled) +s3c_rtc_enable_clk (info); +else +s3c_rtc_disable_clk (info); +return 0 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/rtc-s5m-fix-to-update-ctrl-register.patch queue-4.1/rtc-s3c-fix-disabled-clocks-for-alarm.patch