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

Commit ef0a8ac3 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Enable Support for WFC call TWT config"

parents 9cbbef04 b9ecde3b
Loading
Loading
Loading
Loading
+0 −109
Original line number Diff line number Diff line
@@ -10,28 +10,10 @@
#include "pci.h"

#define MMIO_REG_ACCESS_MEM_TYPE		0xFF
#define HEX_DUMP_ROW_SIZE			16

void *cnss_ipc_log_context;
void *cnss_ipc_log_long_context;

static void cnss_print_hex_dump(const void *buf, int len)
{
	const u8 *ptr = buf;
	int i, linelen, remaining = len, rowsize = HEX_DUMP_ROW_SIZE;
	unsigned char linebuf[HEX_DUMP_ROW_SIZE * 3 + 1];

	for (i = 0; i < len; i += rowsize) {
		linelen = min(remaining, rowsize);
		remaining -= rowsize;

		hex_dump_to_buffer(ptr + i, linelen, rowsize, 1,
				   linebuf, sizeof(linebuf), false);

		cnss_pr_dbg("%.8x: %s\n", i, linebuf);
	}
}

static int cnss_pin_connect_show(struct seq_file *s, void *data)
{
	struct cnss_plat_data *cnss_priv = s->private;
@@ -768,95 +750,6 @@ static const struct file_operations cnss_dynamic_feature_fops = {
	.llseek = seq_lseek,
};

static int cnss_wfc_call_status_debug_show(struct seq_file *s, void *data)
{
	seq_puts(s, "\nUsage: echo <data_len> <hex data> > <debugfs_path>/cnss/wfc_call_status\n");
	seq_puts(s, "e.g. Send 4 bytes of hex data for WFC call status using QMI message:\n");
	seq_puts(s, "echo '0x4 0xA 0xB 0xC 0xD' > /d/cnss/wfc_call_status\n");

	return 0;
}

static ssize_t cnss_wfc_call_status_debug_write(struct file *fp,
						const char __user *user_buf,
						size_t count, loff_t *off)
{
	struct cnss_plat_data *plat_priv =
		((struct seq_file *)fp->private_data)->private;
	char buf[(QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01 + 1) * 5];
	char *sptr, *token;
	unsigned int len = 0;
	const char *delim = " ";
	u32 data_len;
	u8 data[QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01] = {0}, data_byte;
	int ret = 0, i;

	if (!test_bit(CNSS_FW_READY, &plat_priv->driver_state)) {
		cnss_pr_err("Firmware is not ready yet\n");
		return -EINVAL;
	}

	len = min(count, sizeof(buf) - 1);
	if (copy_from_user(buf, user_buf, len))
		return -EFAULT;

	buf[len] = '\0';
	sptr = buf;

	token = strsep(&sptr, delim);
	if (!token || !sptr)
		return -EINVAL;

	if (kstrtou32(token, 0, &data_len))
		return -EINVAL;

	cnss_pr_dbg("Parsing 0x%x bytes data for WFC call status\n", data_len);

	if (data_len > QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01 ||
	    data_len == 0) {
		cnss_pr_err("Invalid data length 0x%x\n", data_len);
		return -EINVAL;
	}

	for (i = 0; i < data_len; i++) {
		token = strsep(&sptr, delim);
		if (!token || (!sptr && i < data_len - 1)) {
			cnss_pr_err("Input data is less than length\n");
			return -EINVAL;
		}

		if (kstrtou8(token, 0, &data_byte)) {
			cnss_pr_err("Data format is incorrect\n");
			return -EINVAL;
		}

		data[i] = data_byte;
	}

	cnss_print_hex_dump(data, data_len);

	ret = cnss_wlfw_wfc_call_status_send_sync(plat_priv, data_len, data);
	if (ret)
		return ret;

	return count;
}

static int cnss_wfc_call_status_debug_open(struct inode *inode,
					   struct file *file)
{
	return single_open(file, cnss_wfc_call_status_debug_show,
			   inode->i_private);
}

static const struct file_operations cnss_wfc_call_status_debug_fops = {
	.read		= seq_read,
	.write		= cnss_wfc_call_status_debug_write,
	.open		= cnss_wfc_call_status_debug_open,
	.owner		= THIS_MODULE,
	.llseek		= seq_lseek,
};

#ifdef CONFIG_CNSS2_DEBUG
static int cnss_create_debug_only_node(struct cnss_plat_data *plat_priv)
{
@@ -874,8 +767,6 @@ static int cnss_create_debug_only_node(struct cnss_plat_data *plat_priv)
			    &cnss_control_params_debug_fops);
	debugfs_create_file("dynamic_feature", 0600, root_dentry, plat_priv,
			    &cnss_dynamic_feature_fops);
	debugfs_create_file("wfc_call_status", 0600, root_dentry, plat_priv,
			    &cnss_wfc_call_status_debug_fops);

	return 0;
}
+363 −6
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2019, The Linux Foundation. All rights reserved. */

