Several targets include I2C in the kernel, making it impossible to install
i2c drivers later (since i2c-core won't be built). Adding a new hidden
config symbol/feature prevents having to exclude every target with I2C from
kmod-i2c-core dependencies.

Signed-off-by: Jonas Gorski <jonas.gorski+open...@gmail.com>
---

A backport to backfire will close #9648.

 include/target.mk               |    5 +++++
 package/kernel/modules/hwmon.mk |    8 ++++----
 package/kernel/modules/i2c.mk   |   18 +++++++++---------
 package/kernel/modules/other.mk |    2 +-
 package/kernel/modules/video.mk |    2 +-
 scripts/metadata.pl             |    1 +
 target/Config.in                |    3 +++
 7 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/include/target.mk b/include/target.mk
index af32309..8e94c03 100644
--- a/include/target.mk
+++ b/include/target.mk
@@ -183,6 +183,11 @@ ifeq ($(DUMP),1)
     ifneq ($(CONFIG_VGA_CONSOLE)$(CONFIG_FB),)
       FEATURES += display
     endif
+    ifneq ($(CONFIG_I2C),)
+      ifneq ($(CONFIG_I2C_CHARDEV),)
+        FEATURES += i2c
+      endif
+    endif
 
     # remove duplicates
     FEATURES:=$(sort $(FEATURES))
diff --git a/package/kernel/modules/hwmon.mk b/package/kernel/modules/hwmon.mk
index ebbe7cf..e0db19a 100644
--- a/package/kernel/modules/hwmon.mk
+++ b/package/kernel/modules/hwmon.mk
@@ -35,7 +35,7 @@ define KernelPackage/hwmon-lm63
   KCONFIG:=CONFIG_SENSORS_LM63
   FILES:=$(LINUX_DIR)/drivers/hwmon/lm63.ko
   AUTOLOAD:=$(call AutoLoad,60,lm63)
-  $(call AddDepends/hwmon,+kmod-i2c-core)
+  $(call AddDepends/hwmon,+!HAS_I2C_CORE:kmod-i2c-core)
 endef
 
 define KernelPackage/hwmon-lm63/description
@@ -50,7 +50,7 @@ define KernelPackage/hwmon-lm75
   KCONFIG:=CONFIG_SENSORS_LM75
   FILES:=$(LINUX_DIR)/drivers/hwmon/lm75.ko
   AUTOLOAD:=$(call AutoLoad,60,lm75)
-  $(call AddDepends/hwmon,+kmod-i2c-core)
+  $(call AddDepends/hwmon,+!HAS_I2C_CORE:kmod-i2c-core)
 endef
 
 define KernelPackage/hwmon-lm75/description
@@ -65,7 +65,7 @@ define KernelPackage/hwmon-lm77
   KCONFIG:=CONFIG_SENSORS_LM77
   FILES:=$(LINUX_DIR)/drivers/hwmon/lm77.ko
   AUTOLOAD:=$(call AutoLoad,60,lm77)
-  $(call AddDepends/hwmon,+kmod-i2c-core)
+  $(call AddDepends/hwmon,+!HAS_I2C_CORE:kmod-i2c-core)
 endef
 
 define KernelPackage/hwmon-lm77/description
@@ -80,7 +80,7 @@ define KernelPackage/hwmon-lm90
   KCONFIG:=CONFIG_SENSORS_LM90
   FILES:=$(LINUX_DIR)/drivers/hwmon/lm90.ko
   AUTOLOAD:=$(call AutoLoad,60,lm90)
-  $(call AddDepends/hwmon,+kmod-i2c-core)
+  $(call AddDepends/hwmon,+!HAS_I2C_CORE:kmod-i2c-core)
 endef
 
 define KernelPackage/hwmon-lm90/description
diff --git a/package/kernel/modules/i2c.mk b/package/kernel/modules/i2c.mk
index a88bfa9..95bcc5a 100644
--- a/package/kernel/modules/i2c.mk
+++ b/package/kernel/modules/i2c.mk
@@ -27,7 +27,7 @@ I2C_CORE_MODULES:= \
 define KernelPackage/i2c-core
   $(call i2c_defaults,$(I2C_CORE_MODULES),51)
   TITLE:=I2C support
-  DEPENDS:=@!TARGET_etrax
+  DEPENDS:=@!HAS_I2C_CORE @!TARGET_etrax
 endef
 
 define KernelPackage/i2c-core/description
@@ -43,7 +43,7 @@ I2C_ALGOBIT_MODULES:= \
 define KernelPackage/i2c-algo-bit
   $(call i2c_defaults,$(I2C_ALGOBIT_MODULES),55)
   TITLE:=I2C bit-banging interfaces
-  DEPENDS:=kmod-i2c-core
+  DEPENDS:=!HAS_I2C_CORE:kmod-i2c-core
 endef
 
 define KernelPackage/i2c-algo-bit/description
@@ -59,7 +59,7 @@ I2C_ALGOPCA_MODULES:= \
 define KernelPackage/i2c-algo-pca
   $(call i2c_defaults,$(I2C_ALGOPCA_MODULES),55)
   TITLE:=I2C PCA 9564 interfaces
-  DEPENDS:=kmod-i2c-core
+  DEPENDS:=!HAS_I2C_CORE:kmod-i2c-core
 endef
 
 define KernelPackage/i2c-algo-pca/description
@@ -75,7 +75,7 @@ I2C_ALGOPCF_MODULES:= \
 define KernelPackage/i2c-algo-pcf
   $(call i2c_defaults,$(I2C_ALGOPCF_MODULES),55)
   TITLE:=I2C PCF 8584 interfaces
-  DEPENDS:=kmod-i2c-core
+  DEPENDS:=!HAS_I2C_CORE:kmod-i2c-core
 endef
 
 define KernelPackage/i2c-algo-pcf/description
@@ -143,7 +143,7 @@ OF_I2C_MODULES:=\
 define KernelPackage/of-i2c
   $(call i2c_defaults,$(OF_I2C_MODULES),58)
   TITLE:=OpenFirmware I2C accessors
-  DEPENDS:=@TARGET_ppc40x||TARGET_ppc4xx kmod-i2c-core
+  DEPENDS:=@TARGET_ppc40x||TARGET_ppc4xx !HAS_I2C_CORE:kmod-i2c-core
 endef
 
 define KernelPackage/of-i2c/description
@@ -159,7 +159,7 @@ I2C_IBM_IIC_MODULES:=\
 define KernelPackage/i2c-ibm-iic
   $(call i2c_defaults,$(OF_I2C_MODULES),59)
   TITLE:=IBM PPC 4xx on-chip I2C interface support
-  DEPENDS:=@TARGET_ppc40x||TARGET_ppc4xx +kmod-i2c-core +kmod-of-i2c
+  DEPENDS:=@TARGET_ppc40x||TARGET_ppc4xx +!HAS_I2C_CORE:kmod-i2c-core 
+kmod-of-i2c
 endef
 
 define KernelPackage/i2c-ibm-iic/description
@@ -174,7 +174,7 @@ I2C_MV64XXX_MODULES:=\
 define KernelPackage/i2c-mv64xxx
   $(call i2c_defaults,$(I2C_MV64XXX_MODULES),59)
   TITLE:=Orion Platform I2C interface support
-  DEPENDS:=@TARGET_kirkwood||TARGET_orion +kmod-i2c-core
+  DEPENDS:=@TARGET_kirkwood||TARGET_orion +!HAS_I2C_CORE:kmod-i2c-core
 endef
 
 define KernelPackage/i2c-mv64xxx/description
@@ -191,7 +191,7 @@ I2C_AT91_MODULES:=\
 define KernelPackage/at91-i2c
   $(call i2c_defaults,$(I2C_AT91_MODULES),55)
   TITLE:=I2C (TWI) master driver for Atmel AT91
-  DEPENDS:=@TARGET_at91 +kmod-i2c-core
+  DEPENDS:=@TARGET_at91 +!HAS_I2C_CORE:kmod-i2c-core
 endef
 
 define KernelPackage/at91-i2c/description
@@ -206,7 +206,7 @@ I2C_OCTEON_MODULES:=\
 define KernelPackage/octeon-i2c
   $(call i2c_defaults,$(I2C_OCTEON_MODULES),59)
   TITLE:=I2C master driver for Cavium Octeon
-  DEPENDS:=@TARGET_octeon +kmod-i2c-core
+  DEPENDS:=@TARGET_octeon +!HAS_I2C_CORE:kmod-i2c-core
 endef
 
 define KernelPackage/octeon-i2c/description
diff --git a/package/kernel/modules/other.mk b/package/kernel/modules/other.mk
index b6339a6..3baac4d 100644
--- a/package/kernel/modules/other.mk
+++ b/package/kernel/modules/other.mk
@@ -112,7 +112,7 @@ define KernelPackage/eeprom-at24
   SUBMENU:=$(OTHER_MENU)
   TITLE:=EEPROM AT24 support
   KCONFIG:=CONFIG_EEPROM_AT24
-  DEPENDS:=+kmod-i2c-core
+  DEPENDS:=+!HAS_I2C_CORE:kmod-i2c-core
   FILES:=$(LINUX_DIR)/drivers/misc/eeprom/at24.ko
   AUTOLOAD:=$(call AutoLoad,60,at24)
 endef
diff --git a/package/kernel/modules/video.mk b/package/kernel/modules/video.mk
index 7a6eb31..e6d45cc 100644
--- a/package/kernel/modules/video.mk
+++ b/package/kernel/modules/video.mk
@@ -11,7 +11,7 @@ VIDEO_MENU:=Video Support
 define KernelPackage/video-core
   SUBMENU:=$(VIDEO_MENU)
   TITLE=Video4Linux support
-  DEPENDS:=@PCI_SUPPORT||USB_SUPPORT +!TARGET_etrax:kmod-i2c-core
+  DEPENDS:=@PCI_SUPPORT||USB_SUPPORT 
+!TARGET_etrax&&!HAS_I2C_CORE:kmod-i2c-core
   KCONFIG:= \
        CONFIG_MEDIA_SUPPORT=m \
        CONFIG_VIDEO_DEV \
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 0f4ae9f..86c262b 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -172,6 +172,7 @@ sub target_config_features(@) {
                /ramdisk/ and $ret .= "\tselect USES_INITRAMFS\n";
                /powerpc64/ and $ret .= "\tselect powerpc64\n";
                /nommu/ and $ret .= "\tselect NOMMU\n";
+               /i2c/ and $ret .= "\tselect HAS_I2C_CORE\n";
        }
        return $ret;
 }
diff --git a/target/Config.in b/target/Config.in
index 9e0263e..f25ca43 100644
--- a/target/Config.in
+++ b/target/Config.in
@@ -63,6 +63,9 @@ config PROFILE_KCONFIG
 config NOMMU
        bool
 
+config HAS_I2C_CORE
+       bool
+
 # Architecture selection
 
 config arm
-- 
1.7.2.5

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to