1 // SPDX-License-Identifier: GPL-2.0-only 2 /* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. 3 * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 */ 5 6 #include "ip_multimedia_subsystem_private_service_v01.h" 7 8 static struct qmi_elem_info ims_private_service_header_value_v01_ei[] = { 9 { 10 .data_type = QMI_STRING, 11 .elem_len = IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1, 12 .elem_size = sizeof(char), 13 .array_type = NO_ARRAY, 14 .tlv_type = 0, 15 .offset = 16 offsetof(struct ims_private_service_header_value_v01, header), 17 }, 18 { 19 .data_type = QMI_STRING, 20 .elem_len = IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1, 21 .elem_size = sizeof(char), 22 .array_type = NO_ARRAY, 23 .tlv_type = 0, 24 .offset = 25 offsetof(struct ims_private_service_header_value_v01, value), 26 }, 27 { 28 .data_type = QMI_EOTI, 29 .array_type = NO_ARRAY, 30 .tlv_type = QMI_COMMON_TLV_TYPE, 31 }, 32 }; 33 34 struct qmi_elem_info 35 ims_private_service_subscribe_ind_req_msg_v01_ei[] = { 36 { 37 .data_type = QMI_OPT_FLAG, 38 .elem_len = 1, 39 .elem_size = sizeof(u8), 40 .array_type = NO_ARRAY, 41 .tlv_type = 0x10, 42 .offset = offsetof(struct 43 ims_private_service_subscribe_for_indications_req_msg_v01, 44 mt_invite_valid), 45 }, 46 { 47 .data_type = QMI_UNSIGNED_1_BYTE, 48 .elem_len = 1, 49 .elem_size = sizeof(u8), 50 .array_type = NO_ARRAY, 51 .tlv_type = 0x10, 52 .offset = offsetof(struct 53 ims_private_service_subscribe_for_indications_req_msg_v01, 54 mt_invite), 55 }, 56 { 57 .data_type = QMI_OPT_FLAG, 58 .elem_len = 1, 59 .elem_size = sizeof(u8), 60 .array_type = NO_ARRAY, 61 .tlv_type = 0x11, 62 .offset = offsetof(struct 63 ims_private_service_subscribe_for_indications_req_msg_v01, 64 wfc_call_status_valid), 65 }, 66 { 67 .data_type = QMI_UNSIGNED_1_BYTE, 68 .elem_len = 1, 69 .elem_size = sizeof(u8), 70 .array_type = NO_ARRAY, 71 .tlv_type = 0x11, 72 .offset = offsetof(struct 73 ims_private_service_subscribe_for_indications_req_msg_v01, 74 wfc_call_status), 75 }, 76 { 77 .data_type = QMI_EOTI, 78 .array_type = NO_ARRAY, 79 .tlv_type = QMI_COMMON_TLV_TYPE, 80 }, 81 }; 82 EXPORT_SYMBOL(ims_private_service_subscribe_ind_req_msg_v01_ei); 83 84 struct qmi_elem_info 85 ims_private_service_subscribe_ind_rsp_msg_v01_ei[] = { 86 { 87 .data_type = QMI_STRUCT, 88 .elem_len = 1, 89 .elem_size = sizeof(struct qmi_response_type_v01), 90 .array_type = NO_ARRAY, 91 .tlv_type = 0x02, 92 .offset = offsetof(struct 93 ims_private_service_subscribe_for_indications_rsp_msg_v01, 94 resp), 95 .ei_array = qmi_response_type_v01_ei, 96 }, 97 { 98 .data_type = QMI_EOTI, 99 .array_type = NO_ARRAY, 100 .tlv_type = QMI_COMMON_TLV_TYPE, 101 }, 102 }; 103 EXPORT_SYMBOL(ims_private_service_subscribe_ind_rsp_msg_v01_ei); 104 105 struct qmi_elem_info ims_private_service_mt_invite_ind_msg_v01_ei[] = { 106 { 107 .data_type = QMI_SIGNED_4_BYTE_ENUM, 108 .elem_len = 1, 109 .elem_size = sizeof(enum ims_subscription_type_enum_v01), 110 .array_type = NO_ARRAY, 111 .tlv_type = 0x01, 112 .offset = 113 offsetof(struct ims_private_service_mt_invite_ind_msg_v01, 114 subscription_type), 115 }, 116 { 117 .data_type = QMI_OPT_FLAG, 118 .elem_len = 1, 119 .elem_size = sizeof(u8), 120 .array_type = NO_ARRAY, 121 .tlv_type = 0x10, 122 .offset = 123 offsetof(struct ims_private_service_mt_invite_ind_msg_v01, 124 iccid_valid), 125 }, 126 { 127 .data_type = QMI_STRING, 128 .elem_len = IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 + 1, 129 .elem_size = sizeof(char), 130 .array_type = NO_ARRAY, 131 .tlv_type = 0x10, 132 .offset = 133 offsetof(struct ims_private_service_mt_invite_ind_msg_v01, 134 iccid), 135 }, 136 { 137 .data_type = QMI_OPT_FLAG, 138 .elem_len = 1, 139 .elem_size = sizeof(u8), 140 .array_type = NO_ARRAY, 141 .tlv_type = 0x11, 142 .offset = 143 offsetof(struct ims_private_service_mt_invite_ind_msg_v01, 144 header_value_list_valid), 145 }, 146 { 147 .data_type = QMI_DATA_LEN, 148 .elem_len = 1, 149 .elem_size = sizeof(u8), 150 .array_type = NO_ARRAY, 151 .tlv_type = 0x11, 152 .offset = 153 offsetof(struct ims_private_service_mt_invite_ind_msg_v01, 154 header_value_list_len), 155 }, 156 { 157 .data_type = QMI_STRUCT, 158 .elem_len = IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01, 159 .elem_size = 160 sizeof(struct ims_private_service_header_value_v01), 161 .array_type = VAR_LEN_ARRAY, 162 .tlv_type = 0x11, 163 .offset = 164 offsetof(struct ims_private_service_mt_invite_ind_msg_v01, 165 header_value_list), 166 .ei_array = ims_private_service_header_value_v01_ei, 167 }, 168 { 169 .data_type = QMI_EOTI, 170 .array_type = NO_ARRAY, 171 .tlv_type = QMI_COMMON_TLV_TYPE, 172 }, 173 }; 174 EXPORT_SYMBOL(ims_private_service_mt_invite_ind_msg_v01_ei); 175 176 struct qmi_elem_info ims_private_service_wfc_call_status_ind_msg_v01_ei[] = { 177 { 178 .data_type = QMI_UNSIGNED_1_BYTE, 179 .elem_len = 1, 180 .elem_size = sizeof(u8), 181 .array_type = NO_ARRAY, 182 .tlv_type = 0x01, 183 .offset = 184 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 185 wfc_call_active), 186 }, 187 { 188 .data_type = QMI_OPT_FLAG, 189 .elem_len = 1, 190 .elem_size = sizeof(u8), 191 .array_type = NO_ARRAY, 192 .tlv_type = 0x10, 193 .offset = 194 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 195 all_wfc_calls_held_valid), 196 }, 197 { 198 .data_type = QMI_UNSIGNED_1_BYTE, 199 .elem_len = 1, 200 .elem_size = sizeof(u8), 201 .array_type = NO_ARRAY, 202 .tlv_type = 0x10, 203 .offset = 204 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 205 all_wfc_calls_held), 206 }, 207 { 208 .data_type = QMI_OPT_FLAG, 209 .elem_len = 1, 210 .elem_size = sizeof(u8), 211 .array_type = NO_ARRAY, 212 .tlv_type = 0x11, 213 .offset = 214 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 215 is_wfc_emergency_valid), 216 }, 217 { 218 .data_type = QMI_UNSIGNED_1_BYTE, 219 .elem_len = 1, 220 .elem_size = sizeof(u8), 221 .array_type = NO_ARRAY, 222 .tlv_type = 0x11, 223 .offset = 224 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 225 is_wfc_emergency), 226 }, 227 { 228 .data_type = QMI_OPT_FLAG, 229 .elem_len = 1, 230 .elem_size = sizeof(u8), 231 .array_type = NO_ARRAY, 232 .tlv_type = 0x12, 233 .offset = 234 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 235 twt_ims_start_valid), 236 }, 237 { 238 .data_type = QMI_UNSIGNED_8_BYTE, 239 .elem_len = 1, 240 .elem_size = sizeof(u64), 241 .array_type = NO_ARRAY, 242 .tlv_type = 0x12, 243 .offset = 244 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 245 twt_ims_start), 246 }, 247 { 248 .data_type = QMI_OPT_FLAG, 249 .elem_len = 1, 250 .elem_size = sizeof(u8), 251 .array_type = NO_ARRAY, 252 .tlv_type = 0x13, 253 .offset = 254 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 255 twt_ims_int_valid), 256 }, 257 { 258 .data_type = QMI_UNSIGNED_2_BYTE, 259 .elem_len = 1, 260 .elem_size = sizeof(u16), 261 .array_type = NO_ARRAY, 262 .tlv_type = 0x13, 263 .offset = 264 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 265 twt_ims_int), 266 }, 267 { 268 .data_type = QMI_OPT_FLAG, 269 .elem_len = 1, 270 .elem_size = sizeof(u8), 271 .array_type = NO_ARRAY, 272 .tlv_type = 0x14, 273 .offset = 274 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 275 media_quality_valid), 276 }, 277 { 278 .data_type = QMI_SIGNED_4_BYTE_ENUM, 279 .elem_len = 1, 280 .elem_size = sizeof(enum wfc_media_quality_v01), 281 .array_type = NO_ARRAY, 282 .tlv_type = 0x14, 283 .offset = 284 offsetof(struct ims_private_service_wfc_call_status_ind_msg_v01, 285 media_quality), 286 }, 287 { 288 .data_type = QMI_EOTI, 289 .array_type = NO_ARRAY, 290 .tlv_type = QMI_COMMON_TLV_TYPE, 291 }, 292 }; 293 EXPORT_SYMBOL(ims_private_service_wfc_call_status_ind_msg_v01_ei); 294 295 struct qmi_elem_info 296 ims_private_service_wfc_call_twt_config_req_msg_v01_ei[] = { 297 { 298 .data_type = QMI_OPT_FLAG, 299 .elem_len = 1, 300 .elem_size = sizeof(u8), 301 .array_type = NO_ARRAY, 302 .tlv_type = 0x10, 303 .offset = 304 offsetof(struct 305 ims_private_service_wfc_call_twt_config_req_msg_v01, 306 twt_sta_start_valid), 307 }, 308 { 309 .data_type = QMI_UNSIGNED_8_BYTE, 310 .elem_len = 1, 311 .elem_size = sizeof(u64), 312 .array_type = NO_ARRAY, 313 .tlv_type = 0x10, 314 .offset = 315 offsetof(struct 316 ims_private_service_wfc_call_twt_config_req_msg_v01, 317 twt_sta_start), 318 }, 319 { 320 .data_type = QMI_OPT_FLAG, 321 .elem_len = 1, 322 .elem_size = sizeof(u8), 323 .array_type = NO_ARRAY, 324 .tlv_type = 0x11, 325 .offset = 326 offsetof(struct 327 ims_private_service_wfc_call_twt_config_req_msg_v01, 328 twt_sta_int_valid), 329 }, 330 { 331 .data_type = QMI_UNSIGNED_2_BYTE, 332 .elem_len = 1, 333 .elem_size = sizeof(u16), 334 .array_type = NO_ARRAY, 335 .tlv_type = 0x11, 336 .offset = 337 offsetof(struct 338 ims_private_service_wfc_call_twt_config_req_msg_v01, 339 twt_sta_int), 340 }, 341 { 342 .data_type = QMI_OPT_FLAG, 343 .elem_len = 1, 344 .elem_size = sizeof(u8), 345 .array_type = NO_ARRAY, 346 .tlv_type = 0x12, 347 .offset = 348 offsetof(struct 349 ims_private_service_wfc_call_twt_config_req_msg_v01, 350 twt_sta_upo_valid), 351 }, 352 { 353 .data_type = QMI_UNSIGNED_2_BYTE, 354 .elem_len = 1, 355 .elem_size = sizeof(u16), 356 .array_type = NO_ARRAY, 357 .tlv_type = 0x12, 358 .offset = 359 offsetof(struct 360 ims_private_service_wfc_call_twt_config_req_msg_v01, 361 twt_sta_upo), 362 }, 363 { 364 .data_type = QMI_OPT_FLAG, 365 .elem_len = 1, 366 .elem_size = sizeof(u8), 367 .array_type = NO_ARRAY, 368 .tlv_type = 0x13, 369 .offset = 370 offsetof(struct 371 ims_private_service_wfc_call_twt_config_req_msg_v01, 372 twt_sta_sp_valid), 373 }, 374 { 375 .data_type = QMI_UNSIGNED_2_BYTE, 376 .elem_len = 1, 377 .elem_size = sizeof(u16), 378 .array_type = NO_ARRAY, 379 .tlv_type = 0x13, 380 .offset = 381 offsetof(struct 382 ims_private_service_wfc_call_twt_config_req_msg_v01, 383 twt_sta_sp), 384 }, 385 { 386 .data_type = QMI_OPT_FLAG, 387 .elem_len = 1, 388 .elem_size = sizeof(u8), 389 .array_type = NO_ARRAY, 390 .tlv_type = 0x14, 391 .offset = 392 offsetof(struct 393 ims_private_service_wfc_call_twt_config_req_msg_v01, 394 twt_sta_dl_valid), 395 }, 396 { 397 .data_type = QMI_UNSIGNED_2_BYTE, 398 .elem_len = 1, 399 .elem_size = sizeof(u16), 400 .array_type = NO_ARRAY, 401 .tlv_type = 0x14, 402 .offset = 403 offsetof(struct 404 ims_private_service_wfc_call_twt_config_req_msg_v01, 405 twt_sta_dl), 406 }, 407 { 408 .data_type = QMI_OPT_FLAG, 409 .elem_len = 1, 410 .elem_size = sizeof(u8), 411 .array_type = NO_ARRAY, 412 .tlv_type = 0x15, 413 .offset = 414 offsetof(struct 415 ims_private_service_wfc_call_twt_config_req_msg_v01, 416 twt_sta_config_changed_valid), 417 }, 418 { 419 .data_type = QMI_UNSIGNED_1_BYTE, 420 .elem_len = 1, 421 .elem_size = sizeof(u8), 422 .array_type = NO_ARRAY, 423 .tlv_type = 0x15, 424 .offset = 425 offsetof(struct 426 ims_private_service_wfc_call_twt_config_req_msg_v01, 427 twt_sta_config_changed), 428 }, 429 { 430 .data_type = QMI_EOTI, 431 .array_type = NO_ARRAY, 432 .tlv_type = QMI_COMMON_TLV_TYPE, 433 }, 434 }; 435 EXPORT_SYMBOL(ims_private_service_wfc_call_twt_config_req_msg_v01_ei); 436 437 struct qmi_elem_info 438 ims_private_service_wfc_call_twt_config_rsp_msg_v01_ei[] = { 439 { 440 .data_type = QMI_STRUCT, 441 .elem_len = 1, 442 .elem_size = sizeof(struct qmi_response_type_v01), 443 .array_type = NO_ARRAY, 444 .tlv_type = 0x02, 445 .offset = 446 offsetof(struct 447 ims_private_service_wfc_call_twt_config_rsp_msg_v01, 448 resp), 449 .ei_array = qmi_response_type_v01_ei, 450 }, 451 { 452 .data_type = QMI_EOTI, 453 .array_type = NO_ARRAY, 454 .tlv_type = QMI_COMMON_TLV_TYPE, 455 }, 456 }; 457 EXPORT_SYMBOL(ims_private_service_wfc_call_twt_config_rsp_msg_v01_ei); 458