#include <linux/soc/qcom/qmi.h>
/* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. */

#include "ip_multimedia_subsystem_private_service_v01.h"

static struct qmi_elem_info ims_private_service_header_value_v01_ei[] = {
	{
		.data_type      = QMI_STRING,
		.elem_len       = IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1,
		.elem_size      = sizeof(char),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0,
		.offset         =
		offsetof(struct ims_private_service_header_value_v01, header),
	},
	{
		.data_type      = QMI_STRING,
		.elem_len       = IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1,
		.elem_size      = sizeof(char),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0,
		.offset         =
		offsetof(struct ims_private_service_header_value_v01, value),
	},
	{
		.data_type      = QMI_EOTI,
		.array_type       = NO_ARRAY,
		.tlv_type       = QMI_COMMON_TLV_TYPE,
	},
};

struct qmi_elem_info
ims_private_service_subscribe_for_indications_req_msg_v01_ei[] = {
	{
@@ -74,6 +98,76 @@ ims_private_service_subscribe_for_indications_rsp_msg_v01_ei[] = {
	},
};

struct qmi_elem_info ims_private_service_mt_invite_ind_msg_v01_ei[] = {
	{
		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
		.elem_len       = 1,
		.elem_size      = sizeof(enum ims_subscription_type_enum_v01),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x01,
		.offset         =
		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
			 subscription_type),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x10,
		.offset         =
		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
			 iccid_valid),
	},
	{
		.data_type      = QMI_STRING,
		.elem_len       = IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 + 1,
		.elem_size      = sizeof(char),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x10,
		.offset         =
		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
			 iccid),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x11,
		.offset         =
		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
			 header_value_list_valid),
	},
	{
		.data_type      = QMI_DATA_LEN,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x11,
		.offset         =
		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
			 header_value_list_len),
	},
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01,
		.elem_size      =
		sizeof(struct ims_private_service_header_value_v01),
		.array_type       = VAR_LEN_ARRAY,
		.tlv_type       = 0x11,
		.offset         =
		offsetof(struct ims_private_service_mt_invite_ind_msg_v01,
			 header_value_list),
		.ei_array      = ims_private_service_header_value_v01_ei,
	},
	{
		.data_type      = QMI_EOTI,
		.array_type       = NO_ARRAY,
		.tlv_type       = QMI_COMMON_TLV_TYPE,
	},
};

struct qmi_elem_info ims_private_service_wfc_call_status_ind_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_1_BYTE,
@@ -81,13 +175,276 @@ struct qmi_elem_info ims_private_service_wfc_call_status_ind_msg_v01_ei[] = {
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x01,
		.offset         = offsetof(struct
				ims_private_service_wfc_call_status_ind_msg_v01,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 wfc_call_active),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x10,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 all_wfc_calls_held_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_1_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x10,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 all_wfc_calls_held),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x11,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 is_wfc_emergency_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_1_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x11,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 is_wfc_emergency),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x12,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 twt_ims_start_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_8_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u64),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x12,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 twt_ims_start),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x13,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 twt_ims_int_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_2_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u16),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x13,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 twt_ims_int),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x14,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 media_quality_valid),
	},
	{
		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
		.elem_len       = 1,
		.elem_size      = sizeof(enum wfc_media_quality_v01),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x14,
		.offset         =
		offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01,
			 media_quality),
	},
	{
		.data_type      = QMI_EOTI,
		.array_type       = NO_ARRAY,
		.tlv_type       = QMI_COMMON_TLV_TYPE,
	},
};

struct qmi_elem_info
ims_private_service_wfc_call_twt_config_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x10,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_start_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_8_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u64),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x10,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_start),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x11,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_int_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_2_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u16),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x11,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_int),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x12,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_upo_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_2_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u16),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x12,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_upo),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x13,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_sp_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_2_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u16),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x13,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_sp),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x14,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_dl_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_2_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u16),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x14,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_dl),
	},
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x15,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_config_changed_valid),
	},
	{
		.data_type      = QMI_UNSIGNED_1_BYTE,
		.elem_len       = 1,
		.elem_size      = sizeof(u8),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x15,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_req_msg_v01,
			 twt_sta_config_changed),
	},
	{
		.data_type      = QMI_EOTI,
		.array_type       = NO_ARRAY,
		.tlv_type       = QMI_COMMON_TLV_TYPE,
	},
};

