package/kernel: don't depend on kmod-usb-storage when it's built-in
[openwrt-10.03/.git] / package / kernel / modules / usb.mk
index af12243254dfebb67d125c56152a168eb9c27116..86a1858ec64b620325e6af90cbb0e15c9ebace44 100644 (file)
@@ -4,36 +4,23 @@
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 #
-# $Id$
 
 USB_MENU:=USB Support
 
-ifeq ($(KERNEL),2.4)
+ifneq ($(CONFIG_LINUX_2_4),)
   USBNET_DIR:=usb/net
 endif
 
-ifeq ($(KERNEL_PATCHVER),2.6.21)
-  USBNET_DIR:=usb/net
-  USBHID_DIR:=usb/input
-  USBINPUT_DIR:=usb/input
-endif
-
 USBNET_DIR?=net/usb
 USBHID_DIR?=hid/usbhid
 USBINPUT_DIR?=input/misc
 
-define usbdep
-  SUBMENU:=$(USB_MENU)
-  DEPENDS:=kmod-usb-core $(1)
-endef
-
-
 define KernelPackage/usb-core
   SUBMENU:=$(USB_MENU)
   TITLE:=Support for USB
-  DEPENDS:=@USB_SUPPORT
+  DEPENDS:=@USB_SUPPORT +LINUX_2_6_31:kmod-nls-base +LINUX_2_6_32:kmod-nls-base +LINUX_2_6_33:kmod-nls-base
   KCONFIG:=CONFIG_USB
-  AUTOLOAD:=$(call AutoLoad,20,usbcore)
+  AUTOLOAD:=$(call AutoLoad,20,usbcore,1)
 endef
 
 define KernelPackage/usb-core/2.4
@@ -51,8 +38,14 @@ endef
 $(eval $(call KernelPackage,usb-core))
 
 
+define KernelPackage/usb/Depends
+  SUBMENU:=$(USB_MENU)
+  DEPENDS:=kmod-usb-core $(1)
+endef
+
+
 define KernelPackage/usb-uhci
-  $(call usbdep,)
+$(call KernelPackage/usb/Depends,)
   TITLE:=Support for UHCI controllers
   KCONFIG:= \
        CONFIG_USB_UHCI_ALT \
@@ -62,70 +55,71 @@ endef
 define KernelPackage/usb-uhci/2.4
 #  KCONFIG:=CONFIG_USB_UHCI_ALT
   FILES:=$(LINUX_DIR)/drivers/usb/host/uhci.o
-  AUTOLOAD:=$(call AutoLoad,50,uhci)
+  AUTOLOAD:=$(call AutoLoad,50,uhci,1)
 endef
 
 define KernelPackage/usb-uhci/2.6
 #  KCONFIG:=CONFIG_USB_UHCI_HCD
   FILES:=$(LINUX_DIR)/drivers/usb/host/uhci-hcd.ko
-  AUTOLOAD:=$(call AutoLoad,50,uhci-hcd)
+  AUTOLOAD:=$(call AutoLoad,50,uhci-hcd,1)
 endef
 
 define KernelPackage/usb-uhci/description
  Kernel support for USB UHCI controllers
 endef
 
-$(eval $(call KernelPackage,usb-uhci))
+$(eval $(call KernelPackage,usb-uhci,1))
 
 
 define KernelPackage/usb-uhci-iv
-  $(call usbdep,@LINUX_2_4)
+$(call KernelPackage/usb/Depends,@LINUX_2_4)
   TITLE:=Support for Intel/VIA UHCI controllers
   KCONFIG:=CONFIG_USB_UHCI
   FILES:=$(LINUX_DIR)/drivers/usb/host/usb-uhci.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,50,usb-uhci)
+  AUTOLOAD:=$(call AutoLoad,50,usb-uhci,1)
 endef
 
 define KernelPackage/usb-uhci-iv/description
  Kernel support for Intel/VIA USB UHCI controllers
 endef
 
-$(eval $(call KernelPackage,usb-uhci-iv))
+$(eval $(call KernelPackage,usb-uhci-iv,1))
 
 
 define KernelPackage/usb-ohci
