From: Lee Jones <lee.jones@linaro.org>
To: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Cc: sameo@linux.intel.com, broonie@kernel.org, lgirdwood@gmail.com,
patches@opensource.wolfsonmicro.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 6/6 RESEND] mfd: arizona: Only free the CTRLIF_ERR IRQ if we requested it
Date: Mon, 28 Jul 2014 08:03:13 +0100 [thread overview]
Message-ID: <20140728070313.GJ5273@lee--X1> (raw)
In-Reply-To: <1405419710-14789-7-git-send-email-ckeepax@opensource.wolfsonmicro.com>
On Tue, 15 Jul 2014, Charles Keepax wrote:
> We only request the control interface error IRQ if we set ctrlif_error,
> as such we should only free it in that situation. Otherwise we will
> attempt to free an IRQ we never requested and get a warning from the IRQ
> core.
>
> This patch moves the ctrlif_error variable into the arizona structure
> and checks it in all cases we free the control interface error IRQ.
>
> Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
> ---
> drivers/mfd/arizona-irq.c | 19 ++++++++++++-------
> include/linux/mfd/arizona/core.h | 2 ++
> 2 files changed, 14 insertions(+), 7 deletions(-)
Applied, thanks.
> diff --git a/drivers/mfd/arizona-irq.c b/drivers/mfd/arizona-irq.c
> index e780bc4..d420dbc 100644
> --- a/drivers/mfd/arizona-irq.c
> +++ b/drivers/mfd/arizona-irq.c
> @@ -188,16 +188,17 @@ int arizona_irq_init(struct arizona *arizona)
> int flags = IRQF_ONESHOT;
> int ret, i;
> const struct regmap_irq_chip *aod, *irq;
> - bool ctrlif_error = true;
> struct irq_data *irq_data;
>
> + arizona->ctrlif_error = true;
> +
> switch (arizona->type) {
> #ifdef CONFIG_MFD_WM5102
> case WM5102:
> aod = &wm5102_aod;
> irq = &wm5102_irq;
>
> - ctrlif_error = false;
> + arizona->ctrlif_error = false;
> break;
> #endif
> #ifdef CONFIG_MFD_WM5110
> @@ -213,7 +214,7 @@ int arizona_irq_init(struct arizona *arizona)
> break;
> }
>
> - ctrlif_error = false;
> + arizona->ctrlif_error = false;
> break;
> #endif
> #ifdef CONFIG_MFD_WM8997
> @@ -221,7 +222,7 @@ int arizona_irq_init(struct arizona *arizona)
> aod = &wm8997_aod;
> irq = &wm8997_irq;
>
> - ctrlif_error = false;
> + arizona->ctrlif_error = false;
> break;
> #endif
> default:
> @@ -308,7 +309,7 @@ int arizona_irq_init(struct arizona *arizona)
> }
>
> /* Handle control interface errors in the core */
> - if (ctrlif_error) {
> + if (arizona->ctrlif_error) {
> i = arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR);
> ret = request_threaded_irq(i, NULL, arizona_ctrlif_err,
> IRQF_ONESHOT,
> @@ -353,7 +354,9 @@ int arizona_irq_init(struct arizona *arizona)
> return 0;
>
> err_main_irq:
> - free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR), arizona);
> + if (arizona->ctrlif_error)
> + free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR),
> + arizona);
> err_ctrlif:
> free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_BOOT_DONE), arizona);
> err_boot_done:
> @@ -369,7 +372,9 @@ err:
>
> int arizona_irq_exit(struct arizona *arizona)
> {
> - free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR), arizona);
> + if (arizona->ctrlif_error)
> + free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR),
> + arizona);
> free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_BOOT_DONE), arizona);
> regmap_del_irq_chip(irq_create_mapping(arizona->virq, 1),
> arizona->irq_chip);
> diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h
> index 8bc7601..fdd8b7b 100644
> --- a/include/linux/mfd/arizona/core.h
> +++ b/include/linux/mfd/arizona/core.h
> @@ -132,6 +132,8 @@ struct arizona {
> struct mutex clk_lock;
> int clk32k_ref;
>
> + bool ctrlif_error;
> +
> struct snd_soc_dapm_context *dapm;
> };
>
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
prev parent reply other threads:[~2014-07-28 7:03 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-15 10:21 [PATCH 0/6] wm5110 Interrupt Updates Charles Keepax
2014-07-15 10:21 ` [PATCH 1/6 RESEND] mfd: wm5110: Remove non-existant interrupts Charles Keepax
2014-07-28 7:01 ` Lee Jones
2014-07-15 10:21 ` [PATCH 2/6 RESEND] mfd: wm5110: Add in the output done interrupts Charles Keepax
2014-07-28 7:02 ` Lee Jones
2014-07-15 10:21 ` [PATCH 3/6 RESEND] mfd: arizona: Rename thermal shutdown interrupt Charles Keepax
2014-07-28 7:02 ` Lee Jones
2014-07-15 10:21 ` [PATCH 4/6 RESEND] mfd: wm5110: Add new interrupt register definitions Charles Keepax
2014-07-28 7:02 ` Lee Jones
2014-07-15 10:21 ` [PATCH 5/6 RESEND] mfd: arizona: Add missing handling for ISRC3 under/overclocked Charles Keepax
2014-07-28 7:02 ` Lee Jones
2014-07-15 10:21 ` [PATCH 6/6 RESEND] mfd: arizona: Only free the CTRLIF_ERR IRQ if we requested it Charles Keepax
2014-07-28 7:03 ` Lee Jones [this message]
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=20140728070313.GJ5273@lee--X1 \
--to=lee.jones@linaro.org \
--cc=broonie@kernel.org \
--cc=ckeepax@opensource.wolfsonmicro.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@opensource.wolfsonmicro.com \
--cc=sameo@linux.intel.com \
/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.