kernel: Build: Split kmod-regmap
This reduces the needed modifications to the mainline Linux kernel and also makes the regmap package work with an out of tree kernel which does not have these modifications. The regmap-core is only added when it is really build as a module. The regmap-core is normally bool so it cannot be built as a module in an unmodified kernel. When it is selected by on other kernel module it will always be selected as build in and it also does not show up in $(LINUX_DIR)/modules.builtin as it is not supposed to be a kernel module. When it is not in $(LINUX_DIR)/modules.builtin the build system expects it to be built as a .ko file. Just check if the module is really there and only add it in that case. This splits the regmap package into multiple packages, one for each bus type. This way only the bus maps which are really needed have to be added. This also splits the I2C, SPI and MMIO regmap into separate packages to not require all these subsystems to build them, on an unmodified upstream kernel this also causes problems in some situations. Signed-off-by: Hauke Mehrtens <hauke.mehrtens@intel.com>
This commit is contained in:
		 Hauke Mehrtens
					Hauke Mehrtens
				
			
				
					committed by
					
						 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
			
				
	
			
			
			 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
						parent
						
							538127cf98
						
					
				
				
					commit
					fd5c168701
				
			| @@ -99,7 +99,7 @@ $(eval $(call KernelPackage,can-c-can-pci)) | ||||