-  $(call usbdep,)
+$(call KernelPackage/usb/Depends,)
   TITLE:=Support for OHCI controllers
   KCONFIG:= \
        CONFIG_USB_OHCI \
-       CONFIG_USB_OHCI_HCD
+       CONFIG_USB_OHCI_HCD \
+       CONFIG_USB_OHCI_AR71XX=y
 endef
 
 define KernelPackage/usb-ohci/2.4
 #  KCONFIG:=CONFIG_USB_OHCI
   FILES:=$(LINUX_DIR)/drivers/usb/host/usb-ohci.o
-  AUTOLOAD:=$(call AutoLoad,50,usb-ohci)
+  AUTOLOAD:=$(call AutoLoad,50,usb-ohci,1)
 endef
 
 define KernelPackage/usb-ohci/2.6
 #  KCONFIG:=CONFIG_USB_OHCI_HCD
   FILES:=$(LINUX_DIR)/drivers/usb/host/ohci-hcd.ko
-  AUTOLOAD:=$(call AutoLoad,50,ohci-hcd)
+  AUTOLOAD:=$(call AutoLoad,50,ohci-hcd,1)
 endef
 
 define KernelPackage/usb-ohci/description
  Kernel support for USB OHCI controllers
 endef
 
-$(eval $(call KernelPackage,usb-ohci))
+$(eval $(call KernelPackage,usb-ohci,1))
 
 
 define KernelPackage/usb-adm5120
-  $(call usbdep,@TARGET_adm5120_router_be||@TARGET_adm5120_router_le)
+$(call KernelPackage/usb/Depends,@TARGET_adm5120_router_be||@TARGET_adm5120_router_le)
   TITLE:=Support for the ADM5120 HCD controller
   KCONFIG:=CONFIG_USB_ADM5120_HCD
   FILES:=$(LINUX_DIR)/drivers/usb/host/adm5120-hcd.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,50,adm5120-hcd)
+  AUTOLOAD:=$(call AutoLoad,50,adm5120-hcd,1)
 endef
 
 define KernelPackage/usb-adm5120/description
@@ -135,12 +129,31 @@ endef
 $(eval $(call KernelPackage,usb-adm5120))
 
 
+define KernelPackage/usb-isp116x-hcd
+$(call KernelPackage/usb/Depends,@TARGET_ppc40x)
+  TITLE:=Support for the ISP116x USB Host Controller
+  KCONFIG:= \
+       CONFIG_USB_ISP116X_HCD \
+       CONFIG_USB_ISP116X_HCD_OF=y \
+       CONFIG_USB_ISP116X_HCD_PLATFORM=n
+  FILES:=$(LINUX_DIR)/drivers/usb/host/isp116x-hcd.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,50,isp116x-hcd)
+endef
+
+define KernelPackage/usb-isp116x-hcd/description
+  Kernel support for the ISP116X USB Host Controller
+endef
+
+$(eval $(call KernelPackage,usb-isp116x-hcd))
+
+
 define KernelPackage/usb2
-  $(call usbdep,)
+$(call KernelPackage/usb/Depends,)
   TITLE:=Support for USB2 controllers
-  KCONFIG:=CONFIG_USB_EHCI_HCD
+  KCONFIG:=CONFIG_USB_EHCI_HCD \
+    CONFIG_USB_EHCI_AR71XX=y
   FILES:=$(LINUX_DIR)/drivers/usb/host/ehci-hcd.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,40,ehci-hcd)
+  AUTOLOAD:=$(call AutoLoad,40,ehci-hcd,1)
 endef
 
 define KernelPackage/usb2/description
@@ -151,7 +164,7 @@ $(eval $(call KernelPackage,usb2))
 
 
 define KernelPackage/usb-acm
-  $(call usbdep,)
+$(call KernelPackage/usb/Depends,)
   TITLE:=Support for modems/isdn controllers
   KCONFIG:=CONFIG_USB_ACM
 endef
@@ -174,7 +187,7 @@ $(eval $(call KernelPackage,usb-acm))
 
 
 define KernelPackage/usb-audio
-  $(call usbdep,+kmod-sound-core)
+$(call KernelPackage/usb/Depends,+kmod-sound-core)
   TITLE:=Support for USB audio devices
   KCONFIG:= \
        CONFIG_USB_AUDIO \
