Loading drivers/soc/qcom/Kconfig +10 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,16 @@ config ICNSS_DEBUG hardware register access and enabling BUG_ON for certain cases to aid the debugging. config ICNSS_QMI bool "ICNSS QMI support" depends on ICNSS ---help--- Say 'Y' here to enable ICNSS QMI support. ICNSS driver will use QMI framework to communicate with WLAN FW. It will send coldboot handshake messages to WLAN FW, which includes hardware capabilities and configurations. It also send WLAN on/off control message to FW over QMI channel. config QCOM_EUD tristate "QTI Embedded USB Debugger (EUD)" depends on ARCH_QCOM Loading drivers/soc/qcom/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ obj-$(CONFIG_QCOM_MEMORY_DUMP_V2) += memory_dump_v2.o obj-$(CONFIG_QCOM_WATCHDOG_V2) += watchdog_v2.o obj-$(CONFIG_QPNP_PBS) += qpnp-pbs.o obj-$(CONFIG_ICNSS) += icnss.o obj-$(CONFIG_ICNSS_QMI) += icnss_qmi.o wlan_firmware_service_v01.o obj-$(CONFIG_MSM_SPSS_UTILS) += spss_utils.o obj-$(CONFIG_MSM_SERVICE_NOTIFIER) += service-notifier.o obj-$(CONFIG_MSM_SERVICE_LOCATOR) += service-locator.o Loading drivers/soc/qcom/icnss.c +3 −2 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include <linux/uaccess.h> #include <linux/etherdevice.h> #include <linux/of_gpio.h> #include <linux/soc/qcom/qmi.h> #include <soc/qcom/memory_dump.h> #include <soc/qcom/icnss.h> #include <soc/qcom/secure_buffer.h> Loading Loading @@ -689,7 +690,7 @@ static int icnss_driver_event_server_arrive(void *data) set_bit(ICNSS_WLFW_EXISTS, &penv->state); clear_bit(ICNSS_FW_DOWN, &penv->state); ret = icnss_connect_to_fw_server(penv); ret = icnss_connect_to_fw_server(penv, data); if (ret) goto fail; Loading Loading @@ -749,7 +750,7 @@ static int icnss_driver_event_server_arrive(void *data) static int icnss_driver_event_server_exit(void *data) { if (!penv || !penv->wlfw_clnt) if (!penv) return -ENODEV; icnss_pr_info("WLAN FW Service Disconnected: 0x%lx\n", penv->state); Loading drivers/soc/qcom/icnss_private.h +6 −1 Original line number Diff line number Diff line Loading @@ -114,6 +114,11 @@ enum icnss_driver_event_type { ICNSS_DRIVER_EVENT_MAX, }; struct icnss_event_server_arrive_data { unsigned int node; unsigned int port; }; struct icnss_event_pd_service_down_data { bool crashed; bool fw_rejuvenate; Loading Loading @@ -295,7 +300,7 @@ struct icnss_priv { size_t smmu_iova_len; dma_addr_t smmu_iova_ipa_start; size_t smmu_iova_ipa_len; struct qmi_handle *wlfw_clnt; struct qmi_handle qmi; struct list_head event_list; spinlock_t event_lock; struct work_struct event_work; Loading Loading
drivers/soc/qcom/Kconfig +10 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,16 @@ config ICNSS_DEBUG hardware register access and enabling BUG_ON for certain cases to aid the debugging. config ICNSS_QMI bool "ICNSS QMI support" depends on ICNSS ---help--- Say 'Y' here to enable ICNSS QMI support. ICNSS driver will use QMI framework to communicate with WLAN FW. It will send coldboot handshake messages to WLAN FW, which includes hardware capabilities and configurations. It also send WLAN on/off control message to FW over QMI channel. config QCOM_EUD tristate "QTI Embedded USB Debugger (EUD)" depends on ARCH_QCOM Loading
drivers/soc/qcom/Makefile +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ obj-$(CONFIG_QCOM_MEMORY_DUMP_V2) += memory_dump_v2.o obj-$(CONFIG_QCOM_WATCHDOG_V2) += watchdog_v2.o obj-$(CONFIG_QPNP_PBS) += qpnp-pbs.o obj-$(CONFIG_ICNSS) += icnss.o obj-$(CONFIG_ICNSS_QMI) += icnss_qmi.o wlan_firmware_service_v01.o obj-$(CONFIG_MSM_SPSS_UTILS) += spss_utils.o obj-$(CONFIG_MSM_SERVICE_NOTIFIER) += service-notifier.o obj-$(CONFIG_MSM_SERVICE_LOCATOR) += service-locator.o Loading
drivers/soc/qcom/icnss.c +3 −2 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include <linux/uaccess.h> #include <linux/etherdevice.h> #include <linux/of_gpio.h> #include <linux/soc/qcom/qmi.h> #include <soc/qcom/memory_dump.h> #include <soc/qcom/icnss.h> #include <soc/qcom/secure_buffer.h> Loading Loading @@ -689,7 +690,7 @@ static int icnss_driver_event_server_arrive(void *data) set_bit(ICNSS_WLFW_EXISTS, &penv->state); clear_bit(ICNSS_FW_DOWN, &penv->state); ret = icnss_connect_to_fw_server(penv); ret = icnss_connect_to_fw_server(penv, data); if (ret) goto fail; Loading Loading @@ -749,7 +750,7 @@ static int icnss_driver_event_server_arrive(void *data) static int icnss_driver_event_server_exit(void *data) { if (!penv || !penv->wlfw_clnt) if (!penv) return -ENODEV; icnss_pr_info("WLAN FW Service Disconnected: 0x%lx\n", penv->state); Loading
drivers/soc/qcom/icnss_private.h +6 −1 Original line number Diff line number Diff line Loading @@ -114,6 +114,11 @@ enum icnss_driver_event_type { ICNSS_DRIVER_EVENT_MAX, }; struct icnss_event_server_arrive_data { unsigned int node; unsigned int port; }; struct icnss_event_pd_service_down_data { bool crashed; bool fw_rejuvenate; Loading Loading @@ -295,7 +300,7 @@ struct icnss_priv { size_t smmu_iova_len; dma_addr_t smmu_iova_ipa_start; size_t smmu_iova_ipa_len; struct qmi_handle *wlfw_clnt; struct qmi_handle qmi; struct list_head event_list; spinlock_t event_lock; struct work_struct event_work; Loading