struct qmi_elem_info
ims_private_service_wfc_call_twt_config_rsp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
		.elem_size      = sizeof(struct qmi_response_type_v01),
		.array_type       = NO_ARRAY,
		.tlv_type       = 0x02,
		.offset         =
		offsetof(struct
			 ims_private_service_wfc_call_twt_config_rsp_msg_v01,
			 resp),
		.ei_array      = qmi_response_type_v01_ei,
	},
	{
		.data_type      = QMI_EOTI,
		.array_type       = NO_ARRAY,
		.tlv_type       = QMI_COMMON_TLV_TYPE,
	},
};
+102 −11
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2019, The Linux Foundation. All rights reserved. */
/* Copyright (c) 2020, The Linux Foundation. All rights reserved. */

#ifndef IP_MULTIMEDIA_SUBSYSTEM_PRIVATE_SERVICE_V01_H
#define IP_MULTIMEDIA_SUBSYSTEM_PRIVATE_SERVICE_V01_H

#include <linux/soc/qcom/qmi.h>

#define IMSPRIVATE_SERVICE_ID_V01 0x4D
#define IMSPRIVATE_SERVICE_VERS_V01 0x01

#define IMSPRIVATE_SERVICE_MAX_MSG_LEN 8

#define QMI_IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_RSP_V01 0x003E
#define QMI_IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_REQ_V01 0x003E
#define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_STATUS_IND_V01 0x0040
#define QMI_IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_REQ_V01 0x003E
#define QMI_IMS_PRIVATE_SERVICE_MT_INVITE_IND_V01 0x003F
#define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_RSP_V01 0x0041
#define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_REQ_V01 0x0041

#define IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01 15
#define IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 1024
#define IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 21

enum ims_common_resp_enum_v01 {
	IMS_COMMON_RESP_ENUM_MIN_VAL_V01 = INT_MIN,
	IMS_COMMON_MSG_NO_ERR_V01 = 0,
	IMS_COMMON_MSG_IMS_NOT_READY_V01 = 1,
	IMS_COMMON_MSG_FILE_NOT_AVAILABLE_V01 = 2,
	IMS_COMMON_MSG_READ_FAILED_V01 = 3,
	IMS_COMMON_MSG_WRITE_FAILED_V01 = 4,
	IMS_COMMON_MSG_OTHER_INTERNAL_ERR_V01 = 5,
	IMS_COMMON_RESP_ENUM_MAX_VAL_V01 = INT_MAX,
};

enum ims_subscription_type_enum_v01 {
	IMS_SUBSCRIPTION_TYPE_ENUM_MIN_VAL_V01 = INT_MIN,
	IMS_SUBSCRIPTION_TYPE_NONE_V01 = -1,
	IMS_SUBSCRIPTION_TYPE_PRIMARY_V01 = 0,
	IMS_SUBSCRIPTION_TYPE_SECONDARY_V01 = 1,
	IMS_SUBSCRIPTION_TYPE_TERTIARY_V01 = 2,
	IMS_SUBSCRIPTION_TYPE_ENUM_MAX_VAL_V01 = INT_MAX,
};

enum wfc_media_quality_v01 {
	WFC_MEDIA_QUALITY_MIN_VAL_V01 = INT_MIN,
	WFC_MEDIA_QUAL_NOT_AVAILABLE_V01 = 0,
	WFC_MEDIA_QUAL_BAD_V01 = 1,
	WFC_MEDIA_QUAL_GOOD_V01 = 2,
	WFC_MEDIA_QUAL_EXCELLENT_V01 = 3,
	WFC_MEDIA_QUALITY_MAX_VAL_V01 = INT_MAX,
};

struct ims_private_service_header_value_v01 {
	char header[IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1];
	char value[IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1];
};

