From: Jacob Chen <jacob-chen@iotwrt.com>
To: linux-kernel@vger.kernel.org
Cc: heiko@sntech.de, linux-rockchip@lists.infradead.org,
linux-gpio@vger.kernel.org, linus.walleij@linaro.org,
Jacob Chen <jacob2.chen@rock-chips.com>
Subject: [PATCH] pinctrl: rockchip: don't disable clk when irq mask is already set
Date: Sat, 24 Sep 2016 02:26:37 +0800 [thread overview]
Message-ID: <1474655197-26919-1-git-send-email-jacob-chen@iotwrt.com> (raw)
From: Jacob Chen <jacob2.chen@rock-chips.com>
In some drivers, disable_irq() call don't be symmetric with enable_irq()
, disable_irq() will be called before call free_irq().
But both disable_irq() and free_irq() will call rockchip_irq_gc_mask_set_bit,
and clk_disable() will be called more times than clk_enable(), which will
cause bugs.
I think we can correct that by checking of mask.If mask is already set, do nothing.
Change-Id: If19912c7658253e15531c04db6c70fdbffd5960a
Signed-off-by: Jacob Chen <jacob2.chen@rock-chips.com>
---
drivers/pinctrl/pinctrl-rockchip.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index c6c04ac..9a8804a 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -2334,8 +2334,12 @@ static void rockchip_irq_gc_mask_clr_bit(struct irq_data *d)
void rockchip_irq_gc_mask_set_bit(struct irq_data *d)
{
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
+ struct irq_chip_type *ct = irq_data_get_chip_type(d);
struct rockchip_pin_bank *bank = gc->private;
+ if (*ct->mask_cache & d->mask)
+ return;
+
irq_gc_mask_set_bit(d);
clk_disable(bank->clk);
}
--
2.7.4
next reply other threads:[~2016-09-23 18:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-23 18:26 Jacob Chen [this message]
2016-09-24 10:24 ` [PATCH] pinctrl: rockchip: don't disable clk when irq mask is already set Shawn Lin
2016-09-24 14:42 ` 陈豪
[not found] ` <fb4ec747-fde3-142b-1963-be3b9cfab260-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-09-26 22:35 ` Heiko Stuebner
2016-09-26 22:35 ` Heiko Stuebner
2016-09-29 7:29 ` Shawn Lin
2016-09-29 7:29 ` Shawn Lin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1474655197-26919-1-git-send-email-jacob-chen@iotwrt.com \
--to=jacob-chen@iotwrt.com \
--cc=heiko@sntech.de \
--cc=jacob2.chen@rock-chips.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.