From 4caaa778f709a38c08a11d98dd7fb03fe257f8fe Mon Sep 17 00:00:00 2001
From: Sungbo Eo <mans0n@gorani.run>
Date: Thu, 5 Mar 2020 23:42:18 +0900
Subject: [PATCH] kernel: make kmod-i2c-core selected by dependent modules

Currently kmod-i2c-* will not get into images unless kmod-i2c-core is added to
DEVICE_PACKAGES as well. By changing the dependencies from "depends on" to
"select", we do not have the issue anymore.

Furthermore, we can remove most occurrences of the package from DEVICE_PACKAGES
and similar variables, as it is now pulled by dependent modules such as:
- kmod-hwmon-lm75
- kmod-i2c-gpio
- kmod-i2c-gpio-custom
- kmod-i2c-mux
- kmod-i2c-ralink

Signed-off-by: Sungbo Eo <mans0n@gorani.run>
[do not touch ar71xx]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---
 package/kernel/linux/modules/i2c.mk        | 18 +++++++++---------
 target/linux/ath79/image/generic.mk        |  8 ++++----
 target/linux/lantiq/modules.mk             |  2 +-
 target/linux/layerscape/image/armv8_64b.mk |  2 +-
 target/linux/mvebu/image/cortexa72.mk      |  2 +-
 target/linux/mvebu/image/cortexa9.mk       |  2 +-
 target/linux/ramips/image/rt305x.mk        | 20 ++++++++++----------
 target/linux/ramips/modules.mk             |  4 ++--
 8 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/package/kernel/linux/modules/i2c.mk b/package/kernel/linux/modules/i2c.mk
index 0b23b2439cb..90eee8b8f5c 100644
--- a/package/kernel/linux/modules/i2c.mk
+++ b/package/kernel/linux/modules/i2c.mk
@@ -42,7 +42,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:=+kmod-i2c-core
 endef
 
 define KernelPackage/i2c-algo-bit/description
@@ -58,7 +58,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:=+kmod-i2c-core
 endef
 
 define KernelPackage/i2c-algo-pca/description
@@ -74,7 +74,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:=+kmod-i2c-core
 endef
 
 define KernelPackage/i2c-algo-pcf/description
@@ -107,7 +107,7 @@ I2C_I801_MODULES:= \
 define KernelPackage/i2c-i801
   $(call i2c_defaults,$(I2C_I801_MODULES),59)
   TITLE:=Intel I801 and compatible I2C interfaces
-  DEPENDS:=@PCI_SUPPORT @TARGET_x86 kmod-i2c-core +kmod-i2c-smbus
+  DEPENDS:=@PCI_SUPPORT @TARGET_x86 +kmod-i2c-core +kmod-i2c-smbus
 endef
 
 define KernelPackage/i2c-i801/description
@@ -132,7 +132,7 @@ I2C_MUX_MODULES:= \
 define KernelPackage/i2c-mux
   $(call i2c_defaults,$(I2C_MUX_MODULES),51)
   TITLE:=I2C bus multiplexing support
-  DEPENDS:=kmod-i2c-core
+  DEPENDS:=+kmod-i2c-core
 endef
 
 define KernelPackage/i2c-mux/description
@@ -194,7 +194,7 @@ I2C_PIIX4_MODULES:= \
 define KernelPackage/i2c-piix4
   $(call i2c_defaults,$(I2C_PIIX4_MODULES),59)
   TITLE:=Intel PIIX4 and compatible I2C interfaces
-  DEPENDS:=@PCI_SUPPORT @TARGET_x86 kmod-i2c-core
+  DEPENDS:=@PCI_SUPPORT @TARGET_x86 +kmod-i2c-core
 endef
 
 define KernelPackage/i2c-piix4/description
@@ -216,7 +216,7 @@ I2C_PXA_MODULES:= \
 define KernelPackage/i2c-pxa
   $(call i2c_defaults,$(I2C_PXA_MODULES),50)
   TITLE:=Intel PXA I2C bus driver
-  DEPENDS:=kmod-i2c-core
+  DEPENDS:=+kmod-i2c-core
 endef
 
 define KernelPackage/i2c-pxa/description
