From: Lee Jones <lee@kernel.org>
To: Johan Hovold <johan+linaro@kernel.org>
Cc: Mark Brown <broonie@kernel.org>,
Linus Walleij <linus.walleij@linaro.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Das Srinagesh <quic_gurus@quicinc.com>,
Satya Priya Kakitapalli <quic_skakitap@quicinc.com>,
Stephen Boyd <swboyd@chromium.org>,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
Andy Shevchenko <andy.shevchenko@gmail.com>,
linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org
Subject: Re: [PATCH v2 02/14] mfd: pm8008: fix regmap irq chip initialisation
Date: Fri, 31 May 2024 18:03:53 +0100 [thread overview]
Message-ID: <20240531170353.GB1204315@google.com> (raw)
In-Reply-To: <20240529162958.18081-3-johan+linaro@kernel.org>
On Wed, 29 May 2024, Johan Hovold wrote:
> The regmap irq array is potentially shared between multiple PMICs and
> should only contain static data.
>
> Use a custom macro to initialise also the type fields and drop the
> unnecessary updates on each probe.
>
> Fixes: 6b149f3310a4 ("mfd: pm8008: Add driver for QCOM PM8008 PMIC")
> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
> ---
> drivers/mfd/qcom-pm8008.c | 64 ++++++++++++++-------------------------
> 1 file changed, 23 insertions(+), 41 deletions(-)
>
> diff --git a/drivers/mfd/qcom-pm8008.c b/drivers/mfd/qcom-pm8008.c
> index 3ac3742f438b..f71c490f25c8 100644
> --- a/drivers/mfd/qcom-pm8008.c
> +++ b/drivers/mfd/qcom-pm8008.c
> @@ -56,15 +56,25 @@ static unsigned int pm8008_config_regs[] = {
> INT_POL_LOW_OFFSET,
> };
>
> -static struct regmap_irq pm8008_irqs[] = {
> - REGMAP_IRQ_REG(PM8008_IRQ_MISC_UVLO, PM8008_MISC, BIT(0)),
> - REGMAP_IRQ_REG(PM8008_IRQ_MISC_OVLO, PM8008_MISC, BIT(1)),
> - REGMAP_IRQ_REG(PM8008_IRQ_MISC_OTST2, PM8008_MISC, BIT(2)),
> - REGMAP_IRQ_REG(PM8008_IRQ_MISC_OTST3, PM8008_MISC, BIT(3)),
> - REGMAP_IRQ_REG(PM8008_IRQ_MISC_LDO_OCP, PM8008_MISC, BIT(4)),
> - REGMAP_IRQ_REG(PM8008_IRQ_TEMP_ALARM, PM8008_TEMP_ALARM, BIT(0)),
> - REGMAP_IRQ_REG(PM8008_IRQ_GPIO1, PM8008_GPIO1, BIT(0)),
> - REGMAP_IRQ_REG(PM8008_IRQ_GPIO2, PM8008_GPIO2, BIT(0)),
> +#define _IRQ(_irq, _off, _mask, _types) \
> + [_irq] = { \
> + .reg_offset = (_off), \
> + .mask = (_mask), \
> + .type = { \
> + .type_reg_offset = (_off), \
> + .types_supported = (_types), \
> + }, \
> + }
Any reason why this can't be generic and be tucked away somewhere in a
header file?
> +static const struct regmap_irq pm8008_irqs[] = {
> + _IRQ(PM8008_IRQ_MISC_UVLO, PM8008_MISC, BIT(0), IRQ_TYPE_EDGE_RISING),
> + _IRQ(PM8008_IRQ_MISC_OVLO, PM8008_MISC, BIT(1), IRQ_TYPE_EDGE_RISING),
> + _IRQ(PM8008_IRQ_MISC_OTST2, PM8008_MISC, BIT(2), IRQ_TYPE_EDGE_RISING),
> + _IRQ(PM8008_IRQ_MISC_OTST3, PM8008_MISC, BIT(3), IRQ_TYPE_EDGE_RISING),
> + _IRQ(PM8008_IRQ_MISC_LDO_OCP, PM8008_MISC, BIT(4), IRQ_TYPE_EDGE_RISING),
> + _IRQ(PM8008_IRQ_TEMP_ALARM, PM8008_TEMP_ALARM,BIT(0), IRQ_TYPE_SENSE_MASK),
> + _IRQ(PM8008_IRQ_GPIO1, PM8008_GPIO1, BIT(0), IRQ_TYPE_SENSE_MASK),
> + _IRQ(PM8008_IRQ_GPIO2, PM8008_GPIO2, BIT(0), IRQ_TYPE_SENSE_MASK),
> };
>
> static const unsigned int pm8008_periph_base[] = {
> @@ -143,38 +153,9 @@ static struct regmap_config qcom_mfd_regmap_cfg = {
> .max_register = 0xFFFF,
> };
>
> -static int pm8008_probe_irq_peripherals(struct device *dev,
> - struct regmap *regmap,
> - int client_irq)
> -{
> - int rc, i;
> - struct regmap_irq_type *type;
> - struct regmap_irq_chip_data *irq_data;
> -
> - for (i = 0; i < ARRAY_SIZE(pm8008_irqs); i++) {
> - type = &pm8008_irqs[i].type;
> -
> - type->type_reg_offset = pm8008_irqs[i].reg_offset;
> -
> - if (type->type_reg_offset == PM8008_MISC)
> - type->types_supported = IRQ_TYPE_EDGE_RISING;
> - else
> - type->types_supported = (IRQ_TYPE_EDGE_BOTH |
> - IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW);
> - }
> -
> - rc = devm_regmap_add_irq_chip(dev, regmap, client_irq,
> - IRQF_SHARED, 0, &pm8008_irq_chip, &irq_data);
> - if (rc) {
> - dev_err(dev, "Failed to add IRQ chip: %d\n", rc);
> - return rc;
> - }
> -
> - return 0;
> -}
> -
> static int pm8008_probe(struct i2c_client *client)
> {
> + struct regmap_irq_chip_data *irq_data;
> int rc;
> struct device *dev;
> struct regmap *regmap;
> @@ -187,9 +168,10 @@ static int pm8008_probe(struct i2c_client *client)
> i2c_set_clientdata(client, regmap);
>
> if (of_property_read_bool(dev->of_node, "interrupt-controller")) {
> - rc = pm8008_probe_irq_peripherals(dev, regmap, client->irq);
> + rc = devm_regmap_add_irq_chip(dev, regmap, client->irq,
> + IRQF_SHARED, 0, &pm8008_irq_chip, &irq_data);
> if (rc)
> - dev_err(dev, "Failed to probe irq periphs: %d\n", rc);
> + dev_err(dev, "failed to add IRQ chip: %d\n", rc);
> }
>
> return devm_of_platform_populate(dev);
> --
> 2.44.1
>
--
Lee Jones [李琼斯]
next prev parent reply other threads:[~2024-05-31 17:04 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-29 16:29 [PATCH v2 00/14] arm64: dts: qcom: sc8280xp-x13s: enable pm8008 camera pmic Johan Hovold
2024-05-29 16:29 ` [PATCH v2 01/14] dt-bindings: mfd: pm8008: add reset gpio Johan Hovold
2024-05-29 16:29 ` [PATCH v2 02/14] mfd: pm8008: fix regmap irq chip initialisation Johan Hovold
2024-05-31 16:22 ` Bryan O'Donoghue
2024-05-31 17:03 ` Lee Jones [this message]
2024-06-08 15:48 ` Johan Hovold
2024-05-29 16:29 ` [PATCH v2 03/14] mfd: pm8008: deassert reset on probe Johan Hovold
2024-05-29 19:45 ` Andy Shevchenko
2024-05-30 8:07 ` Johan Hovold
2024-05-30 8:34 ` Andy Shevchenko
2024-05-30 8:51 ` Johan Hovold
2024-05-29 16:29 ` [PATCH v2 04/14] mfd: pm8008: mark regmap structures as const Johan Hovold
2024-05-29 16:29 ` [PATCH v2 05/14] mfd: pm8008: use lower case hex notation Johan Hovold
2024-05-29 16:29 ` [PATCH v2 06/14] mfd: pm8008: rename irq chip Johan Hovold
2024-05-29 16:29 ` [PATCH v2 07/14] mfd: pm8008: drop unused driver data Johan Hovold
2024-05-29 16:29 ` [PATCH v2 08/14] pinctrl: qcom: spmi-gpio: drop broken pm8008 support Johan Hovold
2024-06-07 20:52 ` Linus Walleij
2024-05-29 16:29 ` [PATCH v2 09/14] dt-bindings: pinctrl: qcom,pmic-gpio: drop pm8008 Johan Hovold
2024-06-04 14:38 ` Rob Herring (Arm)
2024-06-07 20:53 ` Linus Walleij
2024-05-29 16:29 ` [PATCH v2 10/14] dt-bindings: mfd: pm8008: drop redundant descriptions Johan Hovold
2024-06-04 14:38 ` Rob Herring (Arm)
2024-05-29 16:29 ` [PATCH v2 11/14] dt-bindings: mfd: pm8008: rework binding Johan Hovold
2024-06-04 14:43 ` Rob Herring
2024-06-05 8:43 ` Dmitry Baryshkov
2024-06-08 15:36 ` Johan Hovold
2024-06-10 18:12 ` Dmitry Baryshkov
2024-05-29 16:29 ` [PATCH v2 12/14] mfd: pm8008: rework driver Johan Hovold
2024-05-29 19:53 ` Andy Shevchenko
2024-05-30 8:09 ` Johan Hovold
2024-05-31 17:08 ` Lee Jones
2024-05-31 18:44 ` Andy Shevchenko
2024-05-29 16:29 ` [PATCH v2 13/14] regulator: add pm8008 pmic regulator driver Johan Hovold
2024-05-29 20:02 ` Andy Shevchenko
2024-05-30 8:14 ` Johan Hovold
2024-05-30 8:46 ` Andy Shevchenko
2024-05-30 8:56 ` Johan Hovold
2024-05-30 11:59 ` Mark Brown
2024-05-29 16:29 ` [PATCH v2 14/14] arm64: dts: qcom: sc8280xp-x13s: enable pm8008 camera pmic Johan Hovold
2024-05-31 17:11 ` [PATCH v2 00/14] " 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=20240531170353.GB1204315@google.com \
--to=lee@kernel.org \
--cc=andersson@kernel.org \
--cc=andy.shevchenko@gmail.com \
--cc=broonie@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=johan+linaro@kernel.org \
--cc=konrad.dybcio@linaro.org \
--cc=krzk+dt@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=quic_gurus@quicinc.com \
--cc=quic_skakitap@quicinc.com \
--cc=robh@kernel.org \
--cc=swboyd@chromium.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.