From: Laxman Dewangan <ldewangan@nvidia.com>
To: Lee Jones <lee.jones@linaro.org>
Cc: <broonie@kernel.org>, <gregkh@linuxfoundation.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] mfd: max77620: Add pre/post irq handler before/after servicing interrupt
Date: Wed, 8 Jun 2016 21:12:24 +0530 [thread overview]
Message-ID: <57583CE0.70501@nvidia.com> (raw)
In-Reply-To: <20160608144136.GL14888@dell>
Hi Lee,
On Wednesday 08 June 2016 08:11 PM, Lee Jones wrote:
> On Fri, 20 May 2016, Laxman Dewangan wrote:
>
>> + * MAX77620 and MAX20024 has the following steps of the interrupt handling
>> + * for TOP interrupts:
>> + * 1. When interrupt occurs from PMIC, mask the PMIC interrupt by setting GLBLM.
>> + * 2. Read IRQTOP and service the interrupt.
>> + * 3. Once all interrupts has been checked and serviced, the interrupt service
>> + * routine un-masks the hardware interrupt line by clearing GLBLM.
>> + */
>> +static int max77620_top_irq_chip_pre_irq_handler(void *irq_drv_data)
>> +{
>> + struct max77620_chip *chip = irq_drv_data;
>> + int ret;
>> +
>> + ret = regmap_update_bits(chip->rmap, MAX77620_REG_INTENLBT,
>> + MAX77620_GLBLM_MASK, MAX77620_GLBLM_MASK);
>> + if (ret < 0)
>> + dev_err(chip->dev, "Failed to set GLBLM: %d\n", ret);
>> +
>> + return ret;
>> +}
>> +
>> +static int max77620_top_irq_chip_post_irq_handler(void *irq_drv_data)
>> +{
>> + struct max77620_chip *chip = irq_drv_data;
>> + int ret;
>> +
>> + ret = regmap_update_bits(chip->rmap, MAX77620_REG_INTENLBT,
>> + MAX77620_GLBLM_MASK, 0);
>> + if (ret < 0)
>> + dev_err(chip->dev, "Failed to reset GLBLM: %d\n", ret);
>> +
>> + return ret;
>> +}
> This seems massively over compacted. All you're effectively doing
> here is masking and unmasking the IRQs, which we do almost
> ubiquitously with interrupt controllers. Can't you just call the
> functions "max77629_{un}mask_irqs()"?
>
>
Actually, per PMIC HW design, we need to toggle this bit on ISRs. Before
reading the status, need to set 1 and then after handling it need to set
0. This cannot be done by any other bit toggling or masking/unmasking
interrupt controller interrupt.
This is hard requirement from the PMIC chip.
next prev parent reply other threads:[~2016-06-08 15:55 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-20 15:10 [PATCH 1/2] regmap: irq: Add support to call client specific pre/post interrupt service Laxman Dewangan
2016-05-20 15:10 ` [PATCH 2/2] mfd: max77620: Add pre/post irq handler before/after servicing interrupt Laxman Dewangan
2016-06-08 14:41 ` Lee Jones
2016-06-08 15:42 ` Laxman Dewangan [this message]
2016-06-09 14:47 ` Lee Jones
2016-06-02 23:46 ` [PATCH 1/2] regmap: irq: Add support to call client specific pre/post interrupt service Mark Brown
2016-06-08 14:33 ` Lee Jones
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=57583CE0.70501@nvidia.com \
--to=ldewangan@nvidia.com \
--cc=broonie@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=lee.jones@linaro.org \
--cc=linux-kernel@vger.kernel.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.