blob: 08d69970db6af2bc9695cf309337e21d97752965 [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) 2015
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 * tmc_struct.h
40 *
41 * Project:
42 * --------
43 * UMOLY
44 *
45 * Description:
46 * ------------
47 * Thermal Management Controller ILM structure and interface definition.
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 *==============================================================================
54 * HISTORY
55 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
56 *------------------------------------------------------------------------------
57 * removed!
58 *
59 * removed!
60 * removed!
61 * removed!
yu.donge372c322023-08-30 20:25:04 -070062 * removed!
63 *
64 * removed!
65 * removed!
66 * removed!
67 * removed!
rjw6c1fd8f2022-11-30 14:33:01 +080068 *
69 * removed!
70 * removed!
71 * removed!
72 *
73 * removed!
74 * removed!
75 *
76 * removed!
77 *
78 * removed!
79 * removed!
80 * removed!
81 *
82 * removed!
83 * removed!
84 * removed!
85 *
86 * removed!
87 * removed!
88 * removed!
89 *
90 * removed!
91 * removed!
92 * removed!
93 *
94 * removed!
95 * removed!
96 * removed!
97 *
98 * removed!
99 * removed!
100 * removed!
101 *
102 * removed!
103 * removed!
104 * removed!
105 *
106 * removed!
107 * removed!
108 * removed!
109 *
110 *------------------------------------------------------------------------------
111 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
112 *==============================================================================
113 *******************************************************************************/
114#ifndef __INC_TMC_STRUCT_H
115#define __INC_TMC_STRUCT_H
116
117#include "kal_public_defs.h"
118
119/* Macro & Enum definition for Gen97 */
120#define MAX_SUPPORTED_CC_NB 5
121#define MAX_BAND_NB MAX_SUPPORTED_CC_NB /* max. supported band number at same time should be algin max supported CC number */
122#define MAX_CELL_NB 8
123#define TMC_CTRL_MAX_CG_NUM 2
124
125/* Define invalid value */
126#define INVALID_SUPPORTED_CC_INDEX MAX_SUPPORTED_CC_NB
127#define INVALID_CELL_INDEX 0xFF
128#define INVALID_BAND_INDEX 0
129#define TMC_INVALID_NW_STATUS_ID 0xFF
130
131typedef enum tmc_ctrl_cg_enum {
132 TMC_CTRL_CG_NA, /* none */
133 TMC_CTRL_CG_MCG, /* refer as MCG */
134 TMC_CTRL_CG_SCG /* refer as SCG */
135} tmc_ctrl_cg_enum;
136
137typedef enum tmc_ctrl_cmd_enum {
138 TMC_CTRL_CMD_THROTTLING = 0,
139 TMC_CTRL_CMD_CA_CTRL,
140 TMC_CTRL_CMD_PA_CTRL,
141 TMC_CTRL_CMD_COOLER_LV,
142 TMC_CTRL_CMD_CELL, /* MD internal use : refer as del_cell */
143 TMC_CTRL_CMD_BAND, /* MD internal use : refer as del_band */
144 TMC_CTRL_CMD_INTER_BAND_OFF, /* MD internal use : similar to PA_OFF on Gen95 */
145 TMC_CTRL_CMD_CA_OFF, /* MD internal use : similar to CA_OFF on Gen95 */
146 TMC_CTRL_CMD_SCG_OFF, /* Fall back to 4G */
147 TMC_CTRL_CMD_SCG_ON, /* Enabled 5G */
148 TMC_CTRL_CMD_TX_POWER,
149 TMC_CTRL_CMD_LOW_POWER_IND,
150 TMC_CTRL_CMD_SELF_CC_CTRL,
151 TMC_CTRL_CMD_DEFAULT
152} tmc_ctrl_cmd_enum;
153
154typedef enum tmc_ctrl_result_enum {
155 TMC_CTRL_RESULT_SUCCESS = 0,
156 TMC_CTRL_RESULT_STATUS_IND_ID_MISMATCH,
157 TMC_CTRL_RESULT_MAC_RESET_ONGOING,
158 TMC_CTRL_RESULT_FAIL_INCORRECT_CMD,
159 TMC_CTRL_RESULT_REJECT,
160 TMC_CTRL_RESULT_OTHERS
161} tmc_ctrl_result_enum;
162
163typedef enum tmc_ctrl_nw_status_enum {
164 TMC_CTRL_STATUS_SESSION_ESTABLISH = 0,
165 TMC_CTRL_STATUS_UPDATE,
166 TMC_CTRL_STATUS_SPCELL_CHANGE,
167 TMC_CTRL_STATUS_OTHERS
168} tmc_ctrl_nw_status_enum;
169
170typedef enum tmc_throt_ctrl_enum {
171 TMC_THROT_ENABLE_IMS_ENABLE = 0,
172 TMC_THROT_ENABLE_IMS_DISABLE,
173 TMC_THROT_DISABLE,
174} tmc_throt_ctrl_enum;
175
176typedef enum tmc_ca_ctrl_enum {
177 TMC_CA_ON = 0, /* leave thermal control */
178 TMC_CA_OFF,
179} tmc_ca_ctrl_enum;
180
181typedef enum tmc_pa_ctrl_enum {
182 TMC_PA_ALL_ON = 0, /* leave thermal control */
183 TMC_PA_OFF_1PA,
184} tmc_pa_ctrl_enum;
185
186typedef enum tmc_cc_ctrl_enum {
187 TMC_SELF_CC_CTRL_ENABLED = 0, /* step by step remove cc */
188 TMC_SELF_CC_CTRL_ENABLED_MCG_CA_OFF,
189 TMC_SELF_CC_CTRL_ENABLED_SCG_CA_OFF,
190 TMC_SELF_CC_CTRL_ENABLED_ALL_CA_OFF,
191 TMC_SELF_CC_CTRL_ENABLED_SCG_OFF,
192 TMC_SELF_CC_CTRL_ENABLED_MCG_CA_OFF_SCG_OFF,
193 TMC_SELF_CC_CTRL_ENABLED_LTE_ONLY,
194 TMC_SELF_CC_CTRL_DISABLED,
195} tmc_cc_ctrl_enum;
196
197typedef enum tmc_cooler_lv_ctrl_enum {
198 TMC_COOLER_LV_ENABLE = 0,
199 TMC_COOLER_LV_DISABLE,
200} tmc_cooler_lv_ctrl_enum;
201
202typedef enum tmc_cooler_lv_enum {
203 TMC_COOLER_LV0 = 0,
204 TMC_COOLER_LV1,
205 TMC_COOLER_LV2,
206 TMC_COOLER_LV3,
207 TMC_COOLER_LV4,
208 TMC_COOLER_LV5,
209 TMC_COOLER_LV6,
210 TMC_COOLER_LV7,
211 TMC_COOLER_LV8,
212 TMC_COOLER_MAX
213} tmc_cooler_lv_enum;
214
215typedef enum tmc_nw_stat_enum {
216 TMC_NW_STAT_MCG = 0,
217 TMC_NW_STAT_SCG,
218 TMC_NW_STAT_MAX_NUM
219} tmc_nw_stat_enum;
220
221typedef enum tmc_ctrl_nl1_frq_enum {
222 TMC_NR_FRE_FR1 = 0,
223 TMC_NR_FRE_FR2,
224 TMC_NR_FRE_MAX_NUM
225} tmc_ctrl_nl1_frq_enum;
226
227typedef enum tmc_tx_pwr_event_enum {
228 TMC_TW_PWR_VOLTAGE_LOW_EVENT = 0,
229 TMC_TW_PWR_LOW_BATTERY_EVENT,
230 TMC_TW_PWR_OVER_CURRENT_EVENT,
231 TMC_TW_PWR_REDUCE_OTHER_MAX_TX_EVENT, /* reserved for reduce 2G/3G/4G/C2K max TX power for certain value */
232 TMC_TW_PWR_REDUCE_NR_MAX_TX_EVENT, /* reserved for reduce 5G max TX power for certain value */
233 TMC_TW_PWR_EVENT_MAX_NUM
234} tmc_lpower_event_enum;
235
236typedef enum tmc_tx_pwr_status_lv_enum {
237 TMC_TX_PWR_STATUS_LV0 = 0,
238 TMC_TX_PWR_STATUS_LV1,
239 TMC_TX_PWR_STATUS_LV2,
240 TMC_TX_PWR_STATUS_MAX
241} tmc_tx_pwr_status_lv_enum;
242
243typedef enum tmc_overheated_rat_enum {
244 TMC_OVERHEATED_LTE = 0,
245 TMC_OVERHEATED_NR,
246 TMC_OVERHEATED_NA,
247 TMC_OVERHEATED_MAX
248} tmc_overheated_rat_enum;
249
250typedef enum tmc_cooler_tbl_enum {
251 TMC_UL_THROTTLE_COOLER = 0,
252 TMC_OTHER_RAT_REDUCE_TX_COOLER,
253 TMC_NR_REDUCE_TX_COOLER,
254 TMC_CC_CONTROL_COOLER,
255 TMC_SW_SHUTDOWN_COOLER,
256 TMC_FLIHT_MODE_COOLER,
257 TMC_MAX_COOLER
258} tmc_cooler_tbl_enum;
259
260typedef enum tmc_ctrl_req_enum {
261 TMC_CTRL_REQ_SET_ACTUATOR = 0,
262 TMC_CTRL_REQ_SET_COOLER,
263 TMC_CTRL_REQ_MAX_NUM
264} tmc_ctrl_req_enum;
265
266typedef enum tmc_req_result_enum {
267 TMC_RESULT_SUCCESS,
268 TMC_RESULT_FAILED,
269 TMC_RESULT_UNSUPPORTED_LV,
270 TMC_RESULT_UNSUPPORTED_ACTUATOR_ID,
271 TMC_RESULT_L5_ACTION_SW_SHUTDOWN_ENABLED,
272 TMC_RESULT_L5_ACTION_SW_SHUTDOWN_DISABLED,
273 TMC_RESULT_L5_ACTION_FLIGHT_MODE_ENABLED,
274 TMC_RESULT_L5_ACTION_FLIGHT_MODE_DISABLED,
275 TMC_RESULT_MAX
276} tmc_req_result_enum;
277
278typedef enum tmc_ctrl_low_pwr_enum {
279 TMC_CTRL_LOW_POWER_LOW_BATTERY_EVENT = 0, /* battery less than threshold (ex : 20%) */
280 TMC_CTRL_LOW_POWER_RECHARGE_BATTERY_EVENT, /* battery recharge over threshold (ex : 25%) */
281 TMC_CTRL_LOW_POWER_MAX
282} tmc_ctrl_low_pwr_enum;
283
284typedef enum tmc_req_reason_enum {
285 TMC_OVERHEATED_START = 0,
286 TMC_OVERHEATED_END,
287 TMC_LOW_POWER,
288 TMC_RECHARGE,
289 TMC_REQ_REASON_MAX
290} tmc_req_reason_enum;
291
292/* Structure definition */
293typedef struct tmc_ctrl_cell_rt_info_struct {
294 kal_uint32 dl_throughput;
295 kal_uint32 ul_throughput;
296 kal_uint8 dl_bandwidth;
297 kal_uint8 ul_bandwidth;
298} tmc_ctrl_cell_rt_info_struct;
299
300typedef struct tmc_ctrl_cell_info_struct {
301 kal_uint8 cell_idx;
302 kal_bool is_specll;
303 kal_bool is_DLonly;
304} tmc_ctrl_cell_info_struct;
305
306typedef struct tmc_ctrl_band_info_struct {
307 kal_uint8 band_id;
308 kal_uint8 cell_info_idx[MAX_SUPPORTED_CC_NB];
309} tmc_ctrl_band_info_struct;
310
311typedef struct tmc_ctrl_cg_info_struct {
312 tmc_ctrl_cg_enum cg_type;
313 kal_uint8 band_num;
314 tmc_ctrl_band_info_struct band[MAX_BAND_NB];
315 tmc_ctrl_cell_info_struct cell[MAX_SUPPORTED_CC_NB];
316 tmc_ctrl_cell_rt_info_struct cell_info[MAX_CELL_NB];
317} tmc_ctrl_cg_info_struct;
318
319typedef struct tmc_emac_nw_status_struct {
320 kal_uint8 status_ind_id;
321 tmc_ctrl_nw_status_enum status_cause;
322 tmc_ctrl_cg_info_struct cell_group[TMC_CTRL_MAX_CG_NUM];
323 kal_uint8 total_cell;
324 kal_uint8 sim_idx;
325} tmc_emac_nw_status_struct;
326
327typedef struct tmc_emac_nw_status_ind_struct {
328 LOCAL_PARA_HDR
329 tmc_emac_nw_status_struct nw_status;
330} tmc_emac_nw_status_ind_struct;
331
332typedef struct tmc_emac_thermal_control_req_struct {
333 LOCAL_PARA_HDR
334 kal_uint8 status_ind_id;
335 tmc_ctrl_cmd_enum ctrl_cmd;
336 tmc_ctrl_cg_enum cg_type;
337 kal_uint8 band_num;
338 kal_uint8 forbidden_band[MAX_BAND_NB];
339 kal_uint8 cell_num;
340 kal_uint32 forbidden_cell_bitmap;
yu.donge372c322023-08-30 20:25:04 -0700341 kal_bool is_scg_release_signature; /*< only valid for TMC_CTRL_CMD_SCG_OFF ctrl */
rjw6c1fd8f2022-11-30 14:33:01 +0800342} tmc_emac_thermal_control_req_struct;
343
344typedef struct tmc_emac_thermal_control_cnf_struct {
345 LOCAL_PARA_HDR
346 tmc_ctrl_result_enum result;
347 tmc_emac_nw_status_struct nw_status;
348} tmc_emac_thermal_control_cnf_struct;
349
350typedef struct tmc_nmac_nw_status_struct{
351 kal_uint8 status_ind_id;
352 tmc_ctrl_nw_status_enum status_cause;
353 tmc_ctrl_cg_info_struct cell_group[TMC_CTRL_MAX_CG_NUM];
354 kal_uint8 total_cell;
355 kal_uint8 sim_idx;
356}tmc_nmac_nw_status_struct;
357
358typedef struct tmc_nmac_nw_status_ind_struct{
359 LOCAL_PARA_HDR
360 tmc_nmac_nw_status_struct nw_status;
361} tmc_nmac_nw_status_ind_struct;
362
363typedef struct tmc_nmac_thermal_control_req_struct {
364 LOCAL_PARA_HDR
365 kal_uint8 status_ind_id;
366 tmc_ctrl_cmd_enum ctrl_cmd;
367 tmc_ctrl_cg_enum cg_type;
368 kal_uint8 band_num;
369 kal_uint8 forbidden_band[MAX_BAND_NB];
370 kal_uint8 cell_num;
371 kal_uint32 forbidden_cell_bitmap;
yu.donge372c322023-08-30 20:25:04 -0700372 kal_bool is_scg_release_signature; /*< only valid for TMC_CTRL_CMD_SCG_OFF ctrl */
rjw6c1fd8f2022-11-30 14:33:01 +0800373} tmc_nmac_thermal_control_req_struct;
374
375typedef struct tmc_nmac_thermal_control_cnf_struct {
376 LOCAL_PARA_HDR
377 tmc_ctrl_result_enum result;
378 tmc_nmac_nw_status_struct nw_status;
379} tmc_nmac_thermal_control_cnf_struct;
380
381typedef struct tmc_ctrl_config
382{
383 kal_uint8 ctrl_cmd; /* tmc_ctrl_cmd_enum */
384 union {
385 struct tmc_throttling {
386 kal_uint8 thrott_ctrl; /* tmc_throt_ctrl_enum */
387 kal_uint8 active_period_100ms;
388 kal_uint8 suspend_period_100ms;
389 } tmc_throttling;
390
391 struct tmc_ca_ctrl {
392 kal_uint8 ca_ctrl; /* tmc_ca_ctrl_enum */
393 kal_uint8 reserved1;
394 kal_uint8 reserved2;
395 } tmc_ca_ctrl;
396
397 struct tmc_pa_ctrl {
398 kal_uint8 pa_ctrl; /* tmc_pa_ctrl_enum */
399 kal_uint8 reserved1;
400 kal_uint8 reserved2;
401 } tmc_pa_ctrl;
402
403 struct tmc_cooler_lv {
404 kal_uint8 enable; /* tmc_cooler_lv_ctrl_enum */
405 kal_uint8 cooler_lv; /* tmc_cooler_lv_enum */
406 kal_uint8 overheated_rat; /* tmc_overheated_rat_enum */
407 } tmc_cooler_lv;
408
409 struct tmc_tx_power {
410 kal_uint8 status; /* tmc_tx_pwr_status_lv_enum */
411 kal_uint8 event; /* tmc_tx_pwr_event_enum */
412 kal_uint8 reduce_max_tx_pwr; /* reserved for reduce max tx_pwer value (unit : 1/8 db) */
413 } tmc_tx_power;
414
415 struct tmc_cc_ctrl {
416 kal_uint8 cc_ctrl; /* tmc_cc_ctrl_enum */
417 kal_uint8 overheated_rat; /* tmc_overheated_rat_enum */
418 kal_uint8 reserved1;
419 } tmc_cc_ctrl;
420
421 struct tmc_low_power {
422 kal_uint8 event; /* tmc_ctrl_low_pwr_enum */
423 kal_uint8 reserved1;
424 kal_uint8 reserved2;
425 } tmc_low_power;
426 } u;
427} tmc_ctrl_config;
428
429typedef struct tmc_nw_stat_struct {
430 module_type mod_id;
431 tmc_emac_nw_status_struct nw_stat;
432} tmc_nw_stat_struct;
433
434typedef struct tmc_control_req_struct {
435 LOCAL_PARA_HDR
436 kal_uint32 ap_req_cmd;
437} tmc_control_req_struct;
438
439typedef struct tmc_nl1_nw_status_ind_struct {
440 LOCAL_PARA_HDR
441 kal_uint32 max_dl_bw[TMC_NR_FRE_MAX_NUM];
442 kal_uint32 max_dl_mimo_layer[TMC_NR_FRE_MAX_NUM];
443 kal_uint32 max_ul_bw[TMC_NR_FRE_MAX_NUM];
444 kal_uint32 max_ul_mimo_layer [TMC_NR_FRE_MAX_NUM];
445} tmc_nl1_nw_status_ind_struct;
446
447typedef struct tmc_lv_cfg {
448 kal_uint32 zone_id;
449 kal_uint32 user_impact;
450 kal_uint32 efficiency;
451 kal_uint32 value1;
452 kal_uint32 value2;
453} tmc_lv_cfg;
454
455typedef struct tmc_lv_tbl {
456 tmc_lv_cfg lv_cfg[TMC_COOLER_MAX];
457} tmc_lv_tbl;
458
459typedef struct tmc_ctrl_req_struct {
460 LOCAL_PARA_HDR
461 kal_uint32 status_id;
462 tmc_ctrl_req_enum ctrl_cmd;
463 union {
464 struct {
465 kal_uint32 actuator_id;
466 kal_uint32 lv;
467 } tmc_actuator_cfg;
468
469 struct {
470 tmc_ctrl_config tmc_ctrl_req;
471 } tmc_cooler_cfg;
472 } u;
473} tmc_ctrl_req_struct;
474
475typedef struct tmc_ctrl_rsp_struct {
476 LOCAL_PARA_HDR
477 kal_uint32 status_id;
478 tmc_req_result_enum result;
479} tmc_ctrl_rsp_struct;
480
481typedef struct tmc_l4bpwr_battery_status_req_struct {
482 LOCAL_PARA_HDR
483 kal_bool is_low_battery;
484} tmc_l4bpwr_battery_status_req_struct;
485
486/*
487 * Bitmap for tmc_emac_thermal_control_req enhance functions.
488 * Need to sync with WCT/SE3/PS2 YK.Liu before modification.
489 */
490#define TMC_ENHANCE_FUNC_DISABLE_CA 0x00000001
491#define TMC_ENHANCE_FUNC_TX_POWER_BACKOFF 0x00000002
492
493/*
494 * Local parameter structure for MSG_ID_TMC_EMAC_THERMAL_CONTROL_REQ for Gen93
495 */
496typedef struct
497{
498 LOCAL_PARA_HDR
499#if defined(__MD93__)
500 kal_bool overheat_flg; /* TMC notify mobile phone temperature is too high, need to cool down */
501 kal_uint8 enhance_func_bitmap;
502#else
503 tmc_ctrl_config tmc_ctrl_cfg;
504#endif
505} tmc_emac_thermal_control_req;
506
507/*------------------------------------------------------------------------------
508 * DHL logging structure
509 *----------------------------------------------------------------------------*/
510//typedef tmc_emac_thermal_control_req tmc_emac_thermal_control_req_struct;
511
512#endif /* __INC_TMC_STRUCT_H */