Thread (39 messages) 39 messages, 4 authors, 2015-08-09

[PATCH v2 04/22] of/platform: add of_platform_device_find()

From: Rob Herring <hidden>
Date: 2015-07-29 15:27:54
Also in: linux-acpi, linux-devicetree, lkml

On Wed, Jul 29, 2015 at 6:20 AM, Tomeu Vizoso
[off-list ref] wrote:
On 29 July 2015 at 08:14, Tomeu Vizoso [off-list ref] wrote:
quoted
On 28 July 2015 at 17:31, Rob Herring [off-list ref] wrote:
quoted
On Tue, Jul 28, 2015 at 8:54 AM, Tomeu Vizoso
[off-list ref] wrote:
quoted
On 28 July 2015 at 15:39, Rob Herring [off-list ref] wrote:
quoted
On Tue, Jul 28, 2015 at 8:19 AM, Tomeu Vizoso
[off-list ref] wrote:
quoted
From an arbitrary node in the tree, find the enclosing node that
corresponds to a platform device, as registered by
of_platform_populate().
[...]
quoted
quoted
quoted
If I had a way to get, say, a i2c device from its fwnode then I would
just need to make sure that a device's parent is probed before probing
it and everything would be cleaner in the OF case.
If you have the struct device from the device_node, then you should be
able to do this, right?
Yes, if I could go back from the device_node to the struct device that
was registered from it, for all buses, then all this would be much
simpler and more robust. It would basically work like in the ACPI
case.

I will play with this idea.
quoted
quoted
quoted
That is probably not the
most efficient search, but we could fix that. We could add struct
device ptr to struct device_node and check without searching for
example.
That would be great, but I thought there was an issue with a OF node
being able to be related to more than one struct device (but I haven't
found this myself yet).
I think it pretty much should be one to one. I'm not aware of any
examples where that is not the case. This function would already be
broken if you could have more than one struct device.
Well, for platform devices we currently know that there can only be
one struct device for a given device_node, but that's not so clear for
other devices.
Just found this case:

http://lxr.free-electrons.com/source/drivers/spi/spi-tegra114.c#L1124

Looks like SPI master devices point to the same device_node as the
platform device that registers them.
I don't think this is a problem. The device ptr would only point to
the platform device. Nothing else is going to know about the ptr,
modify it nor expect that it points to the same struct device that
contains the of_node ptr.

So I think any instances of struct device like this are ones you don't
care about for purposes of probe dependencies.

Rob
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help