@@ -203,7 +216,7 @@ $(eval $(call KernelPackage,usb-audio))
 
 
 define KernelPackage/usb-printer
-  $(call usbdep,)
+$(call KernelPackage/usb/Depends,)
   TITLE:=Support for printers
   KCONFIG:=CONFIG_USB_PRINTER
 endef
@@ -226,7 +239,7 @@ $(eval $(call KernelPackage,usb-printer))
 
 
 define KernelPackage/usb-serial
-  $(call usbdep,)
+$(call KernelPackage/usb/Depends,)
   TITLE:=Support for USB-to-Serial converters
   KCONFIG:=CONFIG_USB_SERIAL
   FILES:=$(LINUX_DIR)/drivers/usb/serial/usbserial.$(LINUX_KMOD_SUFFIX)
@@ -240,8 +253,14 @@ endef
 $(eval $(call KernelPackage,usb-serial))
 
 
+define KernelPackage/usb-serial/Depends
+  SUBMENU:=$(USB_MENU)
+  DEPENDS:=kmod-usb-serial $(1)
+endef
+
+
 define KernelPackage/usb-serial-airprime
-  $(call usbdep,kmod-usb-serial @LINUX_2_6)
+$(call KernelPackage/usb-serial/Depends,@LINUX_2_6)
   TITLE:=Support for Airprime (EVDO)
   KCONFIG:=CONFIG_USB_SERIAL_AIRPRIME
   FILES:=$(LINUX_DIR)/drivers/usb/serial/airprime.$(LINUX_KMOD_SUFFIX)
@@ -256,7 +275,7 @@ $(eval $(call KernelPackage,usb-serial-airprime))
 
 
 define KernelPackage/usb-serial-belkin
-  $(call usbdep,kmod-usb-serial)
+$(call KernelPackage/usb-serial/Depends,)
   TITLE:=Support for Belkin devices
   KCONFIG:=CONFIG_USB_SERIAL_BELKIN
   FILES:=$(LINUX_DIR)/drivers/usb/serial/belkin_sa.$(LINUX_KMOD_SUFFIX)
@@ -271,7 +290,7 @@ $(eval $(call KernelPackage,usb-serial-belkin))
 
 
 define KernelPackage/usb-serial-ch341
-  $(call usbdep,kmod-usb-serial @LINUX_2_6&&@!LINUX_2_6_23)
+$(call KernelPackage/usb-serial/Depends,@LINUX_2_6)
   TITLE:=Support for CH341 devices
   KCONFIG:=CONFIG_USB_SERIAL_CH341
   FILES:=$(LINUX_DIR)/drivers/usb/serial/ch341.$(LINUX_KMOD_SUFFIX)
@@ -286,7 +305,7 @@ $(eval $(call KernelPackage,usb-serial-ch341))
 
 
 define KernelPackage/usb-serial-ftdi
-  $(call usbdep,kmod-usb-serial)
+$(call KernelPackage/usb-serial/Depends,)
   TITLE:=Support for FTDI devices
   KCONFIG:=CONFIG_USB_SERIAL_FTDI_SIO
   FILES:=$(LINUX_DIR)/drivers/usb/serial/ftdi_sio.$(LINUX_KMOD_SUFFIX)
@@ -301,7 +320,7 @@ $(eval $(call KernelPackage,usb-serial-ftdi))
 
 
 define KernelPackage/usb-serial-mct
-  $(call usbdep,kmod-usb-serial)
+$(call KernelPackage/usb-serial/Depends,)
   TITLE:=Support for Magic Control Tech. devices
   KCONFIG:=CONFIG_USB_SERIAL_MCT_U232
   FILES:=$(LINUX_DIR)/drivers/usb/serial/mct_u232.$(LINUX_KMOD_SUFFIX)
@@ -316,7 +335,7 @@ $(eval $(call KernelPackage,usb-serial-mct))
 
 
 define KernelPackage/usb-serial-pl2303
-  $(call usbdep,kmod-usb-serial)
+$(call KernelPackage/usb-serial/Depends,)
   TITLE:=Support for Prolific PL2303 devices
   KCONFIG:=CONFIG_USB_SERIAL_PL2303
   FILES:=$(LINUX_DIR)/drivers/usb/serial/pl2303.$(LINUX_KMOD_SUFFIX)
