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

Commit 6e575578 authored by Yuanyuan Liu's avatar Yuanyuan Liu
Browse files

icnss: Switch to new QMI framework



Switch to the latest QMI framework. Use new QMI APIs to send
and receive messages.

CRs-Fixed: 2217794
Change-Id: I15566e21b039c71e81bfd419f9bcf0195541e7d7
Signed-off-by: default avatarYuanyuan Liu <yuanliu@codeaurora.org>
parent 07fb2060
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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
+3 −2
Original line number Diff line number Diff line
@@ -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>
@@ -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;

@@ -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);
+6 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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;
+649 −525

File changed.

Preview size limit exceeded, changes collapsed.

Loading