On Wed, Jun 26, 2013 at 11:31 AM, Thierry Reding <thierry.reding@xxxxxxxxx> wrote: > On Wed, Jun 26, 2013 at 11:03:20AM +0100, Grant Likely wrote: >> On Wed, Jun 26, 2013 at 7:00 AM, Hiroshi Doyu <hdoyu@xxxxxxxxxx> wrote: >> > Grant Likely <grant.likely@xxxxxxxxxxxx> wrote @ Tue, 25 Jun 2013 19:52:33 +0200: >> > >> >> > Here's my workaround. I need to call of_detach_node() with OF_DYNAMIC >> >> > to avoid duplicated device registration. >> >> >> >> Gah! my eyes! >> >> >> >> Don't do that. It is incredibly problematic. Look at inhibiting >> >> duplicate device creation instead. >> > >> > I may not follow this thread correctly, but could anyone point out the >> > above "inhibiting duplicate device creation" if there's already such >> > solution? >> >> No, the solution doesn't exist yet, but it wouldn't be hard to >> implement. What you need to do is to add a struct device pointer to >> struct device_node, and set the pointer to the struct device when >> of_platform_device_create creates a device. (it would also need to be >> set for early_platform_device creation, but that's not something that >> should affect you). You would also add a check to >> of_platform_device_create to check if the device pointer is already >> set. If it is, then skip creation of the device. > > One problem with this method is that every driver that needs or wants > the device early has to do it explicitly, but I guess we can't have it > all. The other option is to modify of_device_add() to allow it to be called before the platform bus is set up, and then to 'fixup' the registrations at initcall time. That would mean of_platform_populate can be called really early and it would solve the problem of preserving the device hierarchy. g. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html