kirkwood devicetree respin
Arnd Bergmann
arnd at arndb.de
Wed Mar 21 09:15:09 EST 2012
On Tuesday 20 March 2012, Jason Cooper wrote:
> > If you want to add a dependency, it should be
> >
> > depends on PLAT_PXA
> >
> > Most other platform drivers have a dependency on the platform
> > they are for, but USB_EHCI_MV was only recently added, and nobody
> > has bothered to fix this yet.
>
> It's my understanding that will make the driver visible in menuconfig
> for PLAT_PXA. That may be useful, but what I'm trying to fix is a new
> user (me) from selecting USB_EHCI_MV on PLAT_ORION. It breaks when
> you do that (at runtime).
Are those two things not the same? The dependency makes the driver
visible only on PLAT_PXA, which means it is invisible on PLAT_ORION
and you can no longer select it. PLAT_PXA and PLAT_ORION are mutually
exclusive.
> Andrew's logic (!PLAT_ORION) makes sure the driver is not visible in
> menuconfig (when ehci-hcd would pick it up) and is visible in
> non-PLAT_ORION boards (where ehci-hcd wouldn't pick it up).
>
> My question is, are there any non-PLAT_ORION boards that would use this?
> Would it work on those boards if compiled outside of ehci-hcd?
ehci-orion only makes sense on PLAT_ORION, and they never have any
other platform ehci driver.
ehci-mv only makese sense on PLAT_PXA, and they also don't have any
other platform ehci driver.
> Although, it worked when I added the module_platform_driver() macro.
> maybe we could put some logic around that:
>
> #ifndef CONFIG_PLAT_ORION
> module_platform_driver(ehci_orion_driver);
> #endif
No, this is just wrong. It expands to module_init(), and
there is already a module_init in ehci-hcd.c, and you must
not have more than one of these when building as a module,
otherwise you get a duplicate symbol definition error.
> > > Maybe also -Werror for that one file to catch other similar cases?
> >
> > No, we are actually trying to make sure that any configuration you pick
> > results in a kernel that builds, so that would be counterproductive.
>
> I would argue it should build and work. Otherwise, there's no point
> in having a successful compile. So, maybe the answer is not to have
> it as a configuration option. Or, at least, invisible in menuconfig.
Making USB_EHCI_MV invisible everywhere would also be possible, in that
case the right logic would be
config USB_EHCI_MV
def_bool y
depends on USB_EHCI_HCD && PLAT_PXA
select USB_EHCI_ROOT_HUB_TT
This would unconditionally enable the pxa ehci driver whenever the
common ehci code is enabled, which is a reasonable choice, and matches
the behavior of the orion driver.
> > The problem will be much bigger when we get to the point where you
> > can actually build a multiplatform kernel, e.g. one that works
> > on both PXA and Kirkwood because then it will still be broken
> > for at least one of the two.
>
> I think there are a few other things that would be broken first, right
> now. ;-)
Yes, we're working on them one by one. At some point we'll get to this one.
Arnd
More information about the devicetree-discuss
mailing list