linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
To: lee@kernel.org
Cc: mani@kernel.org, cristian.ciocaltea@gmail.com, wens@csie.org,
	tharvey@gateworks.com, cw00.choi@samsung.com,
	krzysztof.kozlowski@linaro.org, brgl@bgdev.pl,
	mazziesaccount@gmail.com, orsonzhai@gmail.com,
	baolin.wang@linux.alibaba.com, zhang.lyra@gmail.com,
	jernej.skrabec@gmail.com, samuel@sholland.org,
	linux-kernel@vger.kernel.org, linux-actions@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-sunxi@lists.linux.dev
Subject: [PATCH 15/18] mfd: stpmic1: Fix swapped mask/unmask in irq chip
Date: Sat, 12 Nov 2022 15:18:32 +0000	[thread overview]
Message-ID: <20221112151835.39059-16-aidanmacdonald.0x0@gmail.com> (raw)
In-Reply-To: <20221112151835.39059-1-aidanmacdonald.0x0@gmail.com>

The usual behavior of mask registers is writing a '1' bit to
disable (mask) an interrupt; similarly, writing a '1' bit to
an unmask register enables (unmasks) an interrupt.

Due to a longstanding issue in regmap-irq, mask and unmask
registers were inverted when both kinds of registers were
present on the same chip, ie. regmap-irq actually wrote '1's
to the mask register to enable an IRQ and '1's to the unmask
register to disable an IRQ.

