blob: f1dc281c866cdcf2578d480382d20d2796681309 [file] [log] [blame]
/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef QUPM_QMI_INTERFACE_H
#define QUPM_QMI_INTERFACE_H
#include <linux/qmi_encdec.h>
#include <soc/qcom/msm_qmi_interface.h>
#define QUPM_SERVICE_ID_V01 0x1FF
#define QUPM_SERVICE_VERS_V01 0x01
#define QMI_QUPM_READY_REQ_V01 0x0020
#define QMI_QUPM_READY_RESP_V01 0x0020
#define QMI_QUPM_TAKE_OWNERSHIP_REQ_V01 0x0021
#define QMI_QUPM_TAKE_OWNERSHIP_RESP_V01 0x0021
#define QMI_QUPM_GIVE_OWNERSHIP_REQ_V01 0x0022
#define QMI_QUPM_GIVE_OWNERSHIP_RESP_V01 0x0022
struct qupm_ready_req_msg_v01 {
uint32_t qup_id;
uint8_t flags_valid;
uint32_t flags;
};
#define QUPM_READY_REQ_MSG_V01_MAX_MSG_LEN 14
struct qupm_ready_resp_msg_v01 {
struct qmi_response_type_v01 resp;
uint8_t status_valid;
uint32_t status;
};
#define QUPM_READY_RESP_MSG_V01_MAX_MSG_LEN 14
struct qupm_take_ownership_req_msg_v01 {
uint32_t qup_id;
uint8_t flags_valid;
uint32_t flags;
};
#define QUPM_TAKE_OWNERSHIP_REQ_MSG_V01_MAX_MSG_LEN 14
struct qupm_take_ownership_resp_msg_v01 {
struct qmi_response_type_v01 resp;
uint8_t status_valid;
uint32_t status;
};
#define QUPM_TAKE_OWNERSHIP_RESP_MSG_V01_MAX_MSG_LEN 14
struct qupm_give_ownership_req_msg_v01 {
uint32_t qup_id;
uint8_t flags_valid;
uint32_t flags;
};
#define QUPM_GIVE_OWNERSHIP_REQ_MSG_V01_MAX_MSG_LEN 14
struct qupm_give_ownership_resp_msg_v01 {
struct qmi_response_type_v01 resp;
uint8_t status_valid;
uint32_t status;
};
#define QUPM_GIVE_OWNERSHIP_RESP_MSG_V01_MAX_MSG_LEN 14
/* QMI Message Encoder/Decoder structures */
struct elem_info qupm_ready_req_msg_v01_ei[] = {
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x01,
.offset = offsetof(struct qupm_ready_req_msg_v01,
qup_id),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(struct qupm_ready_req_msg_v01,
flags_valid),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(struct qupm_ready_req_msg_v01,
flags),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.is_array = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info qupm_ready_resp_msg_v01_ei[] = {
{
.data_type = QMI_STRUCT,
.elem_len = 1,
.elem_size = sizeof(struct qmi_response_type_v01),
.is_array = NO_ARRAY,
.tlv_type = 0x02,
.offset = offsetof(struct qupm_ready_resp_msg_v01,
resp),
.ei_array = qmi_response_type_v01_ei,
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(struct qupm_ready_resp_msg_v01,
status_valid),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(struct qupm_ready_resp_msg_v01,
status),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.is_array = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info qupm_take_ownership_req_msg_v01_ei[] = {
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x01,
.offset = offsetof(
struct qupm_take_ownership_req_msg_v01,
qup_id),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct qupm_take_ownership_req_msg_v01,
flags_valid),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct qupm_take_ownership_req_msg_v01,
flags),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.is_array = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info qupm_take_ownership_resp_msg_v01_ei[] = {
{
.data_type = QMI_STRUCT,
.elem_len = 1,
.elem_size = sizeof(struct qmi_response_type_v01),
.is_array = NO_ARRAY,
.tlv_type = 0x02,
.offset = offsetof(
struct qupm_take_ownership_resp_msg_v01,
resp),
.ei_array = qmi_response_type_v01_ei,
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct qupm_take_ownership_resp_msg_v01,
status_valid),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct qupm_take_ownership_resp_msg_v01,
status),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.is_array = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info qupm_give_ownership_req_msg_v01_ei[] = {
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x01,
.offset = offsetof(
struct qupm_give_ownership_req_msg_v01,
qup_id),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct qupm_give_ownership_req_msg_v01,
flags_valid),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct qupm_give_ownership_req_msg_v01,
flags),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.is_array = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info qupm_give_ownership_resp_msg_v01_ei[] = {
{
.data_type = QMI_STRUCT,
.elem_len = 1,
.elem_size = sizeof(struct qmi_response_type_v01),
.is_array = NO_ARRAY,
.tlv_type = 0x02,
.offset = offsetof(
struct qupm_give_ownership_resp_msg_v01,
resp),
.ei_array = qmi_response_type_v01_ei,
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct qupm_give_ownership_resp_msg_v01,
status_valid),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct qupm_give_ownership_resp_msg_v01,
status),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.is_array = QMI_COMMON_TLV_TYPE,
},
};
#endif /* QUPM_QMI_INTERFACE_H */