diff --git a/Kbuild b/Kbuild index 6d98f8164d..f666f417b2 100644 --- a/Kbuild +++ b/Kbuild @@ -74,6 +74,10 @@ ifeq ($(CONFIG_CNSS2_ENUM_WITH_LOW_SPEED),y) KBUILD_CPPFLAGS += -DCONFIG_CNSS2_ENUM_WITH_LOW_SPEED endif +ifeq ($(CONFIG_SLATE_MODULE_ENABLED), y) +KBUILD_CPPFLAGS += -DSLATE_MODULE_ENABLED +endif + obj-$(CONFIG_CNSS2) += cnss2/ obj-$(CONFIG_ICNSS2) += icnss2/ obj-$(CONFIG_CNSS_GENL) += cnss_genl/ diff --git a/icnss2/main.c b/icnss2/main.c index c9bd296a6b..e2728b2d39 100644 --- a/icnss2/main.c +++ b/icnss2/main.c @@ -45,7 +45,9 @@ #include #include #include +#ifdef SLATE_MODULE_ENABLED #include +#endif #include "main.h" #include "qmi.h" #include "debug.h" @@ -837,6 +839,40 @@ static enum wlfw_wlan_rf_subtype_v01 icnss_rf_subtype_value_to_type(u32 val) } } +#ifdef SLATE_MODULE_ENABLED +static void icnss_send_wlan_boot_init(void) +{ + send_wlan_state(GMI_MGR_WLAN_BOOT_INIT); + icnss_pr_info("sent wlan boot init command\n"); +} + +static void icnss_send_wlan_boot_complete(void) +{ + send_wlan_state(GMI_MGR_WLAN_BOOT_COMPLETE); + icnss_pr_info("sent wlan boot complete command\n"); +} + +static void icnss_wait_for_slate_complete(struct icnss_priv *priv) +{ + if (!test_bit(ICNSS_SLATE_UP, &priv->state)) { + reinit_completion(&priv->slate_boot_complete); + icnss_pr_err("Waiting for slate boot up notification, 0x%lx\n", + priv->state); + wait_for_completion(&priv->slate_boot_complete); + } + + icnss_send_wlan_boot_init(); +} +#else +static void icnss_send_wlan_boot_complete(void) +{ +} + +static void icnss_wait_for_slate_complete(struct icnss_priv *priv) +{ +} +#endif + static int icnss_driver_event_server_arrive(struct icnss_priv *priv, void *data) { @@ -865,17 +901,8 @@ static int icnss_driver_event_server_arrive(struct icnss_priv *priv, set_bit(ICNSS_WLFW_CONNECTED, &priv->state); - if (priv->is_slate_rfa) { - if (!test_bit(ICNSS_SLATE_UP, &priv->state)) { - reinit_completion(&priv->slate_boot_complete); - icnss_pr_dbg("Waiting for slate boot up notification, 0x%lx\n", - priv->state); - wait_for_completion(&priv->slate_boot_complete); - } - - send_wlan_state(GMI_MGR_WLAN_BOOT_INIT); - icnss_pr_info("sent wlan boot init command\n"); - } + if (priv->is_slate_rfa) + icnss_wait_for_slate_complete(priv); ret = wlfw_ind_register_send_sync_msg(priv); if (ret < 0) { @@ -1194,10 +1221,8 @@ static int icnss_driver_event_fw_ready_ind(struct icnss_priv *priv, void *data) goto out; } - if (priv->is_slate_rfa && test_bit(ICNSS_SLATE_UP, &priv->state)) { - send_wlan_state(GMI_MGR_WLAN_BOOT_COMPLETE); - icnss_pr_info("sent wlan boot complete command\n"); - } + if (priv->is_slate_rfa && test_bit(ICNSS_SLATE_UP, &priv->state)) + icnss_send_wlan_boot_complete(); if (test_bit(ICNSS_PD_RESTART, &priv->state)) { ret = icnss_pd_restart_complete(priv); @@ -2319,6 +2344,7 @@ static int icnss_wpss_ssr_register_notifier(struct icnss_priv *priv) return ret; } +#ifdef SLATE_MODULE_ENABLED static int icnss_slate_notifier_nb(struct notifier_block *nb, unsigned long code, void *data) @@ -2386,6 +2412,17 @@ static int icnss_slate_ssr_unregister_notifier(struct icnss_priv *priv) return 0; } +#else +static int icnss_slate_ssr_register_notifier(struct icnss_priv *priv) +{ + return 0; +} + +static int icnss_slate_ssr_unregister_notifier(struct icnss_priv *priv) +{ + return 0; +} +#endif static int icnss_modem_ssr_register_notifier(struct icnss_priv *priv) { @@ -4593,6 +4630,9 @@ static int icnss_probe(struct platform_device *pdev) INIT_WORK(&priv->event_work, icnss_driver_event_work); INIT_LIST_HEAD(&priv->event_list); + if (priv->is_slate_rfa) + init_completion(&priv->slate_boot_complete); + ret = icnss_register_fw_service(priv); if (ret < 0) { icnss_pr_err("fw service registration failed: %d\n", ret); @@ -4614,9 +4654,6 @@ static int icnss_probe(struct platform_device *pdev) init_completion(&priv->unblock_shutdown); - if (priv->is_slate_rfa) - init_completion(&priv->slate_boot_complete); - if (priv->device_id == WCN6750_DEVICE_ID || priv->device_id == WCN6450_DEVICE_ID) { priv->soc_wake_wq = alloc_workqueue("icnss_soc_wake_event",