* [PATCH] I2C: BCM2835: Linking platform nodes to adapter nodes
@ 2013-11-08 9:49 Florian Meier
2013-11-08 16:59 ` Stephen Warren
0 siblings, 1 reply; 5+ messages in thread
From: Florian Meier @ 2013-11-08 9:49 UTC (permalink / raw)
To: linux-arm-kernel
In order to find I2C devices in the device tree, the platform nodes
have to be known by the I2C core. Analogous to the i2c-omap driver
this requires setting the dev.of_node parameter of the adapter.
Signed-off-by: Florian Meier <florian.meier@koalo.de>
---
I don't know if this is really necessary, but for me it does not work
without this line.
drivers/i2c/busses/i2c-bcm2835.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
index ea4b08f..8beecfa 100644
--- a/drivers/i2c/busses/i2c-bcm2835.c
+++ b/drivers/i2c/busses/i2c-bcm2835.c
@@ -299,6 +299,7 @@ static int bcm2835_i2c_probe(struct platform_device *pdev)
strlcpy(adap->name, "bcm2835 I2C adapter", sizeof(adap->name));
adap->algo = &bcm2835_i2c_algo;
adap->dev.parent = &pdev->dev;
+ adap->dev.of_node = pdev->dev.of_node;
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, 0);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] I2C: BCM2835: Linking platform nodes to adapter nodes
2013-11-08 9:49 [PATCH] I2C: BCM2835: Linking platform nodes to adapter nodes Florian Meier
@ 2013-11-08 16:59 ` Stephen Warren
2013-11-26 3:31 ` Stephen Warren
2013-11-26 13:05 ` Charles Keepax
0 siblings, 2 replies; 5+ messages in thread
From: Stephen Warren @ 2013-11-08 16:59 UTC (permalink / raw)
To: linux-arm-kernel
On 11/08/2013 02:49 AM, Florian Meier wrote:
> In order to find I2C devices in the device tree, the platform nodes
> have to be known by the I2C core. Analogous to the i2c-omap driver
> this requires setting the dev.of_node parameter of the adapter.
(CCing the I2C maintainers...)
> diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
> @@ -299,6 +299,7 @@ static int bcm2835_i2c_probe(struct platform_device *pdev)
> strlcpy(adap->name, "bcm2835 I2C adapter", sizeof(adap->name));
> adap->algo = &bcm2835_i2c_algo;
> adap->dev.parent = &pdev->dev;
> + adap->dev.of_node = pdev->dev.of_node;
Ah, that makes sense. Thinking about it now, I'd only ever used i2cget
etc. to access I2C devices, rather than instantiating drivers from DT.
That all said, I wonder if the I2C core shouldn't do something like the
following inside i2c_add_adapter():
if (!adap->dev.of_node && adap->dev.parent)
adap->dev.of_node = adap->dev.parent->of_node;
That would save every single I2C driver from having to set up this field
manually.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] I2C: BCM2835: Linking platform nodes to adapter nodes
2013-11-08 16:59 ` Stephen Warren
@ 2013-11-26 3:31 ` Stephen Warren
2013-11-26 13:05 ` Charles Keepax
1 sibling, 0 replies; 5+ messages in thread
From: Stephen Warren @ 2013-11-26 3:31 UTC (permalink / raw)
To: linux-arm-kernel
On 11/08/2013 09:59 AM, Stephen Warren wrote:
> On 11/08/2013 02:49 AM, Florian Meier wrote:
>> In order to find I2C devices in the device tree, the platform nodes
>> have to be known by the I2C core. Analogous to the i2c-omap driver
>> this requires setting the dev.of_node parameter of the adapter.
>
> (CCing the I2C maintainers...)
>
>> diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
>
>> @@ -299,6 +299,7 @@ static int bcm2835_i2c_probe(struct platform_device *pdev)
>> strlcpy(adap->name, "bcm2835 I2C adapter", sizeof(adap->name));
>> adap->algo = &bcm2835_i2c_algo;
>> adap->dev.parent = &pdev->dev;
>> + adap->dev.of_node = pdev->dev.of_node;
>
> Ah, that makes sense. Thinking about it now, I'd only ever used i2cget
> etc. to access I2C devices, rather than instantiating drivers from DT.
>
> That all said, I wonder if the I2C core shouldn't do something like the
> following inside i2c_add_adapter():
>
> if (!adap->dev.of_node && adap->dev.parent)
> adap->dev.of_node = adap->dev.parent->of_node;
>
> That would save every single I2C driver from having to set up this field
> manually.
BTW, this should probably be:
Cc: stable at vger.kernel.org
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] I2C: BCM2835: Linking platform nodes to adapter nodes
2013-11-08 16:59 ` Stephen Warren
2013-11-26 3:31 ` Stephen Warren
@ 2013-11-26 13:05 ` Charles Keepax
2013-11-28 17:13 ` Mark Brown
1 sibling, 1 reply; 5+ messages in thread
From: Charles Keepax @ 2013-11-26 13:05 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Nov 08, 2013 at 09:59:28AM -0700, Stephen Warren wrote:
> On 11/08/2013 02:49 AM, Florian Meier wrote:
> > In order to find I2C devices in the device tree, the platform nodes
> > have to be known by the I2C core. Analogous to the i2c-omap driver
> > this requires setting the dev.of_node parameter of the adapter.
>
> (CCing the I2C maintainers...)
>
> > diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
>
> > @@ -299,6 +299,7 @@ static int bcm2835_i2c_probe(struct platform_device *pdev)
> > strlcpy(adap->name, "bcm2835 I2C adapter", sizeof(adap->name));
> > adap->algo = &bcm2835_i2c_algo;
> > adap->dev.parent = &pdev->dev;
> > + adap->dev.of_node = pdev->dev.of_node;
>
> Ah, that makes sense. Thinking about it now, I'd only ever used i2cget
> etc. to access I2C devices, rather than instantiating drivers from DT.
>
> That all said, I wonder if the I2C core shouldn't do something like the
> following inside i2c_add_adapter():
>
> if (!adap->dev.of_node && adap->dev.parent)
> adap->dev.of_node = adap->dev.parent->of_node;
Should this not also have an of_node_get to increment the ref
count on the node?
Thanks,
Charles
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] I2C: BCM2835: Linking platform nodes to adapter nodes
2013-11-26 13:05 ` Charles Keepax
@ 2013-11-28 17:13 ` Mark Brown
0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2013-11-28 17:13 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Nov 26, 2013 at 01:05:53PM +0000, Charles Keepax wrote:
> On Fri, Nov 08, 2013 at 09:59:28AM -0700, Stephen Warren wrote:
> > That all said, I wonder if the I2C core shouldn't do something like the
> > following inside i2c_add_adapter():
> >
> > if (!adap->dev.of_node && adap->dev.parent)
> > adap->dev.of_node = adap->dev.parent->of_node;
> Should this not also have an of_node_get to increment the ref
> count on the node?
Given that it's pointing to the device that registered the I2C adaptor
it should be able to assume that there's a reference already.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20131128/5170cc34/attachment.sig>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-11-28 17:13 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-08 9:49 [PATCH] I2C: BCM2835: Linking platform nodes to adapter nodes Florian Meier
2013-11-08 16:59 ` Stephen Warren
2013-11-26 3:31 ` Stephen Warren
2013-11-26 13:05 ` Charles Keepax
2013-11-28 17:13 ` Mark Brown
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).