diff --git a/Config.in b/Config.in
index 11f14d6a3b5f677b539265c94b59fc347e44da5b..db3094d729863f60b0ac2cb64a6644b13aabee2d 100644
--- a/Config.in
+++ b/Config.in
@@ -325,6 +325,10 @@ menu "Global build settings"
 	config KERNEL_KEXEC
 		bool "Enable kexec support"
 
+	config USE_RFKILL
+		bool "Enable rfkill support"
+		default RFKILL_SUPPORT
+
 	#
 	# CGROUP support symbols
 	#
diff --git a/package/kernel/linux/modules/001-depends.mk b/package/kernel/linux/modules/001-depends.mk
index ed894311ccfc5edfc7824516c3829a2d12cdba01..d0ad083662d2b02b620fc03dc149cd1c1facd25b 100644
--- a/package/kernel/linux/modules/001-depends.mk
+++ b/package/kernel/linux/modules/001-depends.mk
@@ -22,13 +22,8 @@ define AddDepends/nls
   DEPENDS+= +kmod-nls-base $(foreach cp,$(1),+kmod-nls-$(cp))
 endef
 
-
-define SetDepends/rfkill
-  DEPENDS:= @(TARGET_ar71xx||TARGET_brcm47xx||TARGET_s3c24xx||TARGET_x86||TARGET_gemini||TARGET_cns3xxx||TARGET_ixp4xx) $(1)
-endef
-
 define AddDepends/rfkill
-  DEPENDS+= +(TARGET_ar71xx||TARGET_brcm47xx||TARGET_s3c24xx||TARGET_x86||TARGET_cns3xxx||TARGET_ixp4xx):kmod-rfkill $(1)
+  DEPENDS+= +USE_RFKILL:kmod-rfkill $(1)
 endef
 
 
diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk
index 44bc870b886961250d44874c9451982ae19ae6ae..b9ffaa0e42e42de65b56faa796884516f0b0fc7b 100644
--- a/package/kernel/linux/modules/other.mk
+++ b/package/kernel/linux/modules/other.mk
@@ -239,6 +239,7 @@ $(eval $(call KernelPackage,oprofile))
 define KernelPackage/rfkill
   SUBMENU:=$(OTHER_MENU)
   TITLE:=RF switch subsystem support
+  DEPENDS:=@USE_RFKILL +kmod-input-core
   KCONFIG:= \
     CONFIG_RFKILL \
     CONFIG_RFKILL_INPUT=y \
@@ -247,7 +248,6 @@ define KernelPackage/rfkill
   FILES:= \
     $(LINUX_DIR)/net/rfkill/rfkill.ko
   AUTOLOAD:=$(call AutoLoad,20,rfkill)
-  $(call SetDepends/rfkill,+kmod-input-core)
 endef
 
 define KernelPackage/rfkill/description
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index bcc3700d42f6d78778dfedaf6305d86d10e9ae68..5625b8b5be0a50ad52fefdce635ae86ffbfd6ca0 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -177,6 +177,7 @@ sub target_config_features(@) {
 		/powerpc64/ and $ret .= "\tselect powerpc64\n";
 		/nommu/ and $ret .= "\tselect NOMMU\n";
 		/mips16/ and $ret .= "\tselect HAS_MIPS16\n";
+		/rfkill/ and $ret .= "\tselect RFKILL_SUPPORT\n";
 	}
 	return $ret;
 }
diff --git a/target/Config.in b/target/Config.in
index a7951aaf3b6da904024e55b36115fee9fce26121..7f694e4c8badc436bc76d4d124322d9cecee9818 100644
--- a/target/Config.in
+++ b/target/Config.in
@@ -73,6 +73,9 @@ config HAS_MIPS16
 	depends on (mips || mipsel || mips64 || mips64el)
 	bool
 
+config RFKILL_SUPPORT
+	bool
+
 config ARCH_64BIT
 	bool