@@ -232,7 +232,7 @@ I2C_SMBUS_MODULES:= \
 define KernelPackage/i2c-smbus
   $(call i2c_defaults,$(I2C_SMBUS_MODULES),58)
   TITLE:=SMBus-specific protocols helper
-  DEPENDS:=kmod-i2c-core
+  DEPENDS:=+kmod-i2c-core
 endef
 
 define KernelPackage/i2c-smbus/description
@@ -249,7 +249,7 @@ I2C_TINY_USB_MODULES:= \
 define KernelPackage/i2c-tiny-usb
   $(call i2c_defaults,$(I2C_TINY_USB_MODULES),59)
   TITLE:=I2C Tiny USB adaptor
-  DEPENDS:=@USB_SUPPORT kmod-i2c-core +kmod-usb-core
+  DEPENDS:=@USB_SUPPORT +kmod-i2c-core +kmod-usb-core
 endef
 
 define KernelPackage/i2c-tiny-usb/description
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 322c3ae07fb..5a0b0ab67e1 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -159,7 +159,7 @@ define Device/aruba_ap-105
   DEVICE_VENDOR := Aruba
   DEVICE_MODEL := AP-105
   IMAGE_SIZE := 16000k
-  DEVICE_PACKAGES := kmod-i2c-core kmod-i2c-gpio kmod-tpm-i2c-atmel
+  DEVICE_PACKAGES := kmod-i2c-gpio kmod-tpm-i2c-atmel
 endef
 TARGET_DEVICES += aruba_ap-105
 
@@ -1021,7 +1021,7 @@ define Device/pisen_wmb001n
   DEVICE_VENDOR := PISEN
   DEVICE_MODEL := WMB001N
   IMAGE_SIZE := 14080k
-  DEVICE_PACKAGES := kmod-i2c-core kmod-i2c-gpio kmod-usb2
+  DEVICE_PACKAGES := kmod-i2c-gpio kmod-usb2
   LOADER_TYPE := bin
   LOADER_FLASH_OFFS := 0x20000
   COMPILE := loader-$(1).bin loader-$(1).uImage
@@ -1182,7 +1182,7 @@ define Device/winchannel_wb2000
   DEVICE_VENDOR := Winchannel
   DEVICE_MODEL := WB2000
   IMAGE_SIZE := 15872k
-  DEVICE_PACKAGES := kmod-i2c-core kmod-i2c-gpio kmod-rtc-ds1307 kmod-usb2 \
+  DEVICE_PACKAGES := kmod-i2c-gpio kmod-rtc-ds1307 kmod-usb2 \
 	kmod-usb-ledtrig-usbport
 endef
 TARGET_DEVICES += winchannel_wb2000
@@ -1233,7 +1233,7 @@ define Device/zbtlink_zbt-wd323
   DEVICE_VENDOR := ZBT
   DEVICE_MODEL := WD323
   IMAGE_SIZE := 16000k
-  DEVICE_PACKAGES := kmod-usb2 kmod-i2c-core kmod-i2c-gpio kmod-rtc-pcf8563 \
+  DEVICE_PACKAGES := kmod-usb2 kmod-i2c-gpio kmod-rtc-pcf8563 \
 	kmod-usb-serial kmod-usb-serial-cp210x uqmi
 endef
 TARGET_DEVICES += zbtlink_zbt-wd323
diff --git a/target/linux/lantiq/modules.mk b/target/linux/lantiq/modules.mk
index e7fbad3a295..8cd720093c5 100644
--- a/target/linux/lantiq/modules.mk
+++ b/target/linux/lantiq/modules.mk
@@ -11,7 +11,7 @@ I2C_LANTIQ_MODULES:= \
 define KernelPackage/i2c-lantiq
   TITLE:=Lantiq I2C controller
   $(call i2c_defaults,$(I2C_LANTIQ_MODULES),52)
-  DEPENDS:=kmod-i2c-core @TARGET_lantiq_falcon
+  DEPENDS:=+kmod-i2c-core @TARGET_lantiq_falcon
 endef
 
 define KernelPackage/i2c-lantiq/description
