xref: /openbmc/linux/drivers/net/ipa/ipa_qmi_msg.c (revision 7ac629e3)
1530f9216SAlex Elder // SPDX-License-Identifier: GPL-2.0
2530f9216SAlex Elder 
3530f9216SAlex Elder /* Copyright (c) 2018, The Linux Foundation. All rights reserved.
4530f9216SAlex Elder  * Copyright (C) 2018-2020 Linaro Ltd.
5530f9216SAlex Elder  */
6530f9216SAlex Elder #include <linux/stddef.h>
7530f9216SAlex Elder #include <linux/soc/qcom/qmi.h>
8530f9216SAlex Elder 
9530f9216SAlex Elder #include "ipa_qmi_msg.h"
10530f9216SAlex Elder 
11530f9216SAlex Elder /* QMI message structure definition for struct ipa_indication_register_req */
12530f9216SAlex Elder struct qmi_elem_info ipa_indication_register_req_ei[] = {
13530f9216SAlex Elder 	{
14530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
15530f9216SAlex Elder 		.elem_len	= 1,
16530f9216SAlex Elder 		.elem_size	=
17530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
18530f9216SAlex Elder 				     master_driver_init_complete_valid),
19530f9216SAlex Elder 		.tlv_type	= 0x10,
20530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
21530f9216SAlex Elder 					   master_driver_init_complete_valid),
22530f9216SAlex Elder 	},
23530f9216SAlex Elder 	{
24530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
25530f9216SAlex Elder 		.elem_len	= 1,
26530f9216SAlex Elder 		.elem_size	=
27530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
28530f9216SAlex Elder 				     master_driver_init_complete),
29530f9216SAlex Elder 		.tlv_type	= 0x10,
30530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
31530f9216SAlex Elder 					   master_driver_init_complete),
32530f9216SAlex Elder 	},
33530f9216SAlex Elder 	{
34530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
35530f9216SAlex Elder 		.elem_len	= 1,
36530f9216SAlex Elder 		.elem_size	=
37530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
38530f9216SAlex Elder 				     data_usage_quota_reached_valid),
39530f9216SAlex Elder 		.tlv_type	= 0x11,
40530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
41530f9216SAlex Elder 					   data_usage_quota_reached_valid),
42530f9216SAlex Elder 	},
43530f9216SAlex Elder 	{
44530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
45530f9216SAlex Elder 		.elem_len	= 1,
46530f9216SAlex Elder 		.elem_size	=
47530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
48530f9216SAlex Elder 				     data_usage_quota_reached),
49530f9216SAlex Elder 		.tlv_type	= 0x11,
50530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
51530f9216SAlex Elder 					   data_usage_quota_reached),
52530f9216SAlex Elder 	},
53530f9216SAlex Elder 	{
54530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
55530f9216SAlex Elder 		.elem_len	= 1,
56530f9216SAlex Elder 		.elem_size	=
57530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
58530f9216SAlex Elder 				     ipa_mhi_ready_ind_valid),
598aa68304SAlex Elder 		.tlv_type	= 0x12,
60530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
61530f9216SAlex Elder 					   ipa_mhi_ready_ind_valid),
62530f9216SAlex Elder 	},
63530f9216SAlex Elder 	{
64530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
65530f9216SAlex Elder 		.elem_len	= 1,
66530f9216SAlex Elder 		.elem_size	=
67530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
68530f9216SAlex Elder 				     ipa_mhi_ready_ind),
698aa68304SAlex Elder 		.tlv_type	= 0x12,
70530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
71530f9216SAlex Elder 					   ipa_mhi_ready_ind),
72530f9216SAlex Elder 	},
73530f9216SAlex Elder 	{
74530f9216SAlex Elder 		.data_type	= QMI_EOTI,
75530f9216SAlex Elder 	},
76530f9216SAlex Elder };
77530f9216SAlex Elder 
78530f9216SAlex Elder /* QMI message structure definition for struct ipa_indication_register_rsp */
79530f9216SAlex Elder struct qmi_elem_info ipa_indication_register_rsp_ei[] = {
80530f9216SAlex Elder 	{
81530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
82530f9216SAlex Elder 		.elem_len	= 1,
83530f9216SAlex Elder 		.elem_size	=
84530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_rsp,
85530f9216SAlex Elder 				     rsp),
86530f9216SAlex Elder 		.tlv_type	= 0x02,
87530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_rsp,
88530f9216SAlex Elder 					   rsp),
89530f9216SAlex Elder 		.ei_array	= qmi_response_type_v01_ei,
90530f9216SAlex Elder 	},
91530f9216SAlex Elder 	{
92530f9216SAlex Elder 		.data_type	= QMI_EOTI,
93530f9216SAlex Elder 	},
94530f9216SAlex Elder };
95530f9216SAlex Elder 
96530f9216SAlex Elder /* QMI message structure definition for struct ipa_driver_init_complete_req */
97530f9216SAlex Elder struct qmi_elem_info ipa_driver_init_complete_req_ei[] = {
98530f9216SAlex Elder 	{
99530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
100530f9216SAlex Elder 		.elem_len	= 1,
101530f9216SAlex Elder 		.elem_size	=
102530f9216SAlex Elder 			sizeof_field(struct ipa_driver_init_complete_req,
103530f9216SAlex Elder 				     status),
104530f9216SAlex Elder 		.tlv_type	= 0x01,
105530f9216SAlex Elder 		.offset		= offsetof(struct ipa_driver_init_complete_req,
106530f9216SAlex Elder 					   status),
107530f9216SAlex Elder 	},
108530f9216SAlex Elder 	{
109530f9216SAlex Elder 		.data_type	= QMI_EOTI,
110530f9216SAlex Elder 	},
111530f9216SAlex Elder };
112530f9216SAlex Elder 
113530f9216SAlex Elder /* QMI message structure definition for struct ipa_driver_init_complete_rsp */
114530f9216SAlex Elder struct qmi_elem_info ipa_driver_init_complete_rsp_ei[] = {
115530f9216SAlex Elder 	{
116530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
117530f9216SAlex Elder 		.elem_len	= 1,
118530f9216SAlex Elder 		.elem_size	=
119530f9216SAlex Elder 			sizeof_field(struct ipa_driver_init_complete_rsp,
120530f9216SAlex Elder 				     rsp),
121530f9216SAlex Elder 		.tlv_type	= 0x02,
12274478ea4SAlex Elder 		.offset		= offsetof(struct ipa_driver_init_complete_rsp,
123530f9216SAlex Elder 					   rsp),
124530f9216SAlex Elder 		.ei_array	= qmi_response_type_v01_ei,
125530f9216SAlex Elder 	},
126530f9216SAlex Elder 	{
127530f9216SAlex Elder 		.data_type	= QMI_EOTI,
128530f9216SAlex Elder 	},
129530f9216SAlex Elder };
130530f9216SAlex Elder 
131530f9216SAlex Elder /* QMI message structure definition for struct ipa_init_complete_ind */
132530f9216SAlex Elder struct qmi_elem_info ipa_init_complete_ind_ei[] = {
133530f9216SAlex Elder 	{
134530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
135530f9216SAlex Elder 		.elem_len	= 1,
136530f9216SAlex Elder 		.elem_size	=
137530f9216SAlex Elder 			sizeof_field(struct ipa_init_complete_ind,
138530f9216SAlex Elder 				     status),
139530f9216SAlex Elder 		.tlv_type	= 0x02,
14074478ea4SAlex Elder 		.offset		= offsetof(struct ipa_init_complete_ind,
141530f9216SAlex Elder 					   status),
142530f9216SAlex Elder 		.ei_array	= qmi_response_type_v01_ei,
143530f9216SAlex Elder 	},
144530f9216SAlex Elder 	{
145530f9216SAlex Elder 		.data_type	= QMI_EOTI,
146530f9216SAlex Elder 	},
147530f9216SAlex Elder };
148530f9216SAlex Elder 
149530f9216SAlex Elder /* QMI message structure definition for struct ipa_mem_bounds */
150530f9216SAlex Elder struct qmi_elem_info ipa_mem_bounds_ei[] = {
151530f9216SAlex Elder 	{
152530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
153530f9216SAlex Elder 		.elem_len	= 1,
154530f9216SAlex Elder 		.elem_size	=
155530f9216SAlex Elder 			sizeof_field(struct ipa_mem_bounds, start),
156530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_bounds, start),
157530f9216SAlex Elder 	},
158530f9216SAlex Elder 	{
159530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
160530f9216SAlex Elder 		.elem_len	= 1,
161530f9216SAlex Elder 		.elem_size	=
162530f9216SAlex Elder 			sizeof_field(struct ipa_mem_bounds, end),
163530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_bounds, end),
164530f9216SAlex Elder 	},
165530f9216SAlex Elder 	{
166530f9216SAlex Elder 		.data_type	= QMI_EOTI,
167530f9216SAlex Elder 	},
168530f9216SAlex Elder };
169530f9216SAlex Elder 
170530f9216SAlex Elder /* QMI message structure definition for struct ipa_mem_array */
171530f9216SAlex Elder struct qmi_elem_info ipa_mem_array_ei[] = {
172530f9216SAlex Elder 	{
173530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
174530f9216SAlex Elder 		.elem_len	= 1,
175530f9216SAlex Elder 		.elem_size	=
176530f9216SAlex Elder 			sizeof_field(struct ipa_mem_array, start),
177530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_array, start),
178530f9216SAlex Elder 	},
179530f9216SAlex Elder 	{
180530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
181530f9216SAlex Elder 		.elem_len	= 1,
182530f9216SAlex Elder 		.elem_size	=
183530f9216SAlex Elder 			sizeof_field(struct ipa_mem_array, count),
184530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_array, count),
185530f9216SAlex Elder 	},
186530f9216SAlex Elder 	{
187530f9216SAlex Elder 		.data_type	= QMI_EOTI,
188530f9216SAlex Elder 	},
189530f9216SAlex Elder };
190530f9216SAlex Elder 
191530f9216SAlex Elder /* QMI message structure definition for struct ipa_mem_range */
192530f9216SAlex Elder struct qmi_elem_info ipa_mem_range_ei[] = {
193530f9216SAlex Elder 	{
194530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
195530f9216SAlex Elder 		.elem_len	= 1,
196530f9216SAlex Elder 		.elem_size	=
197530f9216SAlex Elder 			sizeof_field(struct ipa_mem_range, start),
198530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_range, start),
199530f9216SAlex Elder 	},
200530f9216SAlex Elder 	{
201530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
202530f9216SAlex Elder 		.elem_len	= 1,
203530f9216SAlex Elder 		.elem_size	=
204530f9216SAlex Elder 			sizeof_field(struct ipa_mem_range, size),
205530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_range, size),
206530f9216SAlex Elder 	},
207530f9216SAlex Elder 	{
208530f9216SAlex Elder 		.data_type	= QMI_EOTI,
209530f9216SAlex Elder 	},
210530f9216SAlex Elder };
211530f9216SAlex Elder 
212530f9216SAlex Elder /* QMI message structure definition for struct ipa_init_modem_driver_req */
213530f9216SAlex Elder struct qmi_elem_info ipa_init_modem_driver_req_ei[] = {
214530f9216SAlex Elder 	{
215530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
216530f9216SAlex Elder 		.elem_len	= 1,
217530f9216SAlex Elder 		.elem_size	=
218530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
219530f9216SAlex Elder 				     platform_type_valid),
220530f9216SAlex Elder 		.tlv_type	= 0x10,
22174478ea4SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
222530f9216SAlex Elder 					   platform_type_valid),
223530f9216SAlex Elder 	},
224530f9216SAlex Elder 	{
225530f9216SAlex Elder 		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
226530f9216SAlex Elder 		.elem_len	= 1,
227530f9216SAlex Elder 		.elem_size	=
228530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
229530f9216SAlex Elder 				     platform_type),
230530f9216SAlex Elder 		.tlv_type	= 0x10,
231530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
232530f9216SAlex Elder 					   platform_type),
233530f9216SAlex Elder 	},
234530f9216SAlex Elder 	{
235530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
236530f9216SAlex Elder 		.elem_len	= 1,
237530f9216SAlex Elder 		.elem_size	=
238530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
239530f9216SAlex Elder 				     hdr_tbl_info_valid),
240530f9216SAlex Elder 		.tlv_type	= 0x11,
241530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
242530f9216SAlex Elder 					   hdr_tbl_info_valid),
243530f9216SAlex Elder 	},
244530f9216SAlex Elder 	{
245530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
246530f9216SAlex Elder 		.elem_len	= 1,
247530f9216SAlex Elder 		.elem_size	=
248530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
249530f9216SAlex Elder 				     hdr_tbl_info),
250530f9216SAlex Elder 		.tlv_type	= 0x11,
251530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
252530f9216SAlex Elder 					   hdr_tbl_info),
253530f9216SAlex Elder 		.ei_array	= ipa_mem_bounds_ei,
254530f9216SAlex Elder 	},
255530f9216SAlex Elder 	{
256530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
257530f9216SAlex Elder 		.elem_len	= 1,
258530f9216SAlex Elder 		.elem_size	=
259530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
260530f9216SAlex Elder 				     v4_route_tbl_info_valid),
261530f9216SAlex Elder 		.tlv_type	= 0x12,
262530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
263530f9216SAlex Elder 					   v4_route_tbl_info_valid),
264530f9216SAlex Elder 	},
265530f9216SAlex Elder 	{
266530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
267530f9216SAlex Elder 		.elem_len	= 1,
268530f9216SAlex Elder 		.elem_size	=
269530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
270530f9216SAlex Elder 				     v4_route_tbl_info),
271530f9216SAlex Elder 		.tlv_type	= 0x12,
272530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
273530f9216SAlex Elder 					   v4_route_tbl_info),
274530f9216SAlex Elder 		.ei_array	= ipa_mem_array_ei,
275530f9216SAlex Elder 	},
276530f9216SAlex Elder 	{
277530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
278530f9216SAlex Elder 		.elem_len	= 1,
279530f9216SAlex Elder 		.elem_size	=
280530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
281530f9216SAlex Elder 				     v6_route_tbl_info_valid),
282530f9216SAlex Elder 		.tlv_type	= 0x13,
283530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
284530f9216SAlex Elder 					   v6_route_tbl_info_valid),
285530f9216SAlex Elder 	},
286530f9216SAlex Elder 	{
287530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
288530f9216SAlex Elder 		.elem_len	= 1,
289530f9216SAlex Elder 		.elem_size	=
290530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
291530f9216SAlex Elder 				     v6_route_tbl_info),
292530f9216SAlex Elder 		.tlv_type	= 0x13,
293530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
294530f9216SAlex Elder 					   v6_route_tbl_info),
295530f9216SAlex Elder 		.ei_array	= ipa_mem_array_ei,
296530f9216SAlex Elder 	},
297530f9216SAlex Elder 	{
298530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
299530f9216SAlex Elder 		.elem_len	= 1,
300530f9216SAlex Elder 		.elem_size	=
301530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
302530f9216SAlex Elder 				     v4_filter_tbl_start_valid),
303530f9216SAlex Elder 		.tlv_type	= 0x14,
304530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
305530f9216SAlex Elder 					   v4_filter_tbl_start_valid),
306530f9216SAlex Elder 	},
307530f9216SAlex Elder 	{
308530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
309530f9216SAlex Elder 		.elem_len	= 1,
310530f9216SAlex Elder 		.elem_size	=
311530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
312530f9216SAlex Elder 				     v4_filter_tbl_start),
313530f9216SAlex Elder 		.tlv_type	= 0x14,
314530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
315530f9216SAlex Elder 					   v4_filter_tbl_start),
316530f9216SAlex Elder 	},
317530f9216SAlex Elder 	{
318530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
319530f9216SAlex Elder 		.elem_len	= 1,
320530f9216SAlex Elder 		.elem_size	=
321530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
322530f9216SAlex Elder 				     v6_filter_tbl_start_valid),
323530f9216SAlex Elder 		.tlv_type	= 0x15,
324530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
325530f9216SAlex Elder 					   v6_filter_tbl_start_valid),
326530f9216SAlex Elder 	},
327530f9216SAlex Elder 	{
328530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
329530f9216SAlex Elder 		.elem_len	= 1,
330530f9216SAlex Elder 		.elem_size	=
331530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
332530f9216SAlex Elder 				     v6_filter_tbl_start),
333530f9216SAlex Elder 		.tlv_type	= 0x15,
334530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
335530f9216SAlex Elder 					   v6_filter_tbl_start),
336530f9216SAlex Elder 	},
337530f9216SAlex Elder 	{
338530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
339530f9216SAlex Elder 		.elem_len	= 1,
340530f9216SAlex Elder 		.elem_size	=
341530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
342530f9216SAlex Elder 				     modem_mem_info_valid),
343530f9216SAlex Elder 		.tlv_type	= 0x16,
344530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
345530f9216SAlex Elder 					   modem_mem_info_valid),
346530f9216SAlex Elder 	},
347530f9216SAlex Elder 	{
348530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
349530f9216SAlex Elder 		.elem_len	= 1,
350530f9216SAlex Elder 		.elem_size	=
351530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
352530f9216SAlex Elder 				     modem_mem_info),
353530f9216SAlex Elder 		.tlv_type	= 0x16,
354530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
355530f9216SAlex Elder 					   modem_mem_info),
356530f9216SAlex Elder 		.ei_array	= ipa_mem_range_ei,
357530f9216SAlex Elder 	},
358530f9216SAlex Elder 	{
359530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
360530f9216SAlex Elder 		.elem_len	= 1,
361530f9216SAlex Elder 		.elem_size	=
362530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
363530f9216SAlex Elder 				     ctrl_comm_dest_end_pt_valid),
364530f9216SAlex Elder 		.tlv_type	= 0x17,
365530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
366530f9216SAlex Elder 					   ctrl_comm_dest_end_pt_valid),
367530f9216SAlex Elder 	},
368530f9216SAlex Elder 	{
369530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
370530f9216SAlex Elder 		.elem_len	= 1,
371530f9216SAlex Elder 		.elem_size	=
372530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
373530f9216SAlex Elder 				     ctrl_comm_dest_end_pt),
374530f9216SAlex Elder 		.tlv_type	= 0x17,
375530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
376530f9216SAlex Elder 					   ctrl_comm_dest_end_pt),
377530f9216SAlex Elder 	},
378530f9216SAlex Elder 	{
379530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
380530f9216SAlex Elder 		.elem_len	= 1,
381530f9216SAlex Elder 		.elem_size	=
382530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
383530f9216SAlex Elder 				     skip_uc_load_valid),
384530f9216SAlex Elder 		.tlv_type	= 0x18,
385530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
386530f9216SAlex Elder 					   skip_uc_load_valid),
387530f9216SAlex Elder 	},
388530f9216SAlex Elder 	{
389530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
390530f9216SAlex Elder 		.elem_len	= 1,
391530f9216SAlex Elder 		.elem_size	=
392530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
393530f9216SAlex Elder 				     skip_uc_load),
394530f9216SAlex Elder 		.tlv_type	= 0x18,
395530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
396530f9216SAlex Elder 					   skip_uc_load),
397530f9216SAlex Elder 	},
398530f9216SAlex Elder 	{
399530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
400530f9216SAlex Elder 		.elem_len	= 1,
401530f9216SAlex Elder 		.elem_size	=
402530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
403530f9216SAlex Elder 				     hdr_proc_ctx_tbl_info_valid),
404530f9216SAlex Elder 		.tlv_type	= 0x19,
405530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
406530f9216SAlex Elder 					   hdr_proc_ctx_tbl_info_valid),
407530f9216SAlex Elder 	},
408530f9216SAlex Elder 	{
409530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
410530f9216SAlex Elder 		.elem_len	= 1,
411530f9216SAlex Elder 		.elem_size	=
412530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
413530f9216SAlex Elder 				     hdr_proc_ctx_tbl_info),
414530f9216SAlex Elder 		.tlv_type	= 0x19,
415530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
416530f9216SAlex Elder 					   hdr_proc_ctx_tbl_info),
417530f9216SAlex Elder 		.ei_array	= ipa_mem_bounds_ei,
418530f9216SAlex Elder 	},
419530f9216SAlex Elder 	{
420530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
421530f9216SAlex Elder 		.elem_len	= 1,
422530f9216SAlex Elder 		.elem_size	=
423530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
424530f9216SAlex Elder 				     zip_tbl_info_valid),
425530f9216SAlex Elder 		.tlv_type	= 0x1a,
426530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
427530f9216SAlex Elder 					   zip_tbl_info_valid),
428530f9216SAlex Elder 	},
429530f9216SAlex Elder 	{
430530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
431530f9216SAlex Elder 		.elem_len	= 1,
432530f9216SAlex Elder 		.elem_size	=
433530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
434530f9216SAlex Elder 				     zip_tbl_info),
435530f9216SAlex Elder 		.tlv_type	= 0x1a,
436530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
437530f9216SAlex Elder 					   zip_tbl_info),
438530f9216SAlex Elder 		.ei_array	= ipa_mem_bounds_ei,
439530f9216SAlex Elder 	},
440530f9216SAlex Elder 	{
441530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
442530f9216SAlex Elder 		.elem_len	= 1,
443530f9216SAlex Elder 		.elem_size	=
444530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
445530f9216SAlex Elder 				     v4_hash_route_tbl_info_valid),
446530f9216SAlex Elder 		.tlv_type	= 0x1b,
447530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
448530f9216SAlex Elder 					   v4_hash_route_tbl_info_valid),
449530f9216SAlex Elder 	},
450530f9216SAlex Elder 	{
451530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
452530f9216SAlex Elder 		.elem_len	= 1,
453530f9216SAlex Elder 		.elem_size	=
454530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
455530f9216SAlex Elder 				     v4_hash_route_tbl_info),
456530f9216SAlex Elder 		.tlv_type	= 0x1b,
457530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
458530f9216SAlex Elder 					   v4_hash_route_tbl_info),
459530f9216SAlex Elder 		.ei_array	= ipa_mem_array_ei,
460530f9216SAlex Elder 	},
461530f9216SAlex Elder 	{
462530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
463530f9216SAlex Elder 		.elem_len	= 1,
464530f9216SAlex Elder 		.elem_size	=
465530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
466530f9216SAlex Elder 				     v6_hash_route_tbl_info_valid),
467530f9216SAlex Elder 		.tlv_type	= 0x1c,
468530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
469530f9216SAlex Elder 					   v6_hash_route_tbl_info_valid),
470530f9216SAlex Elder 	},
471530f9216SAlex Elder 	{
472530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
473530f9216SAlex Elder 		.elem_len	= 1,
474530f9216SAlex Elder 		.elem_size	=
475530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
476530f9216SAlex Elder 				     v6_hash_route_tbl_info),
477530f9216SAlex Elder 		.tlv_type	= 0x1c,
478530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
479530f9216SAlex Elder 					   v6_hash_route_tbl_info),
480530f9216SAlex Elder 		.ei_array	= ipa_mem_array_ei,
481530f9216SAlex Elder 	},
482530f9216SAlex Elder 	{
483530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
484530f9216SAlex Elder 		.elem_len	= 1,
485530f9216SAlex Elder 		.elem_size	=
486530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
487530f9216SAlex Elder 				     v4_hash_filter_tbl_start_valid),
488530f9216SAlex Elder 		.tlv_type	= 0x1d,
489530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
490530f9216SAlex Elder 					   v4_hash_filter_tbl_start_valid),
491530f9216SAlex Elder 	},
492530f9216SAlex Elder 	{
493530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
494530f9216SAlex Elder 		.elem_len	= 1,
495530f9216SAlex Elder 		.elem_size	=
496530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
497530f9216SAlex Elder 				     v4_hash_filter_tbl_start),
498530f9216SAlex Elder 		.tlv_type	= 0x1d,
499530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
500530f9216SAlex Elder 					   v4_hash_filter_tbl_start),
501530f9216SAlex Elder 	},
502530f9216SAlex Elder 	{
503530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
504530f9216SAlex Elder 		.elem_len	= 1,
505530f9216SAlex Elder 		.elem_size	=
506530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
507530f9216SAlex Elder 				     v6_hash_filter_tbl_start_valid),
508530f9216SAlex Elder 		.tlv_type	= 0x1e,
509530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
510530f9216SAlex Elder 					   v6_hash_filter_tbl_start_valid),
511530f9216SAlex Elder 	},
512530f9216SAlex Elder 	{
513530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
514530f9216SAlex Elder 		.elem_len	= 1,
515530f9216SAlex Elder 		.elem_size	=
516530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
517530f9216SAlex Elder 				     v6_hash_filter_tbl_start),
518530f9216SAlex Elder 		.tlv_type	= 0x1e,
519530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
520530f9216SAlex Elder 					   v6_hash_filter_tbl_start),
521530f9216SAlex Elder 	},
522530f9216SAlex Elder 	{
523530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
524530f9216SAlex Elder 		.elem_len	= 1,
525530f9216SAlex Elder 		.elem_size	=
526530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
527530f9216SAlex Elder 				     hw_stats_quota_base_addr_valid),
528530f9216SAlex Elder 		.tlv_type	= 0x1f,
529530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
530530f9216SAlex Elder 					   hw_stats_quota_base_addr_valid),
531530f9216SAlex Elder 	},
532530f9216SAlex Elder 	{
533*7ac629e3SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
534530f9216SAlex Elder 		.elem_len	= 1,
535530f9216SAlex Elder 		.elem_size	=
536530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
537530f9216SAlex Elder 				     hw_stats_quota_base_addr),
538530f9216SAlex Elder 		.tlv_type	= 0x1f,
539530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
540530f9216SAlex Elder 					   hw_stats_quota_base_addr),
541530f9216SAlex Elder 	},
542530f9216SAlex Elder 	{
543530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
544530f9216SAlex Elder 		.elem_len	= 1,
545530f9216SAlex Elder 		.elem_size	=
546530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
547530f9216SAlex Elder 				     hw_stats_quota_size_valid),
548*7ac629e3SAlex Elder 		.tlv_type	= 0x20,
549530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
550530f9216SAlex Elder 					   hw_stats_quota_size_valid),
551530f9216SAlex Elder 	},
552530f9216SAlex Elder 	{
553*7ac629e3SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
554530f9216SAlex Elder 		.elem_len	= 1,
555530f9216SAlex Elder 		.elem_size	=
556530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
557530f9216SAlex Elder 				     hw_stats_quota_size),
558*7ac629e3SAlex Elder 		.tlv_type	= 0x20,
559530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
560530f9216SAlex Elder 					   hw_stats_quota_size),
561530f9216SAlex Elder 	},
562530f9216SAlex Elder 	{
563530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
564530f9216SAlex Elder 		.elem_len	= 1,
565530f9216SAlex Elder 		.elem_size	=
566530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
567*7ac629e3SAlex Elder 				     hw_stats_drop_base_addr_valid),
568*7ac629e3SAlex Elder 		.tlv_type	= 0x21,
569*7ac629e3SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
570*7ac629e3SAlex Elder 					   hw_stats_drop_base_addr_valid),
571*7ac629e3SAlex Elder 	},
572*7ac629e3SAlex Elder 	{
573*7ac629e3SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
574*7ac629e3SAlex Elder 		.elem_len	= 1,
575*7ac629e3SAlex Elder 		.elem_size	=
576*7ac629e3SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
577*7ac629e3SAlex Elder 				     hw_stats_drop_base_addr),
578*7ac629e3SAlex Elder 		.tlv_type	= 0x21,
579*7ac629e3SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
580*7ac629e3SAlex Elder 					   hw_stats_drop_base_addr),
581*7ac629e3SAlex Elder 	},
582*7ac629e3SAlex Elder 	{
583*7ac629e3SAlex Elder 		.data_type	= QMI_OPT_FLAG,
584*7ac629e3SAlex Elder 		.elem_len	= 1,
585*7ac629e3SAlex Elder 		.elem_size	=
586*7ac629e3SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
587530f9216SAlex Elder 				     hw_stats_drop_size_valid),
588*7ac629e3SAlex Elder 		.tlv_type	= 0x22,
589530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
590530f9216SAlex Elder 					   hw_stats_drop_size_valid),
591530f9216SAlex Elder 	},
592530f9216SAlex Elder 	{
593*7ac629e3SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
594530f9216SAlex Elder 		.elem_len	= 1,
595530f9216SAlex Elder 		.elem_size	=
596530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
597530f9216SAlex Elder 				     hw_stats_drop_size),
598*7ac629e3SAlex Elder 		.tlv_type	= 0x22,
599530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
600530f9216SAlex Elder 					   hw_stats_drop_size),
601530f9216SAlex Elder 	},
602530f9216SAlex Elder 	{
603530f9216SAlex Elder 		.data_type	= QMI_EOTI,
604530f9216SAlex Elder 	},
605530f9216SAlex Elder };
606530f9216SAlex Elder 
607530f9216SAlex Elder /* QMI message structure definition for struct ipa_init_modem_driver_rsp */
608530f9216SAlex Elder struct qmi_elem_info ipa_init_modem_driver_rsp_ei[] = {
609530f9216SAlex Elder 	{
610530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
611530f9216SAlex Elder 		.elem_len	= 1,
612530f9216SAlex Elder 		.elem_size	=
613530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
614530f9216SAlex Elder 				     rsp),
615530f9216SAlex Elder 		.tlv_type	= 0x02,
616530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
617530f9216SAlex Elder 					   rsp),
618530f9216SAlex Elder 		.ei_array	= qmi_response_type_v01_ei,
619530f9216SAlex Elder 	},
620530f9216SAlex Elder 	{
621530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
622530f9216SAlex Elder 		.elem_len	= 1,
623530f9216SAlex Elder 		.elem_size	=
624530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
625530f9216SAlex Elder 				     ctrl_comm_dest_end_pt_valid),
626530f9216SAlex Elder 		.tlv_type	= 0x10,
627530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
628530f9216SAlex Elder 					   ctrl_comm_dest_end_pt_valid),
629530f9216SAlex Elder 	},
630530f9216SAlex Elder 	{
631530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
632530f9216SAlex Elder 		.elem_len	= 1,
633530f9216SAlex Elder 		.elem_size	=
634530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
635530f9216SAlex Elder 				     ctrl_comm_dest_end_pt),
636530f9216SAlex Elder 		.tlv_type	= 0x10,
637530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
638530f9216SAlex Elder 					   ctrl_comm_dest_end_pt),
639530f9216SAlex Elder 	},
640530f9216SAlex Elder 	{
641530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
642530f9216SAlex Elder 		.elem_len	= 1,
643530f9216SAlex Elder 		.elem_size	=
644530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
645530f9216SAlex Elder 				     default_end_pt_valid),
646530f9216SAlex Elder 		.tlv_type	= 0x11,
647530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
648530f9216SAlex Elder 					   default_end_pt_valid),
649530f9216SAlex Elder 	},
650530f9216SAlex Elder 	{
651530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
652530f9216SAlex Elder 		.elem_len	= 1,
653530f9216SAlex Elder 		.elem_size	=
654530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
655530f9216SAlex Elder 				     default_end_pt),
656530f9216SAlex Elder 		.tlv_type	= 0x11,
657530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
658530f9216SAlex Elder 					   default_end_pt),
659530f9216SAlex Elder 	},
660530f9216SAlex Elder 	{
661530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
662530f9216SAlex Elder 		.elem_len	= 1,
663530f9216SAlex Elder 		.elem_size	=
664530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
665530f9216SAlex Elder 				     modem_driver_init_pending_valid),
666530f9216SAlex Elder 		.tlv_type	= 0x12,
667530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
668530f9216SAlex Elder 					   modem_driver_init_pending_valid),
669530f9216SAlex Elder 	},
670530f9216SAlex Elder 	{
671530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
672530f9216SAlex Elder 		.elem_len	= 1,
673530f9216SAlex Elder 		.elem_size	=
674530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
675530f9216SAlex Elder 				     modem_driver_init_pending),
676530f9216SAlex Elder 		.tlv_type	= 0x12,
677530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
678530f9216SAlex Elder 					   modem_driver_init_pending),
679530f9216SAlex Elder 	},
680530f9216SAlex Elder 	{
681530f9216SAlex Elder 		.data_type	= QMI_EOTI,
682530f9216SAlex Elder 	},
683530f9216SAlex Elder };
684