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