diff --git a/target/linux/layerscape/image/armv8_64b.mk b/target/linux/layerscape/image/armv8_64b.mk
index 6f2e7e4c76b..280a07168ac 100644
--- a/target/linux/layerscape/image/armv8_64b.mk
+++ b/target/linux/layerscape/image/armv8_64b.mk
@@ -275,7 +275,7 @@ define Device/traverse-ls1043
   DEVICE_PACKAGES += \
     layerscape-fman-ls1043ardb \
     uboot-envtools \
-    kmod-i2c-core kmod-i2c-mux kmod-i2c-mux-pca954x \
+    kmod-i2c-mux kmod-i2c-mux-pca954x \
     kmod-hwmon-core \
     kmod-gpio-pca953x kmod-input-gpio-keys-polled \
     kmod-rtc-isl1208
diff --git a/target/linux/mvebu/image/cortexa72.mk b/target/linux/mvebu/image/cortexa72.mk
index a7a4d7c2e78..014f46c9522 100644
--- a/target/linux/mvebu/image/cortexa72.mk
+++ b/target/linux/mvebu/image/cortexa72.mk
@@ -22,7 +22,7 @@ define Device/marvell_macchiatobin
   DEVICE_MODEL := MACCHIATObin
   DEVICE_ALT0_VENDOR := SolidRun
   DEVICE_ALT0_MODEL := Armada 8040 Community Board
-  DEVICE_PACKAGES += kmod-i2c-core kmod-i2c-mux kmod-i2c-mux-pca954x
+  DEVICE_PACKAGES += kmod-i2c-mux kmod-i2c-mux-pca954x
   DEVICE_DTS := armada-8040-mcbin
   SUPPORTED_DEVICES := marvell,armada8040-mcbin
 endef
diff --git a/target/linux/mvebu/image/cortexa9.mk b/target/linux/mvebu/image/cortexa9.mk
index 257d76f19fc..a215536bf83 100644
--- a/target/linux/mvebu/image/cortexa9.mk
+++ b/target/linux/mvebu/image/cortexa9.mk
@@ -15,7 +15,7 @@ define Device/cznic_turris-omnia
   DEVICE_PACKAGES :=  \
     mkf2fs e2fsprogs kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 \
     wpad-basic kmod-ath9k kmod-ath10k-ct ath10k-firmware-qca988x-ct \
-    partx-utils kmod-i2c-core kmod-i2c-mux kmod-i2c-mux-pca954x
+    partx-utils kmod-i2c-mux kmod-i2c-mux-pca954x
   IMAGES := $$(IMAGE_PREFIX)-sysupgrade.img.gz omnia-medkit-$$(IMAGE_PREFIX)-initramfs.tar.gz
   IMAGE/$$(IMAGE_PREFIX)-sysupgrade.img.gz := boot-img | sdcard-img | gzip | append-metadata
   IMAGE/omnia-medkit-$$(IMAGE_PREFIX)-initramfs.tar.gz := omnia-medkit-initramfs | gzip
diff --git a/target/linux/ramips/image/rt305x.mk b/target/linux/ramips/image/rt305x.mk
index f63891ac7c8..155e86e3d3b 100644
--- a/target/linux/ramips/image/rt305x.mk
+++ b/target/linux/ramips/image/rt305x.mk
@@ -111,7 +111,7 @@ define Device/allnet_all5002
   DEVICE_VENDOR := Allnet
   DEVICE_MODEL := ALL5002
   DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport \
-	kmod-i2c-core kmod-i2c-gpio kmod-hwmon-lm92 kmod-gpio-pcf857x
+	kmod-i2c-gpio kmod-hwmon-lm92 kmod-gpio-pcf857x
   SUPPORTED_DEVICES += all5002
 endef
 TARGET_DEVICES += allnet_all5002
@@ -122,7 +122,7 @@ define Device/allnet_all5003
   DEVICE_VENDOR := Allnet
   DEVICE_MODEL := ALL5003
   DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport \
-	kmod-i2c-core kmod-i2c-gpio kmod-hwmon-lm92 kmod-gpio-pcf857x
+	kmod-i2c-gpio kmod-hwmon-lm92 kmod-gpio-pcf857x
   SUPPORTED_DEVICES += all5003
 endef
 TARGET_DEVICES += allnet_all5003
@@ -184,7 +184,7 @@ define Device/asiarf_awm002-evb-4m
   DEVICE_VENDOR := AsiaRF
   DEVICE_MODEL := AWM002-EVB
   DEVICE_VARIANT := 4M
