Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b973e42e authored by Randy Dunlap's avatar Randy Dunlap Committed by John W. Linville
Browse files

iwlwifi: fix build for CONFIG_INPUT=n



Fix iwlwifi so that it builds cleanly with CONFIG_INPUT=n.
Also free the input device on exit.

drivers/built-in.o: In function `iwl_rfkill_unregister':
(.text+0xbf430): undefined reference to `input_unregister_device'
drivers/built-in.o: In function `iwl_rfkill_init':
(.text+0xbf51c): undefined reference to `input_allocate_device'
drivers/built-in.o: In function `iwl_rfkill_init':
(.text+0xbf5bf): undefined reference to `input_register_device'
drivers/built-in.o: In function `iwl_rfkill_init':
(.text+0xbf5e9): undefined reference to `input_free_device'
net/built-in.o: In function `rfkill_disconnect':
rfkill-input.c:(.text+0xe71e1): undefined reference to `input_close_device'
rfkill-input.c:(.text+0xe71e9): undefined reference to `input_unregister_handle'
net/built-in.o: In function `rfkill_connect':
rfkill-input.c:(.text+0xe723e): undefined reference to `input_register_handle'
rfkill-input.c:(.text+0xe724d): undefined reference to `input_open_device'
rfkill-input.c:(.text+0xe725c): undefined reference to `input_unregister_handle'
net/built-in.o: In function `rfkill_handler_init':
rfkill-input.c:(.init.text+0x36ec): undefined reference to `input_register_handler'
net/built-in.o: In function `rfkill_handler_exit':
rfkill-input.c:(.exit.text+0x112c): undefined reference to `input_unregister_handler'
make[1]: *** [.tmp_vmlinux1] Error 1

Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 428da765
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -8,7 +8,7 @@ config IWLCORE
	select MAC80211_LEDS if IWLWIFI_LEDS
	select MAC80211_LEDS if IWLWIFI_LEDS
	select LEDS_CLASS if IWLWIFI_LEDS
	select LEDS_CLASS if IWLWIFI_LEDS
	select RFKILL if IWLWIFI_RFKILL
	select RFKILL if IWLWIFI_RFKILL
	select RFKILL_INPUT if IWLWIFI_RFKILL
	select RFKILL_INPUT if (IWLWIFI_RFKILL && INPUT)


config IWLWIFI_LEDS
config IWLWIFI_LEDS
	bool
	bool
+10 −1
Original line number Original line Diff line number Diff line
@@ -95,6 +95,7 @@ int iwl_rfkill_init(struct iwl_priv *priv)
	priv->rfkill_mngr.rfkill->dev.class->suspend = NULL;
	priv->rfkill_mngr.rfkill->dev.class->suspend = NULL;
	priv->rfkill_mngr.rfkill->dev.class->resume = NULL;
	priv->rfkill_mngr.rfkill->dev.class->resume = NULL;


#if defined(CONFIG_RFKILL_INPUT) || defined(CONFIG_RFKILL_INPUT_MODULE)
	priv->rfkill_mngr.input_dev = input_allocate_device();
	priv->rfkill_mngr.input_dev = input_allocate_device();
	if (!priv->rfkill_mngr.input_dev) {
	if (!priv->rfkill_mngr.input_dev) {
		IWL_ERROR("Unable to allocate rfkill input device.\n");
		IWL_ERROR("Unable to allocate rfkill input device.\n");
@@ -109,6 +110,7 @@ int iwl_rfkill_init(struct iwl_priv *priv)
	priv->rfkill_mngr.input_dev->dev.parent = device;
	priv->rfkill_mngr.input_dev->dev.parent = device;
	priv->rfkill_mngr.input_dev->evbit[0] = BIT(EV_KEY);
	priv->rfkill_mngr.input_dev->evbit[0] = BIT(EV_KEY);
	set_bit(KEY_WLAN, priv->rfkill_mngr.input_dev->keybit);
	set_bit(KEY_WLAN, priv->rfkill_mngr.input_dev->keybit);
#endif


	ret = rfkill_register(priv->rfkill_mngr.rfkill);
	ret = rfkill_register(priv->rfkill_mngr.rfkill);
	if (ret) {
	if (ret) {
@@ -116,11 +118,13 @@ int iwl_rfkill_init(struct iwl_priv *priv)
		goto free_input_dev;
		goto free_input_dev;
	}
	}


#if defined(CONFIG_RFKILL_INPUT) || defined(CONFIG_RFKILL_INPUT_MODULE)
	ret = input_register_device(priv->rfkill_mngr.input_dev);
	ret = input_register_device(priv->rfkill_mngr.input_dev);
	if (ret) {
	if (ret) {
		IWL_ERROR("Unable to register rfkill input device: %d\n", ret);
		IWL_ERROR("Unable to register rfkill input device: %d\n", ret);
		goto unregister_rfkill;
		goto unregister_rfkill;
	}
	}
#endif


	IWL_DEBUG_RF_KILL("RFKILL initialization complete.\n");
	IWL_DEBUG_RF_KILL("RFKILL initialization complete.\n");
	return ret;
	return ret;
@@ -130,8 +134,10 @@ int iwl_rfkill_init(struct iwl_priv *priv)
	priv->rfkill_mngr.rfkill = NULL;
	priv->rfkill_mngr.rfkill = NULL;


free_input_dev:
free_input_dev:
#if defined(CONFIG_RFKILL_INPUT) || defined(CONFIG_RFKILL_INPUT_MODULE)
	input_free_device(priv->rfkill_mngr.input_dev);
	input_free_device(priv->rfkill_mngr.input_dev);
	priv->rfkill_mngr.input_dev = NULL;
	priv->rfkill_mngr.input_dev = NULL;
#endif


freed_rfkill:
freed_rfkill:
	if (priv->rfkill_mngr.rfkill != NULL)
	if (priv->rfkill_mngr.rfkill != NULL)
@@ -147,13 +153,16 @@ EXPORT_SYMBOL(iwl_rfkill_init);
void iwl_rfkill_unregister(struct iwl_priv *priv)
void iwl_rfkill_unregister(struct iwl_priv *priv)
{
{


#if defined(CONFIG_RFKILL_INPUT) || defined(CONFIG_RFKILL_INPUT_MODULE)
	if (priv->rfkill_mngr.input_dev)
	if (priv->rfkill_mngr.input_dev)
		input_unregister_device(priv->rfkill_mngr.input_dev);
		input_unregister_device(priv->rfkill_mngr.input_dev);
	input_free_device(priv->rfkill_mngr.input_dev);
	priv->rfkill_mngr.input_dev = NULL;
#endif


	if (priv->rfkill_mngr.rfkill)
	if (priv->rfkill_mngr.rfkill)
		rfkill_unregister(priv->rfkill_mngr.rfkill);
		rfkill_unregister(priv->rfkill_mngr.rfkill);


	priv->rfkill_mngr.input_dev = NULL;
	priv->rfkill_mngr.rfkill = NULL;
	priv->rfkill_mngr.rfkill = NULL;
}
}
EXPORT_SYMBOL(iwl_rfkill_unregister);
EXPORT_SYMBOL(iwl_rfkill_unregister);