Linux-Renesas-SoC Archive on
 help / color / Atom feed
From: Simon Horman <>
	Magnus Damm <>,
	Marek Vasut <>,
	Marek Vasut <>,
	Simon Horman <>
Subject: [PATCH 2/2] ARM: shmobile: Fix R-Car Gen2 regulator quirk
Date: Fri,  8 Feb 2019 12:14:28 +0100
Message-ID: <> (raw)
In-Reply-To: <>

From: Marek Vasut <>

The quirk code currently detects all compatible I2C chips with a shared
IRQ line on all I2C busses, adds them into a list, and registers a bus
notifier. For every chip for which the bus notifier triggers, the quirk
code performs I2C transfer on that I2C bus for all addresses in the list.
The problem is that this may generate transfers to non-existing chips on
systems with multiple I2C busses.

This patch adds a check to verify that the I2C bus to which the chip with
shared IRQ is attached to matches the I2C bus of the chip which triggered
the bus notifier and only starts the I2C transfer if they match.

Signed-off-by: Marek Vasut <>
Tested-by: Nguyen Viet Dung <>
Signed-off-by: Simon Horman <>
 arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
index 8e50daa99151..dc526ef2e9b3 100644
--- a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
+++ b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
@@ -40,6 +40,7 @@
 struct regulator_quirk {
 	struct list_head		list;
 	const struct of_device_id	*id;
+	struct device_node		*np;
 	struct of_phandle_args		irq_args;
 	struct i2c_msg			i2c_msg;
 	bool				shared;	/* IRQ line is shared */
@@ -101,6 +102,9 @@ static int regulator_quirk_notify(struct notifier_block *nb,
 		if (!pos->shared)
+		if (pos->np->parent != client->dev.parent->of_node)
+			continue;
 		dev_info(&client->dev, "clearing %s@0x%02x interrupts\n",
 			 pos->id->compatible, pos->i2c_msg.addr);
@@ -165,6 +169,7 @@ static int __init rcar_gen2_regulator_quirk(void)
 		memcpy(&quirk->i2c_msg, id->data, sizeof(quirk->i2c_msg));
 		quirk->id = id;
+		quirk->np = np;
 		quirk->i2c_msg.addr = addr;
 		ret = of_irq_parse_one(np, 0, argsa);

  parent reply index

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-08 11:14 [GIT PULL] Renesas ARM Based SoC Updates for v5.1 Simon Horman
2019-02-08 11:14 ` [PATCH 1/2] ARM: shmobile: Add missing dts files to MAINTAINERS Simon Horman
2019-02-08 11:14 ` Simon Horman [this message]
2019-02-15 16:49 ` [GIT PULL] Renesas ARM Based SoC Updates for v5.1 Arnd Bergmann
2019-02-18 11:27   ` Simon Horman
2019-02-18 13:12     ` Arnd Bergmann
2019-02-18 14:15       ` Simon Horman
2019-02-18 14:21         ` Arnd Bergmann
2019-02-25 10:05           ` Simon Horman

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:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-Renesas-SoC Archive on

Archives are clonable:
	git clone --mirror linux-renesas-soc/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-renesas-soc linux-renesas-soc/ \
	public-inbox-index linux-renesas-soc

Example config snippet for mirrors

Newsgroup available over NNTP:

AGPL code for this site: git clone