@@ -330,23 +349,23 @@ endef
 $(eval $(call KernelPackage,usb-serial-pl2303))
 
 
-define KernelPackage/usb-serial-cp2101
-  $(call usbdep,kmod-usb-serial)
-  TITLE:=Support for Silicon Labs cp2101 devices
-  KCONFIG:=CONFIG_USB_SERIAL_CP2101
-  FILES:=$(LINUX_DIR)/drivers/usb/serial/cp2101.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,65,cp2101)
+define KernelPackage/usb-serial-cp210x
+$(call KernelPackage/usb-serial/Depends,)
+  TITLE:=Support for Silicon Labs cp210x devices
+  KCONFIG:=CONFIG_USB_SERIAL_CP210X
+  FILES:=$(LINUX_DIR)/drivers/usb/serial/cp210x.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,65,cp210x)
 endef
 
-define KernelPackage/usb-serial-cp2101/description
- Kernel support for Silicon Labs cp2101 USB-to-Serial converters
+define KernelPackage/usb-serial-cp210x/description
+ Kernel support for Silicon Labs cp210x USB-to-Serial converters
 endef
 
-$(eval $(call KernelPackage,usb-serial-cp2101))
+$(eval $(call KernelPackage,usb-serial-cp210x))
 
 
 define KernelPackage/usb-serial-ark3116
-  $(call usbdep,kmod-usb-serial @LINUX_2_6)
+$(call KernelPackage/usb-serial/Depends,@LINUX_2_6)
   TITLE:=Support for ArkMicroChips ARK3116 devices
   KCONFIG:=CONFIG_USB_SERIAL_ARK3116
   FILES:=$(LINUX_DIR)/drivers/usb/serial/ark3116.$(LINUX_KMOD_SUFFIX)
@@ -361,7 +380,7 @@ $(eval $(call KernelPackage,usb-serial-ark3116))
 
 
 define KernelPackage/usb-serial-oti6858
-  $(call usbdep,kmod-usb-serial @LINUX_2_6)
+$(call KernelPackage/usb-serial/Depends,@LINUX_2_6)
   TITLE:=Support for Ours Technology OTI6858 devices
   KCONFIG:=CONFIG_USB_SERIAL_OTI6858
   FILES:=$(LINUX_DIR)/drivers/usb/serial/oti6858.$(LINUX_KMOD_SUFFIX)
@@ -376,7 +395,7 @@ $(eval $(call KernelPackage,usb-serial-oti6858))
 
 
 define KernelPackage/usb-serial-sierrawireless
-  $(call usbdep,kmod-usb-serial)
+$(call KernelPackage/usb-serial/Depends,)
   TITLE:=Support for Sierra Wireless devices
   KCONFIG:=CONFIG_USB_SERIAL_SIERRAWIRELESS
   FILES:=$(LINUX_DIR)/drivers/usb/serial/sierra.$(LINUX_KMOD_SUFFIX)
@@ -390,8 +409,24 @@ endef
 $(eval $(call KernelPackage,usb-serial-sierrawireless))
 
 
+define KernelPackage/usb-serial-motorola-phone
+$(call KernelPackage/usb-serial/Depends,)
+  TITLE:=Support for Motorola usb phone
+  KCONFIG:=CONFIG_USB_SERIAL_MOTOROLA
+  FILES:=$(LINUX_DIR)/drivers/usb/serial/moto_modem.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,65,moto_modem)
+endef
+
+define KernelPackage/usb-serial-motorola-phone/description
+ Kernel support for Motorola usb phone
+endef
+
+$(eval $(call KernelPackage,usb-serial-motorola-phone))
+
+
+
 define KernelPackage/usb-serial-visor
-  $(call usbdep,kmod-usb-serial)
+$(call KernelPackage/usb-serial/Depends,)
   TITLE:=Support for Handspring Visor devices
   KCONFIG:=CONFIG_USB_SERIAL_VISOR
   FILES:=$(LINUX_DIR)/drivers/usb/serial/visor.$(LINUX_KMOD_SUFFIX)
