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