Skip to contentSkip to conversation

Philips PNX8550 USB Host driver compile fix

PATCH In review Vladimir A. Barinov 3 participants 4 messages Dec 6, 2005 – Dec 9, 2005

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Philips PNX8550 USB Host driver compile fix

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

drivers/usb/host/ohci-hcd.c +5 -0
@@ -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"
#1 lore raw

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 protected]>

Quoted 47 lines · wrote:

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

Quoted 1 line

--- 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
drivers/usb/host/ohci-hcd.c +2 -0
@@ -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"

drivers/usb/host/ohci-hcd.c +3 -0
+#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"
#2 lore raw

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

Quoted 71 lines · Peter Popov

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 protected]>

Quoted 51 lines · wrote:

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

Quoted 3 lines

--- 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
drivers/usb/host/ohci-hcd.c +2 -0
@@ -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"

drivers/usb/host/ohci-hcd.c +1 -0
@@ -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"
#3 lore raw
Quoted 13 lines · Vladimir A. Barinov

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

Quoted 3 lines · Peter Popov

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

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines

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.

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