@@ -405,8 +440,26 @@ endef
 $(eval $(call KernelPackage,usb-serial-visor))
 
 
+define KernelPackage/usb-serial-cypress-m8
+$(call KernelPackage/usb-serial/Depends,)
+  TITLE:=Support for CypressM8 USB-Serial
+  KCONFIG:=CONFIG_USB_SERIAL_CYPRESS_M8
+  FILES:=$(LINUX_DIR)/drivers/usb/serial/cypress_m8.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,65,cypress_m8)
+endef
+
+define KernelPackage/usb-serial-cypress-m8/description
+ Kernel support for devices with Cypress M8 USB to Serial chip
+ (for example, the Delorme Earthmate LT-20 GPS)
+ Supported microcontrollers in the CY4601 family are:
+       CY7C63741 CY7C63742 CY7C63743 CY7C64013
+endef
+
+$(eval $(call KernelPackage,usb-serial-cypress-m8))
+
+
 define KernelPackage/usb-serial-keyspan
-  $(call usbdep,kmod-usb-serial)
+$(call KernelPackage/usb-serial/Depends,)
   TITLE:=Support for Keyspan USB-to-Serial devices
   KCONFIG:= \
        CONFIG_USB_SERIAL_KEYSPAN \
@@ -434,7 +487,7 @@ $(eval $(call KernelPackage,usb-serial-keyspan))
 
 
 define KernelPackage/usb-serial-option
-  $(call usbdep,kmod-usb-serial @LINUX_2_6)
+$(call KernelPackage/usb-serial/Depends,@LINUX_2_6)
   TITLE:=Support for Option HSDPA modems
   KCONFIG:=CONFIG_USB_SERIAL_OPTION
   FILES:=$(LINUX_DIR)/drivers/usb/serial/option.$(LINUX_KMOD_SUFFIX)
@@ -449,11 +502,11 @@ $(eval $(call KernelPackage,usb-serial-option))
 
 
 define KernelPackage/usb-storage
-  $(call usbdep,+kmod-scsi-core)
+$(call KernelPackage/usb/Depends,+!TARGET_x86:kmod-scsi-core)
   TITLE:=USB Storage support
   KCONFIG:=CONFIG_USB_STORAGE
   FILES:=$(LINUX_DIR)/drivers/usb/storage/usb-storage.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,60,scsi_mod sd_mod usb-storage)
+  AUTOLOAD:=$(call AutoLoad,60,usb-storage,1)
 endef
 
 define KernelPackage/usb-storage/description
@@ -462,13 +515,52 @@ endef
 
 $(eval $(call KernelPackage,usb-storage))
 
+define KernelPackage/usb-storage-extras
+  SUBMENU:=$(USB_MENU)
+  TITLE:=Extra drivers for usb-storage
+  DEPENDS:=@LINUX_2_6 \
+       +!TARGET_ixp4xx_harddisk||!TARGET_orion_harddisk||!TARGET_x86_olpc:kmod-usb-storage
+  KCONFIG:= \
+       CONFIG_USB_STORAGE_ALAUDA \
+       CONFIG_USB_STORAGE_CYPRESS_ATACB \
+       CONFIG_USB_STORAGE_DATAFAB \
+       CONFIG_USB_STORAGE_FREECOM \
+       CONFIG_USB_STORAGE_ISD200 \
+       CONFIG_USB_STORAGE_JUMPSHOT \
+       CONFIG_USB_STORAGE_KARMA \
+       CONFIG_USB_STORAGE_SDDR09 \
+       CONFIG_USB_STORAGE_SDDR55 \
+       CONFIG_USB_STORAGE_USBAT
+  FILES:= \
+       $(LINUX_DIR)/drivers/usb/storage/ums-alauda.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-cypress.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-datafab.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-freecom.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-isd200.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-jumpshot.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-karma.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-sddr09.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-sddr55.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/usb/storage/ums-usbat.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,60,ums-alauda ums-cypress ums-datafab \
+                               ums-freecom ums-isd200 ums-jumpshot \
+                               ums-karma ums-sddr09 ums-sddr55 ums-usbat)
+endef
+
+define KernelPackage/usb-storage-extras/description
+  Say Y here if you want to have some more drivers,
+  such as for SmartMedia card readers.
+endef
+
+$(eval $(call KernelPackage,usb-storage-extras))
+
 
 define KernelPackage/usb-video
-  $(call usbdep,@LINUX_2_6)
+$(call KernelPackage/usb/Depends,@LINUX_2_6)
   TITLE:=Support for USB video devices
   KCONFIG:=CONFIG_VIDEO_USBVIDEO
   FILES:=$(LINUX_DIR)/drivers/media/video/usbvideo/usbvideo.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,60,usbvideo)
+  AUTOLOAD:=$(call AutoLoad,61,usbvideo)
 endef
 
 define KernelPackage/usb-video/description
@@ -479,7 +571,7 @@ $(eval $(call KernelPackage,usb-video))
 
 
 define KernelPackage/usb-atm
-  $(call usbdep,@LINUX_2_6 +kmod-atm)
+$(call KernelPackage/usb/Depends,@LINUX_2_6 +kmod-atm)
   TITLE:=Support for ATM on USB bus
   KCONFIG:=CONFIG_USB_ATM
   FILES:=$(LINUX_DIR)/drivers/usb/atm/usbatm.$(LINUX_KMOD_SUFFIX)
@@ -493,8 +585,14 @@ endef
 $(eval $(call KernelPackage,usb-atm))
 
 
+define KernelPackage/usb-atm/Depends
+  SUBMENU:=$(USB_MENU)
+  DEPENDS:=kmod-usb-atm $(1)
+endef
+
+
 define KernelPackage/usb-atm-speedtouch
-  $(call usbdep,kmod-usb-atm @LINUX_2_6)
+$(call KernelPackage/usb-atm/Depends,@LINUX_2_6)
   TITLE:=SpeedTouch USB ADSL modems support
   KCONFIG:=CONFIG_USB_SPEEDTOUCH
   FILES:=$(LINUX_DIR)/drivers/usb/atm/speedtch.$(LINUX_KMOD_SUFFIX)
@@ -509,7 +607,7 @@ $(eval $(call KernelPackage,usb-atm-speedtouch))
 
 
 define KernelPackage/usb-atm-ueagle
-  $(call usbdep,kmod-usb-atm @LINUX_2_6)
+$(call KernelPackage/usb-atm/Depends,@LINUX_2_6)
   TITLE:=Eagle 8051 based USB ADSL modems support
   FILES:=$(LINUX_DIR)/drivers/usb/atm/ueagle-atm.$(LINUX_KMOD_SUFFIX)
   KCONFIG:=CONFIG_USB_UEAGLEATM
@@ -522,8 +620,9 @@ endef
 
 $(eval $(call KernelPackage,usb-atm-ueagle))
 
+
 define KernelPackage/usb-atm-cxacru
-  $(call usbdep,kmod-usb-atm @LINUX_2_6)
+$(call KernelPackage/usb-atm/Depends,@LINUX_2_6)
   TITLE:=cxacru
   FILES:=$(LINUX_DIR)/drivers/usb/atm/cxacru.$(LINUX_KMOD_SUFFIX)
   KCONFIG:=CONFIG_USB_CXACRU
@@ -538,7 +637,7 @@ $(eval $(call KernelPackage,usb-atm-cxacru))
 
 
 define KernelPackage/usb-net
-  $(call usbdep,)
+$(call KernelPackage/usb/Depends,)
   TITLE:=Kernel modules for USB-to-Ethernet convertors
   KCONFIG:=CONFIG_USB_USBNET
   AUTOLOAD:=$(call AutoLoad,60,usbnet)
@@ -559,8 +658,14 @@ endef
 $(eval $(call KernelPackage,usb-net))
 
 
+define KernelPackage/usb-net/Depends
+  SUBMENU:=$(USB_MENU)
+  DEPENDS:=kmod-usb-net $(1)
+endef
+
+
 define KernelPackage/usb-net-asix
-  $(call usbdep,kmod-usb-net @LINUX_2_6)
+$(call KernelPackage/usb-net/Depends,@LINUX_2_6)
   TITLE:=Kernel module for USB-to-Ethernet Asix convertors
   KCONFIG:=CONFIG_USB_NET_AX8817X
   FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/asix.$(LINUX_KMOD_SUFFIX)
