xref: /wlan-driver/platform/cnss_utils/cnss_plat_ipc_service_v01.c (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /* Copyright (c) 2021, The Linux Foundation. All rights reserved. */
3 
4 #include "cnss_plat_ipc_service_v01.h"
5 #include <linux/module.h>
6 
7 struct qmi_elem_info cnss_plat_ipc_qmi_init_setup_req_msg_v01_ei[] = {
8 	{
9 		.data_type      = QMI_UNSIGNED_1_BYTE,
10 		.elem_len       = 1,
11 		.elem_size      = sizeof(u8),
12 		.array_type       = NO_ARRAY,
13 		.tlv_type       = 0x01,
14 		.offset         = offsetof(struct
15 					   cnss_plat_ipc_qmi_init_setup_req_msg_v01,
16 					   dms_mac_addr_supported),
17 	},
18 	{
19 		.data_type      = QMI_UNSIGNED_1_BYTE,
20 		.elem_len       = 1,
21 		.elem_size      = sizeof(u8),
22 		.array_type       = NO_ARRAY,
23 		.tlv_type       = 0x02,
24 		.offset         = offsetof(struct
25 					   cnss_plat_ipc_qmi_init_setup_req_msg_v01,
26 					   qdss_hw_trace_override),
27 	},
28 	{
29 		.data_type      = QMI_UNSIGNED_4_BYTE,
30 		.elem_len       = 1,
31 		.elem_size      = sizeof(u32),
32 		.array_type       = NO_ARRAY,
33 		.tlv_type       = 0x03,
34 		.offset         = offsetof(struct
35 					   cnss_plat_ipc_qmi_init_setup_req_msg_v01,
36 					   cal_file_available_bitmask),
37 	},
38 	{
39 		.data_type      = QMI_EOTI,
40 		.array_type       = NO_ARRAY,
41 		.tlv_type       = QMI_COMMON_TLV_TYPE,
42 	},
43 };
44 EXPORT_SYMBOL(cnss_plat_ipc_qmi_init_setup_req_msg_v01_ei);
45 
46 struct qmi_elem_info cnss_plat_ipc_qmi_init_setup_resp_msg_v01_ei[] = {
47 	{
48 		.data_type      = QMI_STRUCT,
49 		.elem_len       = 1,
50 		.elem_size      = sizeof(struct qmi_response_type_v01),
51 		.array_type       = NO_ARRAY,
52 		.tlv_type       = 0x02,
53 		.offset         = offsetof(struct
54 					   cnss_plat_ipc_qmi_init_setup_resp_msg_v01,
55 					   resp),
56 		.ei_array      = qmi_response_type_v01_ei,
57 	},
58 	{
59 		.data_type      = QMI_UNSIGNED_8_BYTE,
60 		.elem_len       = 1,
61 		.elem_size      = sizeof(u64),
62 		.array_type       = NO_ARRAY,
63 		.tlv_type       = 0x03,
64 		.offset         = offsetof(struct
65 					   cnss_plat_ipc_qmi_init_setup_resp_msg_v01,
66 					   drv_status),
67 	},
68 	{
69 		.data_type      = QMI_EOTI,
70 		.array_type       = NO_ARRAY,
71 		.tlv_type       = QMI_COMMON_TLV_TYPE,
72 	},
73 };
74 EXPORT_SYMBOL(cnss_plat_ipc_qmi_init_setup_resp_msg_v01_ei);
75 
76 struct qmi_elem_info cnss_plat_ipc_qmi_file_download_ind_msg_v01_ei[] = {
77 	{
78 		.data_type      = QMI_STRING,
79 		.elem_len       = CNSS_PLAT_IPC_QMI_MAX_FILE_NAME_LEN_V01 + 1,
80 		.elem_size      = sizeof(char),
81 		.array_type       = NO_ARRAY,
82 		.tlv_type       = 0x01,
83 		.offset         = offsetof(struct
84 					   cnss_plat_ipc_qmi_file_download_ind_msg_v01,
85 					   file_name),
86 	},
87 	{
88 		.data_type      = QMI_UNSIGNED_4_BYTE,
89 		.elem_len       = 1,
90 		.elem_size      = sizeof(u32),
91 		.array_type       = NO_ARRAY,
92 		.tlv_type       = 0x02,
93 		.offset         = offsetof(struct
94 					   cnss_plat_ipc_qmi_file_download_ind_msg_v01,
95 					   file_id),
96 	},
97 	{
98 		.data_type      = QMI_EOTI,
99 		.array_type       = NO_ARRAY,
100 		.tlv_type       = QMI_COMMON_TLV_TYPE,
101 	},
102 };
103 EXPORT_SYMBOL(cnss_plat_ipc_qmi_file_download_ind_msg_v01_ei);
104 
105 struct qmi_elem_info cnss_plat_ipc_qmi_file_download_req_msg_v01_ei[] = {
106 	{
107 		.data_type      = QMI_UNSIGNED_4_BYTE,
108 		.elem_len       = 1,
109 		.elem_size      = sizeof(u32),
110 		.array_type       = NO_ARRAY,
111 		.tlv_type       = 0x01,
112 		.offset         = offsetof(struct
113 					   cnss_plat_ipc_qmi_file_download_req_msg_v01,
114 					   file_id),
115 	},
116 	{
117 		.data_type      = QMI_UNSIGNED_4_BYTE,
118 		.elem_len       = 1,
119 		.elem_size      = sizeof(u32),
120 		.array_type       = NO_ARRAY,
121 		.tlv_type       = 0x02,
122 		.offset         = offsetof(struct
123 					   cnss_plat_ipc_qmi_file_download_req_msg_v01,
124 					   file_size),
125 	},
126 	{
127 		.data_type      = QMI_UNSIGNED_1_BYTE,
128 		.elem_len       = 1,
129 		.elem_size      = sizeof(u8),
130 		.array_type       = NO_ARRAY,
131 		.tlv_type       = 0x03,
132 		.offset         = offsetof(struct
133 					   cnss_plat_ipc_qmi_file_download_req_msg_v01,
134 					   end),
135 	},
136 	{
137 		.data_type      = QMI_UNSIGNED_4_BYTE,
138 		.elem_len       = 1,
139 		.elem_size      = sizeof(u32),
140 		.array_type       = NO_ARRAY,
141 		.tlv_type       = 0x04,
142 		.offset         = offsetof(struct
143 					   cnss_plat_ipc_qmi_file_download_req_msg_v01,
144 					   seg_index),
145 	},
146 	{
147 		.data_type      = QMI_DATA_LEN,
148 		.elem_len       = 1,
149 		.elem_size      = sizeof(u16),
150 		.array_type       = NO_ARRAY,
151 		.tlv_type       = 0x05,
152 		.offset         = offsetof(struct
153 					   cnss_plat_ipc_qmi_file_download_req_msg_v01,
154 					   seg_buf_len),
155 	},
156 	{
157 		.data_type      = QMI_UNSIGNED_1_BYTE,
158 		.elem_len       = CNSS_PLAT_IPC_QMI_MAX_DATA_SIZE_V01,
159 		.elem_size      = sizeof(u8),
160 		.array_type       = VAR_LEN_ARRAY,
161 		.tlv_type       = 0x05,
162 		.offset         = offsetof(struct
163 					   cnss_plat_ipc_qmi_file_download_req_msg_v01,
164 					   seg_buf),
165 	},
166 	{
167 		.data_type      = QMI_EOTI,
168 		.array_type       = NO_ARRAY,
169 		.tlv_type       = QMI_COMMON_TLV_TYPE,
170 	},
171 };
172 EXPORT_SYMBOL(cnss_plat_ipc_qmi_file_download_req_msg_v01_ei);
173 
174 struct qmi_elem_info cnss_plat_ipc_qmi_file_download_resp_msg_v01_ei[] = {
175 	{
176 		.data_type      = QMI_STRUCT,
177 		.elem_len       = 1,
178 		.elem_size      = sizeof(struct qmi_response_type_v01),
179 		.array_type       = NO_ARRAY,
180 		.tlv_type       = 0x02,
181 		.offset         = offsetof(struct
182 					   cnss_plat_ipc_qmi_file_download_resp_msg_v01,
183 					   resp),
184 		.ei_array      = qmi_response_type_v01_ei,
185 	},
186 	{
187 		.data_type      = QMI_UNSIGNED_4_BYTE,
188 		.elem_len       = 1,
189 		.elem_size      = sizeof(u32),
190 		.array_type       = NO_ARRAY,
191 		.tlv_type       = 0x03,
192 		.offset         = offsetof(struct
193 					   cnss_plat_ipc_qmi_file_download_resp_msg_v01,
194 					   file_id),
195 	},
196 	{
197 		.data_type      = QMI_UNSIGNED_4_BYTE,
198 		.elem_len       = 1,
199 		.elem_size      = sizeof(u32),
200 		.array_type       = NO_ARRAY,
201 		.tlv_type       = 0x04,
202 		.offset         = offsetof(struct
203 					   cnss_plat_ipc_qmi_file_download_resp_msg_v01,
204 					   seg_index),
205 	},
206 	{
207 		.data_type      = QMI_EOTI,
208 		.array_type       = NO_ARRAY,
209 		.tlv_type       = QMI_COMMON_TLV_TYPE,
210 	},
211 };
212 EXPORT_SYMBOL(cnss_plat_ipc_qmi_file_download_resp_msg_v01_ei);
213 
214 struct qmi_elem_info cnss_plat_ipc_qmi_file_upload_ind_msg_v01_ei[] = {
215 	{
216 		.data_type      = QMI_STRING,
217 		.elem_len       = CNSS_PLAT_IPC_QMI_MAX_FILE_NAME_LEN_V01 + 1,
218 		.elem_size      = sizeof(char),
219 		.array_type       = NO_ARRAY,
220 		.tlv_type       = 0x01,
221 		.offset         = offsetof(struct
222 					   cnss_plat_ipc_qmi_file_upload_ind_msg_v01,
223 					   file_name),
224 	},
225 	{
226 		.data_type      = QMI_UNSIGNED_4_BYTE,
227 		.elem_len       = 1,
228 		.elem_size      = sizeof(u32),
229 		.array_type       = NO_ARRAY,
230 		.tlv_type       = 0x02,
231 		.offset         = offsetof(struct
232 					   cnss_plat_ipc_qmi_file_upload_ind_msg_v01,
233 					   file_id),
234 	},
235 	{
236 		.data_type      = QMI_UNSIGNED_4_BYTE,
237 		.elem_len       = 1,
238 		.elem_size      = sizeof(u32),
239 		.array_type       = NO_ARRAY,
240 		.tlv_type       = 0x03,
241 		.offset         = offsetof(struct
242 					   cnss_plat_ipc_qmi_file_upload_ind_msg_v01,
243 					   file_size),
244 	},
245 	{
246 		.data_type      = QMI_EOTI,
247 		.array_type       = NO_ARRAY,
248 		.tlv_type       = QMI_COMMON_TLV_TYPE,
249 	},
250 };
251 EXPORT_SYMBOL(cnss_plat_ipc_qmi_file_upload_ind_msg_v01_ei);
252 
253 struct qmi_elem_info cnss_plat_ipc_qmi_file_upload_req_msg_v01_ei[] = {
254 	{
255 		.data_type      = QMI_UNSIGNED_4_BYTE,
256 		.elem_len       = 1,
257 		.elem_size      = sizeof(u32),
258 		.array_type       = NO_ARRAY,
259 		.tlv_type       = 0x01,
260 		.offset         = offsetof(struct
261 					   cnss_plat_ipc_qmi_file_upload_req_msg_v01,
262 					   file_id),
263 	},
264 	{
265 		.data_type      = QMI_UNSIGNED_4_BYTE,
266 		.elem_len       = 1,
267 		.elem_size      = sizeof(u32),
268 		.array_type       = NO_ARRAY,
269 		.tlv_type       = 0x02,
270 		.offset         = offsetof(struct
271 					   cnss_plat_ipc_qmi_file_upload_req_msg_v01,
272 					   seg_index),
273 	},
274 	{
275 		.data_type      = QMI_EOTI,
276 		.array_type       = NO_ARRAY,
277 		.tlv_type       = QMI_COMMON_TLV_TYPE,
278 	},
279 };
280 EXPORT_SYMBOL(cnss_plat_ipc_qmi_file_upload_req_msg_v01_ei);
281 
282 struct qmi_elem_info cnss_plat_ipc_qmi_file_upload_resp_msg_v01_ei[] = {
283 	{
284 		.data_type      = QMI_STRUCT,
285 		.elem_len       = 1,
286 		.elem_size      = sizeof(struct qmi_response_type_v01),
287 		.array_type       = NO_ARRAY,
288 		.tlv_type       = 0x02,
289 		.offset         = offsetof(struct
290 					   cnss_plat_ipc_qmi_file_upload_resp_msg_v01,
291 					   resp),
292 		.ei_array      = qmi_response_type_v01_ei,
293 	},
294 	{
295 		.data_type      = QMI_UNSIGNED_4_BYTE,
296 		.elem_len       = 1,
297 		.elem_size      = sizeof(u32),
298 		.array_type       = NO_ARRAY,
299 		.tlv_type       = 0x03,
300 		.offset         = offsetof(struct
301 					   cnss_plat_ipc_qmi_file_upload_resp_msg_v01,
302 					   file_id),
303 	},
304 	{
305 		.data_type      = QMI_UNSIGNED_1_BYTE,
306 		.elem_len       = 1,
307 		.elem_size      = sizeof(u8),
308 		.array_type       = NO_ARRAY,
309 		.tlv_type       = 0x04,
310 		.offset         = offsetof(struct
311 					   cnss_plat_ipc_qmi_file_upload_resp_msg_v01,
312 					   end),
313 	},
314 	{
315 		.data_type      = QMI_UNSIGNED_4_BYTE,
316 		.elem_len       = 1,
317 		.elem_size      = sizeof(u32),
318 		.array_type       = NO_ARRAY,
319 		.tlv_type       = 0x05,
320 		.offset         = offsetof(struct
321 					   cnss_plat_ipc_qmi_file_upload_resp_msg_v01,
322 					   seg_index),
323 	},
324 	{
325 		.data_type      = QMI_DATA_LEN,
326 		.elem_len       = 1,
327 		.elem_size      = sizeof(u16),
328 		.array_type       = NO_ARRAY,
329 		.tlv_type       = 0x06,
330 		.offset         = offsetof(struct
331 					   cnss_plat_ipc_qmi_file_upload_resp_msg_v01,
332 					   seg_buf_len),
333 	},
334 	{
335 		.data_type      = QMI_UNSIGNED_1_BYTE,
336 		.elem_len       = CNSS_PLAT_IPC_QMI_MAX_DATA_SIZE_V01,
337 		.elem_size      = sizeof(u8),
338 		.array_type       = VAR_LEN_ARRAY,
339 		.tlv_type       = 0x06,
340 		.offset         = offsetof(struct
341 					   cnss_plat_ipc_qmi_file_upload_resp_msg_v01,
342 					   seg_buf),
343 	},
344 	{
345 		.data_type      = QMI_EOTI,
346 		.array_type       = NO_ARRAY,
347 		.tlv_type       = QMI_COMMON_TLV_TYPE,
348 	},
349 };
350 EXPORT_SYMBOL(cnss_plat_ipc_qmi_file_upload_resp_msg_v01_ei);
351 
352 struct qmi_elem_info cnss_plat_ipc_qmi_reg_client_req_msg_v01_ei[] = {
353 	{
354 		.data_type      = QMI_OPT_FLAG,
355 		.elem_len       = 1,
356 		.elem_size      = sizeof(u8),
357 		.array_type       = NO_ARRAY,
358 		.tlv_type       = 0x10,
359 		.offset         = offsetof(struct
360 					   cnss_plat_ipc_qmi_reg_client_req_msg_v01,
361 					   client_id_valid),
362 	},
363 	{
364 		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
365 		.elem_len       = 1,
366 		.elem_size      = sizeof(enum cnss_plat_ipc_qmi_client_id_v01),
367 		.array_type       = NO_ARRAY,
368 		.tlv_type       = 0x10,
369 		.offset         = offsetof(struct
370 					   cnss_plat_ipc_qmi_reg_client_req_msg_v01,
371 					   client_id),
372 	},
373 	{
374 		.data_type      = QMI_EOTI,
375 		.array_type       = NO_ARRAY,
376 		.tlv_type       = QMI_COMMON_TLV_TYPE,
377 	},
378 };
379 EXPORT_SYMBOL(cnss_plat_ipc_qmi_reg_client_req_msg_v01_ei);
380 
381 struct qmi_elem_info cnss_plat_ipc_qmi_reg_client_resp_msg_v01_ei[] = {
382 	{
383 		.data_type      = QMI_STRUCT,
384 		.elem_len       = 1,
385 		.elem_size      = sizeof(struct qmi_response_type_v01),
386 		.array_type       = NO_ARRAY,
387 		.tlv_type       = 0x02,
388 		.offset         = offsetof(struct
389 					   cnss_plat_ipc_qmi_reg_client_resp_msg_v01,
390 					   resp),
391 		.ei_array      = qmi_response_type_v01_ei,
392 	},
393 	{
394 		.data_type      = QMI_EOTI,
395 		.array_type       = NO_ARRAY,
396 		.tlv_type       = QMI_COMMON_TLV_TYPE,
397 	},
398 };
399 EXPORT_SYMBOL(cnss_plat_ipc_qmi_reg_client_resp_msg_v01_ei);
400 
401 MODULE_LICENSE("GPL v2");
402 MODULE_DESCRIPTION("WLAN FW QMI service");
403