-  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-gpio
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-gpio
   SUPPORTED_DEVICES += awm002-evb-4M
 endef
 TARGET_DEVICES += asiarf_awm002-evb-4m
@@ -195,7 +195,7 @@ define Device/asiarf_awm002-evb-8m
   DEVICE_VENDOR := AsiaRF
   DEVICE_MODEL := AWM002-EVB/AWM003-EVB
   DEVICE_VARIANT := 8M
-  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-gpio
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-gpio
   SUPPORTED_DEVICES += awm002-evb-8M
 endef
 TARGET_DEVICES += asiarf_awm002-evb-8m
@@ -727,7 +727,7 @@ define Device/nixcore_x1-16m
   DEVICE_VENDOR := Nixcore
   DEVICE_MODEL := X1
   DEVICE_VARIANT := 16M
-  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-ralink \
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-ralink \
 	kmod-spi-dev
   SUPPORTED_DEVICES += nixcore-x1 nixcore-x1-16M
 endef
@@ -739,7 +739,7 @@ define Device/nixcore_x1-8m
   DEVICE_VENDOR := Nixcore
   DEVICE_MODEL := X1
   DEVICE_VARIANT := 8M
-  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-ralink \
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-ralink \
 	kmod-spi-dev
   SUPPORTED_DEVICES += nixcore-x1 nixcore-x1-8M
 endef
@@ -750,7 +750,7 @@ define Device/olimex_rt5350f-olinuxino
   IMAGE_SIZE := 7872k
   DEVICE_VENDOR := OLIMEX
   DEVICE_MODEL := RT5350F-OLinuXino
-  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-ralink \
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-ralink \
 	kmod-spi-dev
   SUPPORTED_DEVICES += rt5350f-olinuxino
 endef
@@ -761,7 +761,7 @@ define Device/olimex_rt5350f-olinuxino-evb
   IMAGE_SIZE := 7872k
   DEVICE_VENDOR := OLIMEX
   DEVICE_MODEL := RT5350F-OLinuXino-EVB
-  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-ralink \
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-ralink \
 	kmod-spi-dev
   SUPPORTED_DEVICES += rt5350f-olinuxino-evb
 endef
@@ -1100,7 +1100,7 @@ define Device/vocore_vocore-16m
   DEVICE_VENDOR := VoCore
   DEVICE_MODEL := VoCore
   DEVICE_VARIANT := 16M
-  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-ralink \
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-ralink \
 	kmod-spi-dev
   SUPPORTED_DEVICES += vocore vocore-16M
 endef
@@ -1112,7 +1112,7 @@ define Device/vocore_vocore-8m
   DEVICE_VENDOR := VoCore
   DEVICE_MODEL := VoCore
   DEVICE_VARIANT := 8M
-  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-core kmod-i2c-ralink \
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-i2c-ralink \
 	kmod-spi-dev
   SUPPORTED_DEVICES += vocore vocore-8M
 endef
diff --git a/target/linux/ramips/modules.mk b/target/linux/ramips/modules.mk
index 89bdc6c95c3..1ce914439cb 100644
--- a/target/linux/ramips/modules.mk
+++ b/target/linux/ramips/modules.mk
@@ -47,7 +47,7 @@ I2C_RALINK_MODULES:= \
 define KernelPackage/i2c-ralink
   $(call i2c_defaults,$(I2C_RALINK_MODULES),59)
   TITLE:=Ralink I2C Controller
-  DEPENDS:=kmod-i2c-core @TARGET_ramips \
+  DEPENDS:=+kmod-i2c-core @TARGET_ramips \
 	@!(TARGET_ramips_mt7621||TARGET_ramips_mt76x8)
 endef
 
@@ -64,7 +64,7 @@ I2C_MT7621_MODULES:= \
 define KernelPackage/i2c-mt7628
   $(call i2c_defaults,$(I2C_MT7621_MODULES),59)
   TITLE:=MT7628/88 I2C Controller
-  DEPENDS:=kmod-i2c-core \
+  DEPENDS:=+kmod-i2c-core \
 	@(TARGET_ramips_mt76x8)
 endef
 
-- 
GitLab