| define KernelPackage/can-c-can-platform | ||||
|   TITLE:=Platform Bus based BOSCH C_CAN/D_CAN driver | ||||
|   KCONFIG:=CONFIG_CAN_C_CAN_PLATFORM | ||||
|   DEPENDS:=kmod-can-c-can +!LINUX_3_18:kmod-regmap | ||||
|   DEPENDS:=kmod-can-c-can +!LINUX_3_18:kmod-regmap-core | ||||
|   FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_platform.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,c_can_platform) | ||||
|   $(call AddDepends/can) | ||||
|   | ||||
| @@ -112,7 +112,7 @@ define KernelPackage/hwmon-ina2xx | ||||
|   KCONFIG:=CONFIG_SENSORS_INA2XX | ||||
|   FILES:=$(LINUX_DIR)/drivers/hwmon/ina2xx.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,ina2xx) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +!LINUX_3_18:kmod-regmap) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +!LINUX_3_18:kmod-regmap-i2c) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/hwmon-ina2xx/description | ||||
| @@ -142,7 +142,7 @@ define KernelPackage/hwmon-lm63 | ||||
|   KCONFIG:=CONFIG_SENSORS_LM63 | ||||
|   FILES:=$(LINUX_DIR)/drivers/hwmon/lm63.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,lm63) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +kmod-regmap) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +kmod-regmap-i2c) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/hwmon-lm63/description | ||||
| @@ -157,7 +157,7 @@ define KernelPackage/hwmon-lm75 | ||||
|   KCONFIG:=CONFIG_SENSORS_LM75 | ||||
|   FILES:=$(LINUX_DIR)/drivers/hwmon/lm75.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,lm75) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal +kmod-regmap) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal +kmod-regmap-i2c) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/hwmon-lm75/description | ||||
| @@ -369,7 +369,7 @@ define KernelPackage/hwmon-tmp102 | ||||
|   KCONFIG:=CONFIG_SENSORS_TMP102 | ||||
|   FILES:=$(LINUX_DIR)/drivers/hwmon/tmp102.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,tmp102) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal +kmod-regmap) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal +kmod-regmap-i2c) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/hwmon-tmp102/description | ||||
| @@ -384,7 +384,7 @@ define KernelPackage/hwmon-tmp103 | ||||
|   KCONFIG:=CONFIG_SENSORS_TMP103 | ||||
|   FILES:=$(LINUX_DIR)/drivers/hwmon/tmp103.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,tmp103) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +kmod-regmap) | ||||
|   $(call AddDepends/hwmon,+kmod-i2c-core +kmod-regmap-i2c) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/hwmon-tmp103/description | ||||
|   | ||||
| @@ -54,7 +54,7 @@ $(eval $(call KernelPackage,iio-ad799x)) | ||||
|  | ||||
| define KernelPackage/iio-hmc5843 | ||||
|   SUBMENU:=$(IIO_MENU) | ||||
|   DEPENDS:=+kmod-i2c-core +kmod-iio-core +kmod-regmap | ||||
|   DEPENDS:=+kmod-i2c-core +kmod-iio-core +kmod-regmap-i2c | ||||
|   TITLE:=Honeywell HMC58x3 Magnetometer | ||||
|   KCONFIG:= CONFIG_SENSORS_HMC5843_I2C | ||||
|   FILES:= \ | ||||
| @@ -132,7 +132,7 @@ $(eval $(call KernelPackage,iio-dht11)) | ||||
| define KernelPackage/iio-bmp280 | ||||
|   SUBMENU:=$(IIO_MENU) | ||||
|   TITLE:=BMP180/BMP280/BME280 pressure/temperatur sensor | ||||
|   DEPENDS:=@!LINUX_3_18 +kmod-iio-core +kmod-regmap | ||||
|   DEPENDS:=@!LINUX_3_18 +kmod-iio-core +kmod-regmap-core | ||||
|   KCONFIG:=CONFIG_BMP280 | ||||
|   FILES:=$(LINUX_DIR)/drivers/iio/pressure/bmp280.ko | ||||
| endef | ||||
| @@ -149,7 +149,7 @@ $(eval $(call KernelPackage,iio-bmp280)) | ||||
| define KernelPackage/iio-bmp280-i2c | ||||
|   SUBMENU:=$(IIO_MENU) | ||||
|   TITLE:=BMP180/BMP280/BME280 pressure/temperatur sensor (I2C) | ||||
|   DEPENDS:=+kmod-iio-bmp280 +kmod-i2c-core | ||||
|   DEPENDS:=+kmod-iio-bmp280 +kmod-i2c-core +kmod-regmap-i2c | ||||
|   KCONFIG:=CONFIG_BMP280_I2C | ||||
|   FILES:=$(LINUX_DIR)/drivers/iio/pressure/bmp280-i2c.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,iio-bmp280-i2c) | ||||
|   | ||||
| @@ -30,7 +30,7 @@ $(eval $(call KernelPackage,6lowpan)) | ||||
| define KernelPackage/bluetooth | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=Bluetooth support | ||||
|   DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-crypto-hash +kmod-crypto-ecb +kmod-lib-crc16 +kmod-hid +!LINUX_3_18:kmod-crypto-cmac +!LINUX_3_18:kmod-regmap +!(LINUX_3_18||LINUX_4_9):kmod-crypto-ecdh | ||||
|   DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-crypto-hash +kmod-crypto-ecb +kmod-lib-crc16 +kmod-hid +!LINUX_3_18:kmod-crypto-cmac +!LINUX_3_18:kmod-regmap-core +!(LINUX_3_18||LINUX_4_9):kmod-crypto-ecdh | ||||
|   KCONFIG:= \ | ||||
| 	CONFIG_BT \ | ||||
| 	CONFIG_BT_BREDR=y \ | ||||
| @@ -172,7 +172,7 @@ define KernelPackage/eeprom-at24 | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=EEPROM AT24 support | ||||
|   KCONFIG:=CONFIG_EEPROM_AT24 | ||||
|   DEPENDS:=+kmod-i2c-core +kmod-nvmem +LINUX_4_19:kmod-regmap | ||||
|   DEPENDS:=+kmod-i2c-core +kmod-nvmem +LINUX_4_19:kmod-regmap-i2c | ||||
|   FILES:=$(LINUX_DIR)/drivers/misc/eeprom/at24.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,at24) | ||||
| endef | ||||
| @@ -219,7 +219,7 @@ $(eval $(call KernelPackage,gpio-dev)) | ||||
| define KernelPackage/gpio-mcp23s08 | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=Microchip MCP23xxx I/O expander | ||||
|   DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core +!(LINUX_3_18||LINUX_4_9):kmod-regmap | ||||
|   DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core +!(LINUX_3_18||LINUX_4_9):kmod-regmap-i2c | ||||
|   KCONFIG:= \ | ||||
| 	CONFIG_GPIO_MCP23S08 \ | ||||
| 	CONFIG_PINCTRL_MCP23S08 | ||||
| @@ -476,7 +476,7 @@ define KernelPackage/rtc-ds1307 | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=Dallas/Maxim DS1307 (and compatible) RTC support | ||||
|   DEFAULT:=m if ALL_KMODS && RTC_SUPPORT | ||||
|   DEPENDS:=+kmod-i2c-core +!(LINUX_3_18||LINUX_4_9):kmod-regmap +!(LINUX_3_18||LINUX_4_9):kmod-hwmon-core | ||||
|   DEPENDS:=+kmod-i2c-core +!(LINUX_3_18||LINUX_4_9):kmod-regmap-i2c +!(LINUX_3_18||LINUX_4_9):kmod-hwmon-core | ||||
|   KCONFIG:=CONFIG_RTC_DRV_DS1307 \ | ||||
| 	CONFIG_RTC_CLASS=y | ||||
|   FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ds1307.ko | ||||
| @@ -710,32 +710,71 @@ endef | ||||
| $(eval $(call KernelPackage,serial-8250-exar)) | ||||
|  | ||||
|  | ||||
| define KernelPackage/regmap | ||||
| define KernelPackage/regmap-core | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=Generic register map support | ||||
|   DEPENDS:=+kmod-lib-lzo +kmod-i2c-core | ||||
|   KCONFIG:=CONFIG_REGMAP \ | ||||
| 	   CONFIG_REGMAP_MMIO \ | ||||
| 	   CONFIG_REGMAP_SPI \ | ||||
| 	   CONFIG_REGMAP_I2C \ | ||||
| 	   CONFIG_SPI=y | ||||
|   FILES:= \ | ||||
| 	$(LINUX_DIR)/drivers/base/regmap/regmap-i2c.ko \ | ||||
| 	$(LINUX_DIR)/drivers/base/regmap/regmap-mmio.ko \ | ||||
| 	$(if $(CONFIG_SPI),$(LINUX_DIR)/drivers/base/regmap/regmap-spi.ko) | ||||
|   AUTOLOAD:=$(call AutoLoad,21,regmap-core regmap-i2c regmap-mmio regmap-spi) | ||||
|   ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"") | ||||
|    ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"") | ||||
|     FILES += $(LINUX_DIR)/drivers/base/regmap/regmap-core.ko | ||||
|    endif | ||||
|   endif | ||||
|   HIDDEN:=1 | ||||
|   KCONFIG:=CONFIG_REGMAP | ||||
| ifneq ($(wildcard $(LINUX_DIR)/drivers/base/regmap/regmap-core.ko),) | ||||
|   FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-core.ko | ||||
| endif | ||||
| endef | ||||
|  | ||||
| define KernelPackage/regmap/description | ||||
| define KernelPackage/regmap-core/description | ||||
|  Generic register map support | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,regmap)) | ||||
| $(eval $(call KernelPackage,regmap-core)) | ||||
|  | ||||
|  | ||||
| define KernelPackage/regmap-spi | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=SPI register map support | ||||
|   DEPENDS:=+kmod-regmap-core | ||||
|   HIDDEN:=1 | ||||
|   KCONFIG:=CONFIG_REGMAP_SPI \ | ||||
| 	   CONFIG_SPI=y | ||||
|   FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-spi.ko | ||||
| endef | ||||
|  | ||||
| define KernelPackage/regmap-spi/description | ||||
|  SPI register map support | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,regmap-spi)) | ||||
|  | ||||
|  | ||||
| define KernelPackage/regmap-i2c | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=I2C register map support | ||||
|   DEPENDS:=+kmod-regmap-core +kmod-i2c-core | ||||
|   HIDDEN:=1 | ||||
|   KCONFIG:=CONFIG_REGMAP_I2C | ||||
|   FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-i2c.ko | ||||
| endef | ||||
|  | ||||
| define KernelPackage/regmap-i2c/description | ||||
|  I2C register map support | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,regmap-i2c)) | ||||
|  | ||||
|  | ||||
| define KernelPackage/regmap-mmio | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=MMIO register map support | ||||
|   DEPENDS:=+kmod-regmap-core | ||||
|   HIDDEN:=1 | ||||
|   KCONFIG:=CONFIG_REGMAP_MMIO | ||||
|   FILES:=$(LINUX_DIR)/drivers/base/regmap/regmap-mmio.ko | ||||
| endef | ||||
|  | ||||
| define KernelPackage/regmap-mmio/description | ||||
|  MMIO register map support | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,regmap-mmio)) | ||||
|  | ||||
|  | ||||
| define KernelPackage/ikconfig | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
| @@ -996,7 +1035,7 @@ $(eval $(call KernelPackage,echo)) | ||||
| define KernelPackage/bmp085 | ||||
|   SUBMENU:=$(OTHER_MENU) | ||||
|   TITLE:=BMP085/BMP18x pressure sensor | ||||
|   DEPENDS:= +kmod-regmap @!LINUX_3_18 | ||||
|   DEPENDS:= +kmod-regmap-core @!LINUX_3_18 | ||||
|   KCONFIG:= CONFIG_BMP085 | ||||
|   FILES:= $(LINUX_DIR)/drivers/misc/bmp085.ko | ||||
| endef | ||||
|   | ||||
| @@ -188,7 +188,7 @@ $(eval $(call KernelPackage,sound-via82xx)) | ||||
|  | ||||
| define KernelPackage/sound-soc-core | ||||
|   TITLE:=SoC sound support | ||||
|   DEPENDS:=+kmod-regmap +kmod-ac97 | ||||
|   DEPENDS:=+kmod-regmap-core +kmod-ac97 | ||||
|   KCONFIG:= \ | ||||
| 	CONFIG_SND_SOC \ | ||||
| 	CONFIG_SND_SOC_DMAENGINE_PCM=y \ | ||||
| @@ -321,7 +321,7 @@ define KernelPackage/sound-hda-core | ||||
| 	$(LINUX_DIR)/sound/pci/hda/snd-hda-codec.ko \ | ||||
| 	$(LINUX_DIR)/sound/pci/hda/snd-hda-codec-generic.ko | ||||
|   AUTOLOAD:=$(call AutoProbe,snd-hda-core@ge4.1 snd-hda-codec snd-hda-codec-generic) | ||||
|   $(call AddDepends/sound,+kmod-regmap) | ||||
|   $(call AddDepends/sound,+kmod-regmap-core) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/sound-hda-core/description | ||||
|   | ||||
| @@ -72,7 +72,7 @@ $(eval $(call KernelPackage,fakelb)) | ||||
| define KernelPackage/at86rf230 | ||||
|   SUBMENU:=$(WPAN_MENU) | ||||
|   TITLE:=AT86RF230 transceiver driver | ||||
|   DEPENDS:=+kmod-mac802154 +kmod-regmap | ||||
|   DEPENDS:=+kmod-mac802154 +kmod-regmap-spi | ||||
|   KCONFIG:=CONFIG_IEEE802154_AT86RF230 \ | ||||
| 	CONFIG_IEEE802154_AT86RF230_DEBUGFS=n \ | ||||
| 	CONFIG_SPI=y \ | ||||
| @@ -85,7 +85,7 @@ $(eval $(call KernelPackage,at86rf230)) | ||||
| define KernelPackage/mrf24j40 | ||||
|   SUBMENU:=$(WPAN_MENU) | ||||
|   TITLE:=MRF24J40 transceiver driver | ||||
|   DEPENDS:=+kmod-mac802154 +kmod-regmap | ||||
|   DEPENDS:=+kmod-mac802154 +kmod-regmap-spi | ||||
|   KCONFIG:=CONFIG_IEEE802154_MRF24J40 \ | ||||
| 	CONFIG_SPI=y \ | ||||
| 	CONFIG_SPI_MASTER=y | ||||
|   | ||||
		Reference in New Issue
	
	Block a user