blob: a839347182aeeff0f13b734e4800c368ff4f6d30 [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) 2017
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 * tfwk_public.h
41 *
42 * Project:
43 * --------
44 * VMOLY
45 *
46 * Description:
47 * ------------
48 * Thermal Framework public interface
49 *
50 * Author:
51 * -------
52 *
53 *
54 *============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *------------------------------------------------------------------------------
58 * removed!
59 * removed!
60 * removed!
61 *------------------------------------------------------------------------------
62 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
63 *============================================================================
64 ****************************************************************************/
65#ifndef __TFWK_PUBLIC_H__
66#define __TFWK_PUBLIC_H__
67
68#include "kal_general_types.h"
69#include "thermal_public.h"
70
71/*=============================================================
72* TFWK enums
73*=============================================================*/
74// enum for sensor type
75typedef enum{
76 TFWK_LVTS = 0,
77 TFWK_TIA = 1,
78 MAX_SENSOR_TYPE
79} tfwk_mtk_stype_e;
80
81/*=============================================================
82* Error code
83*=============================================================*/
84#define TFWK_NO_FAILURE 0x00000000
85#define TFWK_FAILURE 0x00000002
86#define TFWK_ALARM_ID_NOT_SUPPORT 0x00000839
87#define TFWK_SENSOR_ID_NOT_SUPPORT 0x0000083C
88#define TFWK_THERSHOLD_OUT_OF_RANGE 0x0000083A
89
90/*=============================================================
91* TFWK structures
92*=============================================================*/
93// structure for threshold setting
94typedef struct{
95 kal_uint32 enable;
96 kal_uint32 sensor_id;
97 kal_uint32 alarm_id;
98 kal_int32 threshold_value;
99 kal_uint32 hysteresis_value;
100 kal_uint32 sampling_period;
101 kal_uint32 sensor_alarm_type;
102} tfwk_thermal_cfg_t;
103
104// stucture for thermal sensor info
105typedef struct{
106 kal_uint32 sensor_id;
107 kal_int32 min_temperature;
108 kal_uint32 max_temperature;
109 kal_int32 warning_temperature;
110 kal_uint32 accuracy;
111 kal_uint32 resolution;
112 kal_uint8 sensor_name[40];
113} tfwk_sensor_info_t;
114
115typedef kal_int32(*s_get_temp_fp)(kal_uint32 sensor_id, kal_int32 *temp);
116typedef kal_int32(*s_set_alarm_fp)(kal_uint32 ncfg, tfwk_thermal_cfg_t* tcfgs);
117
118typedef struct{
119 s_get_temp_fp get_temp_fp;
120 s_set_alarm_fp set_alarm_fp;
121} tfwk_sensor_if_t;
122
123
124/**
125 * @function tfwk_init
126 * @brief TFWK initialize
127 */
128extern void tfwk_init(void);
129
130/**
131 * @function tfwk_sensor_reg
132 * @brief API for driver regist TFWK before OS scheduling
133 *
134 * @param s_type driver sensor type
135 * @param n_sensor driver sensor number
136 * @param sensors driver sensor information
137 * @param sensor_if driver's callback function
138 */
139extern void tfwk_sensor_reg(tfwk_mtk_stype_e s_type, kal_uint32 n_sensor, tfwk_sensor_info_t* sensors, tfwk_sensor_if_t* sensor_if);
140
141
142/**
143 * @function tfwk_sensor_notify
144 * @brief API for driver ,notify MSG_ID: <MSG_ID_L5_THERMAL_STATE_INFO>, DO NOT PRINT LOG!
145 * @param sta_info sta_info pointer
146 *
147 * @return TFWK_NO_FAILURE ==> success
148 */
149extern kal_int32 tfwk_sensor_notify(thermal_sta_info_t* sta_info);
150
151
152/**
153 * @function tfwk_get_sensor_num
154 * @brief API for L5 querying sensor number
155 *
156 * @return total number of accessible sensors
157 */
158extern kal_uint32 tfwk_get_sensor_num(void);
159
160
161/**
162 * @function tfwk_get_sensor_info
163 * @brief API for L5 querying sensorID info
164 * @param sid sensor id
165 * @param sinfo sensor info pointer
166 *
167 * @return TFWK_NO_FAILURE ==> success
168 * TFWK_FAILURE ==> (sinfo pointer == NULL)
169 * TFWK_SENSOR_ID_NOT_SUPPORT ==> query invalid sensor id
170 */
171extern kal_uint32 tfwk_get_sensor_info (kal_uint32 sid, tfwk_sensor_info_t* sinfo);
172
173
174/**
175 * @function tfwk_set_sensor_cfg
176 * @brief API for L5 config sensor setting, pick LVTS error to return while both driver return error
177 * @param ncfg config number
178 * @param tcfgs config pointer
179 *
180 * @return TFWK_NO_FAILURE ==> success
181 * TFWK_FAILURE ==> (invalid config number) or (driver's callback func == NULL) or (tcfgs pointer == NULL)
182 * LVTS error code ==> pick LVTS error to return while both driver return error
183 * TIA error code ==> TIA return error
184 */
185extern kal_uint32 tfwk_set_sensor_cfg(kal_uint32 ncfg, tfwk_thermal_cfg_t* tcfgs);
186
187
188/**
189 * @function tfwk_get_sensor_state
190 * @brief API for L5 querying sensor temperature.
191 * @param sid query sensor id.
192 * @param temp temperature pointer.
193 *
194 * @return TFWK_NO_FAILURE ==> success
195 * TFWK_SENSOR_ID_NOT_SUPPORT ==> query invalid sensor id
196 * TFWK_FAILURE ==> (temperature pointer == NULL) or (driver's callback func == NULL)
197 */
198extern kal_uint32 tfwk_get_sensor_state(kal_uint32 sid, kal_int32* temp);
199
200
201/**
202 * @function tfwk_atcmd_public
203 * @brief API for tfwk public atcmd handler
204 * @data_len: atcmd data length
205 * @data_str: atcmd byte array pointer
206 * @return KAL_TRUE: success, KAL_FALSE: fail
207 */
208extern kal_bool tfwk_atcmd_public(kal_uint32 data_len, kal_uint8 *data_str);
209
210#endif