Thread (1 message) 1 message, 1 author, 2012-03-20

Re: kirkwood devicetree respin

From: Jason Cooper <hidden>
Date: 2012-03-20 22:01:56

On Tue, Mar 20, 2012 at 08:57:38PM +0000, Arnd Bergmann wrote:
On Tuesday 20 March 2012, Andrew Lunn wrote:
quoted
quoted
Is there a scenario where someone would want to select
CONFIG_USB_EHCI_MV in menuconfig?
Not on an Orion platform, as far as i know. Maybe

config USB_EHCI_MV
        bool "EHCI support for Marvell on-chip controller"
-        depends on USB_EHCI_HCD
+        depends on USB_EHCI_HCD && !PLAT_ORION
        select USB_EHCI_ROOT_HUB_TT
        ---help---
          Enables support for Marvell (including PXA and MMP series) on-chip
          USB SPH and OTG controller. SPH is a single port host, and it can
          only be EHCI host. OTG is controller that can switch to host mode.
Well, rihgt now you can select it on anything, including non-ARM architectures,
and it fails whenever you select it in addition to another platform
driver.

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).

The logic in ehci-hcd.c takes care of it for us:

#ifdef CONFIG_PLAT_ORION
#include "ehci-orion.c"
#define PLATFORM_DRIVER         ehci_orion_driver
#endif

Which, as you mentioned earlier, is unusual.

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?

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

This, in conjuctions with Andrew's patch, above, might cover all the
bases.  However, I have no way to test it.
quoted
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.
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.  ;-)
We recently had a discussion about how to solve this correctly, see
the email thread at http://lkml.org/lkml/2012/2/25/45 leading
up to http://lkml.org/lkml/2012/2/28/299 .
The problem is the same for ehci and ohci, and I think a lot of
people would welcome a proper fix for the situation.
+1

thx,

Jason.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help