From: Arnd Bergmann <arnd@xxxxxxxx> If the iwlmei code is a loadable module, the main iwlwifi driver cannot be built-in: x86_64-linux-ld: drivers/net/wireless/intel/iwlwifi/pcie/trans.o: in function `iwl_pcie_prepare_card_hw': trans.c:(.text+0x4158): undefined reference to `iwl_mei_is_connected' Unfortunately, Kconfig enforces the opposite, forcing the MEI driver to not be built-in if iwlwifi is a module. There is no easy way to express the correct dependency in Kconfig, this is the best workaround I could come up with, turning CONFIG_IWLMEI into a 'bool' symbol, and spelling out the exact conditions under which it may be enabled, and then using Makefile logic to ensure it is built-in when iwlwifi is. A better option would be change iwl_mei_is_connected() so it could be called from iwlwifi regardless of whether the mei driver is reachable, but that requires a larger rework in the driver. Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> --- drivers/net/wireless/intel/iwlwifi/Kconfig | 6 +++--- drivers/net/wireless/intel/iwlwifi/Makefile | 3 +-- drivers/net/wireless/intel/iwlwifi/mei/Makefile | 4 +++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/Kconfig b/drivers/net/wireless/intel/iwlwifi/Kconfig index cf1125d84929..474afc6f82a8 100644 --- a/drivers/net/wireless/intel/iwlwifi/Kconfig +++ b/drivers/net/wireless/intel/iwlwifi/Kconfig @@ -93,10 +93,10 @@ config IWLWIFI_BCAST_FILTERING expect incoming broadcasts for their normal operations. config IWLMEI - tristate "Intel Management Engine communication over WLAN" - depends on INTEL_MEI + bool "Intel Management Engine communication over WLAN" + depends on INTEL_MEI=y || INTEL_MEI=IWLMVM + depends on IWLMVM=y || IWLWIFI=m depends on PM - depends on IWLMVM help Enables the iwlmei kernel module. diff --git a/drivers/net/wireless/intel/iwlwifi/Makefile b/drivers/net/wireless/intel/iwlwifi/Makefile index 75a703eb1bdf..c117e105fe5c 100644 --- a/drivers/net/wireless/intel/iwlwifi/Makefile +++ b/drivers/net/wireless/intel/iwlwifi/Makefile @@ -29,7 +29,6 @@ iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TRACING) += iwl-devtrace.o ccflags-y += -I$(src) obj-$(CONFIG_IWLDVM) += dvm/ -obj-$(CONFIG_IWLMVM) += mvm/ -obj-$(CONFIG_IWLMEI) += mei/ +obj-$(CONFIG_IWLMVM) += mvm/ mei/ CFLAGS_iwl-devtrace.o := -I$(src) diff --git a/drivers/net/wireless/intel/iwlwifi/mei/Makefile b/drivers/net/wireless/intel/iwlwifi/mei/Makefile index 8e3ef0347db7..98b561c3820f 100644 --- a/drivers/net/wireless/intel/iwlwifi/mei/Makefile +++ b/drivers/net/wireless/intel/iwlwifi/mei/Makefile @@ -1,5 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only -obj-$(CONFIG_IWLMEI) += iwlmei.o +ifdef CONFIG_IWLMEI +obj-$(CONFIG_IWLWIFI) += iwlmei.o +endif iwlmei-y += main.o iwlmei-y += net.o iwlmei-$(CONFIG_IWLWIFI_DEVICE_TRACING) += trace.o -- 2.29.2