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