blob: 33f0f20571212fd95c43c4bc452302c0ec6a187a [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2012
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 * Filename:
38 * ---------
39 * _el1_uart_str.h
40 *
41 * Project:
42 * --------
43 * UMOLYA
44 *
45 * Description:
46 * ------------
47 * Local header file of EL1_IDC
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 ****************************************************************************/
54
55#ifndef _IDC_UART_STR_
56#define _IDC_UART_STR_
57
58#include "kal_general_types.h"
59#include "kal_public_defs.h"
60#include "kal_public_api.h"
61
62#include "el1_llisth.h"
63#include "idc_def.h"
64#include "idc_lte_def.h"
65#include "idc_nr_def.h"
66
67#ifdef __MTK_TARGET__
68#include "idc_internal.h"
69#include "dcl_idc.h"
70#include "drv_idc.h"
71#endif
72
73
74/****************************************/
75/* Interface between IDC and IDC Driver */
76/****************************************/
77
78typedef enum
79{
80 IDC_MD_LTE_DRX_IND = 2,
81 IDC_MD_NR_DRX_IND = 3,
82 IDC_MD_LTE_INT_DETECT_IND = 4,
83 IDC_MD_NR_INT_DETECT_IND = 5,
84 IDC_MD_LTE_PHASE_IND = 6,
85 IDC_MD_NR_PHASE_IND = 7,
86 IDC_MD_LTE_STATE_IND = 8,
87 IDC_MD_NR_STATE_IND = 9,
88 IDC_MD_LTE_SUSPEND_PTA_AP_IND = 10,
89 IDC_MD_NR_SUSPEND_PTA_AP_IND = 11,
90 IDC_MD_LTE_GNSS_BLANK_IND = 12,
91 IDC_MD_NR_GNSS_BLANK_IND = 13,
92 IDC_MD_TX_SUSP_IND = 14,
93 IDC_MD_EXTEND_LEN_TYPE = 15,
94 IDC_MD_NORMAL_HW_SIGNAL_IND = 16
95}idc_md_normal_hw_signal_type_enum;
96
97typedef enum
98{
99 IDC_SUBTYPE_MD_LTE_RX_IND = 1,
100 IDC_SUBTYPE_MD_LTE_TX_IND = 2,
101 IDC_SUBTYPE_MD_LTE_SLP_DUR_IND = 4,
102 IDC_SUBTYPE_MD_LTE_BLOCK_CONSYS_TX_IND = 5,
103 IDC_SUBTYPE_MD_SEND_HW_SIGNAL_ACK_IND = 7,
104 IDC_SUBTYPE_MD_LTE_SCELL_ACTIVATE_IND = 8,
105 IDC_SUBTYPE_MD_TX_BWP_IND = 9,
106 IDC_SUBTYPE_MD_RX_BWP_IND = 10,
107 IDC_SUBTYPE_MD_PATTERN_SYNC_IND = 11,
108 IDC_SUBTYPE_MD_NR_RX_IND = 12,
109 IDC_SUBTYPE_MD_NR_TX_IND = 13,
110 IDC_SUBTYPE_MD_NR_SLP_DUR_IND = 14,
111 IDC_SUBTYPE_MD_NR_BLOCK_CONSYS_TX_IND = 15,
112 IDC_SUBTYPE_MD_EXPECT_CONSYS_TX_PWR_LIMIT_IND = 16,
113 IDC_SUBTYPE_MD_LTE_TX_IND_1 = 17,
114 IDC_SUBTYPE_MD_LTE_TX_IND_2 = 18,
115 IDC_SUBTYPE_MD_NR_TX_IND_1 = 19,
116 IDC_SUBTYPE_MD_NR_TX_IND_2 = 20,
117 IDC_SUBTYPE_MD_NR_SCELL_ACTIVATE_IND = 21,
118 IDC_SUBTYPE_MD_TX_BWP_FW_IND = 22,
119 IDC_SUBTYPE_MD_RX_BWP_FW_IND = 23,
120 IDC_SUBTYPE_MD_LTE_TX_FW_IND = 24,
121 IDC_SUBTYPE_MD_NR_TX_FW_IND = 25,
122 IDC_MD_EXTEND_HW_SIGNAL_IND = 26
123}idc_md_extend_hw_signal_subtype_enum;
124
125typedef enum
126{
127 IDC_CONSYS_RESEND_NTF = 2,
128 IDC_CONSYS_BT_MAX_PWR_BACKOFF_NTF = 5,
129 IDC_CONSYS_ACTIVE_BSS_NTF = 6,
130 IDC_CONSYS_WIFI_MAX_PWR_BACKOFF_NTF = 7,
131 IDC_CONSYS_INT_DETECT_IND = 8,
132 IDC_CONSYS_WIFI_RSSI_IND = 9,
133 IDC_CONSYS_BT_RSSI_IND = 10,
134 IDC_CONSYS_WIFI_RX_IND = 11,
135 IDC_CONSYS_BT_TX_IND = 12,
136 IDC_CONSYS_BT_RX_IND = 13,
137 IDC_CONSYS_NORMAL_HW_SIGNAL_IND = 15
138}idc_consys_normal_hw_signal_type_enum;
139
140typedef enum
141{
142 IDC_SUBTYPE_CONSYS_RX_GRANT_NTF = 0,
143 IDC_SUBTYPE_CONSYS_TX_GRANT_NTF = 1,
144 IDC_SUBTYPE_CONSYS_TDM_NTF = 2,
145 IDC_SUBTYPE_CONSYS_SEND_HW_SIGNAL_ACK_NTF = 3,
146 IDC_SUBTYPE_CONSYS_WIFI_TX_IND = 4,
147 IDC_SUBTYPE_CONSYS_BT_PRE_TX_IND = 5,
148 IDC_SUBTYPE_CONSYS_TDM_ON_IND = 6,
149 IDC_SUBTYPE_CONSYS_TIMEOUT_DROP_NTF = 7,
150 IDC_CONSYS_EXTEND_HW_SIGNAL_IND = 8
151}idc_consys_extend_hw_signal_subtype_enum;
152
153/************************/
154/***** LTE to CONSYS ****/
155/************************/
156
157/***** IDC MD Normal HW Signal *****/
158
159typedef struct _idc_md_normal_hw_signal_ind
160{
161 /* First Byte */
162 kal_uint16 firstBit :1; // Always be 0
163 kal_uint16 type :4;
164 kal_uint16 ssn :3;
165 /* Second Byte */
166 kal_uint16 secondBit :1; // Always be 1
167 kal_uint16 data :7;
168}idc_md_normal_hw_signal_ind;
169
170typedef struct _idc_md_lte_drx_ind
171{
172 /* First Byte */
173 kal_uint16 firstBit :1; // Always be 0
174 kal_uint16 type :4;
175 kal_uint16 ssn :3;
176 /* Second Byte */
177 kal_uint16 secondBit :1; // Always be 1
178 kal_uint16 isLTEDRX :1;
179 kal_uint16 rsvd :6;
180}idc_md_lte_drx_ind;
181
182typedef struct _idc_md_nr_drx_ind
183{
184 /* First Byte */
185 kal_uint16 firstBit :1; // Always be 0
186 kal_uint16 type :4;
187 kal_uint16 ssn :3;
188 /* Second Byte */
189 kal_uint16 secondBit :1; // Always be 1
190 kal_uint16 isNRDRX :1;
191 kal_uint16 rsvd :6;
192}idc_md_nr_drx_ind;
193
194typedef struct _idc_md_lte_int_detect_ind
195{
196 /* First Byte */
197 kal_uint16 firstBit :1; // Always be 0
198 kal_uint16 type :4;
199 kal_uint16 ssn :3;
200 /* Second Byte */
201 kal_uint16 secondBit :1; // Always be 1
202 kal_uint16 solType :2; // FDM: 0, PWR: 1, TDM: 2
203 kal_uint16 rsvd :5;
204}idc_md_lte_int_detect_ind;
205
206typedef struct _idc_md_nr_int_detect_ind
207{
208 /* First Byte */
209 kal_uint16 firstBit :1; // Always be 0
210 kal_uint16 type :4;
211 kal_uint16 ssn :3;
212 /* Second Byte */
213 kal_uint16 secondBit :1; // Always be 1
214 kal_uint16 solType :2; // FDM: 0, PWR: 1, TDM: 2
215 kal_uint16 rsvd :5;
216}idc_md_nr_int_detect_ind;
217
218typedef struct _idc_md_lte_phase_ind
219{
220 /* First Byte */
221 kal_uint16 firstBit :1; // Always be 0
222 kal_uint16 type :4;
223 kal_uint16 ssn :3;
224 /* Second Byte */
225 kal_uint16 secondBit :1; // Always be 1
226 kal_uint16 ltePhaseEnd :1; // Always be 1
227 kal_uint16 rsvd :6;
228}idc_md_lte_phase_ind;
229
230typedef struct _idc_md_nr_phase_ind
231{
232 /* First Byte */
233 kal_uint16 firstBit :1; // Always be 0
234 kal_uint16 type :4;
235 kal_uint16 ssn :3;
236 /* Second Byte */
237 kal_uint16 secondBit :1; // Always be 1
238 kal_uint16 nrPhaseEnd :1; // Always be 1
239 kal_uint16 rsvd :6;
240}idc_md_nr_phase_ind;
241
242typedef struct _idc_md_lte_state_ind
243{
244 /* First Byte */
245 kal_uint16 firstBit :1; // Always be 0
246 kal_uint16 type :4;
247 kal_uint16 ssn :3;
248 /* Second Byte */
249 kal_uint16 secondBit :1; // Always be 1
250 kal_uint16 lteEnterConn :1;
251 kal_uint16 rsvd :6;
252}idc_md_lte_state_ind;
253
254typedef struct _idc_md_nr_state_ind
255{
256 /* First Byte */
257 kal_uint16 firstBit :1; // Always be 0
258 kal_uint16 type :4;
259 kal_uint16 ssn :3;
260 /* Second Byte */
261 kal_uint16 secondBit :1; // Always be 1
262 kal_uint16 nrEnterConn :1;
263 kal_uint16 rsvd :6;
264}idc_md_nr_state_ind;
265
266typedef struct _idc_md_lte_suspend_pta_ap_ind
267{
268 /* First Byte */
269 kal_uint16 firstBit :1; // Always be 0
270 kal_uint16 type :4;
271 kal_uint16 ssn :3;
272 /* Second Byte */
273 kal_uint16 secondBit :1; // Always be 1
274 kal_uint16 rxGroupSusp :3; // 0: resume proactive protection, 1: suspend proactive protection, bit0: group0, bit1: group2, bit2: group4
275 kal_uint16 rsvd :4;
276}idc_md_lte_suspend_pta_ap_ind;
277
278typedef struct _idc_md_nr_suspend_pta_ap_ind
279{
280 /* First Byte */
281 kal_uint16 firstBit :1; // Always be 0
282 kal_uint16 type :4;
283 kal_uint16 ssn :3;
284 /* Second Byte */
285 kal_uint16 secondBit :1; // Always be 1
286 kal_uint16 rxGroupSusp :3; // 0: resume proactive protection, 1: suspend proactive protection, bit0: group1, bit1: group3, bit2: group5
287 kal_uint16 rsvd :4;
288}idc_md_nr_suspend_pta_ap_ind;
289
290typedef struct _idc_md_lte_gnss_blank_ind
291{
292 /* First Byte */
293 kal_uint16 firstBit :1; // Always be 0
294 kal_uint16 type :4;
295 kal_uint16 ssn :3;
296 /* Second Byte */
297 kal_uint16 secondBit :1; // Always be 1
298 kal_uint16 l1Blank :1;
299 kal_uint16 l5Blank :1;
300 kal_uint16 rsvd :5;
301}idc_md_lte_gnss_blank_ind;
302
303typedef struct _idc_md_nr_gnss_blank_ind
304{
305 /* First Byte */
306 kal_uint16 firstBit :1; // Always be 0
307 kal_uint16 type :4;
308 kal_uint16 ssn :3;
309 /* Second Byte */
310 kal_uint16 secondBit :1; // Always be 1
311 kal_uint16 l1Blank :1;
312 kal_uint16 l5Blank :1;
313 kal_uint16 rsvd :5;
314}idc_md_nr_gnss_blank_ind;
315
316typedef struct _idc_md_tx_susp_ind
317{
318 /* First Byte */
319 kal_uint16 firstBit :1; // Always be 0
320 kal_uint16 type :4;
321 kal_uint16 ssn :3;
322 /* Second Byte */
323 kal_uint16 secondBit :1; // Always be 1
324 kal_uint16 priority :2; // default is 3
325 kal_uint16 txSuspFDM :2; // 0: allow CONSYS TX which adopt FDM, 1: LTE stop CONSYS TX, 2: NR stop CONSYS TX, 3: Both RATs stop CONSYS TX
326 kal_uint16 txSuspTDM :2; // 0: allow CONSYS TX which adopt TDM, 1: LTE stop CONSYS TX, 2: NR stop CONSYS TX, 3: Both RATs stop CONSYS TX
327 kal_uint16 rsvd :1;
328}idc_md_tx_susp_ind;
329
330/***** IDC MD Extend HW Signal *****/
331
332typedef struct _idc_md_ext_cmd_struct
333{
334 kal_uint8 byte[9];
335}idc_md_ext_cmd_struct;
336
337typedef struct _idc_md_ext_hw_signal_ind
338{
339 /* First Byte */
340 kal_uint8 firstBit :1; // Always be 0
341 kal_uint8 type :4; // Always be 15
342 kal_uint8 len :3; // num. of byte for the data content
343 /* Second Byte */
344 kal_uint8 secondBit :1; // Always be 1
345 kal_uint8 ext1stBit :1; // Always be 0
346 kal_uint8 subType :6;
347 /* Third Byte */
348 kal_uint8 thirdBit :1; // Always be 1
349 kal_uint8 ext2ndBit :1; // Always be 1
350 kal_uint8 ssn :3;
351 kal_uint8 data_0 :3;
352 /* Fourth Byte */
353 kal_uint8 fourthBit :1; // Always be 1
354 kal_uint8 ext3rdBit :1; // Always be 0
355 kal_uint8 data_1 :6;
356 /* Fifth Byte */
357 kal_uint8 fifthBit :1; // Always be 1
358 kal_uint8 ext4thBit :1; // Always be 1
359 kal_uint8 data_2 :6;
360 /* Sixth Byte */
361 kal_uint8 sixthBit :1; // Always be 1
362 kal_uint8 ext5thBit :1; // Always be 0
363 kal_uint8 data_3 :6;
364 /* Seventh Byte */
365 kal_uint8 seventhBit :1; // Always be 1
366 kal_uint8 ext6thBit :1; // Always be 1
367 kal_uint8 data_4 :6;
368 /* Eighth Byte */
369 kal_uint8 eighthBit :1; // Always be 1
370 kal_uint8 ext7thBit :1; // Always be 0
371 kal_uint8 data_5 :6;
372 /* ninth Byte */
373 kal_uint8 ninthBit :1; // Always be 1
374 kal_uint8 ext8thBit :1; // Always be 1
375 kal_uint8 data_6 :6;
376}idc_md_ext_hw_signal_ind;
377
378typedef struct _idc_md_lte_rx_ind
379{
380 /* First Byte */
381 kal_uint8 firstBit :1; // Always be 0
382 kal_uint8 type :4; // Always be 15
383 kal_uint8 len :3; // num. of byte for the data content
384 /* Second Byte */
385 kal_uint8 secondBit :1; // Always be 1
386 kal_uint8 ext1stBit :1; // Always be 0
387 kal_uint8 subType :6;
388 /* Third Byte */
389 kal_uint8 thirdBit :1; // Always be 1
390 kal_uint8 ext2ndBit :1; // Always be 1
391 kal_uint8 ssn :3;
392 kal_uint8 rxGroupStatus_0 :1; // 0: RX of group0 is off, 1: RX of group0 is on
393 kal_uint8 rxGroupPrio_0 :2; // 2'b11 > 2'b10 > 2'b01 > 2'b00
394 /* Fourth Byte */
395 kal_uint8 fourthBit :1; // Always be 1
396 kal_uint8 ext3rdBit :1; // Always be 0
397 kal_uint8 timerType_0 :1; // 0: short timer, 1: long timer (carried by SW MSG)
398 kal_uint8 patt_ovwrt_0 :1; // 0: PTA keeps UL/DL config., 1: PTA overwrites UL/DL config.
399 kal_uint8 rxGroupStatus_2 :1;
400 kal_uint8 rxGroupPrio_2 :2;
401 kal_uint8 timerType_2 :1;
402 /* Fifth Byte */
403 kal_uint8 fifthBit :1; // Always be 1
404 kal_uint8 ext4thBit :1; // Always be 1
405 kal_uint8 patt_ovwrt_2 :1;
406 kal_uint8 rxGroupStatus_4 :1;
407 kal_uint8 rxGroupPrio_4 :2;
408 kal_uint8 timerType_4 :1;
409 kal_uint8 patt_ovwrt_4 :1;
410 /* Sixth Byte */
411 kal_uint8 rsvd0 :8;
412 /* Seventh Byte */
413 kal_uint8 rsvd1 :8;
414 /* Eighth Byte */
415 kal_uint8 rsvd2 :8;
416 /* ninth Byte */
417 kal_uint8 rsvd3 :8;
418}idc_md_lte_rx_ind;
419
420typedef struct _idc_md_lte_tx_ind
421{
422 /* First Byte */
423 kal_uint8 firstBit :1; // Always be 0
424 kal_uint8 type :4; // Always be 15
425 kal_uint8 len :3; // num. of byte for the data content
426 /* Second Byte */
427 kal_uint8 secondBit :1; // Always be 1
428 kal_uint8 ext1stBit :1; // Always be 0
429 kal_uint8 subType :6;
430 /* Third Byte */
431 kal_uint8 thirdBit :1; // Always be 1
432 kal_uint8 ext2ndBit :1; // Always be 1
433 kal_uint8 ssn :3;
434 kal_uint8 valid_tx_bmp_l :3; // 0: the TX group does not belong to LTE, 1: the TX group belongs to LTE
435 /* Fourth Byte */
436 kal_uint8 fourthBit :1; // Always be 1
437 kal_uint8 ext3rdBit :1; // Always be 0
438 kal_uint8 valid_tx_bmp_h :3;
439 kal_uint8 txGroupStatus_0 :1; // 0: TX of group0 is off, 1: TX of group0 is on
440 kal_uint8 txGroupPrio_0 :2; // 2'b11 > 2'b10 > 2'b01 > 2'b00
441 /* Fifth Byte */
442 kal_uint8 fifthBit :1; // Always be 1
443 kal_uint8 ext4thBit :1; // Always be 1
444 kal_uint8 narrow_band_0 :1; // 0: wide band TX, 1: narrow band TX
445 kal_uint8 txGroupStatus_1 :1;
446 kal_uint8 txGroupPrio_1 :2;
447 kal_uint8 narrow_band_1 :1;
448 kal_uint8 txGroupStatus_2 :1;
449 /* Sixth Byte */
450 kal_uint8 sixthBit :1; // Always be 1
451 kal_uint8 ext5thBit :1; // Always be 0
452 kal_uint8 txGroupPrio_2 :2;
453 kal_uint8 narrow_band_2 :1;
454 kal_uint8 txGroupStatus_3 :1;
455 kal_uint8 txGroupPrio_3 :2;
456 /* Seventh Byte */
457 kal_uint8 seventhBit :1; // Always be 1
458 kal_uint8 ext6thBit :1; // Always be 1
459 kal_uint8 narrow_band_3 :1;
460 kal_uint8 txGroupStatus_4 :1;
461 kal_uint8 txGroupPrio_4 :2;
462 kal_uint8 narrow_band_4 :1;
463 kal_uint8 txGroupStatus_5 :1;
464 /* Eighth Byte */
465 kal_uint8 eighthBit :1; // Always be 1
466 kal_uint8 ext7thBit :1; // Always be 0
467 kal_uint8 txGroupPrio_5 :2;
468 kal_uint8 narrow_band_5 :1;
469 kal_uint8 rsvd0 :3;
470 /* ninth Byte */
471 kal_uint8 rsvd1 :8;
472}idc_md_lte_tx_ind;
473
474typedef struct _idc_md_lte_slp_dur_ind
475{
476 /* First Byte */
477 kal_uint8 firstBit :1; // Always be 0
478 kal_uint8 type :4; // Always be 15
479 kal_uint8 len :3; // num. of byte for the data content
480 /* Second Byte */
481 kal_uint8 secondBit :1; // Always be 1
482 kal_uint8 ext1stBit :1; // Always be 0
483 kal_uint8 subType :6;
484 /* Third Byte */
485 kal_uint8 thirdBit :1; // Always be 1
486 kal_uint8 ext2ndBit :1; // Always be 1
487 kal_uint8 ssn :3;
488 kal_uint8 dur_l :3; // range from 0~2560(ms), 12'b111111111111: infinite duration
489 /* Fourth Byte */
490 kal_uint8 fourthBit :1; // Always be 1
491 kal_uint8 ext3rdBit :1; // Always be 0
492 kal_uint8 dur_m :6;
493 /* Fifth Byte */
494 kal_uint8 fifthBit :1; // Always be 1
495 kal_uint8 ext4thBit :1; // Always be 1
496 kal_uint8 dur_h :3;
497 kal_uint8 rsvd0 :3;
498 /* Sixth Byte */
499 kal_uint8 rsvd1 :8;
500 /* Seventh Byte */
501 kal_uint8 rsvd2 :8;
502 /* Eighth Byte */
503 kal_uint8 rsvd3 :8;
504 /* ninth Byte */
505 kal_uint8 rsvd4 :8;
506}idc_md_lte_slp_dur_ind;
507
508typedef struct _idc_md_lte_block_consys_tx_ind
509{
510 /* First Byte */
511 kal_uint8 firstBit :1; // Always be 0
512 kal_uint8 type :4; // Always be 15
513 kal_uint8 len :3; // num. of byte for the data content
514 /* Second Byte */
515 kal_uint8 secondBit :1; // Always be 1
516 kal_uint8 ext1stBit :1; // Always be 0
517 kal_uint8 subType :6;
518 /* Third Byte */
519 kal_uint8 thirdBit :1; // Always be 1
520 kal_uint8 ext2ndBit :1; // Always be 1
521 kal_uint8 ssn :3;
522 kal_uint8 wifiTx0 :1; // 0: TX of WF active freq. in band0 is not blocked, 1: TX of WF active freq. in band0 is blocked
523 kal_uint8 wifiTx1 :1; // 0: TX of WF active freq. in band1 is not blocked, 1: TX of WF active freq. in band1 is blocked
524 kal_uint8 btTx :1; // 0: TX of BT is not blocked, 1: TX of BT is blocked
525 /* Fourth Byte */
526 kal_uint8 fourthBit :1; // Always be 1
527 kal_uint8 ext3rdBit :1; // Always be 0
528 kal_uint8 extTx0 :1;
529 kal_uint8 extTx1 :1;
530 kal_uint8 lteRxPrio :2; // 2'b11 > 2'b10 > 2'b01 > 2'b00
531 kal_uint8 rsvd0 :2;
532 /* Fifth Byte */
533 kal_uint8 rsvd1 :8;
534 /* Sixth Byte */
535 kal_uint8 rsvd2 :8;
536 /* Seventh Byte */
537 kal_uint8 rsvd3 :8;
538 /* Eighth Byte */
539 kal_uint8 rsvd4 :8;
540 /* ninth Byte */
541 kal_uint8 rsvd5 :8;
542}idc_md_lte_block_consys_tx_ind;
543
544typedef struct _idc_md_send_hw_signal_ack_ind
545{
546 /* First Byte */
547 kal_uint8 firstBit :1; // Always be 0
548 kal_uint8 type :4; // Always be 15
549 kal_uint8 len :3; // num. of byte for the data content
550 /* Second Byte */
551 kal_uint8 secondBit :1; // Always be 1
552 kal_uint8 ext1stBit :1; // Always be 0
553 kal_uint8 subType :6;
554 /* Third Byte */
555 kal_uint8 thirdBit :1; // Always be 1
556 kal_uint8 ext2ndBit :1; // Always be 1
557 kal_uint8 ssn :3;
558 kal_uint8 ack_num :3; // Carry the SSN of targeted HW signal from CONSYS
559 /* Fourth Byte */
560 kal_uint8 fourthBit :1; // Always be 1
561 kal_uint8 ext3rdBit :1; // Always be 0
562 kal_uint8 targetType :6; // Indicate HW signal Type or SubType depends on the param. 'isExtCmd'
563 /* Fifth Byte */
564 kal_uint8 fifthBit :1; // Always be 1
565 kal_uint8 ext4thBit :1; // Always be 1
566 kal_uint8 isExtCmd :1; // Indicate whether the Ack is for the extend HW signal sent from CONSYS or not
567 kal_uint8 isWiFiB0 :1; // Indicate whether the Ack is for wifi b0 or not
568 kal_uint8 isWiFiB1 :1; // Indicate whether the Ack is for wifi b1 or not
569 kal_uint8 isIgnoreTdm :1; // Indicate modem is at tdm drx on dur mode, bypass tdm
570 kal_uint8 rsvd0 :2;
571 /* Sixth Byte */
572 kal_uint8 rsvd1 :8;
573 /* Seventh Byte */
574 kal_uint8 rsvd2 :8;
575 /* Eighth Byte */
576 kal_uint8 rsvd3 :8;
577 /* ninth Byte */
578 kal_uint8 rsvd4 :8;
579}idc_md_send_hw_signal_ack_ind;
580
581typedef struct _idc_md_lte_scell_activate_ind
582{
583 /* First Byte */
584 kal_uint8 firstBit :1; // Always be 0
585 kal_uint8 type :4; // Always be 15
586 kal_uint8 len :3; // num. of byte for the data content
587 /* Second Byte */
588 kal_uint8 secondBit :1; // Always be 1
589 kal_uint8 ext1stBit :1; // Always be 0
590 kal_uint8 subType :6;
591 /* Third Byte */
592 kal_uint8 thirdBit :1; // Always be 1
593 kal_uint8 ext2ndBit :1; // Always be 1
594 kal_uint8 ssn :3;
595 kal_uint8 cellBmp_l :3; // 0: LTE serving cell i is de-active, 1: LTE serving cell i is active
596 /* Fourth Byte */
597 kal_uint8 fourthBit :1; // Always be 1
598 kal_uint8 ext3rdBit :1; // Always be 0
599 kal_uint8 cellBmp_h :5;
600 kal_uint8 rsvd0 :1;
601 /* Fifth Byte */
602 kal_uint8 rsvd1 :8;
603 /* Sixth Byte */
604 kal_uint8 rsvd2 :8;
605 /* Seventh Byte */
606 kal_uint8 rsvd3 :8;
607 /* Eighth Byte */
608 kal_uint8 rsvd4 :8;
609 /* ninth Byte */
610 kal_uint8 rsvd5 :8;
611}idc_md_lte_scell_activate_ind;
612
613typedef struct _idc_md_tx_bwp_ind
614{
615 /* First Byte */
616 kal_uint8 firstBit :1; // Always be 0
617 kal_uint8 type :4; // Always be 15
618 kal_uint8 len :3; // num. of byte for the data content
619 /* Second Byte */
620 kal_uint8 secondBit :1; // Always be 1
621 kal_uint8 ext1stBit :1; // Always be 0
622 kal_uint8 subType :6;
623 /* Third Byte */
624 kal_uint8 thirdBit :1; // Always be 1
625 kal_uint8 ext2ndBit :1; // Always be 1
626 kal_uint8 ssn :3;
627 kal_uint8 bwpCC0 :2; // Index of MD TX BWP (0-3), NR: CC0-CC8, LTE: CC9-CC15
628 kal_uint8 bwpCC1_l :1;
629 /* Fourth Byte */
630 kal_uint8 fourthBit :1; // Always be 1
631 kal_uint8 ext3rdBit :1; // Always be 0
632 kal_uint8 bwpCC1_h :1;
633 kal_uint8 bwpCC2 :2;
634 kal_uint8 bwpCC3 :2;
635 kal_uint8 bwpCC4_l :1;
636 /* Fifth Byte */
637 kal_uint8 fifthBit :1; // Always be 1
638 kal_uint8 ext4thBit :1; // Always be 1
639 kal_uint8 bwpCC4_h :1;
640 kal_uint8 bwpCC5 :2;
641 kal_uint8 bwpCC6 :2;
642 kal_uint8 bwpCC7_l :1;
643 /* Sixth Byte */
644 kal_uint8 sixthBit :1; // Always be 1
645 kal_uint8 ext5thBit :1; // Always be 0
646 kal_uint8 bwpCC7_h :1;
647 kal_uint8 bwpCC8 :2;
648 kal_uint8 bwpCC9 :2;
649 kal_uint8 bwpCC10_l :1;
650 /* Seventh Byte */
651 kal_uint8 seventhBit :1; // Always be 1
652 kal_uint8 ext6thBit :1; // Always be 1
653 kal_uint8 bwpCC10_h :1;
654 kal_uint8 bwpCC11 :2;
655 kal_uint8 bwpCC12 :2;
656 kal_uint8 bwpCC13_l :1;
657 /* Eighth Byte */
658 kal_uint8 eighthBit :1; // Always be 1
659 kal_uint8 ext7thBit :1; // Always be 0
660 kal_uint8 bwpCC13_h :1;
661 kal_uint8 bwpCC14 :2;
662 kal_uint8 bwpCC15 :2;
663 kal_uint8 rsvd0 :1;
664 /* ninth Byte */
665 kal_uint8 rsvd1 :8;
666}idc_md_tx_bwp_ind;
667
668typedef struct _idc_md_rx_bwp_ind
669{
670 /* First Byte */
671 kal_uint8 firstBit :1; // Always be 0
672 kal_uint8 type :4; // Always be 15
673 kal_uint8 len :3; // num. of byte for the data content
674 /* Second Byte */
675 kal_uint8 secondBit :1; // Always be 1
676 kal_uint8 ext1stBit :1; // Always be 0
677 kal_uint8 subType :6;
678 /* Third Byte */
679 kal_uint8 thirdBit :1; // Always be 1
680 kal_uint8 ext2ndBit :1; // Always be 1
681 kal_uint8 ssn :3;
682 kal_uint8 bwpCC0 :2; // Index of MD RX BWP (0-3), NR: CC0-CC8, LTE: CC9-CC15
683 kal_uint8 bwpCC1_l :1;
684 /* Fourth Byte */
685 kal_uint8 fourthBit :1; // Always be 1
686 kal_uint8 ext3rdBit :1; // Always be 0
687 kal_uint8 bwpCC1_h :1;
688 kal_uint8 bwpCC2 :2;
689 kal_uint8 bwpCC3 :2;
690 kal_uint8 bwpCC4_l :1;
691 /* Fifth Byte */
692 kal_uint8 fifthBit :1; // Always be 1
693 kal_uint8 ext4thBit :1; // Always be 1
694 kal_uint8 bwpCC4_h :1;
695 kal_uint8 bwpCC5 :2;
696 kal_uint8 bwpCC6 :2;
697 kal_uint8 bwpCC7_l :1;
698 /* Sixth Byte */
699 kal_uint8 sixthBit :1; // Always be 1
700 kal_uint8 ext5thBit :1; // Always be 0
701 kal_uint8 bwpCC7_h :1;
702 kal_uint8 bwpCC8 :2;
703 kal_uint8 bwpCC9 :2;
704 kal_uint8 bwpCC10_l :1;
705 /* Seventh Byte */
706 kal_uint8 seventhBit :1; // Always be 1
707 kal_uint8 ext6thBit :1; // Always be 1
708 kal_uint8 bwpCC10_h :1;
709 kal_uint8 bwpCC11 :2;
710 kal_uint8 bwpCC12 :2;
711 kal_uint8 bwpCC13_l :1;
712 /* Eighth Byte */
713 kal_uint8 eighthBit :1; // Always be 1
714 kal_uint8 ext7thBit :1; // Always be 0
715 kal_uint8 bwpCC13_h :1;
716 kal_uint8 bwpCC14 :2;
717 kal_uint8 bwpCC15 :2;
718 kal_uint8 rsvd0 :1;
719 /* ninth Byte */
720 kal_uint8 rsvd1 :8;
721}idc_md_rx_bwp_ind;
722
723typedef struct _idc_md_pattern_sync_ind
724{
725 /* First Byte */
726 kal_uint8 firstBit :1; // Always be 0
727 kal_uint8 type :4; // Always be 15
728 kal_uint8 len :3; // num. of byte for the data content
729 /* Second Byte */
730 kal_uint8 secondBit :1; // Always be 1
731 kal_uint8 ext1stBit :1; // Always be 0
732 kal_uint8 subType :6;
733 /* Third Byte */
734 kal_uint8 thirdBit :1; // Always be 1
735 kal_uint8 ext2ndBit :1; // Always be 1
736 kal_uint8 ssn :3;
737 kal_uint8 offset_l :3; // range from 0-19999(us)
738 /* Fourth Byte */
739 kal_uint8 fourthBit :1; // Always be 1
740 kal_uint8 ext3rdBit :1; // Always be 0
741 kal_uint8 offset_m :6;
742 /* Fifth Byte */
743 kal_uint8 fifthBit :1; // Always be 1
744 kal_uint8 ext4thBit :1; // Always be 1
745 kal_uint8 offset_h :6;
746 /* Sixth Byte */
747 kal_uint8 sixthBit :1; // Always be 1
748 kal_uint8 ext5thBit :1; // Always be 0
749 kal_uint8 rxGroupBmp :6; // 0: the sync is not for group n, 1: the sync is for group n
750 /* Seventh Byte */
751 kal_uint8 rsvd0 :8;
752 /* Eighth Byte */
753 kal_uint8 rsvd1 :8;
754 /* ninth Byte */
755 kal_uint8 rsvd2 :8;
756}idc_md_pattern_sync_ind;
757
758typedef struct _idc_md_nr_rx_ind
759{
760 /* First Byte */
761 kal_uint8 firstBit :1; // Always be 0
762 kal_uint8 type :4; // Always be 15
763 kal_uint8 len :3; // num. of byte for the data content
764 /* Second Byte */
765 kal_uint8 secondBit :1; // Always be 1
766 kal_uint8 ext1stBit :1; // Always be 0
767 kal_uint8 subType :6;
768 /* Third Byte */
769 kal_uint8 thirdBit :1; // Always be 1
770 kal_uint8 ext2ndBit :1; // Always be 1
771 kal_uint8 ssn :3;
772 kal_uint8 rxGroupStatus_1 :1; // 0: RX of group1 is off, 1: RX of group1 is on
773 kal_uint8 rxGroupPrio_1 :2; // 2'b11 > 2'b10 > 2'b01 > 2'b00
774 /* Fourth Byte */
775 kal_uint8 fourthBit :1; // Always be 1
776 kal_uint8 ext3rdBit :1; // Always be 0
777 kal_uint8 timerType_1 :1; // 0: short timer, 1: long timer (carried by SW MSG)
778 kal_uint8 patt_ovwrt_1 :1; // 0: PTA keeps UL/DL config., 1: PTA overwrites UL/DL config.
779 kal_uint8 rxGroupStatus_3 :1;
780 kal_uint8 rxGroupPrio_3 :2;
781 kal_uint8 timerType_3 :1;
782 /* Fifth Byte */
783 kal_uint8 fifthBit :1; // Always be 1
784 kal_uint8 ext4thBit :1; // Always be 1
785 kal_uint8 patt_ovwrt_3 :1;
786 kal_uint8 rxGroupStatus_5 :1;
787 kal_uint8 rxGroupPrio_5 :2;
788 kal_uint8 timerType_5 :1;
789 kal_uint8 patt_ovwrt_5 :1;
790 /* Sixth Byte */
791 kal_uint8 rsvd0 :8;
792 /* Seventh Byte */
793 kal_uint8 rsvd1 :8;
794 /* Eighth Byte */
795 kal_uint8 rsvd2 :8;
796 /* ninth Byte */
797 kal_uint8 rsvd3 :8;
798}idc_md_nr_rx_ind;
799
800typedef struct _idc_md_nr_tx_ind
801{
802 /* First Byte */
803 kal_uint8 firstBit :1; // Always be 0
804 kal_uint8 type :4; // Always be 15
805 kal_uint8 len :3; // num. of byte for the data content
806 /* Second Byte */
807 kal_uint8 secondBit :1; // Always be 1
808 kal_uint8 ext1stBit :1; // Always be 0
809 kal_uint8 subType :6;
810 /* Third Byte */
811 kal_uint8 thirdBit :1; // Always be 1
812 kal_uint8 ext2ndBit :1; // Always be 1
813 kal_uint8 ssn :3;
814 kal_uint8 valid_tx_bmp_l :3; // 0: the TX group does not belong to NR, 1: the TX group belongs to NR
815 /* Fourth Byte */
816 kal_uint8 fourthBit :1; // Always be 1
817 kal_uint8 ext3rdBit :1; // Always be 0
818 kal_uint8 valid_tx_bmp_h :3;
819 kal_uint8 txGroupStatus_0 :1; // 0: TX of group0 is off, 1: TX of group0 is on
820 kal_uint8 txGroupPrio_0 :2; // 2'b11 > 2'b10 > 2'b01 > 2'b00
821 /* Fifth Byte */
822 kal_uint8 fifthBit :1; // Always be 1
823 kal_uint8 ext4thBit :1; // Always be 1
824 kal_uint8 narrow_band_0 :1; // 0: wide band TX, 1: narrow band TX
825 kal_uint8 txGroupStatus_1 :1;
826 kal_uint8 txGroupPrio_1 :2;
827 kal_uint8 narrow_band_1 :1;
828 kal_uint8 txGroupStatus_2 :1;
829 /* Sixth Byte */
830 kal_uint8 sixthBit :1; // Always be 1
831 kal_uint8 ext5thBit :1; // Always be 0
832 kal_uint8 txGroupPrio_2 :2;
833 kal_uint8 narrow_band_2 :1;
834 kal_uint8 txGroupStatus_3 :1;
835 kal_uint8 txGroupPrio_3 :2;
836 /* Seventh Byte */
837 kal_uint8 seventhBit :1; // Always be 1
838 kal_uint8 ext6thBit :1; // Always be 1
839 kal_uint8 narrow_band_3 :1;
840 kal_uint8 txGroupStatus_4 :1;
841 kal_uint8 txGroupPrio_4 :2;
842 kal_uint8 narrow_band_4 :1;
843 kal_uint8 txGroupStatus_5 :1;
844 /* Eighth Byte */
845 kal_uint8 eighthBit :1; // Always be 1
846 kal_uint8 ext7thBit :1; // Always be 0
847 kal_uint8 txGroupPrio_5 :2;
848 kal_uint8 narrow_band_5 :1;
849 kal_uint8 rsvd0 :3;
850 /* ninth Byte */
851 kal_uint8 rsvd1 :8;
852}idc_md_nr_tx_ind;
853
854typedef struct _idc_md_nr_slp_dur_ind
855{
856 /* First Byte */
857 kal_uint8 firstBit :1; // Always be 0
858 kal_uint8 type :4; // Always be 15
859 kal_uint8 len :3; // num. of byte for the data content
860 /* Second Byte */
861 kal_uint8 secondBit :1; // Always be 1
862 kal_uint8 ext1stBit :1; // Always be 0
863 kal_uint8 subType :6;
864 /* Third Byte */
865 kal_uint8 thirdBit :1; // Always be 1
866 kal_uint8 ext2ndBit :1; // Always be 1
867 kal_uint8 ssn :3;
868 kal_uint8 dur_l :3; // range from 0~2560(ms), 12'b111111111111: infinite duration
869 /* Fourth Byte */
870 kal_uint8 fourthBit :1; // Always be 1
871 kal_uint8 ext3rdBit :1; // Always be 0
872 kal_uint8 dur_m :6;
873 /* Fifth Byte */
874 kal_uint8 fifthBit :1; // Always be 1
875 kal_uint8 ext4thBit :1; // Always be 1
876 kal_uint8 dur_h :3;
877 kal_uint8 rsvd0 :3;
878 /* Sixth Byte */
879 kal_uint8 rsvd1 :8;
880 /* Seventh Byte */
881 kal_uint8 rsvd2 :8;
882 /* Eighth Byte */
883 kal_uint8 rsvd3 :8;
884 /* ninth Byte */
885 kal_uint8 rsvd4 :8;
886}idc_md_nr_slp_dur_ind;
887
888typedef struct _idc_md_nr_block_consys_tx_ind
889{
890 /* First Byte */
891 kal_uint8 firstBit :1; // Always be 0
892 kal_uint8 type :4; // Always be 15
893 kal_uint8 len :3; // num. of byte for the data content
894 /* Second Byte */
895 kal_uint8 secondBit :1; // Always be 1
896 kal_uint8 ext1stBit :1; // Always be 0
897 kal_uint8 subType :6;
898 /* Third Byte */
899 kal_uint8 thirdBit :1; // Always be 1
900 kal_uint8 ext2ndBit :1; // Always be 1
901 kal_uint8 ssn :3;
902 kal_uint8 wifiTx0 :1; // 0: TX of WF active freq. in band0 is not blocked, 1: TX of WF active freq. in band0 is blocked
903 kal_uint8 wifiTx1 :1; // 0: TX of WF active freq. in band1 is not blocked, 1: TX of WF active freq. in band1 is blocked
904 kal_uint8 btTx :1; // 0: TX of BT is not blocked, 1: TX of BT is blocked
905 /* Fourth Byte */
906 kal_uint8 fourthBit :1; // Always be 1
907 kal_uint8 ext3rdBit :1; // Always be 0
908 kal_uint8 extTx0 :1;
909 kal_uint8 extTx1 :1;
910 kal_uint8 nrRxPrio :2; // 2'b11 > 2'b10 > 2'b01 > 2'b00
911 kal_uint8 rsvd0 :2;
912 /* Fifth Byte */
913 kal_uint8 rsvd1 :8;
914 /* Sixth Byte */
915 kal_uint8 rsvd2 :8;
916 /* Seventh Byte */
917 kal_uint8 rsvd3 :8;
918 /* Eighth Byte */
919 kal_uint8 rsvd4 :8;
920 /* ninth Byte */
921 kal_uint8 rsvd5 :8;
922}idc_md_nr_block_consys_tx_ind;
923
924typedef struct _idc_md_expect_consys_tx_pwr_limit_ind
925{
926 /* First Byte */
927 kal_uint8 firstBit :1; // Always be 0
928 kal_uint8 type :4; // Always be 15
929 kal_uint8 len :3; // num. of byte for the data content
930 /* Second Byte */
931 kal_uint8 secondBit :1; // Always be 1
932 kal_uint8 ext1stBit :1; // Always be 0
933 kal_uint8 subType :6;
934 /* Third Byte */
935 kal_uint8 thirdBit :1; // Always be 1
936 kal_uint8 ext2ndBit :1; // Always be 1
937 kal_uint8 ssn :3;
938 kal_uint8 txPwrGroup0_l :3; // the expected CONSYS TX power for MD RX group 0
939 /* Fourth Byte */
940 kal_uint8 fourthBit :1; // Always be 1
941 kal_uint8 ext3rdBit :1; // Always be 0
942 kal_uint8 txPwrGroup0_h :1;
943 kal_uint8 txPwrGroup1 :4;
944 kal_uint8 txPwrGroup2_l :1;
945 /* Fifth Byte */
946 kal_uint8 fifthBit :1; // Always be 1
947 kal_uint8 ext4thBit :1; // Always be 1
948 kal_uint8 txPwrGroup2_h :3;
949 kal_uint8 txPwrGroup3_l :3;
950 /* Sixth Byte */
951 kal_uint8 sixthBit :1; // Always be 1
952 kal_uint8 ext5thBit :1; // Always be 0
953 kal_uint8 txPwrGroup3_h :1;
954 kal_uint8 txPwrGroup4 :4;
955 kal_uint8 txPwrGroup5_l :1;
956 /* Seventh Byte */
957 kal_uint8 seventhBit :1; // Always be 1
958 kal_uint8 ext6thBit :1; // Always be 1
959 kal_uint8 txPwrGroup5_h :3;
960 kal_uint8 rsvd0 :3;
961 /* Eighth Byte */
962 kal_uint8 rsvd1 :8;
963 /* ninth Byte */
964 kal_uint8 rsvd2 :8;
965}idc_md_expect_consys_tx_pwr_limit_ind;
966
967typedef struct _idc_md_lte_tx_pwr_ind
968{
969 /* First Byte */
970 kal_uint8 firstBit :1; // Always be 0
971 kal_uint8 type :4; // Always be 15
972 kal_uint8 len :3; // num. of byte for the data content
973 /* Second Byte */
974 kal_uint8 secondBit :1; // Always be 1
975 kal_uint8 ext1stBit :1; // Always be 0
976 kal_uint8 subType :6;
977 /* Third Byte */
978 kal_uint8 thirdBit :1; // Always be 1
979 kal_uint8 ext2ndBit :1; // Always be 1
980 kal_uint8 ssn :3;
981 kal_uint8 txGroup :3; // Indicate the hw signal for which TX group
982 /* Fourth Byte */
983 kal_uint8 fourthBit :1; // Always be 1
984 kal_uint8 ext3rdBit :1; // Always be 0
985 kal_uint8 txPwrCC0 :3; // Updating TX power for CC0
986 kal_uint8 txPwrCC1 :3; // Updating TX power for CC1
987 /* Fifth Byte */
988 kal_uint8 fifthBit :1; // Always be 1
989 kal_uint8 ext4thBit :1; // Always be 1
990 kal_uint8 txPwrCC2 :3;
991 kal_uint8 txPwrCC3 :3;
992 /* Sixth Byte */
993 kal_uint8 sixthBit :1; // Always be 1
994 kal_uint8 ext5thBit :1; // Always be 0
995 kal_uint8 txPwrCC4 :3;
996 kal_uint8 txPwrCC5 :3;
997 /* Seventh Byte */
998 kal_uint8 seventhBit :1; // Always be 1
999 kal_uint8 ext6thBit :1; // Always be 1
1000 kal_uint8 txPwrCC6 :3;
1001 kal_uint8 txPwrCC7 :3;
1002 /* Eighth Byte */
1003 kal_uint8 eighthBit :1; // Always be 1
1004 kal_uint8 ext7thBit :1; // Always be 0
1005 kal_uint8 txPwrCC8 :3;
1006 kal_uint8 txPwrCC9 :3;
1007 /* ninth Byte */
1008 kal_uint8 ninthBit :1; // Always be 1
1009 kal_uint8 ext8thBit :1; // Always be 1
1010 kal_uint8 txPwrCC10 :3;
1011 kal_uint8 rsvd0 :3;
1012}idc_md_lte_tx_pwr_ind;
1013
1014typedef struct _idc_md_lte_tx_leadtime_ind
1015{
1016 /* First Byte */
1017 kal_uint8 firstBit :1; // Always be 0
1018 kal_uint8 type :4; // Always be 15
1019 kal_uint8 len :3; // num. of byte for the data content
1020 /* Second Byte */
1021 kal_uint8 secondBit :1; // Always be 1
1022 kal_uint8 ext1stBit :1; // Always be 0
1023 kal_uint8 subType :6;
1024 /* Third Byte */
1025 kal_uint8 thirdBit :1; // Always be 1
1026 kal_uint8 ext2ndBit :1; // Always be 1
1027 kal_uint8 ssn :3;
1028 kal_uint8 txPwrCC11 :3; // Updating TX power for CC11
1029 /* Fourth Byte */
1030 kal_uint8 fourthBit :1; // Always be 1
1031 kal_uint8 ext3rdBit :1; // Always be 0
1032 kal_uint8 txPwrCC12 :3;
1033 kal_uint8 txPwrCC13 :3;
1034 /* Fifth Byte */
1035 kal_uint8 fifthBit :1; // Always be 1
1036 kal_uint8 ext4thBit :1; // Always be 1
1037 kal_uint8 txPwrCC14 :3;
1038 kal_uint8 txPwrCC15 :3;
1039 /* Sixth Byte */
1040 kal_uint8 sixthBit :1; // Always be 1
1041 kal_uint8 ext5thBit :1; // Always be 0
1042 kal_uint8 leadTime_l :6; // (us)
1043 /* Seventh Byte */
1044 kal_uint8 seventhBit :1; // Always be 1
1045 kal_uint8 ext6thBit :1; // Always be 1
1046 kal_uint8 leadTime_h :4;
1047 kal_uint8 rsvd0 :2;
1048 /* Eighth Byte */
1049 kal_uint8 rsvd1 :8;
1050 /* ninth Byte */
1051 kal_uint8 rsvd2 :8;
1052}idc_md_lte_tx_leadtime_ind;
1053
1054typedef struct _idc_md_nr_tx_pwr_ind
1055{
1056 /* First Byte */
1057 kal_uint8 firstBit :1; // Always be 0
1058 kal_uint8 type :4; // Always be 15
1059 kal_uint8 len :3; // num. of byte for the data content
1060 /* Second Byte */
1061 kal_uint8 secondBit :1; // Always be 1
1062 kal_uint8 ext1stBit :1; // Always be 0
1063 kal_uint8 subType :6;
1064 /* Third Byte */
1065 kal_uint8 thirdBit :1; // Always be 1
1066 kal_uint8 ext2ndBit :1; // Always be 1
1067 kal_uint8 ssn :3;
1068 kal_uint8 txGroup :3; // Indicate the hw signal for which TX group
1069 /* Fourth Byte */
1070 kal_uint8 fourthBit :1; // Always be 1
1071 kal_uint8 ext3rdBit :1; // Always be 0
1072 kal_uint8 txPwrCC0 :3; // Updating TX power for CC0
1073 kal_uint8 txPwrCC1 :3; // Updating TX power for CC1
1074 /* Fifth Byte */
1075 kal_uint8 fifthBit :1; // Always be 1
1076 kal_uint8 ext4thBit :1; // Always be 1
1077 kal_uint8 txPwrCC2 :3;
1078 kal_uint8 txPwrCC3 :3;
1079 /* Sixth Byte */
1080 kal_uint8 sixthBit :1; // Always be 1
1081 kal_uint8 ext5thBit :1; // Always be 0
1082 kal_uint8 txPwrCC4 :3;
1083 kal_uint8 txPwrCC5 :3;
1084 /* Seventh Byte */
1085 kal_uint8 seventhBit :1; // Always be 1
1086 kal_uint8 ext6thBit :1; // Always be 1
1087 kal_uint8 txPwrCC6 :3;
1088 kal_uint8 txPwrCC7 :3;
1089 /* Eighth Byte */
1090 kal_uint8 eighthBit :1; // Always be 1
1091 kal_uint8 ext7thBit :1; // Always be 0
1092 kal_uint8 txPwrCC8 :3;
1093 kal_uint8 txPwrCC9 :3;
1094 /* ninth Byte */
1095 kal_uint8 ninthBit :1; // Always be 1
1096 kal_uint8 ext8thBit :1; // Always be 1
1097 kal_uint8 txPwrCC10 :3;
1098 kal_uint8 rsvd0 :3;
1099}idc_md_nr_tx_pwr_ind;
1100
1101typedef struct _idc_md_nr_tx_leadtime_ind
1102{
1103 /* First Byte */
1104 kal_uint8 firstBit :1; // Always be 0
1105 kal_uint8 type :4; // Always be 15
1106 kal_uint8 len :3; // num. of byte for the data content
1107 /* Second Byte */
1108 kal_uint8 secondBit :1; // Always be 1
1109 kal_uint8 ext1stBit :1; // Always be 0
1110 kal_uint8 subType :6;
1111 /* Third Byte */
1112 kal_uint8 thirdBit :1; // Always be 1
1113 kal_uint8 ext2ndBit :1; // Always be 1
1114 kal_uint8 ssn :3;
1115 kal_uint8 txPwrCC11 :3; // Updating TX power for CC11
1116 /* Fourth Byte */
1117 kal_uint8 fourthBit :1; // Always be 1
1118 kal_uint8 ext3rdBit :1; // Always be 0
1119 kal_uint8 txPwrCC12 :3;
1120 kal_uint8 txPwrCC13 :3;
1121 /* Fifth Byte */
1122 kal_uint8 fifthBit :1; // Always be 1
1123 kal_uint8 ext4thBit :1; // Always be 1
1124 kal_uint8 txPwrCC14 :3;
1125 kal_uint8 txPwrCC15 :3;
1126 /* Sixth Byte */
1127 kal_uint8 sixthBit :1; // Always be 1
1128 kal_uint8 ext5thBit :1; // Always be 0
1129 kal_uint8 leadTime_l :6; // (us)
1130 /* Seventh Byte */
1131 kal_uint8 seventhBit :1; // Always be 1
1132 kal_uint8 ext6thBit :1; // Always be 1
1133 kal_uint8 leadTime_h :4;
1134 kal_uint8 rsvd0 :2;
1135 /* Eighth Byte */
1136 kal_uint8 rsvd1 :8;
1137 /* ninth Byte */
1138 kal_uint8 rsvd2 :8;
1139}idc_md_nr_tx_leadtime_ind;
1140
1141typedef struct _idc_md_nr_scell_activate_ind
1142{
1143 /* First Byte */
1144 kal_uint8 firstBit :1; // Always be 0
1145 kal_uint8 type :4; // Always be 15
1146 kal_uint8 len :3; // num. of byte for the data content
1147 /* Second Byte */
1148 kal_uint8 secondBit :1; // Always be 1
1149 kal_uint8 ext1stBit :1; // Always be 0
1150 kal_uint8 subType :6;
1151 /* Third Byte */
1152 kal_uint8 thirdBit :1; // Always be 1
1153 kal_uint8 ext2ndBit :1; // Always be 1
1154 kal_uint8 ssn :3;
1155 kal_uint8 cellBmp_l :3; // 0: LTE serving cell i is de-active, 1: LTE serving cell i is active
1156 /* Fourth Byte */
1157 kal_uint8 fourthBit :1; // Always be 1
1158 kal_uint8 ext3rdBit :1; // Always be 0
1159 kal_uint8 cellBmp_h :6;
1160 /* Fifth Byte */
1161 kal_uint8 rsvd0 :8;
1162 /* Sixth Byte */
1163 kal_uint8 rsvd1 :8;
1164 /* Seventh Byte */
1165 kal_uint8 rsvd2 :8;
1166 /* Eighth Byte */
1167 kal_uint8 rsvd3 :8;
1168 /* ninth Byte */
1169 kal_uint8 rsvd4 :8;
1170}idc_md_nr_scell_activate_ind;
1171
1172typedef struct _idc_md_tx_bwp_fw_ind
1173{
1174 /* First Byte */
1175 kal_uint8 firstBit :1; // Always be 0
1176 kal_uint8 type :4; // Always be 15
1177 kal_uint8 len :3; // num. of byte for the data content
1178 /* Second Byte */
1179 kal_uint8 secondBit :1; // Always be 1
1180 kal_uint8 ext1stBit :1; // Always be 0
1181 kal_uint8 subType :6;
1182 /* Third Byte */
1183 kal_uint8 thirdBit :1; // Always be 1
1184 kal_uint8 ext2ndBit :1; // Always be 1
1185 kal_uint8 ssn :3;
1186 kal_uint8 bwpCC0 :3; // Index of MD TX BWP (0-4), NR: CC0-CC8
1187 /* Fourth Byte */
1188 kal_uint8 fourthBit :1; // Always be 1
1189 kal_uint8 ext3rdBit :1; // Always be 0
1190 kal_uint8 bwpCC1 :3;
1191 kal_uint8 bwpCC2 :3;
1192 /* Fifth Byte */
1193 kal_uint8 fifthBit :1; // Always be 1
1194 kal_uint8 ext4thBit :1; // Always be 1
1195 kal_uint8 bwpCC3 :3;
1196 kal_uint8 bwpCC4 :3;
1197 /* Sixth Byte */
1198 kal_uint8 sixthBit :1; // Always be 1
1199 kal_uint8 ext5thBit :1; // Always be 0
1200 kal_uint8 bwpCC5 :3;
1201 kal_uint8 bwpCC6 :3;
1202 /* Seventh Byte */
1203 kal_uint8 seventhBit :1; // Always be 1
1204 kal_uint8 ext6thBit :1; // Always be 1
1205 kal_uint8 bwpCC7 :3;
1206 kal_uint8 bwpCC8 :3;
1207 /* Eighth Byte */
1208 kal_uint8 rsvd0 :8;
1209 /* ninth Byte */
1210 kal_uint8 rsvd1 :8;
1211}idc_md_tx_bwp_fw_ind;
1212
1213typedef struct _idc_md_rx_bwp_fw_ind
1214{
1215 /* First Byte */
1216 kal_uint8 firstBit :1; // Always be 0
1217 kal_uint8 type :4; // Always be 15
1218 kal_uint8 len :3; // num. of byte for the data content
1219 /* Second Byte */
1220 kal_uint8 secondBit :1; // Always be 1
1221 kal_uint8 ext1stBit :1; // Always be 0
1222 kal_uint8 subType :6;
1223 /* Third Byte */
1224 kal_uint8 thirdBit :1; // Always be 1
1225 kal_uint8 ext2ndBit :1; // Always be 1
1226 kal_uint8 ssn :3;
1227 kal_uint8 bwpCC0 :3; // Index of MD RX BWP (0-4), NR: CC0-CC8
1228 /* Fourth Byte */
1229 kal_uint8 fourthBit :1; // Always be 1
1230 kal_uint8 ext3rdBit :1; // Always be 0
1231 kal_uint8 bwpCC1 :3;
1232 kal_uint8 bwpCC2 :3;
1233 /* Fifth Byte */
1234 kal_uint8 fifthBit :1; // Always be 1
1235 kal_uint8 ext4thBit :1; // Always be 1
1236 kal_uint8 bwpCC3 :3;
1237 kal_uint8 bwpCC4 :3;
1238 /* Sixth Byte */
1239 kal_uint8 sixthBit :1; // Always be 1
1240 kal_uint8 ext5thBit :1; // Always be 0
1241 kal_uint8 bwpCC5 :3;
1242 kal_uint8 bwpCC6 :3;
1243 /* Seventh Byte */
1244 kal_uint8 seventhBit :1; // Always be 1
1245 kal_uint8 ext6thBit :1; // Always be 1
1246 kal_uint8 bwpCC7 :3;
1247 kal_uint8 bwpCC8 :3;
1248 /* Eighth Byte */
1249 kal_uint8 rsvd0 :8;
1250 /* ninth Byte */
1251 kal_uint8 rsvd1 :8;
1252}idc_md_rx_bwp_fw_ind;
1253
1254typedef struct _idc_md_lte_tx_fw_ind
1255{
1256 /* First Byte */
1257 kal_uint8 firstBit :1; // Always be 0
1258 kal_uint8 type :4; // Always be 15
1259 kal_uint8 len :3; // num. of byte for the data content
1260 /* Second Byte */
1261 kal_uint8 secondBit :1; // Always be 1
1262 kal_uint8 ext1stBit :1; // Always be 0
1263 kal_uint8 subType :6;
1264 /* Third Byte */
1265 kal_uint8 thirdBit :1; // Always be 1
1266 kal_uint8 ext2ndBit :1; // Always be 1
1267 kal_uint8 ssn :3;
1268 kal_uint8 valid_tx_bmp_l :3; // 0: the TX group does not belong to LTE, 1: the TX group belongs to LTE
1269 /* Fourth Byte */
1270 kal_uint8 fourthBit :1; // Always be 1
1271 kal_uint8 ext3rdBit :1; // Always be 0
1272 kal_uint8 valid_tx_bmp_h :3;
1273 kal_uint8 txGroupStatus_0 :1; // 0: TX of group0 is off, 1: TX of group0 is on
1274 kal_uint8 txGroupStatus_1 :1; // 0: TX of group1 is off, 1: TX of group1 is on
1275 kal_uint8 txGroupStatus_2 :1; // 0: TX of group2 is off, 1: TX of group2 is on
1276 /* Fifth Byte */
1277 kal_uint8 fifthBit :1; // Always be 1
1278 kal_uint8 ext4thBit :1; // Always be 1
1279 kal_uint8 txGroupStatus_3 :1; // 0: TX of group3 is off, 1: TX of group3 is on
1280 kal_uint8 txGroupStatus_4 :1; // 0: TX of group4 is off, 1: TX of group4 is on
1281 kal_uint8 txGroupStatus_5 :1; // 0: TX of group5 is off, 1: TX of group5 is on
1282 kal_uint8 rsvd0 :3;
1283 /* Sixth Byte */
1284 kal_uint8 rsvd1 :8;
1285 /* Seventh Byte */
1286 kal_uint8 rsvd2 :8;
1287 /* Eighth Byte */
1288 kal_uint8 rsvd3 :8;
1289 /* ninth Byte */
1290 kal_uint8 rsvd4 :8;
1291}idc_md_lte_tx_fw_ind;
1292
1293typedef struct _idc_md_nr_tx_fw_ind
1294{
1295 /* First Byte */
1296 kal_uint8 firstBit :1; // Always be 0
1297 kal_uint8 type :4; // Always be 15
1298 kal_uint8 len :3; // num. of byte for the data content
1299 /* Second Byte */
1300 kal_uint8 secondBit :1; // Always be 1
1301 kal_uint8 ext1stBit :1; // Always be 0
1302 kal_uint8 subType :6;
1303 /* Third Byte */
1304 kal_uint8 thirdBit :1; // Always be 1
1305 kal_uint8 ext2ndBit :1; // Always be 1
1306 kal_uint8 ssn :3;
1307 kal_uint8 valid_tx_bmp_l :3; // 0: the TX group does not belong to NR, 1: the TX group belongs to NR
1308 /* Fourth Byte */
1309 kal_uint8 fourthBit :1; // Always be 1
1310 kal_uint8 ext3rdBit :1; // Always be 0
1311 kal_uint8 valid_tx_bmp_h :3;
1312 kal_uint8 txGroupStatus_0 :1; // 0: TX of group0 is off, 1: TX of group0 is on
1313 kal_uint8 txGroupStatus_1 :1; // 0: TX of group1 is off, 1: TX of group1 is on
1314 kal_uint8 txGroupStatus_2 :1; // 0: TX of group2 is off, 1: TX of group2 is on
1315 /* Fifth Byte */
1316 kal_uint8 fifthBit :1; // Always be 1
1317 kal_uint8 ext4thBit :1; // Always be 1
1318 kal_uint8 txGroupStatus_3 :1; // 0: TX of group3 is off, 1: TX of group3 is on
1319 kal_uint8 txGroupStatus_4 :1; // 0: TX of group4 is off, 1: TX of group4 is on
1320 kal_uint8 txGroupStatus_5 :1; // 0: TX of group5 is off, 1: TX of group5 is on
1321 kal_uint8 rsvd0 :3;
1322 /* Sixth Byte */
1323 kal_uint8 rsvd1 :8;
1324 /* Seventh Byte */
1325 kal_uint8 rsvd2 :8;
1326 /* Eighth Byte */
1327 kal_uint8 rsvd3 :8;
1328 /* ninth Byte */
1329 kal_uint8 rsvd4 :8;
1330}idc_md_nr_tx_fw_ind;
1331
1332/***** structure for filling extend command by byte *****/
1333
1334typedef struct _idc_ext_cmd_byte_str_type_1
1335{
1336 kal_uint8 field1 :1;
1337 kal_uint8 field2 :4;
1338 kal_uint8 field3 :3;
1339}idc_ext_cmd_byte_str_type_1;
1340
1341typedef struct _idc_ext_cmd_byte_str_type_2
1342{
1343 kal_uint8 field1 :1;
1344 kal_uint8 field2 :1;
1345 kal_uint8 field3 :6;
1346}idc_ext_cmd_byte_str_type_2;
1347
1348typedef struct _idc_ext_cmd_byte_str_type_3
1349{
1350 kal_uint8 field1 :1;
1351 kal_uint8 field2 :1;
1352 kal_uint8 field3 :3;
1353 kal_uint8 field4 :3;
1354}idc_ext_cmd_byte_str_type_3;
1355
1356typedef struct _idc_ext_cmd_byte_type
1357{
1358 kal_uint8 data;
1359 idc_ext_cmd_byte_str_type_1 data_type_1;
1360 idc_ext_cmd_byte_str_type_2 data_type_2;
1361 idc_ext_cmd_byte_str_type_3 data_type_3;
1362}idc_ext_cmd_byte_type;
1363
1364typedef union _idc_md_normal_hw_signal
1365{
1366 idc_md_normal_hw_signal_ind normalHwSignal;
1367 idc_md_lte_drx_ind lteDrxInd;
1368 idc_md_nr_drx_ind nrDrxInd;
1369 idc_md_lte_int_detect_ind lteIntDetectInd;
1370 idc_md_nr_int_detect_ind nrIntDetectInd;
1371 idc_md_lte_phase_ind ltePhaseInd;
1372 idc_md_nr_phase_ind nrPhaseInd;
1373 idc_md_lte_state_ind lteStateInd;
1374 idc_md_nr_state_ind nrStateInd;
1375 idc_md_lte_suspend_pta_ap_ind lteSuspPtaApInd;
1376 idc_md_nr_suspend_pta_ap_ind nrSuspPtaApInd;
1377 idc_md_lte_gnss_blank_ind lteGnssBlankInd;
1378 idc_md_nr_gnss_blank_ind nrGnssBlankInd;
1379 idc_md_tx_susp_ind txSuspInd;
1380}idc_md_normal_hw_signal;
1381
1382typedef union _idc_md_extend_hw_signal
1383{
1384 idc_md_ext_cmd_struct extCmd;
1385 idc_md_ext_hw_signal_ind extHwSignal;
1386 idc_md_lte_rx_ind lteRxInd;
1387 idc_md_lte_tx_ind lteTxInd;
1388 idc_md_lte_slp_dur_ind lteSlpDurInd;
1389 idc_md_lte_block_consys_tx_ind lteBlockConsysTxInd;
1390 idc_md_send_hw_signal_ack_ind hwSignalAckInd;
1391 idc_md_lte_scell_activate_ind lteScellActvInd;
1392 idc_md_tx_bwp_ind txBwpInd;
1393 idc_md_rx_bwp_ind rxBwpInd;
1394 idc_md_pattern_sync_ind patternSyncInd;
1395 idc_md_nr_rx_ind nrRxInd;
1396 idc_md_nr_tx_ind nrTxInd;
1397 idc_md_nr_slp_dur_ind nrSlpDurInd;
1398 idc_md_nr_block_consys_tx_ind nrBlockConsysTxInd;
1399 idc_md_expect_consys_tx_pwr_limit_ind consysTxPwrLimitInd;
1400 idc_md_lte_tx_pwr_ind lteTxPwrInd;
1401 idc_md_lte_tx_leadtime_ind lteTxLeadtimeInd;
1402 idc_md_nr_tx_pwr_ind nrTxPwrInd;
1403 idc_md_nr_tx_leadtime_ind nrTxLeadtimeInd;
1404 idc_md_nr_scell_activate_ind nrScellActvInd;
1405 idc_md_tx_bwp_fw_ind txBwpFwInd;
1406 idc_md_rx_bwp_fw_ind rxBwpFwInd;
1407 idc_md_lte_tx_fw_ind lteTxFwInd;
1408 idc_md_nr_tx_fw_ind nrTxFwInd;
1409}idc_md_extend_hw_signal;
1410
1411typedef struct _idc_dummy_consys_hw_sig_ack_ind_ilm_struct
1412{
1413 LOCAL_PARA_HDR
1414 idc_md_send_hw_signal_ack_ind hwSigAckInd;
1415}idc_dummy_consys_hw_sig_ack_ind_ilm_struct;
1416
1417typedef struct _idc_scheduling_event
1418{
1419 /* Link list pointer of idc event list */
1420 llist_t link;
1421 kal_bool isSleep;
1422 kal_int64 localOffset;
1423 kal_uint8 num;
1424 idc_md_normal_hw_signal_type_enum EventType;
1425 idc_md_normal_hw_signal IdcData;
1426 idc_md_extend_hw_signal_subtype_enum EventSubType;
1427 idc_md_extend_hw_signal IdcExtData;
1428}idc_scheduling_event;
1429
1430/************************/
1431/***** CONSYS to LTE ****/
1432/************************/
1433
1434/***** IDC CONSYS Normal HW Signal *****/
1435
1436typedef struct _idc_consys_resend_ntf
1437{
1438 /* First Byte */
1439 kal_uint16 firstBit :1; // Always be 0
1440 kal_uint16 type :4;
1441 kal_uint16 ssn :3;
1442 /* Second Byte */
1443 kal_uint16 secondBit :1; // Always be 1
1444 kal_uint16 rsvd :7;
1445}idc_consys_resend_ntf;
1446
1447typedef struct _idc_consys_bt_max_pwr_backoff_ntf
1448{
1449 /* First Byte */
1450 kal_uint16 firstBit :1; // Always be 0
1451 kal_uint16 type :4;
1452 kal_uint16 ssn :3;
1453 /* Second Byte */
1454 kal_uint16 secondBit :1; // Always be 1
1455 kal_uint16 mdPwrBackoffEn :1; // 0: MD does not apply pwr backoff solution, 1: MD applies pwr backoff solution
1456 kal_uint16 btPwrBackoffEn :1; // 0: BT does not apply pwr backoff solution, 1: BT applies pwr backoff solution
1457 kal_uint16 rsvd :5;
1458}idc_consys_bt_max_pwr_backoff_ntf;
1459
1460typedef struct _idc_consys_active_bss_ntf
1461{
1462 /* First Byte */
1463 kal_uint16 firstBit :1; // Always be 0
1464 kal_uint16 type :4;
1465 kal_uint16 ssn :3;
1466 /* Second Byte */
1467 kal_uint16 secondBit :1; // Always be 1
1468 kal_uint16 actvBmp :4; // LSB -> MSB: WiFi BSS1 --> BSS4
1469 kal_uint16 isWiFiSTA :1; // 0: SAP, 1: STA
1470 kal_uint16 rsvd :2;
1471}idc_consys_active_bss_ntf;
1472
1473typedef struct _idc_consys_wifi_max_pwr_backoff_ntf
1474{
1475 /* First Byte */
1476 kal_uint16 firstBit :1; // Always be 0
1477 kal_uint16 type :4;
1478 kal_uint16 ssn :3;
1479 /* Second Byte */
1480 kal_uint16 secondBit :1; // Always be 1
1481 kal_uint16 mdPwrBackoffEn :1; // 0: MD does not apply pwr backoff solution, 1: MD applies pwr backoff solution
1482 kal_uint16 wifi_0 :1; // MD do PWR backoff triggered by WF band0
1483 kal_uint16 wifi_1 :1; // MD do PWR backoff triggered by WF band1
1484 kal_uint16 wf0PwrBackoffEn :1; // 0: WF band0 does not apply pwr backoff solution, 1: WF band0 applies pwr backoff solution
1485 kal_uint16 wf1PwrBackoffEn :1; // 0: WF band1 does not apply pwr backoff solution, 1: WF band1 applies pwr backoff solution
1486 kal_uint16 isWfScan :1; // 0: WF Scan off, 1: WF scan on
1487 kal_uint16 rsvd :1;
1488}idc_consys_wifi_max_pwr_backoff_ntf;
1489
1490typedef struct _idc_consys_int_detect_ind
1491{
1492 /* First Byte */
1493 kal_uint16 firstBit :1; // Always be 0
1494 kal_uint16 type :4;
1495 kal_uint16 ssn :3;
1496 /* Second Byte */
1497 kal_uint16 secondBit :1; // Always be 1
1498 kal_uint16 solType :2; // 0: FDM, 1: PWR, 2: TDM
1499 kal_uint16 rsvd :5;
1500}idc_consys_int_detect_ind;
1501
1502typedef struct _idc_consys_wifi_rssi_ind
1503{
1504 /* First Byte */
1505 kal_uint16 firstBit :1; // Always be 0
1506 kal_uint16 type :4;
1507 kal_uint16 ssn :3;
1508 /* Second Byte */
1509 kal_uint16 secondBit :1; // Always be 1
1510 kal_uint16 rsvd :7;
1511}idc_consys_wifi_rssi_ind;
1512
1513typedef struct _idc_consys_bt_rssi_ind
1514{
1515 /* First Byte */
1516 kal_uint16 firstBit :1; // Always be 0
1517 kal_uint16 type :4;
1518 kal_uint16 ssn :3;
1519 /* Second Byte */
1520 kal_uint16 secondBit :1; // Always be 1
1521 kal_uint16 rsvd :7;
1522}idc_consys_bt_rssi_ind;
1523
1524typedef struct _idc_consys_wifi_rx_ind
1525{
1526 /* First Byte */
1527 kal_uint16 firstBit :1; // Always be 0
1528 kal_uint16 type :4;
1529 kal_uint16 ssn :3;
1530 /* Second Byte */
1531 kal_uint16 secondBit :1; // Always be 1
1532 kal_uint16 wifi0RxBmp :1; // 0: RX of WiFi band0 is inactive, 1: RX of WiFi band0 is active
1533 kal_uint16 wifi1RxBmp :1; // 0: RX of WiFi band1 is inactive, 1: RX of WiFi band1 is active
1534 kal_uint16 rsvd :5;
1535}idc_consys_wifi_rx_ind;
1536
1537typedef struct _idc_consys_bt_tx_ind
1538{
1539 /* First Byte */
1540 kal_uint16 firstBit :1; // Always be 0
1541 kal_uint16 type :4;
1542 kal_uint16 ssn :3;
1543 /* Second Byte */
1544 kal_uint16 secondBit :1; // Always be 1
1545 kal_uint16 btTx :1; // 0: TX of BT is inactive, 1: TX of BT is active
1546 kal_uint16 rsvd :6;
1547}idc_consys_bt_tx_ind;
1548
1549typedef struct _idc_consys_bt_rx_ind
1550{
1551 /* First Byte */
1552 kal_uint16 firstBit :1; // Always be 0
1553 kal_uint16 type :4;
1554 kal_uint16 ssn :3;
1555 /* Second Byte */
1556 kal_uint16 secondBit :1; // Always be 1
1557 kal_uint16 btRx :1; // 0: RX of BT is inactive, 1: RX of BT is active
1558 kal_uint16 rsvd :6;
1559}idc_consys_bt_rx_ind;
1560
1561/***** IDC CONSYS Extend HW Signal *****/
1562
1563typedef struct _idc_consys_rx_grant_ntf
1564{
1565 /* First Byte */
1566 kal_uint8 firstBit :1; // Always be 0
1567 kal_uint8 type :4; // Always be 15
1568 kal_uint8 len :3; // num. of byte for the data content
1569 /* Second Byte */
1570 kal_uint8 secondBit :1; // Always be 1
1571 kal_uint8 ext1stBit :1; // Always be 0
1572 kal_uint8 subType :6;
1573 /* Third Byte */
1574 kal_uint8 thirdBit :1; // Always be 1
1575 kal_uint8 ext2ndBit :1; // Always be 1
1576 kal_uint8 ssn :3;
1577 kal_uint8 btTxReq :1; // 0: TX of BT does not request arbitration, 1: TX of BT request arbitration
1578 kal_uint8 btTxPrio_l :2;
1579 /* Fourth Byte */
1580 kal_uint8 fourthBit :1; // Always be 1
1581 kal_uint8 ext3rdBit :1; // Always be 0
1582 kal_uint8 btTxPrio_h :2;
1583 kal_uint8 wifi0TxReq :1; // 0: TX of WiFi band0 does not request arbitration, 1: TX of WiFi band0 request arbitration
1584 kal_uint8 wifi0TxPrio_l :3;
1585 /* Fifth Byte */
1586 kal_uint8 fifthBit :1; // Always be 1
1587 kal_uint8 ext4thBit :1; // Always be 1
1588 kal_uint8 wifi0TxPrio_h :1;
1589 kal_uint8 wifi1TxReq :1;
1590 kal_uint8 wifi1TxPrio :4;
1591 /* Sixth Byte */
1592 kal_uint8 sixthBit :1; // Always be 1
1593 kal_uint8 ext5thBit :1; // Always be 0
1594 kal_uint8 mdRx0Status :2; // 2'b00: MD RX group0 does not transmit data, 2'b01: MD RX group0 transmits data, but it is revoked, 2'b11: MD RX group0 transmits data, and it is granted
1595 kal_uint8 mdRx1Status :2;
1596 kal_uint8 mdRx2Status :2;
1597 /* Seventh Byte */
1598 kal_uint8 seventhBit :1; // Always be 1
1599 kal_uint8 ext6thBit :1; // Always be 1
1600 kal_uint8 mdRx3Status :2;
1601 kal_uint8 mdRx4Status :2;
1602 kal_uint8 mdRx5Status :2;
1603 /* Eighth Byte */
1604 kal_uint8 eighthBit :1; // Always be 1
1605 kal_uint8 ext7thBit :1; // Always be 0
1606 kal_uint8 mdRx6Status :2;
1607 kal_uint8 mdRx7Status :2;
1608 kal_uint8 rsvd0 :2;
1609 /* ninth Byte */
1610 kal_uint8 rsvd1 :8;
1611}idc_consys_rx_grant_ntf;
1612
1613typedef struct _idc_consys_tx_grant_ntf
1614{
1615 /* First Byte */
1616 kal_uint8 firstBit :1; // Always be 0
1617 kal_uint8 type :4; // Always be 15
1618 kal_uint8 len :3; // num. of byte for the data content
1619 /* Second Byte */
1620 kal_uint8 secondBit :1; // Always be 1
1621 kal_uint8 ext1stBit :1; // Always be 0
1622 kal_uint8 subType :6;
1623 /* Third Byte */
1624 kal_uint8 thirdBit :1; // Always be 1
1625 kal_uint8 ext2ndBit :1; // Always be 1
1626 kal_uint8 ssn :3;
1627 kal_uint8 btRxReq :1; // 0: RX of BT does not request arbitration, 1: RX of BT request arbitration
1628 kal_uint8 btRxPrio_l :2;
1629 /* Fourth Byte */
1630 kal_uint8 fourthBit :1; // Always be 1
1631 kal_uint8 ext3rdBit :1; // Always be 0
1632 kal_uint8 btRxPrio_h :2;
1633 kal_uint8 wifi0RxReq :1; // 0: RX of WiFi band0 does not request arbitration, 1: RX of WiFi band0 request arbitration
1634 kal_uint8 wifi0RxPrio_l :3;
1635 /* Fifth Byte */
1636 kal_uint8 fifthBit :1; // Always be 1
1637 kal_uint8 ext4thBit :1; // Always be 1
1638 kal_uint8 wifi0RxPrio_h :1;
1639 kal_uint8 wifi1RxReq :1;
1640 kal_uint8 wifi1RxPrio :4;
1641 /* Sixth Byte */
1642 kal_uint8 sixthBit :1; // Always be 1
1643 kal_uint8 ext5thBit :1; // Always be 0
1644 kal_uint8 mdTx0Status :2; // 2'b00: MD TX group0 does not transmit data, 2'b01: MD TX group0 transmits data, but it is revoked, 2'b11: MD TX group0 transmits data, and it is granted
1645 kal_uint8 mdTx1Status :2;
1646 kal_uint8 mdTx2Status :2;
1647 /* Seventh Byte */
1648 kal_uint8 seventhBit :1; // Always be 1
1649 kal_uint8 ext6thBit :1; // Always be 1
1650 kal_uint8 mdTx3Status :2;
1651 kal_uint8 mdTx4Status :2;
1652 kal_uint8 mdTx5Status :2;
1653 /* Eighth Byte */
1654 kal_uint8 rsvd0 :8;
1655 /* ninth Byte */
1656 kal_uint8 rsvd1 :8;
1657}idc_consys_tx_grant_ntf;
1658
1659typedef struct _idc_consys_tdm_ntf
1660{
1661 /* First Byte */
1662 kal_uint8 firstBit :1; // Always be 0
1663 kal_uint8 type :4; // Always be 15
1664 kal_uint8 len :3; // num. of byte for the data content
1665 /* Second Byte */
1666 kal_uint8 secondBit :1; // Always be 1
1667 kal_uint8 ext1stBit :1; // Always be 0
1668 kal_uint8 subType :6;
1669 /* Third Byte */
1670 kal_uint8 thirdBit :1; // Always be 1
1671 kal_uint8 ext2ndBit :1; // Always be 1
1672 kal_uint8 ssn :3;
1673 kal_uint8 wifi0 :1; // Activated freq. in WiFi band0 request TDM
1674 kal_uint8 wifi1 :1; // Activated freq. in WiFi band1 request TDM
1675 kal_uint8 bt :1; // BT request TDM
1676 /* Fourth Byte */
1677 kal_uint8 fourthBit :1; // Always be 1
1678 kal_uint8 ext3rdBit :1; // Always be 0
1679 kal_uint8 ext0 :1;
1680 kal_uint8 ext1 :1;
1681 kal_uint8 dur_l :4; // Range from 0~2560(ms), 12'b111111111111: infinite duration
1682 /* Fifth Byte */
1683 kal_uint8 fifthBit :1; // Always be 1
1684 kal_uint8 ext4thBit :1; // Always be 1
1685 kal_uint8 dur_m :6;
1686 /* Sixth Byte */
1687 kal_uint8 sixthBit :1; // Always be 1
1688 kal_uint8 ext5thBit :1; // Always be 0
1689 kal_uint8 dur_h :2;
1690 kal_uint8 rsvd0 :4;
1691 /* Seventh Byte */
1692 kal_uint8 rsvd1 :8;
1693 /* Eighth Byte */
1694 kal_uint8 rsvd2 :8;
1695 /* ninth Byte */
1696 kal_uint8 rsvd3 :8;
1697}idc_consys_tdm_ntf;
1698
1699typedef struct _idc_consys_hw_signal_ack_ntf
1700{
1701 /* First Byte */
1702 kal_uint8 firstBit :1; // Always be 0
1703 kal_uint8 type :4; // Always be 15
1704 kal_uint8 len :3; // num. of byte for the data content
1705 /* Second Byte */
1706 kal_uint8 secondBit :1; // Always be 1
1707 kal_uint8 ext1stBit :1; // Always be 0
1708 kal_uint8 subType :6;
1709 /* Third Byte */
1710 kal_uint8 thirdBit :1; // Always be 1
1711 kal_uint8 ext2ndBit :1; // Always be 1
1712 kal_uint8 ssn :3;
1713 kal_uint8 ack_num :3; // Carry the SSN of targeted HW signal from MD
1714 /* Fourth Byte */
1715 kal_uint8 fourthBit :1; // Always be 1
1716 kal_uint8 ext3rdBit :1; // Always be 0
1717 kal_uint8 targetType :6; // Indicate HW signal Type or SubType depends on the param. 'isExtCmd'
1718 /* Fifth Byte */
1719 kal_uint8 fifthBit :1; // Always be 1
1720 kal_uint8 ext4thBit :1; // Always be 1
1721 kal_uint8 isExtCmd :1; // Indicate whether the Ack is for the extend HW signal sent from MD or not
1722 kal_uint8 isFromWiFi :1; // 0: ACK from BT, 1: ACK from WiFi
1723 kal_uint8 rsvd0 :4;
1724 /* Sixth Byte */
1725 kal_uint8 rsvd1 :8;
1726 /* Seventh Byte */
1727 kal_uint8 rsvd2 :8;
1728 /* Eighth Byte */
1729 kal_uint8 rsvd3 :8;
1730 /* ninth Byte */
1731 kal_uint8 rsvd4 :8;
1732}idc_consys_hw_signal_ack_ntf;
1733
1734typedef struct _idc_consys_wifi_tx_ind
1735{
1736 /* First Byte */
1737 kal_uint8 firstBit :1; // Always be 0
1738 kal_uint8 type :4; // Always be 15
1739 kal_uint8 len :3; // num. of byte for the data content
1740 /* Second Byte */
1741 kal_uint8 secondBit :1; // Always be 1
1742 kal_uint8 ext1stBit :1; // Always be 0
1743 kal_uint8 subType :6;
1744 /* Third Byte */
1745 kal_uint8 thirdBit :1; // Always be 1
1746 kal_uint8 ext2ndBit :1; // Always be 1
1747 kal_uint8 ssn :3;
1748 kal_uint8 wifi0Tx :1; // 0: TX of WiFi band0 is inactive, 1: TX of WiFi band0 is active
1749 kal_uint8 wifi1Tx :1; // 0: TX of WiFi band1 is inactive, 1: TX of WiFi band1 is active
1750 kal_uint8 rsvd :1;
1751 /* Fourth Byte */
1752 kal_uint8 fourthBit :1; // Always be 1
1753 kal_uint8 ext3rdBit :1; // Always be 0
1754 kal_uint8 wifi0TxPwr :4; // TX PWR of WiFi band0
1755 kal_uint8 wifi1TxPwr_l :2;
1756 /* Fifth Byte */
1757 kal_uint8 fifthBit :1; // Always be 1
1758 kal_uint8 ext4thBit :1; // Always be 1
1759 kal_uint8 wifi1TxPwr_h :2;
1760 kal_uint8 rsvd0 :4;
1761 /* Sixth Byte */
1762 kal_uint8 rsvd1 :8;
1763 /* Seventh Byte */
1764 kal_uint8 rsvd2 :8;
1765 /* Eighth Byte */
1766 kal_uint8 rsvd3 :8;
1767 /* ninth Byte */
1768 kal_uint8 rsvd4 :8;
1769}idc_consys_wifi_tx_ind;
1770
1771typedef struct _idc_consys_bt_pre_tx_ind
1772{
1773 /* First Byte */
1774 kal_uint8 firstBit :1; // Always be 0
1775 kal_uint8 type :4; // Always be 15
1776 kal_uint8 len :3; // num. of byte for the data content
1777 /* Second Byte */
1778 kal_uint8 secondBit :1; // Always be 1
1779 kal_uint8 ext1stBit :1; // Always be 0
1780 kal_uint8 subType :6;
1781 /* Third Byte */
1782 kal_uint8 thirdBit :1; // Always be 1
1783 kal_uint8 ext2ndBit :1; // Always be 1
1784 kal_uint8 ssn :3;
1785 kal_uint8 btRW_l :3; // BT remaining window, the unit is us
1786 /* Fourth Byte */
1787 kal_uint8 fourthBit :1; // Always be 1
1788 kal_uint8 ext3rdBit :1; // Always be 0
1789 kal_uint8 btRW_m :6;
1790 /* Fifth Byte */
1791 kal_uint8 fifthBit :1; // Always be 1
1792 kal_uint8 ext4thBit :1; // Always be 1
1793 kal_uint8 btRW_h :1;
1794 kal_uint8 btTxPwr :4; // TX PWR of BT
1795 kal_uint8 btCenter_l :1; // BT channel offset to 2.4G, the uint is Mhz
1796 /* Sixth Byte */
1797 kal_uint8 sixthBit :1; // Always be 1
1798 kal_uint8 ext5thBit :1; // Always be 0
1799 kal_uint8 btCenter_h :6;
1800 /* Seventh Byte */
1801 kal_uint8 rsvd0 :8;
1802 /* Eighth Byte */
1803 kal_uint8 rsvd1 :8;
1804 /* ninth Byte */
1805 kal_uint8 rsvd2 :8;
1806}idc_consys_bt_pre_tx_ind;
1807
1808typedef struct _idc_consys_tdm_on_ind
1809{
1810 /* First Byte */
1811 kal_uint8 firstBit :1; // Always be 0
1812 kal_uint8 type :4; // Always be 15
1813 kal_uint8 len :3; // num. of byte for the data content
1814 /* Second Byte */
1815 kal_uint8 secondBit :1; // Always be 1
1816 kal_uint8 ext1stBit :1; // Always be 0
1817 kal_uint8 subType :6;
1818 /* Third Byte */
1819 kal_uint8 thirdBit :1; // Always be 1
1820 kal_uint8 ext2ndBit :1; // Always be 1
1821 kal_uint8 ssn :3;
1822 kal_uint8 isTdmOn :1; // 0: TX of WiFi band0 is inactive, 1: TX of WiFi band0 is active
1823 kal_uint8 wifi0 :1; // 0: TX of WiFi band1 is inactive, 1: TX of WiFi band1 is active
1824 kal_uint8 wifi1 :1;
1825 /* Fourth Byte */
1826 kal_uint8 fourthBit :1; // Always be 1
1827 kal_uint8 ext3rdBit :1; // Always be 0
1828 kal_uint8 bt :1; // TX PWR of WiFi band0
1829 kal_uint8 ext0 :1; // TX PWR of WiFi band0
1830 kal_uint8 ext1 :1; // TX PWR of WiFi band0
1831 kal_uint8 rsvd0 :3;
1832 /* Fifth Byte */
1833 kal_uint8 fifthBit :1; // Always be 1
1834 kal_uint8 ext4thBit :1; // Always be 1
1835 kal_uint8 leadTime :4;
1836 kal_uint8 rsvd1 :2;
1837 /* Sixth Byte */
1838 kal_uint8 rsvd2 :8;
1839 /* Seventh Byte */
1840 kal_uint8 rsvd3 :8;
1841 /* Eighth Byte */
1842 kal_uint8 rsvd4 :8;
1843 /* ninth Byte */
1844 kal_uint8 rsvd5 :8;
1845
1846}idc_consys_tdm_on_ind;
1847
1848typedef union _idc_consys_normal_hw_signal
1849{
1850 idc_consys_resend_ntf ResendNtf;
1851 idc_consys_bt_max_pwr_backoff_ntf BTMaxPwrBackoffNtf;
1852 idc_consys_active_bss_ntf ActvBssNtf;
1853 idc_consys_wifi_max_pwr_backoff_ntf WiFiMaxPwrBackoffNtf;
1854 idc_consys_int_detect_ind IntDetectInd;
1855 idc_consys_wifi_rssi_ind WiFiRssiInd;
1856 idc_consys_bt_rssi_ind BTRssiInd;
1857 idc_consys_wifi_rx_ind WiFiRxInd;
1858 idc_consys_bt_tx_ind BTTxInd;
1859 idc_consys_bt_rx_ind BTRxInd;
1860}idc_consys_normal_hw_signal;
1861
1862typedef union _idc_consys_extend_hw_signal
1863{
1864 idc_consys_rx_grant_ntf RxGrantNtf;
1865 idc_consys_tx_grant_ntf TxGrantNtf;
1866 idc_consys_tdm_ntf TdmNtf;
1867 idc_consys_hw_signal_ack_ntf HwSignalAckNtf;
1868 idc_consys_wifi_tx_ind WiFiTxInd;
1869 idc_consys_bt_pre_tx_ind BTPreTxInd;
1870 idc_consys_tdm_on_ind TdmOnInd;
1871}idc_consys_extend_hw_signal;
1872
1873#endif