Subject: [PATCH] Philips PNX8550 USB Host driver compile fix

From: "Vladimir A. Barinov" <[email-masked]>
Date: Tue, 06 Dec 2005 21:23:52 +0300

Hello, Ralf, Pete,

The current ohci-hcd driver is a little defective.
It's unable to use usb-ohci as modules in the case when PCI and on-chip 
USB are enabled.
It just will not be compiled since there are two calls if module_init in 
ohci-hcd.

Please look at the patch attached.
I 'm not sure is this patch well for this situation.
Any suggestions are very appreciated.

TIA,
Vladimir

--- linux-2.6.10.orig/drivers/usb/host/ohci-hcd.c	2005-12-02 16:37:59.000000000 +0300
+++ linux-2.6.10/drivers/usb/host/ohci-hcd.c	2005-12-02 19:34:21.000000000 +0300
@@ -906,8 +906,12 @@ MODULE_LICENSE ("GPL");
 #endif
 
 #ifdef CONFIG_PNX8550
+#if defined(CONFIG_PCI) && defined(CONFIG_USB_OHCI_HCD_MODULE)
+#error "unable to compile PNX8550 USB and PCI USB as modules simultaneously until usb hcd stack is rewritten"
+#else
 #include "ohci-pnx8550.c"
 #endif
+#endif
 
 #ifdef CONFIG_USB_OHCI_HCD_PPC_SOC
 #include "ohci-ppc-soc.c"
@@ -919,6 +923,7 @@ MODULE_LICENSE ("GPL");
       || defined (CONFIG_ARCH_LH7A404) \
       || defined (CONFIG_PXA27x) \
       || defined (CONFIG_SOC_AU1X00) \
+      || defined (CONFIG_PNX8550) \
       || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \
 	)
 #error "missing bus glue for ohci-hcd"

---

From: Peter Popov <[email-masked]>
Date: Tue, 6 Dec 2005 11:35:22 -0800 (PST)

I suppose the right solution is to be able to use the
on-chip usb controller as well as an external pci
controller. I don't think anyone will do that though.
I have one board with an external USB controller but
that was done in order to add usb 2.0 support, so the
on-chip usb controller is not used. So the simple fix
below works fine for me, but Ralf and David B. may
have higher standards ;)

Pete

--- "Vladimir A. Barinov" <[email-masked]>
wrote:

> +#error "unable to compile PNX8550 USB and PCI USB
> as modules simultaneously until usb hcd stack is
> rewritten"
> +#else

---

From: "Vladimir A. Barinov" <[email-masked]>
Date: Thu, 08 Dec 2005 19:51:50 +0300

Hello Ralf, David,

Could you please advise.
What is the right solution in the situation when USB PCI and on-chip USB 
used in the situation when we want ohci-hcd to be a module?

Vladimir

Peter Popov wrote:

>>>--- linux-2.6.10.orig/drivers/usb/host/ohci-hcd.c
>>>      
>>>
>>2005-12-02 16:37:59.000000000 +0300

---

From: David Brownell <[email-masked]>
Date: Fri, 9 Dec 2005 15:20:26 -0800

> >controller. I don't think anyone will do that though.

I'm not sure why they wouldn't.  Full speed controllers
have limited bandwidth, people sometimes want more than
one just to get enough bandwidth to do whatever it is
they need USB to help with.

> >>It's unable to use usb-ohci as modules in the case
> >>when PCI and on-chip USB are enabled.
> >>It just will not be compiled since there are two
> >>calls if module_init in ohci-hcd.

I think it'd be reasonable to expect that the two
options be (a) PCI version and/or (b) some SOC version.
Since I've never heard of a discrete OHCI part, I'll
suspect the posibillity of having several of them on
some external parallel bus is low...

Suggesting that what's needed is more at the level of
having the module_init code call a pair of #definable
routnes -- call them 'register_platform_ohci()' and
'register_pci_ohci() -- to handle either or both cases.

Then #ifndef register_platform_ohci, #define it as NOP;
likewise for the PCI version.  And for the unregisters.

I'd certainly OK merging that; it'd be general enough
to work on non-PNX hardware too.

- Dave