* Re: [PATCH] i2c: i2c-core-base: fix devicetree alias handling [not found] <20260302-i2cfix-v1-1-a95418e9217e@kemnade.info> @ 2026-03-06 10:18 ` Jon Hunter 2026-03-06 14:04 ` Jon Hunter 2026-03-07 17:26 ` Andreas Kemnade 0 siblings, 2 replies; 5+ messages in thread From: Jon Hunter @ 2026-03-06 10:18 UTC (permalink / raw) To: Andreas Kemnade, Wolfram Sang, Frank Li, Linus Walleij, Patrice Chotard, Florian Fainelli, Dave Stevenson Cc: Bartosz Golaszewski, Bartosz Golaszewski, linux-i2c, linux-kernel, Kalle Niemi, linux-tegra@vger.kernel.org Hi Andreas, On 02/03/2026 17:04, Andreas Kemnade wrote: > Parent device is not set up there, so use the new of_node pointer to > handle aliases. > > Fixes: 0ab80451c70f ("i2c: allow setting the parent device and OF node through the adapter struct") > Reported-by: Kalle Niemi <kaleposti@gmail.com> > Closes: https://lore.kernel.org/lkml/EDF3FB58-4747-442E-8463-6F1C6E568962@gmail.com/ > Signed-off-by: Andreas Kemnade <andreas@kemnade.info> > --- > drivers/i2c/i2c-core-base.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c > index dd8cec9b04c6..e22d784202b8 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -1657,10 +1657,9 @@ static int __i2c_add_numbered_adapter(struct i2c_adapter *adap) > */ > int i2c_add_adapter(struct i2c_adapter *adapter) > { > - struct device *dev = &adapter->dev; > int id; > > - id = of_alias_get_id(dev->of_node, "i2c"); > + id = of_alias_get_id(adapter->of_node, "i2c"); > if (id >= 0) { > adapter->nr = id; > return __i2c_add_numbered_adapter(adapter); This change is breaking a test we run to check that I2C devices are populated as expected on a few of our Tegra boards. For example, on the Tegra234 board, the I2C aliases are defined in arch/arm64/boot/dts/nvidia/tegra234.dtsi. Here we have ... aliases { i2c0 = &gen1_i2c; i2c1 = &gen2_i2c; i2c2 = &cam_i2c; i2c3 = &dp_aux_ch1_i2c; i2c4 = &bpmp_i2c; i2c5 = &dp_aux_ch0_i2c; i2c6 = &dp_aux_ch2_i2c; i2c7 = &gen8_i2c; i2c8 = &dp_aux_ch3_i2c; }; Before this change, on the Tegra234 Jetson AGX Orin board (tegra234-p3737-0000+p3701-0000.dts) the I2C devices were mapped as above ... /sys/class/i2c-dev/i2c-0/name --> 3160000.i2c /sys/class/i2c-dev/i2c-1/name --> c240000.i2c /sys/class/i2c-dev/i2c-4/name --> Tegra BPMP I2C adapter /sys/class/i2c-dev/i2c-8/name --> 31e0000.i2c After this change I now see ... /sys/class/i2c-dev/i2c-9/name --> Tegra BPMP I2C adapter /sys/class/i2c-dev/i2c-10/name --> 3160000.i2c /sys/class/i2c-dev/i2c-11/name --> 31e0000.i2c /sys/class/i2c-dev/i2c-12/name --> c240000.i2c So the subject says that this fixes device-tree aliases, but it appears to break it for Tegra. In fact, this patch appears to have the same problem that you reported with Bartosz's change. Reverting this change fixes the problem. So I am a bit confused why we are seeing different behaviour. Jon -- nvpublic ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] i2c: i2c-core-base: fix devicetree alias handling 2026-03-06 10:18 ` [PATCH] i2c: i2c-core-base: fix devicetree alias handling Jon Hunter @ 2026-03-06 14:04 ` Jon Hunter 2026-03-07 17:26 ` Andreas Kemnade 1 sibling, 0 replies; 5+ messages in thread From: Jon Hunter @ 2026-03-06 14:04 UTC (permalink / raw) To: Andreas Kemnade, Wolfram Sang, Frank Li, Linus Walleij, Patrice Chotard, Florian Fainelli, Dave Stevenson Cc: Bartosz Golaszewski, Bartosz Golaszewski, linux-i2c, linux-kernel, Kalle Niemi, linux-tegra@vger.kernel.org On 06/03/2026 10:18, Jon Hunter wrote: > Hi Andreas, > > On 02/03/2026 17:04, Andreas Kemnade wrote: >> Parent device is not set up there, so use the new of_node pointer to >> handle aliases. >> >> Fixes: 0ab80451c70f ("i2c: allow setting the parent device and OF node >> through the adapter struct") >> Reported-by: Kalle Niemi <kaleposti@gmail.com> >> Closes: https://lore.kernel.org/lkml/ >> EDF3FB58-4747-442E-8463-6F1C6E568962@gmail.com/ >> Signed-off-by: Andreas Kemnade <andreas@kemnade.info> >> --- >> drivers/i2c/i2c-core-base.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c >> index dd8cec9b04c6..e22d784202b8 100644 >> --- a/drivers/i2c/i2c-core-base.c >> +++ b/drivers/i2c/i2c-core-base.c >> @@ -1657,10 +1657,9 @@ static int __i2c_add_numbered_adapter(struct >> i2c_adapter *adap) >> */ >> int i2c_add_adapter(struct i2c_adapter *adapter) >> { >> - struct device *dev = &adapter->dev; >> int id; >> - id = of_alias_get_id(dev->of_node, "i2c"); >> + id = of_alias_get_id(adapter->of_node, "i2c"); >> if (id >= 0) { >> adapter->nr = id; >> return __i2c_add_numbered_adapter(adapter); > > This change is breaking a test we run to check that I2C devices are > populated as expected on a few of our Tegra boards. For example, on the > Tegra234 board, the I2C aliases are defined in arch/arm64/boot/dts/ > nvidia/tegra234.dtsi. Here we have ... > > aliases { > i2c0 = &gen1_i2c; > i2c1 = &gen2_i2c; > i2c2 = &cam_i2c; > i2c3 = &dp_aux_ch1_i2c; > i2c4 = &bpmp_i2c; > i2c5 = &dp_aux_ch0_i2c; > i2c6 = &dp_aux_ch2_i2c; > i2c7 = &gen8_i2c; > i2c8 = &dp_aux_ch3_i2c; > }; I guess I should add the mapping (from tegra234.dtsi) ... &gen1_i2c --> i2c@3160000 &gen2_i2c --> i2c@c240000 &bpmp_i2c --> Tegra BPMP I2C adapter dp_aux_ch3_i2c --> i2c@31e0000 > Before this change, on the Tegra234 Jetson AGX Orin board (tegra234- > p3737-0000+p3701-0000.dts) the I2C devices were mapped as above ... > > /sys/class/i2c-dev/i2c-0/name --> 3160000.i2c > /sys/class/i2c-dev/i2c-1/name --> c240000.i2c > /sys/class/i2c-dev/i2c-4/name --> Tegra BPMP I2C adapter > /sys/class/i2c-dev/i2c-8/name --> 31e0000.i2c Hence this looks correct. > After this change I now see ... > > /sys/class/i2c-dev/i2c-9/name --> Tegra BPMP I2C adapter > /sys/class/i2c-dev/i2c-10/name --> 3160000.i2c > /sys/class/i2c-dev/i2c-11/name --> 31e0000.i2c > /sys/class/i2c-dev/i2c-12/name --> c240000.i2c But this does not. Jon -- nvpublic ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] i2c: i2c-core-base: fix devicetree alias handling 2026-03-06 10:18 ` [PATCH] i2c: i2c-core-base: fix devicetree alias handling Jon Hunter 2026-03-06 14:04 ` Jon Hunter @ 2026-03-07 17:26 ` Andreas Kemnade 2026-03-09 9:08 ` Bartosz Golaszewski 1 sibling, 1 reply; 5+ messages in thread From: Andreas Kemnade @ 2026-03-07 17:26 UTC (permalink / raw) To: Jon Hunter Cc: Wolfram Sang, Frank Li, Linus Walleij, Patrice Chotard, Florian Fainelli, Dave Stevenson, Bartosz Golaszewski, Bartosz Golaszewski, linux-i2c, linux-kernel, Kalle Niemi, linux-tegra@vger.kernel.org On Fri, 6 Mar 2026 10:18:09 +0000 Jon Hunter <jonathanh@nvidia.com> wrote: [...] > /sys/class/i2c-dev/i2c-0/name --> 3160000.i2c > /sys/class/i2c-dev/i2c-1/name --> c240000.i2c > /sys/class/i2c-dev/i2c-4/name --> Tegra BPMP I2C adapter > /sys/class/i2c-dev/i2c-8/name --> 31e0000.i2c > > After this change I now see ... > > /sys/class/i2c-dev/i2c-9/name --> Tegra BPMP I2C adapter > /sys/class/i2c-dev/i2c-10/name --> 3160000.i2c > /sys/class/i2c-dev/i2c-11/name --> 31e0000.i2c > /sys/class/i2c-dev/i2c-12/name --> c240000.i2c > > So the subject says that this fixes device-tree aliases, but it appears > to break it for Tegra. In fact, this patch appears to have the same > problem that you reported with Bartosz's change. Reverting this change > fixes the problem. So I am a bit confused why we are seeing different > behaviour. > Hmm, i2c-tegra.c was forgotten in Bartosz's change because the code looks a bit different. There is still i2c_dev->adapter.dev.of_node = i2c_dev->dev->of_node; i2c_dev->adapter.dev.parent = i2c_dev->dev; there. compared to adap->parent = &pdev->dev; adap->of_node = pdev->dev.of_node; in omap code. So I think, the easiest to get forward is to also adapt i2c-tegra.c. Regards, Andreas ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] i2c: i2c-core-base: fix devicetree alias handling 2026-03-07 17:26 ` Andreas Kemnade @ 2026-03-09 9:08 ` Bartosz Golaszewski 2026-03-09 11:40 ` Wolfram Sang 0 siblings, 1 reply; 5+ messages in thread From: Bartosz Golaszewski @ 2026-03-09 9:08 UTC (permalink / raw) To: Andreas Kemnade, Wolfram Sang, Johan Hovold Cc: Jon Hunter, Frank Li, Linus Walleij, Patrice Chotard, Florian Fainelli, Dave Stevenson, Bartosz Golaszewski, linux-i2c, linux-kernel, Kalle Niemi, linux-tegra@vger.kernel.org On Sat, Mar 7, 2026 at 6:27 PM Andreas Kemnade <andreas@kemnade.info> wrote: > > On Fri, 6 Mar 2026 10:18:09 +0000 > Jon Hunter <jonathanh@nvidia.com> wrote: > > [...] > > > /sys/class/i2c-dev/i2c-0/name --> 3160000.i2c > > /sys/class/i2c-dev/i2c-1/name --> c240000.i2c > > /sys/class/i2c-dev/i2c-4/name --> Tegra BPMP I2C adapter > > /sys/class/i2c-dev/i2c-8/name --> 31e0000.i2c > > > > After this change I now see ... > > > > /sys/class/i2c-dev/i2c-9/name --> Tegra BPMP I2C adapter > > /sys/class/i2c-dev/i2c-10/name --> 3160000.i2c > > /sys/class/i2c-dev/i2c-11/name --> 31e0000.i2c > > /sys/class/i2c-dev/i2c-12/name --> c240000.i2c > > > > So the subject says that this fixes device-tree aliases, but it appears > > to break it for Tegra. In fact, this patch appears to have the same > > problem that you reported with Bartosz's change. Reverting this change > > fixes the problem. So I am a bit confused why we are seeing different > > behaviour. > > > Hmm, i2c-tegra.c was forgotten in Bartosz's change because > the code looks a bit different. > It was not forgotten, rather my series only changed a part of the users and I was planning to continue the work but it seems like Johan committed to attempting to rework i2c using a different approach[1]. Wolfram: do you want to drop these patches from your v7.1 queue then? Bartosz > There is still > i2c_dev->adapter.dev.of_node = i2c_dev->dev->of_node; > i2c_dev->adapter.dev.parent = i2c_dev->dev; > there. > compared to > adap->parent = &pdev->dev; > adap->of_node = pdev->dev.of_node; > > in omap code. So I think, the easiest to get forward is to > also adapt i2c-tegra.c. > > Regards, > Andreas [1] https://lore.kernel.org/all/aar3rj7Db6NmTVS_@hovoldconsulting.com/ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] i2c: i2c-core-base: fix devicetree alias handling 2026-03-09 9:08 ` Bartosz Golaszewski @ 2026-03-09 11:40 ` Wolfram Sang 0 siblings, 0 replies; 5+ messages in thread From: Wolfram Sang @ 2026-03-09 11:40 UTC (permalink / raw) To: Bartosz Golaszewski Cc: Andreas Kemnade, Johan Hovold, Jon Hunter, Frank Li, Linus Walleij, Patrice Chotard, Florian Fainelli, Dave Stevenson, Bartosz Golaszewski, linux-i2c, linux-kernel, Kalle Niemi, linux-tegra@vger.kernel.org [-- Attachment #1: Type: text/plain, Size: 180 bytes --] Hi Bart, > Wolfram: do you want to drop these patches from your v7.1 queue then? Yes, I think this makes sense. Let's see how Johan's approach goes? Happy hacking, Wolfram [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-03-09 11:40 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260302-i2cfix-v1-1-a95418e9217e@kemnade.info>
2026-03-06 10:18 ` [PATCH] i2c: i2c-core-base: fix devicetree alias handling Jon Hunter
2026-03-06 14:04 ` Jon Hunter
2026-03-07 17:26 ` Andreas Kemnade
2026-03-09 9:08 ` Bartosz Golaszewski
2026-03-09 11:40 ` Wolfram Sang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox