dynamically enable/disable kernel config options for kmod packages based on build system config
dynamically enable/disable kernel config options for kmod packages based on build system config

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8026 3c298f89-4303-0410-b956-a3cf2f4a3e73

--- a/include/kernel-build.mk
+++ b/include/kernel-build.mk
@@ -98,7 +98,7 @@
 	$(call Kernel/Prepare)
 	touch $$@
 
-  $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_CONFIG) $(GENERIC_LINUX_CONFIG)
+  $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_CONFIG) $(GENERIC_LINUX_CONFIG) $(TOPDIR)/.config
 	$(call Kernel/Configure)
 	touch $$@
 

--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -46,11 +46,11 @@
 	-$(MAKE) $(KERNEL_MAKEOPTS) CC="$(KERNEL_CC)" oldconfig prepare scripts
 endef
 define Kernel/Configure/Default
-	@if [ -f "./config/profile-$(PROFILE)" ]; then \
-		$(SCRIPT_DIR)/config.pl '+' $(GENERIC_LINUX_CONFIG) '+' $(LINUX_CONFIG) ./config/profile-$(PROFILE) > $(LINUX_DIR)/.config; \
-	else \
-		$(SCRIPT_DIR)/config.pl '+' $(GENERIC_LINUX_CONFIG) $(LINUX_CONFIG) > $(LINUX_DIR)/.config; \
-	fi
+	$(SCRIPT_DIR)/config.pl '+' $(GENERIC_LINUX_CONFIG) \
+		$(if $(wildcard ./config/profile-$(PROFILE)),'+' $(LINUX_CONFIG) ./config/profile-$(PROFILE), $(LINUX_CONFIG)) \
+		> $(LINUX_DIR)/.config.target
+	$(SCRIPT_DIR)/metadata.pl kconfig $(TMP_DIR)/.packageinfo $(TOPDIR)/.config > $(LINUX_DIR)/.config.override
+	$(SCRIPT_DIR)/config.pl 'm+' $(LINUX_DIR)/.config.target $(LINUX_DIR)/.config.override >$(LINUX_DIR)/.config
 	$(call Kernel/Configure/$(KERNEL))
 	rm -rf $(KERNEL_BUILD_DIR)/modules
 	@rm -f $(BUILD_DIR)/linux

--- a/include/kernel.mk
+++ b/include/kernel.mk
@@ -52,7 +52,6 @@
 
 define KernelPackage/Defaults
   FILES:=
-  KCONFIG:=m
   AUTOLOAD:=
 endef
 
@@ -91,7 +90,6 @@
     TITLE:=$(TITLE)
     SECTION:=kernel
     CATEGORY:=Kernel modules
-    DEFAULT:=$(KMOD_DEFAULT)
     DESCRIPTION:=$(DESCRIPTION)
     EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE))
     $(call KernelPackage/$(1))
@@ -99,15 +97,13 @@
     $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL))
   endef
 
-  ifeq ($(findstring m,$(KCONFIG)),m)
-    ifneq ($(strip $(FILES)),)
-      define Package/kmod-$(1)/install
-		mkdir -p $$(1)/lib/modules/$(LINUX_VERSION)
-		$(CP) -L $$(FILES) $$(1)/lib/modules/$(LINUX_VERSION)/
-		$(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD))
-		$(call KernelPackage/$(1)/install,$$(1))
-      endef
-    endif
+  ifneq ($(strip $(FILES)),)
+    define Package/kmod-$(1)/install
+	  mkdir -p $$(1)/lib/modules/$(LINUX_VERSION)
+	  $(CP) -L $$(FILES) $$(1)/lib/modules/$(LINUX_VERSION)/
+	  $(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD))
+	  $(call KernelPackage/$(1)/install,$$(1))
+    endef
   endif
   $$(eval $$(call BuildPackage,kmod-$(1)))
 

--- a/include/package-defaults.mk
+++ b/include/package-defaults.mk
@@ -31,6 +31,7 @@
   SUBMENUDEP:=
   TITLE:=
   DESCRIPTION:=
+  KCONFIG:=
 endef
 
 Build/Patch:=$(Build/Patch/Default)

--- a/include/package-dumpinfo.mk
+++ b/include/package-dumpinfo.mk
@@ -28,6 +28,7 @@
 		echo "Category: $(CATEGORY)"; \
 		echo "Title: $(TITLE)"; \
 		echo "Maintainer: $(MAINTAINER)"; \
+		$(if $(KCONFIG),echo "Kernel-Config: $(KCONFIG)";) \
 		echo -n "Description: "; \
 		getvar $(call shvar,Package/$(1)/description); \
 		$(if $(URL),echo;echo "$(URL)";) \

--- a/package/kernel/Makefile
+++ b/package/kernel/Makefile
@@ -14,9 +14,6 @@
 PKG_RELEASE:=$(LINUX_RELEASE)
 
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/packages
-
-# build all in-tree kmod-* packages by default
-KMOD_DEFAULT:=m
 SCAN_DEPS=modules/*.mk
 
 include $(INCLUDE_DIR)/package.mk

--- a/package/kernel/modules/block.mk
+++ b/package/kernel/modules/block.mk
@@ -3,7 +3,7 @@
 define KernelPackage/libata
 	TITLE:=libata
 	DESCRIPTION:=libata
-	KCONFIG:=$(CONFIG_ATA)
+	KCONFIG:=CONFIG_ATA
 	SUBMENU:=$(BLMENU)
 	FILES:=$(LINUX_DIR)/drivers/ata/libata.$(LINUX_KMOD_SUFFIX)
 endef
@@ -12,7 +12,7 @@
 define KernelPackage/ata-piix
 	TITLE:=ata-piix
 	DESCRIPTION:=Kernel module for Intel PIIX SATA controller
-	KCONFIG:=$(CONFIG_ATA_PIIX)
+	KCONFIG:=CONFIG_ATA_PIIX
 	SUBMENU:=$(BLMENU)
 	AUTOLOAD:=$(call AutoLoad,30,scsi_mod libata sd_mod ata_piix)
 	FILES:=$(LINUX_DIR)/drivers/ata/ata_piix.$(LINUX_KMOD_SUFFIX)
@@ -23,7 +23,7 @@
 define KernelPackage/pata-artop
 	TITLE:=pata-artop
 	DESCRIPTION:=Kernel module for ARTOP PATA controller
-	KCONFIG:=$(CONFIG_PATA_ARTOP)
+	KCONFIG:=CONFIG_PATA_ARTOP
 	SUBMENU:=$(BLMENU)
 	AUTOLOAD:=$(call AutoLoad,30,scsi_mod libata sd_mod pata_artop)
 	FILES:=$(LINUX_DIR)/drivers/ata/pata_artop.$(LINUX_KMOD_SUFFIX)

--- a/package/kernel/modules/fs.mk
+++ b/package/kernel/modules/fs.mk
@@ -3,7 +3,7 @@
 define KernelPackage/fs-cifs
   TITLE:=CIFS support
   DESCRIPTION:=Kernel module for CIFS support
-  KCONFIG:=$(CONFIG_CIFS)
+  KCONFIG:=CONFIG_CIFS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,cifs)
   FILES:=$(LINUX_DIR)/fs/cifs/cifs.$(LINUX_KMOD_SUFFIX)
@@ -17,7 +17,7 @@
 define KernelPackage/fs-minix
   TITLE:=Minix filesystem support
   DESCRIPTION:=Kernel module for Minix filesystem support
-  KCONFIG:=$(CONFIG_MINIX_FS)
+  KCONFIG:=CONFIG_MINIX_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,minix)
   FILES:=$(LINUX_DIR)/fs/minix/minix.$(LINUX_KMOD_SUFFIX)
@@ -27,7 +27,7 @@
 define KernelPackage/fs-ext2
   TITLE:=EXT2 filesystem support
   DESCRIPTION:=Kernel module for EXT2 filesystem support
-  KCONFIG:=$(CONFIG_EXT2_FS)
+  KCONFIG:=CONFIG_EXT2_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,ext2)
   FILES:=$(LINUX_DIR)/fs/ext2/ext2.$(LINUX_KMOD_SUFFIX)
@@ -37,7 +37,7 @@
 define KernelPackage/fs-ext3
   TITLE:=EXT3 filesystem support
   DESCRIPTION:=Kernel module for EXT3 filesystem support
-  KCONFIG:=$(CONFIG_EXT3_FS)
+  KCONFIG:=CONFIG_EXT3_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,jbd ext3)
   FILES:= \
@@ -45,25 +45,41 @@
 	$(LINUX_DIR)/fs/ext3/ext3.$(LINUX_KMOD_SUFFIX)
 endef
 $(eval $(call KernelPackage,fs-ext3))
+
+define KernelPackage/fs-hfs
+  TITLE:=HFS+ filesystem support
+  DESCRIPTION:=Kernel module for HFS filesystem support
+  KCONFIG:=CONFIG_HFS_FS
+  DEPENDS:=+kmod-nls-base
+  SUBMENU:=$(FSMENU)
+  AUTOLOAD:=$(call AutoLoad,30,hfs)
+  FILES:=$(LINUX_DIR)/fs/hfs/hfs.$(LINUX_KMOD_SUFFIX)
+endef
+define KernelPackage/fs-hfs/2.4
+  DEPENDS:=
+endef
+$(eval $(call KernelPackage,fs-hfs))
+
 
 define KernelPackage/fs-hfsplus
   TITLE:=HFS+ filesystem support
   DESCRIPTION:=Kernel module for HFS+ filesystem support
-  KCONFIG:=$(CONFIG_HFSPLUS_FS)
+  KCONFIG:=CONFIG_HFSPLUS_FS
+  DEPENDS:=+kmod-nls-base
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,hfsplus)
   FILES:=$(LINUX_DIR)/fs/hfsplus/hfsplus.$(LINUX_KMOD_SUFFIX)
 endef
 
-define KernelPackage/fs-hfsplus/2.6
-  DEPENDS:=+kmod-nls-base
+define KernelPackage/fs-hfsplus/2.4
+  DEPENDS:=
 endef
 $(eval $(call KernelPackage,fs-hfsplus))
 
 define KernelPackage/fs-isofs
   TITLE:=ISO9660 filesystem support
   DESCRIPTION:=Kernel module for ISO9660 filesystem support
-  KCONFIG:=$(CONFIG_ISO9660_FS)
+  KCONFIG:=CONFIG_ISO9660_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,isofs)
   FILES:=$(LINUX_DIR)/fs/isofs/isofs.$(LINUX_KMOD_SUFFIX)
@@ -77,7 +93,7 @@
 define KernelPackage/fs-udf
   TITLE:=UDF filesystem support
   DESCRIPTION:=Kernel module for UDF filesystem support
-  KCONFIG:=$(CONFIG_UDF_FS)
+  KCONFIG:=CONFIG_UDF_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,udf)
   FILES:=$(LINUX_DIR)/fs/udf/udf.$(LINUX_KMOD_SUFFIX)
@@ -91,7 +107,7 @@
 define KernelPackage/fs-nfs
   TITLE:=NFS filesystem support
   DESCRIPTION:=Kernel module for NFS support
-  KCONFIG:=$(CONFIG_NFS_FS)
+  KCONFIG:=CONFIG_NFS_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,sunrpc lockd nfs)
   FILES:= \
@@ -104,7 +120,7 @@
 define KernelPackage/fs-nfsd
   TITLE:=NFS kernel server support
   DESCRIPTION:=Kernel module for NFS kernel server support
-  KCONFIG:=$(CONFIG_NFSD)
+  KCONFIG:=CONFIG_NFSD
   SUBMENU:=$(FSMENU)
   FILES:= \
   	$(LINUX_DIR)/fs/nfsd/nfsd.$(LINUX_KMOD_SUFFIX)
@@ -124,7 +140,7 @@
 define KernelPackage/fs-msdos
   TITLE:=MSDOS filesystem support
   DESCRIPTION:=Kernel module for MSDOS filesystem support
-  KCONFIG:=$(CONFIG_MSDOS_FS)
+  KCONFIG:=CONFIG_MSDOS_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,40,msdos)
   FILES:= \
@@ -139,7 +155,7 @@
 define KernelPackage/fs-vfat
   TITLE:=VFAT filesystem support
   DESCRIPTION:=Kernel module for VFAT filesystem support
-  KCONFIG:=$(CONFIG_VFAT_FS)
+  KCONFIG:=CONFIG_VFAT_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,fat vfat)
   FILES:= \
@@ -155,7 +171,7 @@
 define KernelPackage/fs-xfs
   TITLE:=XFS filesystem support
   DESCRIPTION:=Kernel module for XFS support
-  KCONFIG:=$(CONFIG_XFS_FS)
+  KCONFIG:=CONFIG_XFS_FS
   SUBMENU:=$(FSMENU)
   AUTOLOAD:=$(call AutoLoad,30,sunrpc lockd xfs)
   FILES:= \
@@ -167,7 +183,7 @@
 define KernelPackage/nls-base
   TITLE:=Native Language Support
   DESCRIPTION:=Kernel module for Native Language Support
-  KCONFIG:=$(CONFIG_NLS)
+  KCONFIG:=CONFIG_NLS
   SUBMENU:=$(FSMENU)
   MENU:=1
   FILES:=$(LINUX_DIR)/fs/nls/nls_base.$(LINUX_KMOD_SUFFIX)
@@ -179,7 +195,7 @@
 define KernelPackage/nls-cp437
   TITLE:=Codepage 437 (United States, Canada)
   DESCRIPTION:=Kernel module for NLS Codepage 437 (United States, Canada)
-  KCONFIG:=$(CONFIG_NLS_CODEPAGE_437)
+  KCONFIG:=CONFIG_NLS_CODEPAGE_437
   SUBMENU:=$(FSMENU)
   FILES:=$(LINUX_DIR)/fs/nls/nls_cp437.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,25,nls_cp437)
@@ -194,7 +210,7 @@
 define KernelPackage/nls-cp850
   TITLE:=Codepage 850 (Europe)
   DESCRIPTION:=Kernel module for NLS Codepage 850 (Europe)
-  KCONFIG:=$(CONFIG_NLS_CODEPAGE_850)
+  KCONFIG:=CONFIG_NLS_CODEPAGE_850
   SUBMENU:=$(FSMENU)
   FILES:=$(LINUX_DIR)/fs/nls/nls_cp850.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,25,nls_cp850)
@@ -208,7 +224,7 @@
 define KernelPackage/nls-cp1250
   TITLE:=Codepage 1250 (Eastern Europe)
   DESCRIPTION:=Kernel module for NLS Codepage 1250 (Eastern Europe)
-  KCONFIG:=$(CONFIG_NLS_CODEPAGE_1250)
+  KCONFIG:=CONFIG_NLS_CODEPAGE_1250
   SUBMENU:=$(FSMENU)
   FILES:=$(LINUX_DIR)/fs/nls/nls_cp1250.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,25,nls_cp1250)
@@ -222,7 +238,7 @@
 define KernelPackage/nls-iso8859-1
   TITLE:=ISO 8859-1 (Latin 1; Western European Languages)
   DESCRIPTION:=Kernel module for ISO 8859-1 (Latin 1)
-  KCONFIG:=$(CONFIG_NLS_ISO8859_1)
+  KCONFIG:=CONFIG_NLS_ISO8859_1
   SUBMENU:=$(FSMENU)
   FILES:=$(LINUX_DIR)/fs/nls/nls_iso8859-1.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,25,nls_iso8859-1)
@@ -236,7 +252,7 @@
 define KernelPackage/nls-iso8859-15
   TITLE:=ISO 8859-15 (Latin 9; Western, with Euro symbol)
   DESCRIPTION:=Kernel module for ISO 8859-15 (Latin 9)
-  KCONFIG:=$(CONFIG_NLS_ISO8859_15)
+  KCONFIG:=CONFIG_NLS_ISO8859_15
   SUBMENU:=$(FSMENU)
   FILES:=$(LINUX_DIR)/fs/nls/nls_iso8859-15.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,25,nls_iso8859-15)
@@ -250,7 +266,7 @@
 define KernelPackage/nls-koi8r
   TITLE:=KOI8-R (Russian)
   DESCRIPTION:=Kernel module for KOI8-R (Russian)
-  KCONFIG:=$(CONFIG_NLS_KOI8_R)
+  KCONFIG:=CONFIG_NLS_KOI8_R
   SUBMENU:=$(FSMENU)
   FILES:=$(LINUX_DIR)/fs/nls/nls_koi8-r.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,25,nls_koi8-r)
@@ -264,7 +280,7 @@
 define KernelPackage/nls-utf8
   TITLE:=UTF8
   DESCRIPTION:=Kernel module for NLS UTF8
-  KCONFIG:=$(CONFIG_NLS_UTF8)
+  KCONFIG:=CONFIG_NLS_UTF8
   SUBMENU:=$(FSMENU)
   FILES:=$(LINUX_DIR)/fs/nls/nls_utf8.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,25,nls_utf8)

--- a/package/kernel/modules/i2c.mk
+++ b/package/kernel/modules/i2c.mk
@@ -12,7 +12,7 @@
   TITLE:=I2C support
   DESCRIPTION:=Kernel modules for i2c support
   SUBMENU:=$(I2CMENU)
-  KCONFIG:=$(CONFIG_I2C)
+  KCONFIG:=CONFIG_I2C
   FILES:=$(LINUX_DIR)/drivers/i2c/*.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,i2c-core i2c-dev)
 endef
@@ -23,7 +23,7 @@
   DESCRIPTION:=Kernel modules for various i2c algorithms
   DEPENDS:=kmod-i2c-core
   SUBMENU:=$(I2CMENU)
-  KCONFIG:=$(CONFIG_I2C_ALGOBIT)
+  KCONFIG:=CONFIG_I2C_ALGOBIT
   FILES:=$(LINUX_DIR)/drivers/i2c/algos/*.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,60,i2c-algo-bit i2c-algo-pcf i2c-algo-pca)
 endef
@@ -35,7 +35,7 @@
   DEFAULT:=y if LINUX_2_6_AU1000
   DEPENDS:=kmod-i2c-core kmod-i2c-algos @LINUX_2_6_AU1000
   SUBMENU:=$(I2CMENU)
-  KCONFIG:=$(CONFIG_I2C_AU1X00GPIO)
+  KCONFIG:=CONFIG_I2C_AU1X00GPIO
   FILES:=$(LINUX_DIR)/drivers/i2c/busses/i2c-au1x00gpio.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call Autoload,70,i2c-au1x00gpio)
 endef
@@ -47,7 +47,7 @@
   DEFAULT:=y if LINUX_2_6_X86_Soekris
   DEPENDS:=kmod-i2c-core kmod-i2c-algos @LINUX_2_6_X86_Soekris
   SUBMENU:=$(I2CMENU)
-  KCONFIG:=$(CONFIG_SCx200_I2C)
+  KCONFIG:=CONFIG_SCx200_I2C
   FILES:=$(LINUX_DIR)/drivers/i2c/busses/scx200_i2c.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/i2c/busses/i2c-isa.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,70,i2c-isa scx200_i2c)

--- a/package/kernel/modules/netfilter.mk
+++ b/package/kernel/modules/netfilter.mk
@@ -127,7 +127,7 @@
   TITLE:=Intermediate Queueing support
   DESCRIPTION:=\
 	Kernel support for Intermediate Queueing devices
-  KCONFIG:=$(CONFIG_IP_NF_TARGET_IMQ)
+  KCONFIG:=CONFIG_IP_NF_TARGET_IMQ
   FILES:=$(LINUX_DIR)/net/ipv4/netfilter/*IMQ*.$(LINUX_KMOD_SUFFIX) $(LINUX_DIR)/drivers/net/imq.$(LINUX_KMOD_SUFFIX)
   SUBMENU:=$(NFMENU)
   AUTOLOAD:=$(call AutoLoad,40,$(notdir $(patsubst %.ko,%,$(wildcard $(LINUX_DIR)/net/ipv4/netfilter/*IMQ*.$(LINUX_KMOD_SUFFIX) $(LINUX_DIR)/drivers/net/imq.$(LINUX_KMOD_SUFFIX)))))
@@ -207,7 +207,7 @@
   TITLE:=IPv6 modules
   DESCRIPTION:=\
 	Netfilter IPv6 firewalling support
-  KCONFIG:=$(CONFIG_IP6_NF_IPTABLES)
+  KCONFIG:=CONFIG_IP6_NF_IPTABLES
   FILES:=$(LINUX_DIR)/net/ipv6/netfilter/ip*.$(LINUX_KMOD_SUFFIX)
   SUBMENU:=$(NFMENU)
   AUTOLOAD:=$(call AutoLoad,40,$(notdir $(patsubst %.ko,%,$(wildcard $(LINUX_DIR)/net/ipv6/netfilter/ip6_*.$(LINUX_KMOD_SUFFIX)) $(wildcard $(LINUX_DIR)/net/ipv6/netfilter/ip6table_*.$(LINUX_KMOD_SUFFIX)) $(wildcard $(LINUX_DIR)/net/ipv6/netfilter/ip6t_*.$(LINUX_KMOD_SUFFIX)))))
@@ -220,7 +220,7 @@
   DESCRIPTION:=\
 	Kernel modules for ARP firewalling
   FILES:=$(LINUX_DIR)/net/ipv4/netfilter/arp*.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_IP_NF_ARPTABLES)
+  KCONFIG:=CONFIG_IP_NF_ARPTABLES
   SUBMENU:=$(NFMENU)
   AUTOLOAD:=$(call AutoLoad,40,$(notdir $(patsubst %.ko,%,$(wildcard $(LINUX_DIR)/net/ipv4/netfilter/arp*.$(LINUX_KMOD_SUFFIX)))))
 endef
@@ -232,7 +232,7 @@
   DESCRIPTION:=\
 	Kernel modules for Ethernet Bridge firewalling
   FILES:=$(LINUX_DIR)/net/bridge/netfilter/*.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_BRIDGE_NF_EBTABLES)
+  KCONFIG:=CONFIG_BRIDGE_NF_EBTABLES
   SUBMENU:=$(NFMENU)
   AUTOLOAD:=$(call AutoLoad,40,$(notdir $(patsubst %.ko,%,ebtables.ko $(wildcard $(LINUX_DIR)/net/bridge/netfilter/ebtable_*.$(LINUX_KMOD_SUFFIX)) $(wildcard $(LINUX_DIR)/net/bridge/netfilter/ebt_*.$(LINUX_KMOD_SUFFIX)))))
 endef

--- a/package/kernel/modules/network.mk
+++ b/package/kernel/modules/network.mk
@@ -16,7 +16,7 @@
   FILES:= \
     $(LINUX_DIR)/net/atm/atm.$(LINUX_KMOD_SUFFIX) \
     $(LINUX_DIR)/net/atm/br2684.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_ATM)
+  KCONFIG:=CONFIG_ATM
   SUBMENU:=$(NSMENU)
   AUTOLOAD:=$(call AutoLoad,30,atm br2684)
 endef
@@ -28,7 +28,7 @@
     Kernel module for ATM over TCP support
   DEPENDS:=@LINUX_2_6 kmod-atm
   FILES:=$(LINUX_DIR)/drivers/atm/atmtcp.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_ATM_TCP)
+  KCONFIG:=CONFIG_ATM_TCP
   SUBMENU:=$(NSMENU)
   AUTOLOAD:=$(call AutoLoad,40,atmtcp)
 endef
@@ -40,7 +40,7 @@
     Kernel module for NIC bonding.
   DEPENDS:=@LINUX_2_6_X86
   FILES:=$(LINUX_DIR)/drivers/net/bonding/bonding.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_BONDING)
+  KCONFIG:=CONFIG_BONDING
   SUBMENU:=$(NSMENU)
   AUTOLOAD:=$(call AutoLoad,40,bonding)
 endef
@@ -50,7 +50,7 @@
   TITLE:=IP in IP encapsulation support
   DESCRIPTION:=\
 	Kernel modules for IP in IP encapsulation
-  KCONFIG:=$(CONFIG_NET_IPIP)
+  KCONFIG:=CONFIG_NET_IPIP
   SUBMENU:=$(NSMENU)
 endef
 $(eval $(call KernelPackage,ipip))
@@ -77,7 +77,7 @@
 	- xfrm_user
   SUBMENU:=$(NSMENU)
   DEPENDS:=@LINUX_2_6
-  KCONFIG:=$(CONFIG_NET_KEY)
+  KCONFIG:=CONFIG_NET_KEY
   FILES:= \
 	$(LINUX_DIR)/net/key/af_key.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/net/xfrm/xfrm_user.$(LINUX_KMOD_SUFFIX)
@@ -94,7 +94,7 @@
 	- ipcomp\\\
 	- xfrm4_tunnel
   SUBMENU:=$(NSMENU)
-  KCONFIG:=$(CONFIG_INET_AH)
+  KCONFIG:=CONFIG_INET_AH
   DEPENDS:=kmod-ipsec
   FILES:= $(foreach mod,ah4 esp4 ipcomp xfrm4_tunnel, \
 	$(LINUX_DIR)/net/ipv4/$(mod).$(LINUX_KMOD_SUFFIX) \
@@ -113,7 +113,7 @@
 	- xfrm6_tunnel\\\
 	- tunnel6
   SUBMENU:=$(NSMENU)
-  KCONFIG:=$(CONFIG_INET6_AH)
+  KCONFIG:=CONFIG_INET6_AH
   DEPENDS:=kmod-ipsec
   FILES:= $(foreach mod,ah6 esp6 ipcomp6 xfrm6_tunnel tunnel6, \
 	$(LINUX_DIR)/net/ipv6/$(mod).$(LINUX_KMOD_SUFFIX) \
@@ -126,7 +126,7 @@
   TITLE:=IPv6 support
   DESCRIPTION:=\
 	Kernel modules for IPv6 support
-  KCONFIG:=$(CONFIG_IPV6)
+  KCONFIG:=CONFIG_IPV6
   SUBMENU:=$(NSMENU)
   AUTOLOAD:=$(call AutoLoad,20,ipv6)
 endef
@@ -145,7 +145,7 @@
   TITLE:=GRE support
   DESCRIPTION:=\
 	Generic Routing Encapsulation support
-  KCONFIG=$(CONFIG_NET_IPGRE)
+  KCONFIG:=CONFIG_NET_IPGRE
   FILES=$(LINUX_DIR)/net/ipv4/ip_gre.$(LINUX_KMOD_SUFFIX)
   SUBMENU:=$(NSMENU)
 endef
@@ -156,7 +156,7 @@
   TITLE:=Universal TUN/TAP driver
   DESCRIPTION:=\
 	Kernel support for the TUN/TAP tunneling device
-  KCONFIG:=$(CONFIG_TUN)
+  KCONFIG:=CONFIG_TUN
   FILES:=$(LINUX_DIR)/drivers/net/tun.$(LINUX_KMOD_SUFFIX)
   SUBMENU:=$(NSMENU)
   AUTOLOAD:=$(call AutoLoad,30,tun)
@@ -168,7 +168,7 @@
   TITLE:=PPP modules
   DESCRIPTION:=\
 	Kernel modules for PPP support
-  KCONFIG:=$(CONFIG_PPP)
+  KCONFIG:=CONFIG_PPP
   SUBMENU:=$(NSMENU)
 endef
 
@@ -196,7 +196,7 @@
   DESCRIPTION:=\
 	Kernel modules for PPPoE (PPP over Ethernet) support
   DEPENDS:=kmod-ppp
-  KCONFIG:=$(CONFIG_PPPOE)
+  KCONFIG:=CONFIG_PPPOE
   FILES:= \
 	$(LINUX_DIR)/drivers/net/pppoe.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/net/pppox.$(LINUX_KMOD_SUFFIX)
@@ -210,7 +210,7 @@
   DESCRIPTION:=\
 	Kernel modules for PPPoA (PPP over ATM) support
   DEPENDS:=kmod-ppp
-  KCONFIG:=$(CONFIG_PPPOATM)
+  KCONFIG:=CONFIG_PPPOATM
   FILES:=$(LINUX_DIR)/net/atm/pppoatm.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,40,pppoatm)
   SUBMENU:=$(NSMENU)
@@ -222,17 +222,16 @@
   TITLE:=Microsoft PPP compression/encryption
   DESCRIPTION:=Kernel modules for Microsoft PPP compression/encryption
   DEPENDS:=kmod-ppp
+  KCONFIG:=CONFIG_PPP_MPPE_MPPC CONFIG_PPP_MPPE
   SUBMENU:=$(NSMENU)
 endef
 
 define KernelPackage/mppe/2.4
-  KCONFIG:=$(CONFIG_PPP_MPPE_MPPC)
   FILES:=$(LINUX_DIR)/drivers/net/ppp_mppe_mppc.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,31,ppp_mppe_mppc)
 endef
 
 define KernelPackage/mppe/2.6
-  KCONFIG:=$(CONFIG_PPP_MPPE)
   FILES:=$(LINUX_DIR)/drivers/net/ppp_mppe.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,31,ppp_mppe)
 endef
@@ -254,7 +253,7 @@
   TITLE:=AX25 support
   DESCRIPTION:=Kernel modules for AX25 support
   SUBMENU:=$(NSMENU)
-  KCONFIG:=$(CONFIG_AX25)
+  KCONFIG:=CONFIG_AX25
   FILES:= \
 	$(LINUX_DIR)/net/ax25/ax25.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/net/hamradio/mkiss.$(LINUX_KMOD_SUFFIX)
@@ -272,16 +271,11 @@
 	quagga (at least <=0.99.6) requires a multipath patch to support this \\\
 	cached mp route feature.
   SUBMENU:=$(NSMENU)
-  KCONFIG:= \
-	$(CONFIG_IP_ROUTE_MULTIPATH_RR) \
-	$(CONFIG_IP_ROUTE_MULTIPATH_RANDOM) \
-	$(CONFIG_IP_ROUTE_MULTIPATH_WRANDOM) \
-	$(CONFIG_IP_ROUTE_MULTIPATH_DRR)
+  KCONFIG:=CONFIG_IP_ROUTE_MULTIPATH_RR CONFIG_IP_ROUTE_MULTIPATH_RANDOM CONFIG_IP_ROUTE_MULTIPATH_WRANDOM CONFIG_IP_ROUTE_MULTIPATH_DRR
   FILES:=$(LINUX_DIR)/net/ipv4/multipath_*.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,35,multipath_rr multipath_random multipath_wrandom multipath_drr)
 endef
 $(eval $(call KernelPackage,mp-alg))
-
 
 
 NDMENU:=Network Devices
@@ -292,7 +286,7 @@
 	Kernel modules for National Semiconductor DP8381x series PCI Ethernet \\\
 	adapters.
   FILES:=$(LINUX_DIR)/drivers/net/natsemi.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_NATSEMI)
+  KCONFIG:=CONFIG_NATSEMI
   DEPENDS:=@LINUX_2_6_X86
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,20,natsemi)
@@ -304,7 +298,7 @@
   DESCRIPTION:=\
 	Kernel modules for Sis 900 Ethernet adapters.
   FILES:=$(LINUX_DIR)/drivers/net/sis900.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_SIS900)
+  KCONFIG:=CONFIG_SIS900
   DEPENDS:=@LINUX_2_6_X86
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,sis900)
@@ -316,7 +310,7 @@
   DESCRIPTION:=\
 	Kernel modules for Via Rhine Ethernet chipsets.
   FILES:=$(LINUX_DIR)/drivers/net/via-rhine.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_VIA_RHINE)
+  KCONFIG:=CONFIG_VIA_RHINE
   DEPENDS:=@LINUX_2_6_X86
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,via-rhine)
@@ -328,7 +322,7 @@
   DESCRIPTION:=\
 	Kernel modules for VIA Velocity Gigabit Ethernet chipsets.
   FILES:=$(LINUX_DIR)/drivers/net/via-velocity.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_VIA_VELOCITY)
+  KCONFIG:=CONFIG_VIA_VELOCITY
   DEPENDS:=@LINUX_2_6_IXP4XX
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,via-velocity)
@@ -340,7 +334,7 @@
   DESCRIPTION:=\
 	Kernel modules for RealTek RTL-8139 PCI Fast Ethernet adapters.
   FILES:=$(LINUX_DIR)/drivers/net/8139too.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_8139TOO)
+  KCONFIG:=CONFIG_8139TOO
   DEPENDS:=@LINUX_2_6_X86
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,8139too)
@@ -352,7 +346,7 @@
   DESCRIPTION:=\
 	Kernel modules for RealTek RTL-8169 PCI Gigabit Ethernet adapters.
   FILES:=$(LINUX_DIR)/drivers/net/r8169.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_R8169)
+  KCONFIG:=CONFIG_R8169 CONFIG_R8169_NAPI=y CONFIG_R8169_VLAN=n
   DEPENDS:=@LINUX_2_6_X86 
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,r8169)
@@ -365,7 +359,7 @@
 	ne2k-pci Ethernet Adapter kernel support.
   FILES:=$(LINUX_DIR)/drivers/net/ne2k-pci.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/net/8390.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_NE2K_PCI)
+  KCONFIG:=CONFIG_NE2K_PCI
   DEPENDS:=@LINUX_2_6_X86
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,8390 ne2k-pci)
@@ -379,7 +373,7 @@
   FILES:=$(LINUX_DIR)/drivers/net/ixp4xx/ixp4xx_npe.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/net/ixp4xx/ixp4xx_qmgr.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/net/ixp4xx/ixp4xx_mac.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_IXP4XX_MAC)
+  KCONFIG:=CONFIG_IXP4XX_MAC
   DEPENDS:=@LINUX_2_6_IXP4XX
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,20,ixp4xx_npe ixp4xx_qmgr ixp4xx_mac)
@@ -391,7 +385,7 @@
   DESCRIPTION:=\
 	Kernel modules for Intel(R) PRO/100+ Ethernet adapters.
   FILES:=$(LINUX_DIR)/drivers/net/e100.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_E100)
+  KCONFIG:=CONFIG_E100
   DEPENDS:=@LINUX_2_6_X86
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,e100)
@@ -403,7 +397,7 @@
   DESCRIPTION:=\
 	Kernel modules for Intel(R) PRO/1000 Ethernet adapters.
   FILES:=$(LINUX_DIR)/drivers/net/e1000/e1000.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_E1000)
+  KCONFIG:=CONFIG_E1000
   DEPENDS:=@LINUX_2_6_X86
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,e1000)
@@ -421,7 +415,7 @@
 	- "Tornado"   (3c905)                                  PCI  \\\
 	- "Hurricane" (3c555/3cSOHO)                           PCI 
   FILES:=$(LINUX_DIR)/drivers/net/3c59x.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_3C59X)
+  KCONFIG:=CONFIG_3C59X
   DEPENDS:=@LINUX_2_6_X86
   SUBMENU:=$(NDMENU)
   AUTOLOAD:=$(call AutoLoad,50,3c59x)

--- a/package/kernel/modules/other.mk
+++ b/package/kernel/modules/other.mk
@@ -11,31 +11,31 @@
 define KernelPackage/crypto
   TITLE:=CryptoAPI modules
   KCONFIG:= \
-	$(CONFIG_CRYPTO_HMAC) \
-	$(CONFIG_CRYPTO_NULL) \
-	$(CONFIG_CRYPTO_MD4) \
-	$(CONFIG_CRYPTO_MD5) \
-	$(CONFIG_CRYPTO_SHA1) \
-	$(CONFIG_CRYPTO_SHA256) \
-	$(CONFIG_CRYPTO_SHA512) \
-	$(CONFIG_CRYPTO_WP512) \
-	$(CONFIG_CRYPTO_TGR192) \
-	$(CONFIG_CRYPTO_DES) \
-	$(CONFIG_CRYPTO_BLOWFISH) \
-	$(CONFIG_CRYPTO_TWOFISH) \
-	$(CONFIG_CRYPTO_SERPENT) \
-	$(CONFIG_CRYPTO_AES) \
-	$(CONFIG_CRYPTO_CAST5) \
-	$(CONFIG_CRYPTO_CAST6) \
-	$(CONFIG_CRYPTO_TEA) \
-	$(CONFIG_CRYPTO_ARC4) \
-	$(CONFIG_CRYPTO_KHAZAD) \
-	$(CONFIG_CRYPTO_ANUBIS) \
-	$(CONFIG_CRYPTO_DEFLATE) \
-	$(CONFIG_CRYPTO_MICHAEL_MIC) \
-	$(CONFIG_CRYPTO_CRC32C) \
-	$(CONFIG_CRYPTO_ECB)) \
-	$(CONFIG_CRYPTO_BLKCIPHER) 
+	CONFIG_CRYPTO_HMAC \
+	CONFIG_CRYPTO_NULL \
+	CONFIG_CRYPTO_MD4 \
+	CONFIG_CRYPTO_MD5 \
+	CONFIG_CRYPTO_SHA1 \
+	CONFIG_CRYPTO_SHA256 \
+	CONFIG_CRYPTO_SHA512 \
+	CONFIG_CRYPTO_WP512 \
+	CONFIG_CRYPTO_TGR192 \
+	CONFIG_CRYPTO_DES \
+	CONFIG_CRYPTO_BLOWFISH \
+	CONFIG_CRYPTO_TWOFISH \
+	CONFIG_CRYPTO_SERPENT \
+	CONFIG_CRYPTO_AES \
+	CONFIG_CRYPTO_CAST5 \
+	CONFIG_CRYPTO_CAST6 \
+	CONFIG_CRYPTO_TEA \
+	CONFIG_CRYPTO_ARC4 \
+	CONFIG_CRYPTO_KHAZAD \
+	CONFIG_CRYPTO_ANUBIS \
+	CONFIG_CRYPTO_DEFLATE \
+	CONFIG_CRYPTO_MICHAEL_MIC \
+	CONFIG_CRYPTO_CRC32C \
+	CONFIG_CRYPTO_ECB) \
+	CONFIG_CRYPTO_BLKCIPHER 
   FILES:=$(LINUX_DIR)/crypto/*.$(LINUX_KMOD_SUFFIX)
   SUBMENU:=$(EMENU)
 endef
@@ -50,7 +50,7 @@
 	- ide-core \\\
 	- ide-detect \\\
 	- ide-disk
-  KCONFIG:=$(CONFIG_IDE)
+  KCONFIG:=CONFIG_IDE
   FILES:=$(LINUX_DIR)/drivers/ide/*.$(LINUX_KMOD_SUFFIX)
   SUBMENU:=$(EMENU)
   AUTOLOAD:=$(call AutoLoad,20,ide-core) $(call AutoLoad,90,ide-generic ide-detect ide-disk)
@@ -60,7 +60,8 @@
 define KernelPackage/ide-pdc202xx
   TITLE:=PDC202xx IDE driver
   SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_BLK_DEV_PDC202XX_OLD)
+  DEPENDS:=@LINUX_2_4
+  KCONFIG:=CONFIG_BLK_DEV_PDC202XX_OLD
   FILES:=$(LINUX_DIR)/drivers/ide/pci/pdc202xx_old.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,30,pdc202xx_old)
 endef
@@ -69,7 +70,7 @@
 define KernelPackage/ide-aec62xx
   TITLE:=AEC62xx IDE driver
   SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_BLK_DEV_AEC62XX)
+  KCONFIG:=CONFIG_BLK_DEV_AEC62XX
   FILES:=$(LINUX_DIR)/drivers/ide/pci/aec62xx.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,30,aec62xx)
 endef
@@ -78,7 +79,7 @@
 define KernelPackage/scsi-core
   TITLE:=Kernel support for SCSI
   SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_BLK_DEV_SD)
+  KCONFIG:=CONFIG_SCSI CONFIG_BLK_DEV_SD
   FILES:= \
     $(LINUX_DIR)/drivers/scsi/scsi_mod.$(LINUX_KMOD_SUFFIX) \
     $(LINUX_DIR)/drivers/scsi/sd_mod.$(LINUX_KMOD_SUFFIX)
@@ -87,7 +88,8 @@
 
 define KernelPackage/lp
   TITLE:=Parallel port and line printer support
-  KCONFIG:=$(CONFIG_PARPORT)
+  DEPENDS:=@LINUX_2_4
+  KCONFIG:=CONFIG_PARPORT
   FILES:= \
 	$(LINUX_DIR)/drivers/parport/parport.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/char/lp.$(LINUX_KMOD_SUFFIX) \
@@ -104,7 +106,7 @@
 define KernelPackage/soundcore
   TITLE:=Sound support
   DESCRIPTION:=Kernel modules for sound support
-  KCONFIG:=$(CONFIG_SOUND)
+  KCONFIG:=CONFIG_SOUND
   SUBMENU:=$(EMENU)
 endef
 
@@ -134,7 +136,7 @@
 define KernelPackage/loop
   TITLE:=Loopback device support
   DESCRIPTION:=Kernel module for loopback device support
-  KCONFIG:=$(CONFIG_BLK_DEV_LOOP)
+  KCONFIG:=CONFIG_BLK_DEV_LOOP
   SUBMENU:=$(EMENU)
   AUTOLOAD:=$(call AutoLoad,30,loop)
   FILES:=$(LINUX_DIR)/drivers/block/loop.$(LINUX_KMOD_SUFFIX)
@@ -144,7 +146,7 @@
 define KernelPackage/nbd
   TITLE:=Network block device support
   DESCRIPTION:=Kernel module for network block device support
-  KCONFIG:=$(CONFIG_BLK_DEV_NBD)
+  KCONFIG:=CONFIG_BLK_DEV_NBD
   SUBMENU:=$(EMENU)
   AUTOLOAD:=$(call AutoLoad,30,nbd)
   FILES:=$(LINUX_DIR)/drivers/block/nbd.$(LINUX_KMOD_SUFFIX)
@@ -154,7 +156,7 @@
 define KernelPackage/capi
   TITLE:=CAPI Support
   DESCRIPTION:=Kernel module for basic CAPI support
-  KCONFIG:=$(CONFIG_ISDN) $(CONFIG_ISDN_CAPI) $(CONFIG_ISDN_CAPI_CAPI20)
+  KCONFIG:=CONFIG_ISDN CONFIG_ISDN_CAPI CONFIG_ISDN_CAPI_CAPI20
   SUBMENU:=$(EMENU)
   AUTOLOAD:=$(call AutoLoad,30,kernelcapi capi)
   FILES:=$(LINUX_DIR)/drivers/isdn/capi/*capi.$(LINUX_KMOD_SUFFIX)
@@ -165,10 +167,10 @@
   TITLE:=PCMCIA/CardBus support
   DESCRIPTION:=Kernel support for PCMCIA/CardBus controllers
   SUBMENU:=$(EMENU)
+  KCONFIG:=CONFIG_PCMCIA CONFIG_PCCARD
 endef
 
 define KernelPackage/pcmcia-core/2.4
-  KCONFIG:=$(CONFIG_PCMCIA)
   FILES:= \
 	$(LINUX_DIR)/drivers/pcmcia/pcmcia_core.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/pcmcia/yenta_socket.$(LINUX_KMOD_SUFFIX) \
@@ -177,7 +179,6 @@
 endef
 
 define KernelPackage/pcmcia-core/2.6
-  KCONFIG:=$(CONFIG_PCCARD)
   FILES:= \
 	$(LINUX_DIR)/drivers/pcmcia/pcmcia_core.$(LINUX_KMOD_SUFFIX) \
 	$(if $(CONFIG_PCMCIA),$(LINUX_DIR)/drivers/pcmcia/pcmcia.$(LINUX_KMOD_SUFFIX)) \
@@ -194,15 +195,14 @@
   DEPENDS:=kmod-pcmcia-core
   SUBMENU:=$(EMENU)
   AUTOLOAD:=$(call AutoLoad,45,serial_cs)
+  KCONFIG:=CONFIG_PCMCIA_SERIAL_CS CONFIG_SERIAL_8250_CS
 endef
 
 define KernelPackage/pcmcia-serial/2.4
-  KCONFIG:=$(CONFIG_PCMCIA_SERIAL_CS)
   FILES:=$(LINUX_DIR)/drivers/char/pcmcia/serial_cs.$(LINUX_KMOD_SUFFIX)
 endef
 
 define KernelPackage/pcmcia-serial/2.6
-  KCONFIG:=$(CONFIG_SERIAL_8250_CS)
   FILES:=$(LINUX_DIR)/drivers/serial/serial_cs.$(LINUX_KMOD_SUFFIX)
 endef
 $(eval $(call KernelPackage,pcmcia-serial))
@@ -213,10 +213,10 @@
   DEPENDS:=@USB_SUPPORT
   DESCRIPTION:=Kernel support for Bluetooth devices
   SUBMENU:=$(EMENU)
+  KCONFIG:=CONFIG_BLUEZ CONFIG_BT
  endef
 
  define KernelPackage/bluetooth/2.4
-  KCONFIG:=$(CONFIG_BLUEZ)
   FILES:= \
 	$(LINUX_DIR)/net/bluetooth/bluez.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/net/bluetooth/l2cap.$(LINUX_KMOD_SUFFIX) \
@@ -229,7 +229,6 @@
 endef
 
 define KernelPackage/bluetooth/2.6
-  KCONFIG:=$(CONFIG_BT)
   FILES:= \
 	$(LINUX_DIR)/net/bluetooth/bluetooth.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/net/bluetooth/l2cap.$(LINUX_KMOD_SUFFIX) \
@@ -247,15 +246,12 @@
   DEPENDS:=@LINUX_2_6_AT91
   DESCRIPTION:=Kernel support for MMC/SD cards
   SUBMENU:=$(EMENU)
- endef
-
-define KernelPackage/mmc/2.6
-	KCONFIG:=$(CONFIG_MMC)
-	FILES:= \
+  KCONFIG:=CONFIG_MMC
+  FILES:= \
 	$(LINUX_DIR)/drivers/mmc/mmc_core.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/mmc/mmc_block.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/mmc/at91_mci.$(LINUX_KMOD_SUFFIX)
-	AUTOLOAD:=$(call AutoLoad,90,mmc_core mmc_block at91_mci)
+  AUTOLOAD:=$(call AutoLoad,90,mmc_core mmc_block at91_mci)
 endef
 $(eval $(call KernelPackage,mmc))
 
@@ -263,7 +259,7 @@
   TITLE:=Software watchdog driver
   DESCRIPTION:=Software watchdog driver
   SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_SOFT_WATCHDOG)
+  KCONFIG:=CONFIG_SOFT_WATCHDOG
   FILES:=$(LINUX_DIR)/drivers/char/softdog.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,softdog)
 endef
@@ -275,7 +271,6 @@
 define KernelPackage/softdog/2.6
   FILES:=$(LINUX_DIR)/drivers/char/watchdog/softdog.ko
 endef
-
 $(eval $(call KernelPackage,softdog))
 
 
@@ -284,7 +279,7 @@
   DESCRIPTION:=Kernel modules for Video4Linux support
   DEPENDS:=@VIDEO_SUPPORT
   SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_VIDEO_DEV)
+  KCONFIG:=CONFIG_VIDEO_DEV
   FILES:=$(LINUX_DIR)/drivers/media/video/*.$(LINUX_KMOD_SUFFIX)
 endef
 
@@ -300,10 +295,9 @@
 define KernelPackage/leds-net48xx
   TITLE:=Soekris Net48xx LED support
   DESCRIPTION:=Kernel module for Soekris Net48xx LEDs
-  DEFAULT:=y if LINUX_2_6_X86_Soekris
-  DEPENDS:=@LINUX_2_6_X86_Soekris
-  SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_LEDS_NET48XX)
+  DEPENDS:=@LINUX_2_6_X86
+  SUBMENU:=$(EMENU)
+  KCONFIG:=CONFIG_LEDS_NET48XX
   FILES:=$(LINUX_DIR)/drivers/leds/leds-net48xx.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,leds-net48xx)
 endef
@@ -312,10 +306,9 @@
 define KernelPackage/nsc-gpio
   TITLE:=Natsemi GPIO support
   DESCRIPTION:=Kernel module for Natsemi GPIO
-  DEFAULT:=y if LINUX_2_6_X86_Soekris
-  DEPENDS:=@LINUX_2_6_X86_Soekris
-  SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_NSC_GPIO)
+  DEPENDS:=@LINUX_2_6_X86
+  SUBMENU:=$(EMENU)
+  KCONFIG:=CONFIG_NSC_GPIO
   FILES:=$(LINUX_DIR)/drivers/char/nsc_gpio.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,40,nsc_gpio)
 endef
@@ -324,10 +317,9 @@
 define KernelPackage/scx200-gpio
   TITLE:=Natsemi SCX200 GPIO support
   DESCRIPTION:=Kernel module for SCX200 GPIO
-  DEFAULT:=y if LINUX_2_6_X86_Soekris
-  DEPENDS:=kmod-nsc-gpio @LINUX_2_6_X86_Soekris
-  SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_SCx200_GPIO)
+  DEPENDS:=kmod-nsc-gpio @LINUX_2_6_X86
+  SUBMENU:=$(EMENU)
+  KCONFIG:=CONFIG_SCx200_GPIO
   FILES:=$(LINUX_DIR)/drivers/char/scx200_gpio.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,scx200_gpio)
 endef
@@ -336,10 +328,9 @@
 define KernelPackage/scx200-wdt
   TITLE:=Natsemi SCX200 Watchdog support
   DESCRIPTION:=Kernel module for SCX200 Watchdog
-  DEFAULT:=y if LINUX_2_6_X86_Soekris
-  DEPENDS:=@LINUX_2_6_X86_Soekris
-  SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_SC1200_WDT)
+  DEPENDS:=@LINUX_2_6_X86
+  SUBMENU:=$(EMENU)
+  KCONFIG:=CONFIG_SC1200_WDT
   FILES:=$(LINUX_DIR)/drivers/char/watchdog/scx200_wdt.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,scx200_wdt)
 endef
@@ -348,9 +339,8 @@
 define KernelPackage/hwmon
   TITLE:=Hardware monitoring support
   DESCRIPTION:=Kernel modules for hardware monitoring
-  DEFAULT:=y if LINUX_2_6_X86_Soekris
-  SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_HWMON_VID)
+  SUBMENU:=$(EMENU)
+  KCONFIG:=CONFIG_HWMON_VID
   FILES:= \
 	$(LINUX_DIR)/drivers/hwmon/hwmon.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/drivers/hwmon/hwmon-vid.$(LINUX_KMOD_SUFFIX)
@@ -361,10 +351,9 @@
 define KernelPackage/hwmon-pc87360
   TITLE:=PC87360 monitoring support
   DESCRIPTION:=Kernel modules for PC87360 chips
-  DEFAULT:=y if LINUX_2_6_X86_Soekris
   DEPENDS:=kmod-hwmon
   SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_SENSORS_PC87360)
+  KCONFIG:=CONFIG_SENSORS_PC87360
   FILES:=$(LINUX_DIR)/drivers/hwmon/pc87360.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,pc87360)
 endef
@@ -374,7 +363,7 @@
   TITLE:=Input device core
   DESCRIPTION:=Kernel modules for support of input device
   SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_INPUT)
+  KCONFIG:=CONFIG_INPUT
   FILES:=$(LINUX_DIR)/drivers/input/input-core.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,input-core)
 endef
@@ -385,7 +374,7 @@
   DESCRIPTION:=Kernel modules for support of input device events
   DEPENDS:=+kmod-input-core
   SUBMENU:=$(EMENU)
-  KCONFIG:=$(CONFIG_INPUT_EVDEV)
+  KCONFIG:=CONFIG_INPUT_EVDEV
   FILES:=$(LINUX_DIR)/drivers/input/evdev.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,60,evdev)
 endef

--- a/package/kernel/modules/usb.mk
+++ b/package/kernel/modules/usb.mk
@@ -31,7 +31,7 @@
   TITLE:=Support for USB
   DESCRIPTION:=Kernel support for USB
   DEPENDS:=@USB_SUPPORT
-  KCONFIG:=$(CONFIG_USB)
+  KCONFIG:=CONFIG_USB
   SUBMENU:=$(USBMENU)
   AUTOLOAD:=$(call AutoLoad,20,usbcore)
 endef
@@ -54,13 +54,13 @@
 
 define KernelPackage/usb-uhci/2.4
   FILES:=$(LINUX_DIR)/drivers/usb/host/uhci.o
-  KCONFIG:=$(CONFIG_USB_UHCI_ALT)
+  KCONFIG:=CONFIG_USB_UHCI_ALT
   AUTOLOAD:=$(call AutoLoad,50,uhci)
 endef
 
 define KernelPackage/usb-uhci/2.6
   FILES:=$(LINUX_DIR)/drivers/usb/host/uhci-hcd.ko
-  KCONFIG:=$(CONFIG_USB_UHCI_HCD)
+  KCONFIG:=CONFIG_USB_UHCI_HCD
   AUTOLOAD:=$(call AutoLoad,50,uhci-hcd)
 endef
 $(eval $(call KernelPackage,usb-uhci))
@@ -69,11 +69,8 @@
   $(call usbdep,@LINUX_2_4)
   TITLE:=Support for Intel/VIA UHCI controllers 
   DESCRIPTION:=Kernel support for Intel/VIA USB UHCI controllers
-endef 
-
-define KernelPackage/usb-uhci-iv/2.4
   FILES:=$(LINUX_DIR)/drivers/usb/host/usb-uhci.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_USB_UHCI)
+  KCONFIG:=CONFIG_USB_UHCI
   AUTOLOAD:=$(call AutoLoad,50,usb-uhci) 
 endef 
 $(eval $(call KernelPackage,usb-uhci-iv)) 
@@ -82,17 +79,16 @@
   $(call usbdep,)
   TITLE:=Support for OHCI controllers
   DESCRIPTION:=Kernel support for USB OHCI controllers
+  KCONFIG:=CONFIG_USB_OHCI CONFIG_USB_OHCI_HCD
 endef
 
 define KernelPackage/usb-ohci/2.4
   FILES:=$(LINUX_DIR)/drivers/usb/host/usb-ohci.o
-  KCONFIG:=$(CONFIG_USB_OHCI)
   AUTOLOAD:=$(call AutoLoad,50,usb-ohci)
 endef
 
 define KernelPackage/usb-ohci/2.6
   FILES:=$(LINUX_DIR)/drivers/usb/host/ohci-hcd.ko
-  KCONFIG:=$(CONFIG_USB_OHCI_HCD)
   AUTOLOAD:=$(call AutoLoad,50,ohci-hcd)
 endef
 $(eval $(call KernelPackage,usb-ohci))
@@ -102,7 +98,7 @@
   TITLE:=Support for USB2 controllers
   DESCRIPTION:=Kernel support for USB2 (EHCI) controllers
   FILES:=$(LINUX_DIR)/drivers/usb/host/ehci-hcd.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_USB_EHCI_HCD)
+  KCONFIG:=CONFIG_USB_EHCI_HCD
   AUTOLOAD:=$(call AutoLoad,50,ehci-hcd)
 endef
 $(eval $(call KernelPackage,usb2))
@@ -112,7 +108,7 @@
   $(call usbdep,)
   TITLE:=Support for modems/isdn controllers
   DESCRIPTION:=Kernel support for USB ACM devices (modems/isdn controllers)
-  KCONFIG:=$(CONFIG_USB_ACM)
+  KCONFIG:=CONFIG_USB_ACM
 endef
 
 define KernelPackage/usb-acm/2.4
@@ -131,16 +127,15 @@
   $(call usbdep,+kmod-soundcore)
   TITLE:=Support for audio devices
   DESCRIPTION:=Kernel support for USB audio devices
+  KCONFIG:=CONFIG_USB_AUDIO CONFIG_SND_USB_AUDIO
 endef
 
 define KernelPackage/usb-audio/2.4
-  KCONFIG:=$(CONFIG_USB_AUDIO)
   FILES:=$(LINUX_DIR)/drivers/usb/audio.o
   AUTOLOAD:=$(call AutoLoad,60,audio)
 endef
 
 define KernelPackage/usb-audio/2.6
-  KCONFIG:=$(CONFIG_SND_USB_AUDIO)
   FILES:= \
 	$(LINUX_DIR)/sound/usb/snd-usb-lib.ko \
 	$(LINUX_DIR)/sound/usb/snd-usb-audio.ko
@@ -153,7 +148,7 @@
   $(call usbdep,)
   TITLE:=Support for printers
   DESCRIPTION:=Kernel support for USB printers
-  KCONFIG:=$(CONFIG_USB_PRINTER)
+  KCONFIG:=CONFIG_USB_PRINTER
 endef
 
 define KernelPackage/usb-printer/2.4
@@ -172,7 +167,7 @@
   $(call usbdep,)
   TITLE:=Support for USB-to-Serial converters
   DESCRIPTION:=Kernel support for USB-to-Serial converters
-  KCONFIG:=$(CONFIG_USB_SERIAL)
+  KCONFIG:=CONFIG_USB_SERIAL
   FILES:=$(LINUX_DIR)/drivers/usb/serial/usbserial.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,60,usbserial)
 endef
@@ -182,7 +177,7 @@
   $(call usbdep,kmod-usb-serial)
   TITLE:=Support for Airprime (EVDO) 
   DESCRIPTION:=Kernel support for Airprime (EVDO) 
-  KCONFIG:=$(CONFIG_USB_SERIAL_AIRPRIME)
+  KCONFIG:=CONFIG_USB_SERIAL_AIRPRIME
   FILES:=$(LINUX_DIR)/drivers/usb/serial/airprime.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,65,airprime)
 endef
@@ -192,7 +187,7 @@
   $(call usbdep,kmod-usb-serial)
   TITLE:=Support for Belkin devices
   DESCRIPTION:=Kernel support for Belkin USB-to-Serial converters
-  KCONFIG:=$(CONFIG_USB_SERIAL_BELKIN)
+  KCONFIG:=CONFIG_USB_SERIAL_BELKIN
   FILES:=$(LINUX_DIR)/drivers/usb/serial/belkin_sa.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,65,belkin_sa)
 endef
@@ -203,7 +198,7 @@
   $(call usbdep,kmod-usb-serial)
   TITLE:=Support for FTDI devices
   DESCRIPTION:=Kernel support for FTDI USB-to-Serial converters
-  KCONFIG:=$(CONFIG_USB_SERIAL_FTDI_SIO)
+  KCONFIG:=CONFIG_USB_SERIAL_FTDI_SIO
   FILES:=$(LINUX_DIR)/drivers/usb/serial/ftdi_sio.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,65,ftdi_sio)
 endef
@@ -214,7 +209,7 @@
   $(call usbdep,kmod-usb-serial)
   TITLE:=Support for Magic Control Tech. devices
   DESCRIPTION:=Kernel support for Magic Control Technology USB-to-Serial converters
-  KCONFIG:=$(CONFIG_USB_SERIAL_MCT_U232)
+  KCONFIG:=CONFIG_USB_SERIAL_MCT_U232
   FILES:=$(LINUX_DIR)/drivers/usb/serial/mct_u232.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,65,mct_u232)
 endef
@@ -224,7 +219,7 @@
   $(call usbdep,kmod-usb-serial)
   TITLE:=Support for Prolific PL2303 devices
   DESCRIPTION:=Kernel support for Prolific PL2303 USB-to-Serial converters
-  KCONFIG:=$(CONFIG_USB_SERIAL_PL2303)
+  KCONFIG:=CONFIG_USB_SERIAL_PL2303
   FILES:=$(LINUX_DIR)/drivers/usb/serial/pl2303.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,65,pl2303)
 endef
@@ -235,7 +230,7 @@
   $(call usbdep,kmod-usb-serial)
   TITLE:=Support for Sierra Wireless devices
   DESCRIPTION:=Kernel support for Sierra Wireless devices
-  KCONFIG:=$(CONFIG_USB_SERIAL_SIERRAWIRELESS)
+  KCONFIG:=CONFIG_USB_SERIAL_SIERRAWIRELESS
   FILES:=$(LINUX_DIR)/drivers/usb/serial/sierra.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,65,sierra)
 endef
@@ -246,7 +241,7 @@
   $(call usbdep,kmod-usb-serial)
   TITLE:=Support for Handspring Visor devices
   DESCRIPTION:=Kernel support for Handspring Visor PDAs
-  KCONFIG:=$(CONFIG_USB_SERIAL_VISOR)
+  KCONFIG:=CONFIG_USB_SERIAL_VISOR
   FILES:=$(LINUX_DIR)/drivers/usb/serial/visor.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,65,visor)
 endef
@@ -257,7 +252,7 @@
   TITLE:=Support for Option HSDPA modems
   DESCRIPTION:=Kernel support for Option HSDPA modems
   DEPENDS:=@LINUX_2_6
-  KCONFIG:=$(CONFIG_USB_SERIAL_OPTION)
+  KCONFIG:=CONFIG_USB_SERIAL_OPTION
   FILES:=$(LINUX_DIR)/drivers/usb/serial/option.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,65,option)
 endef
@@ -268,7 +263,7 @@
   $(call usbdep,+kmod-scsi-core)
   TITLE:=USB Storage support
   DESCRIPTION:=Kernel support for USB Mass Storage devices
-  KCONFIG:=$(CONFIG_USB_STORAGE)
+  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)
@@ -279,7 +274,7 @@
   $(call usbdep,@LINUX_2_6 kmod-atm)
   TITLE:=Support for ATM on USB bus
   DESCRIPTION:=Kernel support for USB DSL modems
-  KCONFIG:=$(CONFIG_USB_ATM)
+  KCONFIG:=CONFIG_USB_ATM
   FILES:=$(LINUX_DIR)/drivers/usb/atm/usbatm.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,60,usbatm)
 endef
@@ -289,7 +284,7 @@
   $(call usbdep,@LINUX_2_6 kmod-atm)
   TITLE:=Support for SpeedTouch ADSL modems
   DESCRIPTION:=Kernel support for SpeedTouch USB ADSL modems
-  KCONFIG:=$(CONFIG_USB_SPEEDTOUCH)
+  KCONFIG:=CONFIG_USB_SPEEDTOUCH
   FILES:=$(LINUX_DIR)/drivers/usb/atm/speedtch.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,70,speedtch)
 endef
@@ -300,7 +295,7 @@
   TITLE:=Driver for Eagle 8051 based USB ADSL modems
   DESCRIPTION:=Kernel support for Eagle 8051 based USB ADSL modems
   FILES:=$(LINUX_DIR)/drivers/usb/atm/ueagle-atm.$(LINUX_KMOD_SUFFIX)
-  KCONFIG:=$(CONFIG_USB_UEAGLEATM)
+  KCONFIG:=CONFIG_USB_UEAGLEATM
   AUTOLOAD:=$(call AutoLoad,70,ueagle-atm)
 endef
 $(eval $(call KernelPackage,ueagle-atm))
@@ -309,7 +304,7 @@
   $(call usbdep,+kmod-videodev)
   TITLE:=Philips WebCam driver
   DESCRIPTION:=Kernel modules for supporting Philips WebCam USB devices
-  KCONFIG:=$(CONFIG_USB_PWC)
+  KCONFIG:=CONFIG_USB_PWC
   AUTOLOAD:=$(call AutoLoad,70,pwc)
 endef
 
@@ -326,7 +321,7 @@
   $(call usbdep,+kmod-videodev)
   TITLE:=CPIA2 video driver
   DESCRIPTION:=Kernel modules for CPIA2 WebCam devices
-  KCONFIG:=$(CONFIG_VIDEO_CPIA2)
+  KCONFIG:=CONFIG_VIDEO_CPIA2
   AUTOLOAD:=$(call AutoLoad,70,cpia2)
 endef
 
@@ -343,7 +338,7 @@
   $(call usbdep,)
   TITLE:=Kernel modules for USB-to-Ethernet convertors
   DESCRIPTION:=Kernel modules for USB-to-Ethernet convertors
-  KCONFIG:=$(CONFIG_USB_USBNET)
+  KCONFIG:=CONFIG_USB_USBNET
   AUTOLOAD:=$(call Autoload,60, usbnet)
 endef
 
@@ -361,7 +356,7 @@
   $(call usbdep,kmod-usbnet)
   TITLE:=Kernel module for USB-to-Ethernet Asix convertors
   DESCRIPTION:=Kernel module for USB-to-Ethernet Asix convertors
-  KCONFIG:=$(CONFIG_USB_NET_AX8817X)
+  KCONFIG:=CONFIG_USB_NET_AX8817X
 endef
 
 define KernelPackage/usb-net-asix/2.4
@@ -380,7 +375,7 @@
   $(call usbdep,kmod-usbnet)
   TITLE:=Kernel module for USB-to-Ethernet Kaweth convertors
   DESCRIPTION:=Kernel module for USB-to-Ethernet Kaweth convertors
-  KCONFIG:=$(CONFIG_USB_KAWETH)
+  KCONFIG:=CONFIG_USB_KAWETH
   FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/kaweth.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call Autoload,61,kaweth)
 endef
@@ -391,7 +386,7 @@
   $(call usbdep,kmod-usbnet)
   TITLE:=Kernel module for USB-to-Ethernet Pegasus convertors
   DESCRIPTION:=Kernel module for USB-to-Ethernet Pegasus convertors
-  KCONFIG:=$(CONFIG_USB_PEGASUS)
+  KCONFIG:=CONFIG_USB_PEGASUS
   FILES:=$(LINUX_DIR)/drivers/$(USBNET_DIR)/pegasus.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call Autoload,61,pegasus)
 endef
@@ -402,7 +397,7 @@
   $(call usbdep,@LINUX_2_6 +kmod-input-core +kmod-input-evdev)
   TITLE:=Support for USB Human Input Devices
   DESCRIPTION:=Kernel support for USB HID devices such as keyboards and mice
-  KCONFIG:=$(CONFIG_USB_HID)
+  KCONFIG:=CONFIG_USB_HID
   AUTOLOAD:=$(call AutoLoad,70,usbhid)
 endef
 
@@ -415,7 +410,7 @@
   $(call usbdep,@LINUX_2_6 +kmod-input-core +kmod-input-evdev)
   TITLE:=USB Yealink VOIP phone
   DESCRIPTION:=Kernel support for Yealink VOIP phone
-  KCONFIG:=$(CONFIG_USB_YEALINK)
+  KCONFIG:=CONFIG_USB_YEALINK
   FILES:=$(LINUX_DIR)/drivers/$(USBINPUT_DIR)/yealink.ko
   AUTOLOAD:=$(call AutoLoad,70,yealink)
 endef

--- a/package/kernel/modules/wireless.mk
+++ b/package/kernel/modules/wireless.mk
@@ -19,7 +19,7 @@
 	- ieee80211_crypt_tkip \\\
 	- ieee80211_crytp_ccmp \\\
   DEPENDS:=@LINUX_2_6 +kmod-crypto
-  KCONFIG:=$(CONFIG_IEEE80211)
+  KCONFIG:=CONFIG_IEEE80211
   FILES:= \
   	$(LINUX_DIR)/net/ieee80211/*.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,10, \
@@ -37,7 +37,7 @@
 define KernelPackage/ieee80211-softmac
   TITLE:=ieee80211 SoftMAC support
   DEPENDS:=kmod-ieee80211
-  KCONFIG:=$(CONFIG_IEEE80211_SOFTMAC)
+  KCONFIG:=CONFIG_IEEE80211_SOFTMAC
   FILES:= \
 	$(LINUX_DIR)/net/ieee80211/softmac/*.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,20,ieee80211softmac)
@@ -48,7 +48,7 @@
 define KernelPackage/mac80211
   TITLE:=mac80211 (Devicescape) support
   DEPENDS:=@LINUX_2_6
-  KCONFIG:=$(CONFIG_MAC80211)
+  KCONFIG:=CONFIG_MAC80211
   FILES:= \
   	$(LINUX_DIR)/net/wireless/cfg80211.$(LINUX_KMOD_SUFFIX) \
 	$(LINUX_DIR)/net/mac80211/mac80211.$(LINUX_KMOD_SUFFIX) \
@@ -65,7 +65,7 @@
 	Includes: \\\
 	- bcm43xx
   DEPENDS:=kmod-ieee80211-softmac
-  KCONFIG:=$(CONFIG_BCM43XX)
+  KCONFIG:=CONFIG_BCM43XX
   FILES:=$(LINUX_DIR)/drivers/net/wireless/bcm43xx/bcm43xx.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,bcm43xx)
   SUBMENU:=$(WIMENU)
@@ -79,7 +79,7 @@
 	Includes: \\\
 	- ipw2100
   DEPENDS:=kmod-ieee80211
-  KCONFIG:=$(CONFIG_IPW2100)
+  KCONFIG:=CONFIG_IPW2100
   FILES:=$(LINUX_DIR)/drivers/net/wireless/ipw2100.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,ipw2100)
   SUBMENU:=$(WIMENU)
@@ -93,7 +93,7 @@
 	Includes: \\\
 	- ipw2200
   DEPENDS:=kmod-ieee80211
-  KCONFIG:=$(CONFIG_IPW2200)
+  KCONFIG:=CONFIG_IPW2200
   FILES:=$(LINUX_DIR)/drivers/net/wireless/ipw2200.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,ipw2200)
   SUBMENU:=$(WIMENU)
@@ -104,7 +104,7 @@
 define KernelPackage/net-airo
   TITLE:=Cisco Aironet driver
   DESCRIPTION:=Driver for Cisco Aironet cards
-  KCONFIG:=$(CONFIG_AIRO)
+  KCONFIG:=CONFIG_AIRO
   SUBMENU:=$(WIMENU)
   FILES:=$(LINUX_DIR)/drivers/net/wireless/airo.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,airo)
@@ -115,7 +115,7 @@
 define KernelPackage/net-hermes
   TITLE:=Hermes 802.11b chipset support
   DESCRIPTION:=Kernel support for Hermes 802.11b chipsets
-  KCONFIG:=$(CONFIG_HERMES)
+  KCONFIG:=CONFIG_HERMES
   SUBMENU:=$(WIMENU)
   FILES:= \
 	$(LINUX_DIR)/drivers/net/wireless/hermes.$(LINUX_KMOD_SUFFIX) \
@@ -128,7 +128,7 @@
 define KernelPackage/net-hermes-pci
   TITLE:=Intersil Prism 2.5 PCI support
   DESCRIPTION:=Kernel modules for Intersil Prism 2.5 PCI support
-  KCONFIG:=$(CONFIG_PCI_HERMES)
+  KCONFIG:=CONFIG_PCI_HERMES
   DEPENDS:=kmod-net-hermes
   SUBMENU:=$(WIMENU)
   FILES:=$(LINUX_DIR)/drivers/net/wireless/orinoco_pci.$(LINUX_KMOD_SUFFIX)
@@ -140,7 +140,7 @@
 define KernelPackage/net-hermes-plx
   TITLE:=PLX9052 based PCI adaptor
   DESCRIPTION:=Kernel modules for Hermes in PLX9052 based PCI adaptors
-  KCONFIG:=$(CONFIG_PLX_HERMES)
+  KCONFIG:=CONFIG_PLX_HERMES
   DEPENDS:=kmod-net-hermes
   SUBMENU:=$(WIMENU)
   FILES:=$(LINUX_DIR)/drivers/net/wireless/orinoco_plx.$(LINUX_KMOD_SUFFIX)
@@ -152,7 +152,7 @@
 define KernelPackage/net-prism54
   TITLE:=Intersil Prism54 support
   DESCRIPTION:=Kernel modules for Intersil Prism54 support
-  KCONFIG:=$(CONFIG_PRISM54)
+  KCONFIG:=CONFIG_PRISM54
   SUBMENU:=$(WIMENU)
   FILES:=$(LINUX_DIR)/drivers/net/wireless/prism54/prism54.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,60,prism54)
@@ -163,7 +163,7 @@
 define KernelPackage/net-zd1211rw
   TITLE:=Zydas ZD1211 support
   DESCRIPTION:=Kernel modules Zydas ZD1211 support, kernel version
-  KCONFIG:=$(CONFIG_ZD1211RW)
+  KCONFIG:=CONFIG_ZD1211RW
   DEPENDS:=+kmod-ieee80211 +zd1211-firmware @LINUX_2_6
   SUBMENU:=$(WIMENU)
   FILES:=$(LINUX_DIR)/drivers/net/wireless/zd1211rw/zd1211rw.$(LINUX_KMOD_SUFFIX)

--- a/scripts/config.pl
+++ b/scripts/config.pl
@@ -49,15 +49,17 @@
 }
 
 
-sub config_add($$) {
+sub config_add($$$) {
 	my $cfg1 = shift;
 	my $cfg2 = shift;
+	my $mod_plus = shift;
 	my %config;
 	
 	for ($cfg1, $cfg2) {
 		my %cfg = %$_;
 		
 		foreach my $config (keys %cfg) {
+			next if $mod_plus and $config{$config} and $config{$config} eq "y";
 			$config{$config} = $cfg{$config};
 		}
 	}
@@ -123,7 +125,11 @@
 	} elsif ($arg =~ /^\+/) {
 		my $arg1 = parse_expr($pos);
 		my $arg2 = parse_expr($pos);
-		return config_add($arg1, $arg2);
+		return config_add($arg1, $arg2, 0);
+	} elsif ($arg =~ /^m\+/) {
+		my $arg1 = parse_expr($pos);
+		my $arg2 = parse_expr($pos);
+		return config_add($arg1, $arg2, 1);
 	} elsif ($arg eq '>') {
 		my $arg1 = parse_expr($pos);
 		my $arg2 = parse_expr($pos);

--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -137,6 +137,42 @@
 	return %category;
 }
 
+sub gen_kconfig_overrides() {
+	my %config;
+	my $package;
+	my $pkginfo = shift @ARGV;
+	my $cfgfile = shift @ARGV;
+
+	# parameter 2: build system config
+	open FILE, "<$cfgfile" or return;
+	while (<FILE>) {
+		/^(CONFIG_.+?)=(.+)$/ and $config{$1} = 1;
+	}
+	close FILE;
+
+	# parameter 1: package metadata
+	open FILE, "<$pkginfo" or return;
+	while (<FILE>) {
+		/^Package:\s*(.+?)\s*$/ and $package = $1;
+		/^Kernel-Config:\s*(.+?)\s*$/ and do {
+			my @config = split /\s+/, $1;
+			foreach my $config (@config) {
+				my $val = 'm';
+				if ($config =~ /^(.+?)=(.+)$/) {
+					$config = $1;
+					$val = $2;
+				}
+				if ($config{"CONFIG_PACKAGE_$package"} and ($config ne 'n')) {
+					print "$config=$val\n";
+				} else {
+					print "# $config is not set\n";
+				}
+			}
+		};
+	};
+	close FILE;
+}
+
 sub merge_package_lists($$) {
 	my $list1 = shift;
 	my $list2 = shift;
@@ -572,13 +608,16 @@
 		/^target_config$/ and return gen_target_config();
 		/^package_mk$/ and return gen_package_mk();
 		/^package_config$/ and return gen_package_config();
+		/^kconfig/ and return gen_kconfig_overrides();
 	}
 	print <<EOF
 Available Commands:
 	$0 target_mk [file] 		Target metadata in makefile format
 	$0 target_config [file] 	Target metadata in Kconfig format
-	$0 package_mk [file] 		Package metadata in makefile format
+	$0 package_mk [file]    	Package metadata in makefile format
 	$0 package_config [file] 	Package metadata in Kconfig format
+	$0 kconfig [file] [config]	Kernel config overrides
+
 EOF
 }
 

--- a/target/linux/generic-2.6/config-2.6.22
+++ b/target/linux/generic-2.6/config-2.6.22
@@ -53,6 +53,8 @@
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 CONFIG_BASE_FULL=y
 # CONFIG_BASLER_EXCITE is not set
+# CONFIG_BAYCOM_EPP is not set
+# CONFIG_BAYCOM_PAR is not set
 # CONFIG_BAYCOM_SER_FDX is not set
 # CONFIG_BAYCOM_SER_HDX is not set
 CONFIG_BCM43XX=m
@@ -423,7 +425,7 @@
 CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_TUNNEL=m
 CONFIG_INET_AH=m
-CONFIG_INET_DCCP_DIAG=m
+# CONFIG_INET_DCCP_DIAG is not et
 CONFIG_INET_DIAG=m
 CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
@@ -499,14 +501,7 @@
 # CONFIG_IPW2200_RADIOTAP is not set
 # CONFIG_IPX is not set
 CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_DCCP=m
-CONFIG_IP_DCCP_ACKVEC=y
-CONFIG_IP_DCCP_CCID2=m
-# CONFIG_IP_DCCP_CCID2_DEBUG is not set
-CONFIG_IP_DCCP_CCID3=m
-# CONFIG_IP_DCCP_CCID3_DEBUG is not set
-CONFIG_IP_DCCP_CCID3_RTO=100
-CONFIG_IP_DCCP_TFRC_LIB=m
+# CONFIG_IP_DCCP is not set
 CONFIG_IP_FIB_HASH=y
 # CONFIG_IP_FIB_TRIE is not set
 # CONFIG_IP_MROUTE is not set
@@ -622,7 +617,7 @@
 CONFIG_JFFS2_ZLIB=y
 # CONFIG_JFFS_FS is not set
 # CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_FS=m
+# CONFIG_JFS_FS is not set
 # CONFIG_JFS_POSIX_ACL is not set
 # CONFIG_JFS_SECURITY is not set
 # CONFIG_JFS_STATISTICS is not set
@@ -881,13 +876,14 @@
 CONFIG_NORTEL_HERMES=m
 # CONFIG_NS83820 is not set
 # CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_FS=m
-CONFIG_NTFS_RW=y
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
 # CONFIG_OCFS2_FS is not set
 # CONFIG_OSF_PARTITION is not set
 CONFIG_PACKET=y
 CONFIG_PACKET_MMAP=y
 # CONFIG_PARPORT is not set
+# CONFIG_PARPORT_PC is not set
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_PATA_ALI is not set
 # CONFIG_PATA_AMD is not set
@@ -1006,7 +1002,7 @@
 CONFIG_RAMFS=y
 # CONFIG_RAW_DRIVER is not set
 # CONFIG_REISERFS_CHECK is not set
-CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_FS is not set
 # CONFIG_REISERFS_FS_XATTR is not set
 # CONFIG_REISERFS_PROC_INFO is not set
 # CONFIG_RELAY is not set
@@ -1179,7 +1175,7 @@
 CONFIG_SLHC=m
 # CONFIG_SLIP is not set
 # CONFIG_SLOB is not set
-CONFIG_SMB_FS=m
+# CONFIG_SMB_FS is not set
 # CONFIG_SMB_NLS_DEFAULT is not set
 CONFIG_SND=m
 # CONFIG_SND_AD1816A is not set

--- a/target/linux/generic-2.6/config-template
+++ b/target/linux/generic-2.6/config-template
@@ -51,6 +51,8 @@
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 CONFIG_BASE_FULL=y
 # CONFIG_BASLER_EXCITE is not set
+# CONFIG_BAYCOM_EPP is not set
+# CONFIG_BAYCOM_PAR is not set
 # CONFIG_BAYCOM_SER_FDX is not set
 # CONFIG_BAYCOM_SER_HDX is not set
 CONFIG_BCM43XX=m
@@ -605,7 +607,7 @@
 CONFIG_JFFS2_ZLIB=y
 # CONFIG_JFFS_FS is not set
 # CONFIG_JFS_DEBUG is not set
-CONFIG_JFS_FS=m
+# CONFIG_JFS_FS is not set
 # CONFIG_JFS_POSIX_ACL is not set
 # CONFIG_JFS_SECURITY is not set
 # CONFIG_JFS_STATISTICS is not set
@@ -856,8 +858,8 @@
 CONFIG_NORTEL_HERMES=m
 # CONFIG_NS83820 is not set
 # CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_FS=m
-CONFIG_NTFS_RW=y
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
 # CONFIG_OCFS2_FS is not set
 # CONFIG_OSF_PARTITION is not set
 CONFIG_PACKET=y
@@ -978,7 +980,7 @@
 CONFIG_RAMFS=y
 # CONFIG_RAW_DRIVER is not set
 # CONFIG_REISERFS_CHECK is not set
-CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_FS is not set
 # CONFIG_REISERFS_FS_XATTR is not set
 # CONFIG_REISERFS_PROC_INFO is not set
 # CONFIG_RELAY is not set
@@ -1144,7 +1146,7 @@
 CONFIG_SLHC=m
 # CONFIG_SLIP is not set
 # CONFIG_SLOB is not set
-CONFIG_SMB_FS=m
+# CONFIG_SMB_FS is not set
 # CONFIG_SMB_NLS_DEFAULT is not set
 CONFIG_SND=m
 # CONFIG_SND_AD1816A is not set

--- a/target/linux/x86-2.6/config/default
+++ b/target/linux/x86-2.6/config/default
@@ -270,6 +270,7 @@
 CONFIG_NVRAM=y
 CONFIG_PAGE_OFFSET=0xC0000000
 # CONFIG_PARAVIRT is not set
+CONFIG_PARPORT_PC=m
 CONFIG_PC8736x_GPIO=m
 # CONFIG_PC87413_WDT is not set
 CONFIG_PCCARD=m

comments