|
@@ -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 @@ unregister_rfkill:
|
|
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);
|