@@ -575,16 +680,12 @@ $(eval $(call KernelPackage,usb-net-asix))
 
 
 define KernelPackage/usb-net-hso
-  $(call usbdep,kmod-usb-net @LINUX_2_6 @!LINUX_2_6_21 @!LINUX_2_6_23 @!LINUX_2_6_24 @!LINUX_2_6_25)
+$(call KernelPackage/usb-net/Depends,@LINUX_2_6 +!TARGET_rb532||!TARGET_avr32||!TARGET_brcm47xx||!TARGET_lantiq||!TARGET_atheros||!TARGET_adm5120||!TARGET_ar7||!TARGET_ppc40x||!TARGET_ixp4xx||!TARGET_rdc:kmod-rfkill)
   TITLE:=Kernel module for Option USB High Speed Mobile Devices
-  KCONFIG:= \
-       CONFIG_RFKILL \
-       CONFIG_RFKILL_INPUT \
-       CONFIG_USB_HSO
+  KCONFIG:=CONFIG_USB_HSO
   FILES:= \
-       $(LINUX_DIR)/net/rfkill/rfkill.$(LINUX_KMOD_SUFFIX) \
        $(LINUX_DIR)/drivers/$(USBNET_DIR)/hso.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,61,rfkill hso)
+  AUTOLOAD:=$(call AutoLoad,61,hso)
 endef
 
 define KernelPackage/usb-net-hso/description
@@ -595,7 +696,7 @@ $(eval $(call KernelPackage,usb-net-hso))
 
 
 define KernelPackage/usb-net-kaweth
-  $(call usbdep,kmod-usb-net @LINUX_2_6)
+$(call KernelPackage/usb-net/Depends,@LINUX_2_6)
   TITLE:=Kernel module for USB-to-Ethernet Kaweth convertors
   KCONFIG:=CONFIG_USB_KAWETH
   FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/kaweth.$(LINUX_KMOD_SUFFIX)
@@ -610,7 +711,7 @@ $(eval $(call KernelPackage,usb-net-kaweth))
 
 
 define KernelPackage/usb-net-pegasus
-  $(call usbdep,kmod-usb-net @LINUX_2_6)
+$(call KernelPackage/usb-net/Depends,@LINUX_2_6)
   TITLE:=Kernel module for USB-to-Ethernet Pegasus convertors
   KCONFIG:=CONFIG_USB_PEGASUS
   FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/pegasus.$(LINUX_KMOD_SUFFIX)
@@ -624,8 +725,37 @@ endef
 $(eval $(call KernelPackage,usb-net-pegasus))
 
 
+define KernelPackage/usb-net-mcs7830
+$(call KernelPackage/usb-net/Depends,@LINUX_2_6)
+  TITLE:=Kernel module for USB-to-Ethernet MCS7830 convertors
+  KCONFIG:=CONFIG_USB_NET_MCS7830
+  FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/mcs7830.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,61,mcs7830)
+endef
+
+define KernelPackage/usb-net-mcs7830/description
+ Kernel module for USB-to-Ethernet MCS7830 convertors
+endef
+
+$(eval $(call KernelPackage,usb-net-mcs7830))
+
+
+define KernelPackage/usb-net-dm9601-ether
+$(call KernelPackage/usb-net/Depends,@LINUX_2_6)
+  TITLE:=Support for DM9601 ethernet connections
+  KCONFIG:=CONFIG_USB_NET_DM9601
+  FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/dm9601.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,61,dm9601)
+endef
+
+define KernelPackage/usb-net-dm9601-ether/description
+  Kernel support for USB DM9601 devices
+endef
+
+$(eval $(call KernelPackage,usb-net-dm9601-ether))
+
 define KernelPackage/usb-net-cdc-ether
-  $(call usbdep,kmod-usb-net @LINUX_2_6)
+$(call KernelPackage/usb-net/Depends,@LINUX_2_6)
   TITLE:=Support for cdc ethernet connections
   KCONFIG:=CONFIG_USB_NET_CDCETHER
   FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/cdc_ether.$(LINUX_KMOD_SUFFIX)
