No support of platform device instance id?
Shawn Guo
shawn.guo at freescale.com
Sun Mar 13 01:55:33 EST 2011
Hi Grant,
Thanks for the explanation.
On Sat, Mar 12, 2011 at 02:46:20AM -0700, Grant Likely wrote:
> On Sat, Mar 12, 2011 at 03:00:57PM +0800, Shawn Guo wrote:
> > Hello all,
> >
> > I'm looking at function of_device_alloc in drivers/of/platform.c, and
> > surprisingly found that the platform device instance id is being
> > hard-coded as -1 when calling platform_device_alloc. Does this mean
> > that there is no support of pdev id in DT?
>
> Correct, when generating devices from the DT, the core code has no way
> of knowing what the 'preferred' number of the device should be. It
If we have this number in DT, the core code gets the way.
> expects that when the driver's .probe() hook is called, the driver is
> smart enough to enumerate the automatically.
>
Considering that many drivers on ARM platform are replying on
pdev->id, we will have to make every single of such drivers become
smart.
> > If yes, can anyone please
> > help me understand why we do not have something in DT node to reflect
> > this id and get it supported? Or this is something on TODO list?
>
> Ideally, you shouldn't be relying on .id at all. Fix your device
> drivers to enumerate correctly, and use explicit phandle references
> when specifying connections between devices.
>
Again, many existing ARM drivers will need to get fixed.
> That said, I do understand the issue with needing to reference a
> specific device by name; like for specifying the console device. In
> those cases, the correct way to figure out what number a device is
> supposed to have is to add a property to the /aliases node (see ePAPR
To me, specifying the id in DT, and letting core code get it from DT
and pass it to platform_device_alloc seems more natural and
straight-forward than creating /aliases node and then parsing it in
every single driver that need to figure out the device number.
The most important thing is that the ARM drivers relying on pdev->id
will need no changes on this point, if we have pdev->id supported in
DT core code.
I can live with the approach you tell, but I doubt that ARM community
people will have the same question, when we post the driver changes
for DT support.
> for a description of /aliases). However, even in this case the driver
> should be looking at the device tree data, and not depend on the value
> in pdev->id.
>
If we have pdev->id specified in DT and retrieved it by core code,
the driver is actually looking at the data from DT.
--
Regards,
Shawn
More information about the devicetree-discuss
mailing list