blob: 060645b3e0bd8aea7a9c6aa15b3c57f5ee27859c [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 *
38 * Filename:
39 * ---------
40 * errc_emac_msg.h
41 *
42 * Project:
43 * --------
44 * MOLY
45 *
46 * Description:
47 * ------------
48 * Define ERRC EMAC interface enums, structures and constants
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 * ==========================================================================
55 * $Log$
56 *
57 * 11 01 2018 sc.tung
58 * [MOLY00361478] [Gen97] Gemini Compile Option Clean Up
59 *
60 * [el2][emac] Gemini compiler option clean up.
61 *
62 * 07 31 2018 guang-yu.zheng
63 * [MOLY00342112] [MT6295] ERRC-EMAC interface extend for RA/TA configuration (UL2CC->3CC)
64 * Add back legacy interface for xl1sim flow
65 *
66 * 07 27 2018 guang-yu.zheng
67 * [MOLY00342112] [MT6295] ERRC-EMAC interface extend for RA/TA configuration (UL2CC->3CC)
68 * RA/TA interface extenstion for 3CC
69 *
70 * 06 14 2018 tina-yt.wang
71 * [MOLY00333176] [ICD] stage1+stage2 ICD UMOLYE CBr patch back to LR13.R0
72 * [EL2ICD] EMAC ERT related part
73 *
74 * 06 11 2018 jia-shi.lin
75 * [MOLY00319373] [MT6295] recommended bit rate feature
76 * recommended bit rate feature: txlisr and emac design
77 *
78 * 06 05 2018 guang-yu.zheng
79 * [MOLY00331352] [MT6295] EL2 MML2 DVFS control development
80 * Add CAT16 support for MML2 DVFS Control
81 *
82 * 04 11 2018 jia-shi.lin
83 * [MOLY00319373] [MT6295] recommended bit rate feature
84 * recommended bit rate feature: errc-emac interface
85 *
86 * 04 10 2018 nicole.hsu
87 * [MOLY00314955] [Gen 95][ERRC][RCM] MP1 capability config
88 * [UMOLYE TRUNK] add RBR_enable to ERRC-EMAC interface
89 *
90 * 03 19 2018 guang-yu.zheng
91 * [MOLY00313850] [MT6295] MML2 DVFS control feature development
92 * MML2 DVFS control and MCU DVFS re-org
93 *
94 * 02 26 2018 wen-jiunn.liu
95 * [MOLY00279230] [93/95 re-arch] Gen95 Development
96 * [EMAC][ERRC] Interface for PUSCH Enhancement Mode
97 *
98 * 01 11 2018 jia-shi.lin
99 * [MOLY00301451] [SMO release][93/95]EL1 relative interface
100 * emac/el1 interface re-arch
101 *
102 * 09 20 2017 nicole.hsu
103 * [MOLY00279184] [PCT][Anritsu][CAG50C][E40][7.1.1.2] fail
104 * [TRUNK] LCID vs. support release handling
105 *
106 * 08 16 2017 guang-yu.zheng
107 * [MOLY00271123] [MT6293][EMAC] SRLTE-enhance feature code sync
108 * Add EMAC interface for SRLTE enhancement handling
109 *
110 * 01 25 2017 eddie.wang
111 * [MOLY00210650] [MT6293][UMOLYA TRUNK] EMAC maintenance
112 * [MSIM][RSIM] Add emac config req cause for remote sim scenario
113 *
114 * 12 26 2016 mf.jhang
115 * [MOLY00194987] [MT6293][UMOLYA/PS DEV] EMAC maintenance
116 * update errc_emac_ca_activate_ind_struct
117 *
118 * 11 08 2016 mf.jhang
119 * [MOLY00194987] [MT6293][UMOLYA/PS DEV] EMAC maintenance
120 * Update errc_emac_ca_activate_ind_struct
121 *
122 * 10 06 2016 eddie.wang
123 * [MOLY00206522] [MT6293][NWSIM][Regression][TC_7_1_4_18] Test failed
124 * TRUNK:Remove redundant config like extendedBSR and MBMS in emac_config_req
125 *
126 * 09 13 2016 nicole.hsu
127 * [MOLY00194987] [MT6293][UMOLYA/PS DEV] EMAC maintenance
128 * [xL1Sim] remove errc_emac_config old field - tti_bundling_flag
129 *
130 * 03 16 2016 yk.liu
131 * [MOLY00165181] Syn EMAC from LR11 TO UMOLY for CL1990358
132 * .
133 *
134 * 03 15 2016 ryan.ou
135 * [MOLY00162291] [MT6292] EMAC code sync from LR11 to UMOLY
136 * CL1867764, [MOLY00151000] [MT6755] SRVCC Enhancement.
137 *
138 * 01 11 2016 ville.pukari
139 * [MOLY00156411] [MT6292] Logical Channel SR prohibit timer: New feature
140 *
141 * 10 16 2015 panu.peisa
142 * [MOLY00145084] DE6 code merge from UMOLY_92dev CBr to UMOLY trunk
143 * Integrated LTE_SEC changes from UMOLY_92dev ( errc part ).
144 *
145 * 10 06 2015 esko.oikarinen
146 * ERRC changes for multiple TA
147 *
148 * 09 10 2015 chun-fan.tsai
149 * [MOLY00098400] [6291] eRRC CONN EM
150 * Add CCCH Data Req cause for EMAC EM
151 *
152 * 03 18 2015 chen-wei.wang
153 * [MOLY00099525] [TK6291] EMAC MDT feature check-in
154 * interface file check-in
155 *
156 * 12 03 2014 sh.yang
157 * [MOLY00084081] [UMOLY] Trunk merge back
158 * .Add carrier index in si_ind_struct
159 *
160 * 11 11 2014 yiting.cheng
161 * [MOLY00084042] [UMOLY] merge UMOLY_DEV to UMOLY trunk
162 * .
163 *
164 * 10 08 2014 henry.lai
165 * [MOLY00079071] [MT6291][U4G] Low Power Modification for CEL Paging
166 * .
167 *
168 * 09 19 2014 chi-chung.lin
169 * [MOLY00073836] [MT6291][ERRC][CHM] LTE-A CHM development code check-in
170 * [CHM] MBMS interface check in
171 *
172 * 07 28 2014 yiting.cheng
173 * [MOLY00073830] [MT6291_DEV] check-in MT6291 modification
174 * Check-in EMAC-ERRC interface
175 *
176 * 08 06 2013 stanleyhy.chen
177 * [MOLY00032633] 4G Nbr Cell Info
178 * 4G Nbr Cell Info in LTE Domain
179 *
180 * 07 22 2013 stanleyhy.chen
181 * [MOLY00029602] [New Feature] NBR_CELL_INFO and TA_INFO related interfaces
182 * Add ERRC_EMAC_TA_INFO_INVALID_IND
183 *
184 * 07 12 2013 stanleyhy.chen
185 * [MOLY00029602] [New Feature] NBR_CELL_INFO and TA_INFO related interfaces
186 * TA_INFO and NBR_CELL_INFO interfaces for LPP feature
187 ****************************************************************************/
188
189#ifndef ERRC_EMAC_MSG_H
190#define ERRC_EMAC_MSG_H
191
192
193#include "kal_public_api.h"
194#include "el2_sap_common.h"
195#include "qmu_bm.h"
196#include "lte_time_common.h"
197#include "common_def.h"
198
199#if !defined(__XL1SIM_EL1__) && defined(__LTE_L1SIM__)
200#define __XL1SIM_EL1__
201#endif
202////////////////////////////////////////////////////////////////
203// MAC configuration request
204////////////////////////////////////////////////////////////////
205
206//mac config request info bitmap
207#define EMAC_CONFIG_INFO_RA_MASK 0x01
208#define EMAC_CONFIG_INFO_SCHED_MASK 0x02
209#define EMAC_CONFIG_INFO_DRX_MASK 0x04
210#define EMAC_CONFIG_INFO_PHR_MASK 0x08
211#define EMAC_CONFIG_INFO_CRNTI_MASK 0x10
212
213#define ERRC_EMAC_CCCH_SZ (6)
214
215//max number of RB
216#define ERRC_EMAC_MAX_RB_NB (10)
217
218//max number of STAG/SCell
219#if(CUR_GEN >= MD_GEN95)
220#define ERRC_EMAC_MAX_STAG_NB (1)
221#define ERRC_EMAC_MAX_SCELL_NB (3)
222#else
223#define ERRC_EMAC_MAX_STAG_NB (1)
224#define ERRC_EMAC_MAX_SCELL_NB (1)
225#endif
226
227
228
229typedef enum
230{
231 ERRC_EMAC_CONFIG_CAUSE_NON_HO = 0,
232 ERRC_EMAC_CONFIG_CAUSE_HO = 1,
233 ERRC_EMAC_CONFIG_CAUSE_RESET = 2,
234//#if defined(__REMOTE_SIM__)
235#if defined(__GEMINI__)
236 ERRC_EMAC_CONFIG_CAUSE_RESET_VIRTUAL_CONNECTED_ENTER = 3,
237 ERRC_EMAC_CONFIG_CAUSE_VIRTUAL_CONNECTED_LEAVE_PREPARE = 4,
238 ERRC_EMAC_CONFIG_CAUSE_VIRTUAL_CONNECTED_LEAVE = 5,
239 ERRC_EMAC_CONFIG_CAUSE_RESET_VIRTUAL_CONNECTED_LEAVE_FAIL = 6,
240//#if defined(__SRLTE_ENHANCE__)
241#if defined(__GEMINI__)
242 //The design for SRLTE enhancement will be the same as RSIM, but we still seperate the cause
243 ERRC_EMAC_CONFIG_CAUSE_RESET_VIRTUAL_CONNECTED_ENTER_FOR_SRLTE = 7,
244 ERRC_EMAC_CONFIG_CAUSE_VIRTUAL_CONNECTED_LEAVE_PREPARE_FOR_SRLTE = 8,
245 ERRC_EMAC_CONFIG_CAUSE_VIRTUAL_CONNECTED_LEAVE_FOR_SRLTE = 9,
246 ERRC_EMAC_CONFIG_CAUSE_RESET_VIRTUAL_CONNECTED_LEAVE_FAIL_FOR_SRLTE = 10,
247#endif
248#endif
249} errc_emac_config_cause_enum;
250
251//For ICD MAC_RESET_EVENT and MAC_CONFIGURATION_EVENT
252typedef enum
253{
254 ERRC_EMAC_ICD_RESET_CAUSE_OTHERS = 0,
255 ERRC_EMAC_ICD_RESET_CAUSE_RELEASE = 1,
256 ERRC_EMAC_ICD_RESET_CAUSE_HO = 2,
257 ERRC_EMAC_ICD_RESET_CAUSE_RLF = 3,
258 ERRC_EMAC_ICD_CONFIG_CAUSE_NORMAL = 4,
259 ERRC_EMAC_ICD_CONFIG_CAUSE_HO = 5,
260} errc_emac_icd_event_cause_enum;
261
262typedef enum
263{
264 ERRC_EMAC_TA_TIMER_500, ERRC_EMAC_TA_TIMER_750, ERRC_EMAC_TA_TIMER_1280, ERRC_EMAC_TA_TIMER_1920,
265 ERRC_EMAC_TA_TIMER_2560, ERRC_EMAC_TA_TIMER_5120, ERRC_EMAC_TA_TIMER_10240, ERRC_EMAC_TA_TIMER_INF
266} errc_emac_ta_timer_enum;
267
268typedef enum
269{
270 RA_PREAMBLE_NB_4, RA_PREAMBLE_NB_8, RA_PREAMBLE_NB_12, RA_PREAMBLE_NB_16,
271 RA_PREAMBLE_NB_20, RA_PREAMBLE_NB_24, RA_PREAMBLE_NB_28, RA_PREAMBLE_NB_32,
272 RA_PREAMBLE_NB_36, RA_PREAMBLE_NB_40, RA_PREAMBLE_NB_44, RA_PREAMBLE_NB_48,
273 RA_PREAMBLE_NB_52, RA_PREAMBLE_NB_56, RA_PREAMBLE_NB_60,RA_PREAMBLE_NB_64
274} errc_emac_ra_preamble_nb_enum;
275
276typedef enum
277{
278 RA_GROUP_A_SZ_4, RA_GROUP_A_SZ_8, RA_GROUP_A_SZ_12, RA_GROUP_A_SZ_16,
279 RA_GROUP_A_SZ_20, RA_GROUP_A_SZ_24, RA_GROUP_A_SZ_28, RA_GROUP_A_SZ_32,
280 RA_GROUP_A_SZ_36, RA_GROUP_A_SZ_40, RA_GROUP_A_SZ_44, RA_GROUP_A_SZ_48,
281 RA_GROUP_A_SZ_52, RA_GROUP_A_SZ_56, RA_GROUP_A_SZ_60
282} errc_emac_ra_group_a_sz_enum;
283
284typedef enum
285{
286 RA_GROUP_A_MSG_SZ_56, RA_GROUP_A_MSG_SZ_144, RA_GROUP_A_MSG_SZ_208, RA_GROUP_A_MSG_SZ_256
287} errc_emac_ra_msg_sz_group_a_enum;
288
289typedef enum
290{
291 MSG_POW_OFFSET_GROUP_B_MINUS_INF, MSG_POW_OFFSET_GROUP_B_0, MSG_POW_OFFSET_GROUP_B_5,
292 MSG_POW_OFFSET_GROUP_B_8, MSG_POW_OFFSET_GROUP_B_10, MSG_POW_OFFSET_GROUP_B_12,
293 MSG_POW_OFFSET_GROUP_B_15, MSG_POW_OFFSET_GROUP_B_18
294} errc_emac_msg_pow_offset_group_b_enum;
295
296typedef enum
297{
298 RA_POW_RAMPING_0, RA_POW_RAMPING_2, RA_POW_RAMPING_4, RA_POW_RAMPING_6
299} errc_emac_ra_pow_ramping_enum;
300
301typedef enum
302{
303 PREAMBLE_INIT_POW_MINUS120, PREAMBLE_INIT_POW_MINUS118, PREAMBLE_INIT_POW_MINUS116,
304 PREAMBLE_INIT_POW_MINUS114, PREAMBLE_INIT_POW_MINUS112, PREAMBLE_INIT_POW_MINUS110,
305 PREAMBLE_INIT_POW_MINUS108, PREAMBLE_INIT_POW_MINUS106, PREAMBLE_INIT_POW_MINUS104,
306 PREAMBLE_INIT_POW_MINUS102, PREAMBLE_INIT_POW_MINUS100,
307 PREAMBLE_INIT_POW_MINUS98, PREAMBLE_INIT_POW_MINUS96, PREAMBLE_INIT_POW_MINUS94,
308 PREAMBLE_INIT_POW_MINUS92, PREAMBLE_INIT_POW_MINUS90
309} errc_emac_preamble_init_pow_enum;
310
311typedef enum
312{
313 PREAMBLE_TX_MAX_3, PREAMBLE_TX_MAX_4, PREAMBLE_TX_MAX_5, PREAMBLE_TX_MAX_6,
314 PREAMBLE_TX_MAX_7, PREAMBLE_TX_MAX_8, PREAMBLE_TX_MAX_10, PREAMBLE_TX_MAX_20,
315 PREAMBLE_TX_MAX_50, PREAMBLE_TX_MAX_100, PREAMBLE_TX_MAX_200
316} errc_emac_preamble_tx_max_enum;
317
318typedef enum
319{
320 RAR_WND_SZ_2, RAR_WND_SZ_3, RAR_WND_SZ_4, RAR_WND_SZ_5, RAR_WND_SZ_6, RAR_WND_SZ_7,
321 RAR_WND_SZ_8, RAR_WND_SZ_10
322} errc_emac_rar_wnd_sz_enum;
323
324typedef enum
325{
326 CR_TIMER_8, CR_TIMER_16, CR_TIMER_24, CR_TIMER_32, CR_TIMER_40, CR_TIMER_48, CR_TIMER_56, CR_TIMER_64
327} errc_emac_cr_timer_enum;
328
329
330typedef enum
331{
332 MAX_HARQ_TX_1, MAX_HARQ_TX_2, MAX_HARQ_TX_3, MAX_HARQ_TX_4, MAX_HARQ_TX_5, MAX_HARQ_TX_6,
333 MAX_HARQ_TX_7, MAX_HARQ_TX_8, MAX_HARQ_TX_10, MAX_HARQ_TX_12, MAX_HARQ_TX_16, MAX_HARQ_TX_20,
334 MAX_HARQ_TX_24, MAX_HARQ_TX_28
335} errc_emac_max_harq_tx_enum;
336
337typedef enum
338{
339 PERIODIC_BSR_5, PERIODIC_BSR_10, PERIODIC_BSR_16, PERIODIC_BSR_20, PERIODIC_BSR_32,
340 PERIODIC_BSR_40, PERIODIC_BSR_64, PERIODIC_BSR_80, PERIODIC_BSR_128, PERIODIC_BSR_160,
341 PERIODIC_BSR_320, PERIODIC_BSR_640, PERIODIC_BSR_1280, PERIODIC_BSR_2560, PERIODIC_BSR_INF
342} errc_emac_periodic_bsr_timer_enum;
343
344typedef enum
345{
346 RETX_BSR_320, RETX_BSR_640, RETX_BSR_1280, RETX_BSR_2560, RETX_BSR_5120, RETX_BSR_10240
347} errc_emac_retx_bsr_timer_enum;
348
349typedef enum
350{
351 ON_DURATION_PS1, ON_DURATION_PS2, ON_DURATION_PS3, ON_DURATION_PS4, ON_DURATION_PS5, ON_DURATION_PS6,
352 ON_DURATION_PS8, ON_DURATION_PS10, ON_DURATION_PS20, ON_DURATION_PS30, ON_DURATION_PS40,
353 ON_DURATION_PS50, ON_DURATION_PS60, ON_DURATION_PS80, ON_DURATION_PS100, ON_DURATION_PS200,
354 ON_DURATION_PS300, ON_DURATION_PS400, ON_DURATION_PS500, ON_DURATION_PS600,
355 ON_DURATION_PS800, ON_DURATION_PS1000, ON_DURATION_PS1200, ON_DURATION_PS1600
356} errc_emac_on_duration_timer_enum;
357
358typedef enum
359{
360 DRX_INACTIVITY_PS1, DRX_INACTIVITY_PS2, DRX_INACTIVITY_PS3, DRX_INACTIVITY_PS4, DRX_INACTIVITY_PS5,
361 DRX_INACTIVITY_PS6, DRX_INACTIVITY_PS8, DRX_INACTIVITY_PS10, DRX_INACTIVITY_PS20, DRX_INACTIVITY_PS30,
362 DRX_INACTIVITY_PS40, DRX_INACTIVITY_PS50, DRX_INACTIVITY_PS60, DRX_INACTIVITY_PS80, DRX_INACTIVITY_PS100,
363 DRX_INACTIVITY_PS200, DRX_INACTIVITY_PS300, DRX_INACTIVITY_PS500, DRX_INACTIVITY_PS750, DRX_INACTIVITY_PS1280,
364 DRX_INACTIVITY_PS1920, DRX_INACTIVITY_PS2560, DRX_INACTIVITY_PS0
365} errc_emac_drx_inactivity_timer_enum;
366
367typedef enum
368{
369 DRX_RETX_TIMER_PS1, DRX_RETX_TIMER_PS2, DRX_RETX_TIMER_PS4, DRX_RETX_TIMER_PS6, DRX_RETX_TIMER_PS8,
370 DRX_RETX_TIMER_PS16, DRX_RETX_TIMER_PS24, DRX_RETX_TIMER_PS33, DRX_RETX_TIMER_PS0,
371 DRX_RETX_TIMER_PS40, DRX_RETX_TIMER_PS64, DRX_RETX_TIMER_PS80, DRX_RETX_TIMER_PS96,
372 DRX_RETX_TIMER_PS112, DRX_RETX_TIMER_PS128, DRX_RETX_TIMER_PS160, DRX_RETX_TIMER_PS320
373} errc_emac_drx_retx_timer_enum;
374
375typedef enum
376{
377 DRX_UL_RETX_TIMER_PS0, DRX_UL_RETX_TIMER_PS1, DRX_UL_RETX_TIMER_PS2, DRX_UL_RETX_TIMER_PS4, DRX_UL_RETX_TIMER_PS6, DRX_UL_RETX_TIMER_PS8,
378 DRX_UL_RETX_TIMER_PS16, DRX_UL_RETX_TIMER_PS24, DRX_UL_RETX_TIMER_PS33, DRX_UL_RETX_TIMER_PS40, DRX_UL_RETX_TIMER_PS64,
379 DRX_UL_RETX_TIMER_PS80, DRX_UL_RETX_TIMER_PS96, DRX_UL_RETX_TIMER_PS112, DRX_UL_RETX_TIMER_PS128, DRX_UL_RETX_TIMER_PS160, DRX_UL_RETX_TIMER_PS320
380} errc_emac_drx_ul_retx_timer_enum;
381
382typedef enum
383{
384 LONG_DRX_CYCLE_10, LONG_DRX_CYCLE_20, LONG_DRX_CYCLE_32, LONG_DRX_CYCLE_40, LONG_DRX_CYCLE_64,
385 LONG_DRX_CYCLE_80, LONG_DRX_CYCLE_128, LONG_DRX_CYCLE_160, LONG_DRX_CYCLE_256, LONG_DRX_CYCLE_320,
386 LONG_DRX_CYCLE_512, LONG_DRX_CYCLE_640, LONG_DRX_CYCLE_1024, LONG_DRX_CYCLE_1280, LONG_DRX_CYCLE_2048,
387 LONG_DRX_CYCLE_2560, LONG_DRX_CYCLE_60, LONG_DRX_CYCLE_70
388} errc_emac_long_drx_cycle_enum;
389
390typedef enum
391{
392 SHORT_DRX_CYCLE_2, SHORT_DRX_CYCLE_5, SHORT_DRX_CYCLE_8, SHORT_DRX_CYCLE_10, SHORT_DRX_CYCLE_16,
393 SHORT_DRX_CYCLE_20, SHORT_DRX_CYCLE_32, SHORT_DRX_CYCLE_40, SHORT_DRX_CYCLE_64, SHORT_DRX_CYCLE_80,
394 SHORT_DRX_CYCLE_128, SHORT_DRX_CYCLE_160, SHORT_DRX_CYCLE_256, SHORT_DRX_CYCLE_320, SHORT_DRX_CYCLE_512,
395 SHORT_DRX_CYCLE_640, SHORT_DRX_CYCLE_4
396} errc_emac_short_drx_cycle_enum;
397
398
399
400typedef enum
401{
402 PERIODIC_PHR_10, PERIODIC_PHR_20, PERIODIC_PHR_50, PERIODIC_PHR_100,
403 PERIODIC_PHR_200, PERIODIC_PHR_500, PERIODIC_PHR_1000, PERIODIC_PHR_INF
404} errc_emac_periodic_phr_timer_enum;
405
406typedef enum
407{
408 PROHIBIT_PHR_0, PROHIBIT_PHR_10, PROHIBIT_PHR_20, PROHIBIT_PHR_50,
409 PROHIBIT_PHR_100, PROHIBIT_PHR_200, PROHIBIT_PHR_500, PROHIBIT_PHR_1000
410} errc_emac_prohibit_phr_timer_enum;
411
412typedef enum
413{
414 DL_PATHLOSS_CHANGE_1, DL_PATHLOSS_CHANGE_3, DL_PATHLOSS_CHANGE_6, DL_PATHLOSS_CHANGE_INF
415} errc_emac_phr_dl_pathloss_change_enum;
416
417typedef enum
418{
419 BRQ_PROHIBIT_S0, BRQ_PROHIBIT_S0DOT4, BRQ_PROHIBIT_S0DOT8, BRQ_PROHIBIT_S1DOT6,
420 BRQ_PROHIBIT_S3, BRQ_PROHIBIT_S6, BRQ_PROHIBIT_S12, BRQ_PROHIBIT_S30
421} errc_emac_brq_prohibit_timer_enum;
422
423typedef enum
424{
425 ERRC_EMAC_TA_INFO_REQ_TYPE_STOP,
426 ERRC_EMAC_TA_INFO_REQ_TYPE_START
427} errc_emac_ta_info_req_type_enum;
428
429typedef enum
430{
431 EMAC_ERRC_RA_ERROR_ERRC_TRIGGER = 0,
432 EMAC_ERRC_RA_ERROR_NON_ERRC_TRIGGER = 0x01
433} emac_errc_ra_error_cause_enum;
434
435typedef enum
436{
437 EMAC_ERRC_L1_REL_CAUSE_TA = 0,
438 EMAC_ERRC_L1_REL_CAUSE_SR = 0x01,
439} emac_errc_ul_rel_cause_enum;
440
441typedef enum
442{
443 EMAC_ERRC_DRX_INC_GAP_REQ_TYPE_STOP,
444 EMAC_ERRC_DRX_INC_GAP_REQ_TYPE_START
445} errc_emac_drx_inc_gap_req_type_enum;
446
447typedef enum
448{
449 ERRC_EMAC_CCCH_CAUSE_CONN_REQ = 0,
450 ERRC_EMAC_CCCH_CAUSE_REEST_REQ = 0x01
451} errc_emac_ccch_cause_enum;
452
453typedef enum
454{
455 EMAC_SCELL_DEACTIVATION_TIMER_INFINITY, // defalut value
456 EMAC_SCELL_DEACTIVATION_TIMER_RF2,
457 EMAC_SCELL_DEACTIVATION_TIMER_RF4,
458 EMAC_SCELL_DEACTIVATION_TIMER_RF8,
459 EMAC_SCELL_DEACTIVATION_TIMER_RF16,
460 EMAC_SCELL_DEACTIVATION_TIMER_RF32,
461 EMAC_SCELL_DEACTIVATION_TIMER_RF64,
462 EMAC_SCELL_DEACTIVATION_TIMER_RF128
463}emac_scell_deactivation_timer_enum;
464
465typedef enum
466{
467 ERRC_EMAC_TTI_BUNDLING_DISABLED,
468 ERRC_EMAC_TTI_BUNDLING_NORMAL,
469 ERRC_EMAC_TTI_BUNDLING_ENHANCED_FDD
470} errc_emac_tti_bundling_mode_enum;
471
472#if defined(__XL1SIM_EL1__)
473// old struct for XL1Sim test case use
474typedef struct
475{
476 errc_emac_ra_pow_ramping_enum power_ramping_step;
477 errc_emac_preamble_init_pow_enum preamble_init_rec_target_power;
478 errc_emac_preamble_tx_max_enum preamble_trans_max;
479} errc_emac_ul_scell_params_struct;
480#endif
481
482typedef struct
483{
484 kal_uint8 scell_index;
485 errc_emac_ra_pow_ramping_enum power_ramping_step;
486 errc_emac_preamble_init_pow_enum preamble_init_rec_target_power;
487 errc_emac_preamble_tx_max_enum preamble_trans_max;
488} errc_emac_scell_ul_params_struct;
489
490typedef enum
491{
492 ERRC_EMAC_SCELL_NOT_CONFIGURED = 0,
493 ERRC_EMAC_SCELL_ALL_DEACTIVATED = 1,
494 ERRC_EMAC_1_SCELL_ACTIVATED = 2
495}errc_emac_ca_activate_state_enum;
496
497typedef struct
498{
499 errc_emac_ra_preamble_nb_enum ra_preamble_nb_index;
500 errc_emac_ra_pow_ramping_enum ra_pow_ramping_index;
501 errc_emac_preamble_init_pow_enum ra_preamble_init_pow_index;
502 errc_emac_preamble_tx_max_enum ra_preamble_tx_max_index;
503 errc_emac_rar_wnd_sz_enum ra_rar_wnd_sz_index;
504 errc_emac_cr_timer_enum ra_cr_timer_index;
505
506 kal_uint8 ra_msg3_tx_max;
507
508 kal_bool group_a_valid;
509 errc_emac_ra_group_a_sz_enum ra_group_a_sz_index;
510 errc_emac_ra_msg_sz_group_a_enum ra_msg_sz_group_a_index;
511 errc_emac_msg_pow_offset_group_b_enum ra_msg_pow_offset_group_b_index;
512 kal_bool ra_dedicated_valid;
513 kal_uint8 rapid;
514 kal_uint8 prach_mask;
515
516#if defined(__XL1SIM_EL1__)
517 // old struct for XL1Sim test case use
518 errc_emac_ul_scell_params_struct ul_scell_params;
519 kal_bool ul_scell_params_are_valid;
520#else
521 errc_emac_scell_ul_params_struct scell_params[ERRC_EMAC_MAX_SCELL_NB];
522 kal_uint8 valid_scell_param_num;
523#endif
524} emac_ra_config_info_struct;
525
526
527typedef struct
528{
529 errc_emac_max_harq_tx_enum max_harq_tx_index;
530 errc_emac_periodic_bsr_timer_enum periodic_bsr_timer_index;
531 errc_emac_retx_bsr_timer_enum retx_bsr_timer_index;
532 errc_emac_tti_bundling_mode_enum tti_bundling;
533
534 kal_bool extended_bsr_sizes;
535} emac_sched_config_info_struct;
536
537
538
539typedef struct
540{
541 errc_emac_on_duration_timer_enum on_duration_timer_index;
542 errc_emac_drx_inactivity_timer_enum drx_inactivity_timer_index;
543 errc_emac_drx_retx_timer_enum drx_retx_timer_index;
544 errc_emac_long_drx_cycle_enum long_drx_cycle_index;
545
546 kal_bool drx_ul_retx_timer_valid;
547 errc_emac_drx_ul_retx_timer_enum drx_ul_retx_timer_index;
548
549 kal_bool short_cycle_valid;
550 errc_emac_short_drx_cycle_enum short_drx_cycle_index;
551 kal_uint8 drx_short_cycle_timer;
552
553 kal_uint16 drx_start_offset;
554} emac_drx_config_info_struct;
555
556
557typedef struct
558{
559 errc_emac_periodic_phr_timer_enum periodic_phr_timer_index;
560 errc_emac_prohibit_phr_timer_enum prohibit_phr_timer_index;
561 errc_emac_phr_dl_pathloss_change_enum phr_dl_pathloss_change_index;
562
563 kal_bool extended_phr;
564} emac_phr_config_info_struct;
565
566
567typedef struct
568{
569 kal_bool sr_mask; //r9 sr mask
570 kal_uint8 lcid;
571 kal_uint8 rb_idx;
572 errc_el2_rbid_enum rb_id;
573
574 ///RB direction
575 ///UL: 0x01 DL: 0x02 Bi-direction 0x03
576 ///EMAC_RB_UL_MASK 0x01
577 ///EMAC_RB_DL_MASK 0x02
578 kal_uint8 direction;
579 kal_uint8 lcg;
580 kal_uint8 ul_priority;
581 kal_bool logical_channel_sr_prohibit_timer_is_used;
582 kal_bool logical_channel_brq_prohibit_timer_index_is_valid;
583 errc_emac_brq_prohibit_timer_enum logical_channel_brq_prohibit_timer_index;
584} errc_emac_open_rb_struct;
585
586typedef struct
587{
588 kal_uint8 rb_idx;
589 errc_el2_rbid_enum rb_id;
590 kal_uint8 direction;
591} errc_emac_close_rb_struct;
592
593// MSG_ID_ERRC_EMAC_MEAS_GAP_IND
594typedef struct
595{
596 LOCAL_PARA_HDR
597 kal_uint8 gap_pattern; //0: gap=40, 1: gap=80
598 kal_uint8 offset; //0xFF: no gap
599} errc_emac_meas_gap_ind_struct;
600
601/* CHM MBMS support start */
602typedef enum
603{
604 ERRC_EMAC_CONFIG_TYPE_ALL = 0, // configure SCH only, or configure both SCH+MCH
605 ERRC_EMAC_CONFIG_TYPE_MCH_ONLY = 1 // configure MCH only
606} errc_emac_config_type_enum;
607
608typedef struct
609{
610 kal_uint8 mbsfn_area_id; // 0~255
611
612 // numbered by eRRC and not from NW,
613 // If one carrier is supported, range 0~7
614 // If two carriers are supported, range 0~15
615 kal_uint8 mcch_idx;
616} errc_emac_open_mcch_struct;
617
618typedef struct
619{
620 kal_uint8 mbsfn_area_id; // 0~255, currently for debug purpose only
621 kal_uint8 mcch_idx;
622} errc_emac_close_mcch_struct;
623
624typedef struct
625{
626 kal_uint8 mbsfn_area_id; // 0~255
627 kal_uint8 pmch_id; // 0~15, numbered by eRRC and not from NW (directly use the index in asn)
628 kal_uint8 lcid; // 0~28
629 kal_uint8 mrb_idx; // numbered by eRRC, The range of mrb_idx depends on L2 HW capability
630} errc_emac_open_mrb_struct;
631
632typedef struct
633{
634 kal_uint8 mbsfn_area_id; // 0~255, currently for debug purpose only
635 kal_uint8 pmch_id; // 0~15, currently for debug purpose only
636 kal_uint8 lcid; // 0~28, currently for debug purpose only
637 kal_uint8 mrb_idx; // numbered by eRRC, The range of mrb_idx depends on L2 HW capability
638} errc_emac_close_mrb_struct;
639
640/* CHM MBMS support end */
641
642typedef struct
643{
644 kal_uint8 stag_id;
645 errc_emac_ta_timer_enum s_tag_ta_timer;
646} errc_emac_stag_timer_info_struct;
647
648// MSG_ID_ERRC_EMAC_CONFIG_REQ
649typedef struct
650{
651 LOCAL_PARA_HDR
652 errc_emac_config_type_enum config_type; //configure either MCH only or all
653 errc_emac_config_cause_enum cause; //HO or RESET or not
654 errc_emac_ta_timer_enum ta_timer_index; //TA timer index
655 kal_uint8 sr_prohibit_timer; //SR prohibit timer index
656 kal_uint8 open_rb_nb; //number of open RB
657 kal_uint8 close_rb_nb; //number of close RB
658 errc_emac_open_rb_struct open_rb[ERRC_EMAC_MAX_RB_NB];
659 errc_emac_close_rb_struct close_rb[ERRC_EMAC_MAX_RB_NB];
660
661 errc_emac_icd_event_cause_enum icd_event_cause; //ICD MAC_RESET_EVENT and MAC_CONFIGURATION_EVENT
662
663 //EMAC_CONFIG_INFO_RA_MASK
664 //EMAC_CONFIG_INFO_SCHED_MASK
665 //EMAC_CONFIG_INFO_DRX_MASK
666 //EMAC_CONFIG_INFO_PHR_MASK
667 //EMAC_CONFIG_INFP_CRNTI_MASK
668 kal_uint8 info_bitmap;
669 emac_ra_config_info_struct ra_config_info;
670 emac_sched_config_info_struct schd_config_info;
671 emac_drx_config_info_struct drx_config_info;
672 emac_phr_config_info_struct phr_config_info;
673 kal_uint16 c_rnti; //new C-RNTI value
674 kal_bool dl_data_sus_flg;
675
676 emac_scell_deactivation_timer_enum scell_deactivation_timer;
677 kal_uint8 configured_scell_bitmap;
678 kal_bool simultaneous_pucch_pusch;
679 kal_bool pusch_enhancement_mode;
680
681/* CHM MBMS support start */
682 //kal_uint8 open_mcch_nb[MAX_EMBMS_FREQ_SUPPORT]; // for 2 freq
683 //kal_uint8 close_mcch_nb[MAX_EMBMS_FREQ_SUPPORT]; // for 2 freq
684 //errc_emac_open_mcch_struct open_mcch[MAX_EMBMS_FREQ_SUPPORT][MAX_EMBMS_MCCH_SUPPORT];
685 //errc_emac_close_mcch_struct close_mcch[MAX_EMBMS_FREQ_SUPPORT][MAX_EMBMS_MCCH_SUPPORT];
686
687 //kal_uint8 open_mrb_nb[MAX_EMBMS_FREQ_SUPPORT]; // for 2 freq
688 //kal_uint8 close_mrb_nb[MAX_EMBMS_FREQ_SUPPORT]; // for 2 freq
689 //errc_emac_open_mrb_struct open_mrb[MAX_EMBMS_FREQ_SUPPORT][MAX_EMBMS_MRB_SUPPORT];
690 //errc_emac_close_mrb_struct close_mrb[MAX_EMBMS_FREQ_SUPPORT][MAX_EMBMS_MRB_SUPPORT];
691/* CHM MBMS support end */
692
693 #if defined(__XL1SIM_EL1__)
694 // old struct for XL1Sim test case use
695 errc_emac_ta_timer_enum s_tag_ta_timer;
696 kal_bool s_tag_ta_timer_is_valid;
697 #else
698 kal_uint8 s_tag_ta_timer_valid_nb; //number of valid stag timer info nb
699 errc_emac_stag_timer_info_struct s_stag_ta_timer_info[ERRC_EMAC_MAX_STAG_NB];
700 #endif
701
702 kal_bool logical_channel_sr_prohibit_timer_is_valid;
703 kal_uint16 logical_channel_sr_prohibit_timer; /* Value in subframes */
704
705} errc_emac_config_req_struct;
706
707typedef struct
708{
709 LOCAL_PARA_HDR
710 errc_el2_cfg_result_enum result;
711} errc_emac_config_cnf_struct;
712
713typedef struct
714{
715 LOCAL_PARA_HDR
716 emac_errc_ra_error_cause_enum cause;
717} errc_emac_ra_error_ind_struct;
718
719typedef struct
720{
721 LOCAL_PARA_HDR
722 kal_uint16 crnti;
723 kal_uint8 preamble_tx_nb;
724 kal_bool contention_ind;
725} errc_emac_contention_ind_struct;
726
727typedef struct
728{
729 LOCAL_PARA_HDR
730 kal_uint8 preamble_tx_nb;
731 kal_bool contention_ind;
732} errc_emac_ra_info_ind_struct;
733
734typedef struct
735{
736 LOCAL_PARA_HDR
737 kal_uint8 preamble_tx_nb;
738 kal_bool contention_ind;
739 kal_bool max_txpower_reached;
740} errc_emac_estfail_report_cnf_struct;
741
742typedef struct
743{
744 LOCAL_PARA_HDR
745 emac_errc_ul_rel_cause_enum cause;
746 kal_bool s_tag_is_valid;
747 kal_uint8 s_tag;
748} errc_emac_l1_ul_rel_ind_struct;
749
750typedef struct
751{
752 LOCAL_PARA_HDR
753 kal_uint8 ccch_size;
754 kal_uint8 ccch[6];
755 errc_emac_ccch_cause_enum cause;
756} errc_emac_ccch_data_req_struct;
757
758/* Need to remove for TK6291 U4G */
759typedef struct
760{
761 LOCAL_PARA_HDR
762 kal_uint32 paging_ctrl_info;
763 qbm_gpd* p_rgpd;
764 ABS_TICK_TIME proc_abs_time;
765 lte_cell_time proc_lte_time;
766} errc_emac_paging_ind_struct;
767
768
769typedef struct
770{
771 LOCAL_PARA_HDR
772 kal_uint32 si_ctrl_info;
773 qbm_gpd* p_rgpd;
774 ABS_TICK_TIME proc_abs_time;
775 lte_cell_time proc_lte_time;
776
777 kal_uint8 carrier_info; //Carrier Index, only valid for 0 and 1
778} errc_emac_si_ind_struct;
779
780typedef struct
781{
782 LOCAL_PARA_HDR
783
784 void* p_data; //93, start address of SRB data in VRB
785 kal_uint32 data_len; //93, length of SRB data in VRB
786
787} errc_emac_ccch_data_ind_struct;
788
789typedef struct
790{
791 LOCAL_PARA_HDR
792 errc_emac_ta_info_req_type_enum req_type;
793} errc_emac_ta_info_req_struct;
794
795typedef struct
796{
797 kal_uint32 ta;
798 kal_uint8 s_tag_id;
799} errc_emac_s_tag_ta_struct;
800
801typedef struct
802{
803 LOCAL_PARA_HDR
804 kal_bool is_valid;
805 kal_uint32 ta;
806 kal_bool s_tag_ta_is_valid;
807 errc_emac_s_tag_ta_struct s_tag_ta;
808} errc_emac_ta_info_cnf_struct;
809
810typedef struct
811{
812 LOCAL_PARA_HDR
813 kal_uint32 ta;
814 kal_uint8 tag_id;
815} errc_emac_ta_info_ind_struct;
816
817typedef struct
818{
819 LOCAL_PARA_HDR
820 kal_uint8 tag_id;
821} errc_emac_ta_info_invalid_ind_struct;
822
823typedef struct
824{
825 LOCAL_PARA_HDR
826 errc_emac_drx_inc_gap_req_type_enum req_type;
827 kal_uint32 max_interval;
828} errc_emac_drx_inc_gap_req_struct;
829
830typedef struct
831{
832 LOCAL_PARA_HDR
833 kal_uint8 scell_activate_bmp_dl;
834 kal_uint8 scell_activate_bmp_ul;
835} errc_emac_ca_activate_ind_struct;
836
837
838typedef enum
839{
840 ERRC_EMAC_SUPPORT_REL_R9,
841 ERRC_EMAC_SUPPORT_REL_R10,
842 ERRC_EMAC_SUPPORT_REL_R11,
843 ERRC_EMAC_SUPPORT_REL_R12,
844 ERRC_EMAC_SUPPORT_REL_R13,
845 ERRC_EMAC_SUPPORT_REL_INVALID
846} errc_emac_support_release_enum;
847
848
849typedef enum
850{
851 ERRC_EMAC_DL_QAM_64 = 0,
852 ERRC_EMAC_DL_QAM_256 = 1,
853 ERRC_EMAC_DL_QAM_NUM = 2,
854 ERRC_EMAC_DL_QAM_INVALID
855} errc_emac_dl_modulation_enum;
856
857
858typedef enum
859{
860 ERRC_EMAC_UL_QAM_16 = 0,
861 ERRC_EMAC_UL_QAM_64 = 1,
862 ERRC_EMAC_UL_QAM_256 = 2,
863 ERRC_EMAC_UL_QAM_NUM = 3,
864 ERRC_EMAC_UL_QAM_INVALID
865} errc_emac_ul_modulation_enum;
866
867typedef enum
868{
869 ERRC_EMAC_DL_CAT_1 = 0,
870 ERRC_EMAC_DL_CAT_2 = 1,
871 ERRC_EMAC_DL_CAT_3 = 2,
872 ERRC_EMAC_DL_CAT_4 = 3,
873 ERRC_EMAC_DL_CAT_6 = 4,
874 ERRC_EMAC_DL_CAT_7 = 5,
875 ERRC_EMAC_DL_CAT_9 = 6,
876 ERRC_EMAC_DL_CAT_10 = 7,
877 ERRC_EMAC_DL_CAT_11 = 8,
878 ERRC_EMAC_DL_CAT_12 = 9,
879 ERRC_EMAC_DL_CAT_13 = 10,
880 ERRC_EMAC_DL_CAT_16 = 11,
881 ERRC_EMAC_DL_CAT_NUM = 12,
882 ERRC_EMAC_DL_CAT_INVALID
883} errc_emac_dl_category_enum;
884
885typedef enum
886{
887 ERRC_EMAC_UL_CAT_1 = 0,
888 ERRC_EMAC_UL_CAT_2 = 1,
889 ERRC_EMAC_UL_CAT_3 = 2,
890 ERRC_EMAC_UL_CAT_4 = 3,
891 ERRC_EMAC_UL_CAT_5 = 4,
892 ERRC_EMAC_UL_CAT_6 = 5,
893 ERRC_EMAC_UL_CAT_7 = 6,
894 ERRC_EMAC_UL_CAT_9 = 7,
895 ERRC_EMAC_UL_CAT_10 = 8,
896 ERRC_EMAC_UL_CAT_11 = 9,
897 ERRC_EMAC_UL_CAT_12 = 10,
898 ERRC_EMAC_UL_CAT_13 = 11,
899 ERRC_EMAC_UL_CAT_15 = 12,
900 ERRC_EMAC_UL_CAT_NUM = 13,
901 ERRC_EMAC_UL_CAT_INVALID
902} errc_emac_ul_category_enum;
903
904typedef struct
905{
906 LOCAL_PARA_HDR
907
908 // Support Release
909 errc_emac_support_release_enum support_release;
910
911 // Capability
912 errc_emac_dl_category_enum dl_category;
913 errc_emac_ul_category_enum ul_category;
914 errc_emac_dl_modulation_enum highest_dl_modulation;
915 errc_emac_ul_modulation_enum highest_ul_modulation;
916
917 // Features
918 kal_bool recommendBitRate_enable;
919
920} errc_emac_support_capability_ind_struct;
921
922#endif /*ERRC_EMAC_INTERFACE_H*/