This was fixed by commit e8ffb12e7f06 ("regmap-irq: Fix
inverted handling of unmask registers") but the fix is opt-in
via mask_unmask_non_inverted = true because it requires manual
changes for each affected driver. The new behavior will become
the default once all drivers have been updated.

The STPMIC1 has a normal mask register with separate set and
clear registers. The driver intends to use the set & clear
registers with regmap-irq and has compensated for regmap-irq's
inverted behavior, and should currently be working properly.
Thus, swap mask_base and unmask_base, and opt in to the new
non-inverted behavior.

Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
---
 drivers/mfd/stpmic1.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/mfd/stpmic1.c b/drivers/mfd/stpmic1.c
index eb3da558c3fb..ee0469d5d435 100644
--- a/drivers/mfd/stpmic1.c
+++ b/drivers/mfd/stpmic1.c
@@ -108,8 +108,9 @@ static const struct regmap_irq stpmic1_irqs[] = {
 static const struct regmap_irq_chip stpmic1_regmap_irq_chip = {
 	.name = "pmic_irq",
 	.status_base = INT_PENDING_R1,
-	.mask_base = INT_CLEAR_MASK_R1,
-	.unmask_base = INT_SET_MASK_R1,
+	.mask_base = INT_SET_MASK_R1,
+	.unmask_base = INT_CLEAR_MASK_R1,
+	.mask_unmask_non_inverted = true,
 	.ack_base = INT_CLEAR_R1,
 	.num_regs = STPMIC1_PMIC_NUM_IRQ_REGS,
 	.irqs = stpmic1_irqs,
-- 
2.38.1


  parent reply	other threads:[~2022-11-12 15:20 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-12 15:18 [PATCH 00/18] mfd: Clean up deprecated regmap-irq functionality Aidan MacDonald
2022-11-12 15:18 ` [PATCH 01/18] mfd: 88pm800: Replace irqchip mask_invert with unmask_base Aidan MacDonald
2022-11-16 17:32   ` Lee Jones
2022-11-12 15:18 ` [PATCH 02/18] mfd: atc260x: " Aidan MacDonald
2022-11-16 17:33   ` Lee Jones
2022-11-12 15:18 ` [PATCH 03/18] mfd: axp20x: " Aidan MacDonald
2022-11-13 18:42   ` Samuel Holland
2022-11-16 17:33   ` Lee Jones
2022-11-12 15:18 ` [PATCH 04/18] mfd: gateworks-gsc: " Aidan MacDonald
2022-11-16 17:34   ` Lee Jones
2022-11-12 15:18 ` [PATCH 05/18] mfd: max14577: " Aidan MacDonald
2022-11-14 10:21   ` Krzysztof Kozlowski
2022-11-14 13:34     ` Aidan MacDonald
2022-11-14 14:02       ` Lee Jones
2022-11-16 17:34   ` Lee Jones
2022-11-12 15:18 ` [PATCH 06/18] mfd: max77650: Remove useless type_invert flag Aidan MacDonald
2022-11-14 12:24   ` Bartosz Golaszewski
2022-11-16 17:54   ` Lee Jones
2022-11-12 15:18 ` [PATCH 07/18] mfd: max77693: Replace irqchip mask_invert with unmask_base Aidan MacDonald
2022-11-14 10:21   ` Krzysztof Kozlowski
2022-11-16 17:54   ` Lee Jones
2022-11-12 15:18 ` [PATCH 08/18] mfd: max77843: Drop useless mask_invert flag on irqchip Aidan MacDonald
2022-11-14 10:21   ` Krzysztof Kozlowski
2022-11-16 17:55   ` Lee Jones
2022-11-12 15:18 ` [PATCH 09/18] mfd: rn5t618: Replace irqchip mask_invert with unmask_base Aidan MacDonald
2022-11-16 17:56   ` Lee Jones
2022-11-12 15:18 ` [PATCH 10/18] mfd: rohm-bd71828: " Aidan MacDonald
2022-11-14  6:26   ` Matti Vaittinen
2022-11-16 17:56   ` Lee Jones
2022-11-12 15:18 ` [PATCH 11/18] mfd: rohm-bd718x7: Drop useless mask_invert flag on irqchip Aidan MacDonald
2022-11-14  6:27   ` Matti Vaittinen
2022-11-16 17:56   ` Lee Jones
2022-11-12 15:18 ` [PATCH 12/18] mfd: rt5033: Replace irqchip mask_invert with unmask_base Aidan MacDonald
2022-11-16 17:57   ` Lee Jones
2022-11-12 15:18 ` [PATCH 13/18] mfd: rt5120: " Aidan MacDonald
2022-11-16 17:57   ` Lee Jones
2022-11-12 15:18 ` [PATCH 14/18] mfd: sprd-sc27xx-spi: " Aidan MacDonald
2022-11-14  6:34   ` Baolin Wang
2022-11-16 17:58   ` Lee Jones
2022-11-12 15:18 ` Aidan MacDonald [this message]
2022-11-16 17:58   ` [PATCH 15/18] mfd: stpmic1: Fix swapped mask/unmask in irq chip Lee Jones
2022-11-12 15:18 ` [PATCH 16/18] mfd: sun4i-gpadc: Replace irqchip mask_invert with unmask_base Aidan MacDonald
2022-11-13 18:47   ` Samuel Holland
2022-11-16 17:59   ` Lee Jones
2022-11-12 15:18 ` [PATCH 17/18] mfd: tps65090: " Aidan MacDonald
2022-11-16 17:59   ` Lee Jones
2022-11-12 15:18 ` [PATCH 18/18] mfd: wcd934x: Convert irq chip to config regs Aidan MacDonald
2022-11-12 15:31   ` Aidan MacDonald
2022-11-16 18:00   ` Lee Jones
2022-11-15 10:17 ` [PATCH 00/18] mfd: Clean up deprecated regmap-irq functionality Matti Vaittinen

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=20221112151835.39059-16-aidanmacdonald.0x0@gmail.com \
    --to=aidanmacdonald.0x0@gmail.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=brgl@bgdev.pl \
    --cc=cristian.ciocaltea@gmail.com \
    --cc=cw00.choi@samsung.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=krzysztof.kozlowski@linaro.org \
    --cc=lee@kernel.org \
    --cc=linux-actions@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=mani@kernel.org \
    --cc=mazziesaccount@gmail.com \
    --cc=orsonzhai@gmail.com \
    --cc=samuel@sholland.org \
    --cc=tharvey@gateworks.com \
    --cc=wens@csie.org \
    --cc=zhang.lyra@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).