I got the following link error in 2.4.23-rc1:

<--  snip  -->

...
ld -m elf_i386  -r -o built-in.o net2280.o g_zero.o g_ether.o
g_ether.o(.text+0x1bc0): In function `usb_gadget_get_string':
: multiple definition of `usb_gadget_get_string'
g_zero.o(.text+0x1100): first defined here
make[3]: *** [built-in.o] Error 1
make[3]: Leaving directory 
`/home/bunk/linux/kernel-2.4/linux-2.4.23-rc1-full/drivers/usb/gadget'

<--  snip  -->


.config contained the following:

<--  snip  -->

...
#
# Support for USB gadgets
#
CONFIG_USB_GADGET=y

#
# USB Peripheral Controller Drivers
#
# CONFIG_USB_GADGET_CONTROLLER is not set
CONFIG_USB_NET2280=y
CONFIG_USB_GADGET_CONTROLLER=y

#
# USB Gadget Drivers
#
CONFIG_USB_ZERO=y
CONFIG_USB_ZERO_NET2280=y
CONFIG_USB_ETH=y
CONFIG_USB_ETH_NET2280=y
...

<--  snip  -->


The patch below fixes this issue.

The main change is to remove the problematic

  define_tristate CONFIG_USB_GADGET_CONTROLLER n

and solving it different, and allowing a statically CONFIG_USB_ETH only 
when CONFIG_USB_ZERO isn't statically.

cu
Adrian


--- linux-2.4.23-rc1-full/drivers/usb/gadget/Config.in.old      2003-11-18 
02:39:48.000000000 +0100
+++ linux-2.4.23-rc1-full/drivers/usb/gadget/Config.in  2003-11-18 12:06:12.000000000 
+0100
@@ -5,8 +5,7 @@
 # Long term, this likely doesn't all belong in one directory
 # Plan to split it up eventually.
 #
-# CAREFUL!  Some versions of "xconfig" don't execute this correctly.
-#
+
 mainmenu_option next_comment
 comment 'Support for USB gadgets'
 
@@ -19,16 +18,15 @@
   #
   comment 'USB Peripheral Controller Drivers'
   
-  # assume all the dependencies may be undefined ("== true", yeech)
-  define_tristate CONFIG_USB_GADGET_CONTROLLER n
-  if [ "$CONFIG_PCI" = "y" ] ; then
-    tristate '  NetChip 2280 support' CONFIG_USB_NET2280
+  dep_tristate '  NetChip 2280 support' CONFIG_USB_NET2280 $CONFIG_PCI
+
+  if [ "$CONFIG_USB_NET2280" = "y" -o "$CONFIG_USB_NET2280" = "m" ]; then
     define_tristate CONFIG_USB_GADGET_CONTROLLER $CONFIG_USB_NET2280
+  else
+    define_tristate CONFIG_USB_GADGET_CONTROLLER n
   fi
 
-  # pxa2xx_udc, goku_udc, and others also work on 2.4 ...
-
-  if [ "$CONFIG_USB_GADGET_CONTROLLER" = "y" -o "$CONFIG_USB_GADGET_CONTROLLER" = "m" 
] ; then
+  if [ "$CONFIG_USB_GADGET_CONTROLLER" != "n" ]; then
 
   #
   # no reason not to enable more than one gadget driver module, but
@@ -43,9 +41,20 @@
   #
   # (b) specific hardware features like iso endpoints may be required
   #
+  # at most one gadget driver is allowed to be compiled statically
+  # into the kernel
+  #
+
   comment 'USB Gadget Drivers'
 
-  dep_tristate '  Gadget Zero (DEVELOPMENT)' CONFIG_USB_ZERO 
$CONFIG_USB_GADGET_CONTROLLER
+    dep_tristate '  Gadget Zero (DEVELOPMENT)' CONFIG_USB_ZERO 
$CONFIG_USB_GADGET_CONTROLLER
+
+    if [ "$CONFIG_USB_ZERO" != "y" ]; then 
+      dep_tristate '  Ethernet Gadget (EXPERIMENTAL)' CONFIG_USB_ETH 
$CONFIG_USB_GADGET_CONTROLLER $CONFIG_NET $CONFIG_EXPERIMENTAL
+    else
+      dep_tristate '  Ethernet Gadget (EXPERIMENTAL)' CONFIG_USB_ETH $CONFIG_NET 
$CONFIG_EXPERIMENTAL m
+    fi
+
   if [ "$CONFIG_USB_ZERO" = "y" -o "$CONFIG_USB_ZERO" = "m" ]; then
       if [ "$CONFIG_USB_NET2280" = "y" -o "$CONFIG_USB_NET2280" = "m" ]; then
        define_bool CONFIG_USB_ZERO_NET2280 y
@@ -56,8 +65,7 @@
       fi fi fi
       # ...
   fi
-  
-  dep_tristate '  Ethernet Gadget (EXPERIMENTAL)' CONFIG_USB_ETH 
$CONFIG_USB_GADGET_CONTROLLER $CONFIG_NET
+
   if [ "$CONFIG_USB_ETH" = "y" -o "$CONFIG_USB_ETH" = "m" ]; then
       if [ "$CONFIG_USB_NET2280" = "y" -o "$CONFIG_USB_NET2280" = "m" ]; then
        define_bool CONFIG_USB_ETH_NET2280 y


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to