@@ -639,10 +769,25 @@ endef
 $(eval $(call KernelPackage,usb-net-cdc-ether))
 
 
+define KernelPackage/usb-net-rndis
+$(call KernelPackage/usb-net/Depends,@LINUX_2_6 +kmod-usb-net-cdc-ether)
+  TITLE:=Support for RNDIS connections
+  KCONFIG:=CONFIG_USB_NET_RNDIS_HOST
+  FILES:= $(LINUX_DIR)/drivers/$(USBNET_DIR)/rndis_host.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,62,rndis_host)
+endef
+
+define KernelPackage/usb-net-rndis/description
+ Kernel support for RNDIS connections
+endef
+
+$(eval $(call KernelPackage,usb-net-rndis))
+
+
 define KernelPackage/usb-hid
-  $(call usbdep,@LINUX_2_6 +kmod-input-core +kmod-input-evdev +kmod-hid)
+$(call KernelPackage/usb/Depends,@LINUX_2_6 +!TARGET_x86:kmod-input-core +kmod-input-evdev +!TARGET_x86:kmod-hid)
   TITLE:=Support for USB Human Input Devices
-  KCONFIG:=CONFIG_HID_SUPPORT=y CONFIG_USB_HID
+  KCONFIG:=CONFIG_HID_SUPPORT=y CONFIG_USB_HID CONFIG_USB_HIDDEV=y
   FILES:=$(LINUX_DIR)/drivers/$(USBHID_DIR)/usbhid.ko
   AUTOLOAD:=$(call AutoLoad,70,usbhid)
 endef
@@ -656,7 +801,7 @@ $(eval $(call KernelPackage,usb-hid))
 
 
 define KernelPackage/usb-yealink
-  $(call usbdep,@LINUX_2_6 +kmod-input-core +kmod-input-evdev)
+$(call KernelPackage/usb/Depends,@LINUX_2_6 +!TARGET_x86:kmod-input-core +kmod-input-evdev)
   TITLE:=USB Yealink VOIP phone
   KCONFIG:=CONFIG_USB_YEALINK CONFIG_INPUT_YEALINK CONFIG_INPUT=m CONFIG_INPUT_MISC=y
   FILES:=$(LINUX_DIR)/drivers/$(USBINPUT_DIR)/yealink.ko
@@ -669,8 +814,24 @@ endef
 
 $(eval $(call KernelPackage,usb-yealink))
 
+
+define KernelPackage/usb-cm109
+$(call KernelPackage/usb/Depends,@LINUX_2_6 +!TARGET_x86:kmod-input-core +kmod-input-evdev)
+  TITLE:=Support for CM109 device
+  KCONFIG:=CONFIG_USB_CM109 CONFIG_INPUT_CM109 CONFIG_INPUT=m CONFIG_INPUT_MISC=y
+  FILES:=$(LINUX_DIR)/drivers/$(USBINPUT_DIR)/cm109.ko
+  AUTOLOAD:=$(call AutoLoad,70,cm109)
+endef
+
+define KernelPackage/usb-cm109/description
+ Kernel support for CM109 VOIP phone
+endef
+
+$(eval $(call KernelPackage,usb-cm109))
+
+
 define KernelPackage/usb-test
-  $(call usbdep,@LINUX_2_6 @DEVEL)
+$(call KernelPackage/usb/Depends,@LINUX_2_6 @DEVEL)
   TITLE:=USB Testing Driver
   KCONFIG:=CONFIG_USB_TEST
   FILES:=$(LINUX_DIR)/drivers/usb/misc/usbtest.ko
@@ -682,8 +843,9 @@ endef
 
 $(eval $(call KernelPackage,usb-test))
 
+
 define KernelPackage/usb-phidget
-  $(call usbdep,@LINUX_2_6)
+$(call KernelPackage/usb/Depends,@LINUX_2_6)
   TITLE:=USB Phidget Driver
   KCONFIG:=CONFIG_USB_PHIDGET CONFIG_USB_PHIDGETKIT CONFIG_USB_PHIDGETMOTORCONTROL CONFIG_USB_PHIDGETSERVO
   FILES:=$(LINUX_DIR)/drivers/usb/misc/phidget*.ko