[2.4 patch] fix USB Gadget Config.in

From: Adrian Bunk
Date: Tue Nov 18 2003 - 12:28:56 EST


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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/