struct ims_private_service_subscribe_for_indications_req_msg_v01 {
	u8 mt_invite_valid;
@@ -21,23 +62,73 @@ struct ims_private_service_subscribe_for_indications_req_msg_v01 {
};

#define IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_REQ_MSG_V01_MAX_MSG_LEN 8
extern struct
qmi_elem_info ims_private_service_subscribe_for_indications_req_msg_v01_ei[];
extern struct qmi_elem_info
ims_private_service_subscribe_for_indications_req_msg_v01_ei[];

struct ims_private_service_subscribe_for_indications_rsp_msg_v01 {
	struct qmi_response_type_v01 resp;
};

#define IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_RSP_MSG_V01_MAX_MSG_LEN 7
extern struct
qmi_elem_info ims_private_service_subscribe_for_indications_rsp_msg_v01_ei[];
extern struct qmi_elem_info
ims_private_service_subscribe_for_indications_rsp_msg_v01_ei[];

struct ims_private_service_mt_invite_ind_msg_v01 {
	enum ims_subscription_type_enum_v01 subscription_type;
	u8 iccid_valid;
	char iccid[IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 + 1];
	u8 header_value_list_valid;
	u32 header_value_list_len;
	struct ims_private_service_header_value_v01
	header_value_list[IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01];
};

#define IMS_PRIVATE_SERVICE_MT_INVITE_IND_MSG_V01_MAX_MSG_LEN 30815
extern struct qmi_elem_info ims_private_service_mt_invite_ind_msg_v01_ei[];

struct ims_private_service_wfc_call_status_ind_msg_v01 {
	u8 wfc_call_active;
	u8 all_wfc_calls_held_valid;
	u8 all_wfc_calls_held;
	u8 is_wfc_emergency_valid;
	u8 is_wfc_emergency;
	u8 twt_ims_start_valid;
	u64 twt_ims_start;
	u8 twt_ims_int_valid;
	u16 twt_ims_int;
	u8 media_quality_valid;
	enum wfc_media_quality_v01 media_quality;
};

#define IMS_PRIVATE_SERVICE_WFC_CALL_STATUS_IND_MSG_V01_MAX_MSG_LEN 35
extern struct qmi_elem_info
ims_private_service_wfc_call_status_ind_msg_v01_ei[];

struct ims_private_service_wfc_call_twt_config_req_msg_v01 {
	u8 twt_sta_start_valid;
	u64 twt_sta_start;
	u8 twt_sta_int_valid;
	u16 twt_sta_int;
	u8 twt_sta_upo_valid;
	u16 twt_sta_upo;
	u8 twt_sta_sp_valid;
	u16 twt_sta_sp;
	u8 twt_sta_dl_valid;
	u16 twt_sta_dl;
	u8 twt_sta_config_changed_valid;
	u8 twt_sta_config_changed;
};

#define IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_REQ_MSG_V01_MAX_MSG_LEN 35
extern struct qmi_elem_info
ims_private_service_wfc_call_twt_config_req_msg_v01_ei[];

struct ims_private_service_wfc_call_twt_config_rsp_msg_v01 {
	struct qmi_response_type_v01 resp;
};

#define IMS_PRIVATE_SERVICE_WFC_CALL_STATUS_IND_MSG_V01_MAX_MSG_LEN 4
extern struct
qmi_elem_info ims_private_service_wfc_call_status_ind_msg_v01_ei[];
#define IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_RSP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info
ims_private_service_wfc_call_twt_config_rsp_msg_v01_ei[];

#endif
+168 −32

File changed.

Preview size limit exceeded, changes collapsed.

+4 −11
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
#ifndef _CNSS_QMI_H
#define _CNSS_QMI_H

#include <linux/soc/qcom/qmi.h>
#include "wlan_firmware_service_v01.h"

struct cnss_plat_data;

@@ -29,7 +29,6 @@ struct cnss_qmi_event_qdss_trace_save_data {
};

#ifdef CONFIG_CNSS2_QMI
#include "wlan_firmware_service_v01.h"
#include "coexistence_service_v01.h"
#include "ip_multimedia_subsystem_private_service_v01.h"

@@ -61,8 +60,6 @@ int cnss_wlfw_antenna_grant_send_sync(struct cnss_plat_data *plat_priv);
int cnss_wlfw_dynamic_feature_mask_send_sync(struct cnss_plat_data *plat_priv);
int cnss_wlfw_get_info_send_sync(struct cnss_plat_data *plat_priv, int type,
				 void *cmd, int cmd_len);
int cnss_wlfw_wfc_call_status_send_sync(struct cnss_plat_data *plat_priv,
					u32 data_len, const void *data);
int cnss_register_coex_service(struct cnss_plat_data *plat_priv);
void cnss_unregister_coex_service(struct cnss_plat_data *plat_priv);
int coex_antenna_switch_to_wlan_send_sync_msg(struct cnss_plat_data *plat_priv);
@@ -184,13 +181,6 @@ int cnss_wlfw_get_info_send_sync(struct cnss_plat_data *plat_priv, int type,
	return 0;
}

static inline
int cnss_wlfw_wfc_call_status_send_sync(struct cnss_plat_data *plat_priv,
					u32 data_len, const void *data);
{
	return 0;
}

static inline
int cnss_register_coex_service(struct cnss_plat_data *plat_priv)
{
@@ -208,6 +198,9 @@ int coex_antenna_switch_to_wlan_send_sync_msg(struct cnss_plat_data *plat_priv)

static inline
int coex_antenna_switch_to_mdm_send_sync_msg(struct cnss_plat_data *plat_priv)
{
	return 0;
}

static inline
int cnss_wlfw_qdss_trace_mem_info_send_sync(struct cnss_plat_data *plat_priv)
Loading