354 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (C) 2020 The Linux Foundation. All rights reserved.4 */5 6#include <linux/module.h>7#include <linux/soc/qcom/qmi.h>8 9#include "pdr_internal.h"10 11const struct qmi_elem_info servreg_location_entry_ei[] = {12 {13 .data_type = QMI_STRING,14 .elem_len = SERVREG_NAME_LENGTH + 1,15 .elem_size = sizeof(char),16 .array_type = NO_ARRAY,17 .tlv_type = 0,18 .offset = offsetof(struct servreg_location_entry,19 name),20 },21 {22 .data_type = QMI_UNSIGNED_4_BYTE,23 .elem_len = 1,24 .elem_size = sizeof(u32),25 .array_type = NO_ARRAY,26 .tlv_type = 0,27 .offset = offsetof(struct servreg_location_entry,28 instance),29 },30 {31 .data_type = QMI_UNSIGNED_1_BYTE,32 .elem_len = 1,33 .elem_size = sizeof(u8),34 .array_type = NO_ARRAY,35 .tlv_type = 0,36 .offset = offsetof(struct servreg_location_entry,37 service_data_valid),38 },39 {40 .data_type = QMI_UNSIGNED_4_BYTE,41 .elem_len = 1,42 .elem_size = sizeof(u32),43 .array_type = NO_ARRAY,44 .tlv_type = 0,45 .offset = offsetof(struct servreg_location_entry,46 service_data),47 },48 {}49};50EXPORT_SYMBOL_GPL(servreg_location_entry_ei);51 52const struct qmi_elem_info servreg_get_domain_list_req_ei[] = {53 {54 .data_type = QMI_STRING,55 .elem_len = SERVREG_NAME_LENGTH + 1,56 .elem_size = sizeof(char),57 .array_type = NO_ARRAY,58 .tlv_type = 0x01,59 .offset = offsetof(struct servreg_get_domain_list_req,60 service_name),61 },62 {63 .data_type = QMI_OPT_FLAG,64 .elem_len = 1,65 .elem_size = sizeof(u8),66 .array_type = NO_ARRAY,67 .tlv_type = 0x10,68 .offset = offsetof(struct servreg_get_domain_list_req,69 domain_offset_valid),70 },71 {72 .data_type = QMI_UNSIGNED_4_BYTE,73 .elem_len = 1,74 .elem_size = sizeof(u32),75 .array_type = NO_ARRAY,76 .tlv_type = 0x10,77 .offset = offsetof(struct servreg_get_domain_list_req,78 domain_offset),79 },80 {}81};82EXPORT_SYMBOL_GPL(servreg_get_domain_list_req_ei);83 84const struct qmi_elem_info servreg_get_domain_list_resp_ei[] = {85 {86 .data_type = QMI_STRUCT,87 .elem_len = 1,88 .elem_size = sizeof(struct qmi_response_type_v01),89 .array_type = NO_ARRAY,90 .tlv_type = 0x02,91 .offset = offsetof(struct servreg_get_domain_list_resp,92 resp),93 .ei_array = qmi_response_type_v01_ei,94 },95 {96 .data_type = QMI_OPT_FLAG,97 .elem_len = 1,98 .elem_size = sizeof(u8),99 .array_type = NO_ARRAY,100 .tlv_type = 0x10,101 .offset = offsetof(struct servreg_get_domain_list_resp,102 total_domains_valid),103 },104 {105 .data_type = QMI_UNSIGNED_2_BYTE,106 .elem_len = 1,107 .elem_size = sizeof(u16),108 .array_type = NO_ARRAY,109 .tlv_type = 0x10,110 .offset = offsetof(struct servreg_get_domain_list_resp,111 total_domains),112 },113 {114 .data_type = QMI_OPT_FLAG,115 .elem_len = 1,116 .elem_size = sizeof(u8),117 .array_type = NO_ARRAY,118 .tlv_type = 0x11,119 .offset = offsetof(struct servreg_get_domain_list_resp,120 db_rev_count_valid),121 },122 {123 .data_type = QMI_UNSIGNED_2_BYTE,124 .elem_len = 1,125 .elem_size = sizeof(u16),126 .array_type = NO_ARRAY,127 .tlv_type = 0x11,128 .offset = offsetof(struct servreg_get_domain_list_resp,129 db_rev_count),130 },131 {132 .data_type = QMI_OPT_FLAG,133 .elem_len = 1,134 .elem_size = sizeof(u8),135 .array_type = NO_ARRAY,136 .tlv_type = 0x12,137 .offset = offsetof(struct servreg_get_domain_list_resp,138 domain_list_valid),139 },140 {141 .data_type = QMI_DATA_LEN,142 .elem_len = 1,143 .elem_size = sizeof(u8),144 .array_type = NO_ARRAY,145 .tlv_type = 0x12,146 .offset = offsetof(struct servreg_get_domain_list_resp,147 domain_list_len),148 },149 {150 .data_type = QMI_STRUCT,151 .elem_len = SERVREG_DOMAIN_LIST_LENGTH,152 .elem_size = sizeof(struct servreg_location_entry),153 .array_type = VAR_LEN_ARRAY,154 .tlv_type = 0x12,155 .offset = offsetof(struct servreg_get_domain_list_resp,156 domain_list),157 .ei_array = servreg_location_entry_ei,158 },159 {}160};161EXPORT_SYMBOL_GPL(servreg_get_domain_list_resp_ei);162 163const struct qmi_elem_info servreg_register_listener_req_ei[] = {164 {165 .data_type = QMI_UNSIGNED_1_BYTE,166 .elem_len = 1,167 .elem_size = sizeof(u8),168 .array_type = NO_ARRAY,169 .tlv_type = 0x01,170 .offset = offsetof(struct servreg_register_listener_req,171 enable),172 },173 {174 .data_type = QMI_STRING,175 .elem_len = SERVREG_NAME_LENGTH + 1,176 .elem_size = sizeof(char),177 .array_type = NO_ARRAY,178 .tlv_type = 0x02,179 .offset = offsetof(struct servreg_register_listener_req,180 service_path),181 },182 {}183};184EXPORT_SYMBOL_GPL(servreg_register_listener_req_ei);185 186const struct qmi_elem_info servreg_register_listener_resp_ei[] = {187 {188 .data_type = QMI_STRUCT,189 .elem_len = 1,190 .elem_size = sizeof(struct qmi_response_type_v01),191 .array_type = NO_ARRAY,192 .tlv_type = 0x02,193 .offset = offsetof(struct servreg_register_listener_resp,194 resp),195 .ei_array = qmi_response_type_v01_ei,196 },197 {198 .data_type = QMI_OPT_FLAG,199 .elem_len = 1,200 .elem_size = sizeof(u8),201 .array_type = NO_ARRAY,202 .tlv_type = 0x10,203 .offset = offsetof(struct servreg_register_listener_resp,204 curr_state_valid),205 },206 {207 .data_type = QMI_SIGNED_4_BYTE_ENUM,208 .elem_len = 1,209 .elem_size = sizeof(enum servreg_service_state),210 .array_type = NO_ARRAY,211 .tlv_type = 0x10,212 .offset = offsetof(struct servreg_register_listener_resp,213 curr_state),214 },215 {}216};217EXPORT_SYMBOL_GPL(servreg_register_listener_resp_ei);218 219const struct qmi_elem_info servreg_restart_pd_req_ei[] = {220 {221 .data_type = QMI_STRING,222 .elem_len = SERVREG_NAME_LENGTH + 1,223 .elem_size = sizeof(char),224 .array_type = NO_ARRAY,225 .tlv_type = 0x01,226 .offset = offsetof(struct servreg_restart_pd_req,227 service_path),228 },229 {}230};231EXPORT_SYMBOL_GPL(servreg_restart_pd_req_ei);232 233const struct qmi_elem_info servreg_restart_pd_resp_ei[] = {234 {235 .data_type = QMI_STRUCT,236 .elem_len = 1,237 .elem_size = sizeof(struct qmi_response_type_v01),238 .array_type = NO_ARRAY,239 .tlv_type = 0x02,240 .offset = offsetof(struct servreg_restart_pd_resp,241 resp),242 .ei_array = qmi_response_type_v01_ei,243 },244 {}245};246EXPORT_SYMBOL_GPL(servreg_restart_pd_resp_ei);247 248const struct qmi_elem_info servreg_state_updated_ind_ei[] = {249 {250 .data_type = QMI_SIGNED_4_BYTE_ENUM,251 .elem_len = 1,252 .elem_size = sizeof(u32),253 .array_type = NO_ARRAY,254 .tlv_type = 0x01,255 .offset = offsetof(struct servreg_state_updated_ind,256 curr_state),257 },258 {259 .data_type = QMI_STRING,260 .elem_len = SERVREG_NAME_LENGTH + 1,261 .elem_size = sizeof(char),262 .array_type = NO_ARRAY,263 .tlv_type = 0x02,264 .offset = offsetof(struct servreg_state_updated_ind,265 service_path),266 },267 {268 .data_type = QMI_UNSIGNED_2_BYTE,269 .elem_len = 1,270 .elem_size = sizeof(u16),271 .array_type = NO_ARRAY,272 .tlv_type = 0x03,273 .offset = offsetof(struct servreg_state_updated_ind,274 transaction_id),275 },276 {}277};278EXPORT_SYMBOL_GPL(servreg_state_updated_ind_ei);279 280const struct qmi_elem_info servreg_set_ack_req_ei[] = {281 {282 .data_type = QMI_STRING,283 .elem_len = SERVREG_NAME_LENGTH + 1,284 .elem_size = sizeof(char),285 .array_type = NO_ARRAY,286 .tlv_type = 0x01,287 .offset = offsetof(struct servreg_set_ack_req,288 service_path),289 },290 {291 .data_type = QMI_UNSIGNED_2_BYTE,292 .elem_len = 1,293 .elem_size = sizeof(u16),294 .array_type = NO_ARRAY,295 .tlv_type = 0x02,296 .offset = offsetof(struct servreg_set_ack_req,297 transaction_id),298 },299 {}300};301EXPORT_SYMBOL_GPL(servreg_set_ack_req_ei);302 303const struct qmi_elem_info servreg_set_ack_resp_ei[] = {304 {305 .data_type = QMI_STRUCT,306 .elem_len = 1,307 .elem_size = sizeof(struct qmi_response_type_v01),308 .array_type = NO_ARRAY,309 .tlv_type = 0x02,310 .offset = offsetof(struct servreg_set_ack_resp,311 resp),312 .ei_array = qmi_response_type_v01_ei,313 },314 {}315};316EXPORT_SYMBOL_GPL(servreg_set_ack_resp_ei);317 318const struct qmi_elem_info servreg_loc_pfr_req_ei[] = {319 {320 .data_type = QMI_STRING,321 .elem_len = SERVREG_NAME_LENGTH + 1,322 .elem_size = sizeof(char),323 .array_type = VAR_LEN_ARRAY,324 .tlv_type = 0x01,325 .offset = offsetof(struct servreg_loc_pfr_req, service)326 },327 {328 .data_type = QMI_STRING,329 .elem_len = SERVREG_NAME_LENGTH + 1,330 .elem_size = sizeof(char),331 .array_type = VAR_LEN_ARRAY,332 .tlv_type = 0x02,333 .offset = offsetof(struct servreg_loc_pfr_req, reason)334 },335 {}336};337EXPORT_SYMBOL_GPL(servreg_loc_pfr_req_ei);338 339const struct qmi_elem_info servreg_loc_pfr_resp_ei[] = {340 {341 .data_type = QMI_STRUCT,342 .elem_len = 1,343 .elem_size = sizeof_field(struct servreg_loc_pfr_resp, rsp),344 .tlv_type = 0x02,345 .offset = offsetof(struct servreg_loc_pfr_resp, rsp),346 .ei_array = qmi_response_type_v01_ei,347 },348 {}349};350EXPORT_SYMBOL_GPL(servreg_loc_pfr_resp_ei);351 352MODULE_LICENSE("GPL");353MODULE_DESCRIPTION("Qualcomm Protection Domain messages data");354