1  /*
2  * Copyright (C) 2017-2024 Alibaba Group Holding Limited
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 /******************************************************************************
20  * @file     sensor.h
21  * @brief    Header File for SENSOR Driver
22  * @version  V1.0
23  * @date     15. June 2020
24  * @model    sensor
25  ******************************************************************************/
26 
27 #ifndef _DRV_SENSOR_H_
28 #define _DRV_SENSOR_H_
29 
30 #include <drv/common.h>
31 #include <soc.h>
32 
33 typedef enum {
34     SENSOR_VDS_3V3_3V3 = 1,
35     SENSOR_VDS_2V5_3V3,
36     SENSOR_VDS_1V8_1V8,
37     SENSOR_VDS_1V5_1V8,
38     SENSOR_VDS_1V2_1V2,
39     SENSOR_VDS_1V1_1V2
40 }drv_sensor_vds_t;
41 
42 typedef enum {
43     SENSOR_VHS_RANGE_15 = 0,
44     SENSOR_VHS_RANGE_12,
45     SENSOR_VHS_RANGE_9,
46     SENSOR_VHS_RANGE_6,
47 }drv_sensor_vhs_t;
48 
49 typedef enum {
50     SENSOR_VLS_RANGE_6 = 0,
51     SENSOR_VLS_RANGE_9,
52     SENSOR_VLS_RANGE_12,
53     SENSOR_VLS_RANGE_15,
54 }drv_sensor_vls_t;
55 
56 typedef enum {
57     SENSOR_TDHS_NEG_55 = 0,     ///< -55
58     SENSOR_TDHS_NEG_50,
59     SENSOR_TDHS_NEG_45,
60     SENSOR_TDHS_NEG_40,
61     SENSOR_TDHS_NEG_35,
62     SENSOR_TDHS_NEG_30,
63     SENSOR_TDHS_NEG_25,
64     SENSOR_TDHS_NEG_20,
65     SENSOR_TDHS_NEG_15,
66     SENSOR_TDHS_NEG_10,
67     SENSOR_TDHS_NEG_5,
68     SENSOR_TDHS_NEG_0,
69     SENSOR_TDHS_POS_5,          ///< +5
70     SENSOR_TDHS_POS_10,
71     SENSOR_TDHS_POS_15,
72     SENSOR_TDHS_POS_20,
73     SENSOR_TDHS_POS_25,
74     SENSOR_TDHS_POS_30,
75     SENSOR_TDHS_POS_35,
76     SENSOR_TDHS_POS_40,
77     SENSOR_TDHS_POS_45,
78     SENSOR_TDHS_POS_50,
79     SENSOR_TDHS_POS_55,
80     SENSOR_TDHS_POS_60,
81     SENSOR_TDHS_POS_65,
82     SENSOR_TDHS_POS_70,
83     SENSOR_TDHS_POS_75,
84     SENSOR_TDHS_POS_80,
85     SENSOR_TDHS_POS_85,
86     SENSOR_TDHS_POS_90,
87     SENSOR_TDHS_POS_95,
88     SENSOR_TDHS_POS_100,
89     SENSOR_TDHS_POS_105,
90     SENSOR_TDHS_POS_110,
91     SENSOR_TDHS_POS_115,
92     SENSOR_TDHS_POS_120,
93     SENSOR_TDHS_POS_125
94 }drv_sensor_tdhs_t;
95 
96 typedef enum {
97     SENSOR_TDLS_NEG_55 = 0,     ///< -55
98     SENSOR_TDLS_NEG_50,
99     SENSOR_TDLS_NEG_45,
100     SENSOR_TDLS_NEG_40,
101     SENSOR_TDLS_NEG_35,
102     SENSOR_TDLS_NEG_30,
103     SENSOR_TDLS_NEG_25,
104     SENSOR_TDLS_NEG_20,
105     SENSOR_TDLS_NEG_15,
106     SENSOR_TDLS_NEG_10,
107     SENSOR_TDLS_NEG_5,
108     SENSOR_TDLS_NEG_0,
109     SENSOR_TDLS_POS_5,          ///< +5
110     SENSOR_TDLS_POS_10,
111     SENSOR_TDLS_POS_15,
112     SENSOR_TDLS_POS_20,
113 }drv_sensor_tdls_t;
114 
115 typedef enum {
116     SENSOR_FHS_RANGE_50 = 0,
117     SENSOR_FHS_RANGE_30,
118     SENSOR_FHS_RANGE_10,
119     SENSOR_FHS_RANGE_5,
120 }drv_sensor_fhs_t;
121 
122 typedef enum {
123     SENSOR_FLS_RANGE_50 = 0,
124     SENSOR_FLS_RANGE_30,
125     SENSOR_FLS_RANGE_10,
126     SENSOR_FLS_RANGE_5,
127 }drv_sensor_fls_t;
128 
129 typedef enum {
130     SENSOR_FHS_FREQ_33M = 0,
131     SENSOR_FHS_FREQ_66M,
132     SENSOR_FHS_FREQ_24M,
133     SENSOR_FHS_FREQ_12M,
134     SENSOR_FHS_FREQ_99M,
135     SENSOR_FHS_FREQ_198M,
136     SENSOR_FHS_FREQ_72M,
137     SENSOR_FHS_FREQ_36M,
138 }drv_sensor_freq_t;
139 
140 typedef enum {
141     SENSOR_WARN_H = 0,
142     SENSOR_WARN_L,
143     SENSOR_WARN_RST,
144 }drv_sensor_warn_t;
145 
146 /**
147   \brief       Initialize Sensor VD
148   \param[in]   vds   Voltage range
149   \param[in]   vhs   Voltage high threshold
150   \param[in]   vls   Voltage low threshold
151   \param[in]   vtm   Used to modify the threshold value of the voltage detection point
152   \return      Error code
153 */
154 csi_error_t drv_sensor_vd_init(drv_sensor_vds_t vds,drv_sensor_vhs_t vhs,drv_sensor_vls_t vls,uint8_t vtm);
155 
156 /**
157   \brief       Get vd  warn
158   \param[in]   warn  Vd warn select
159   \return      Vd warn code
160 */
161 uint32_t drv_sensor_vd_get_warn(drv_sensor_warn_t warn);
162 
163 /**
164   \brief       Initialize Sensor td
165   \param[in]   hs   Temp high threshold
166   \param[in]   ls   Temp low threshold
167   \return      Error code
168 */
169 csi_error_t drv_sensor_td_init(drv_sensor_tdhs_t hs,drv_sensor_tdls_t ls);
170 
171 /**
172   \brief       Get td  warn
173   \param[in]   warn  Td warn select
174   \return      Td warn code
175 */
176 uint32_t drv_sensor_td_get_warn(drv_sensor_warn_t warn);
177 
178 /**
179   \brief       Initialize Sensor FD
180   \param[in]   hs   Temp high threshold
181   \param[in]   ls   Temp low threshold
182   \return      Error code
183 */
184 csi_error_t drv_sensor_fd_init(drv_sensor_freq_t freq,drv_sensor_fhs_t fhs,drv_sensor_fls_t fls);
185 
186 /**
187   \brief       Get fd  warn
188   \param[in]   warn  Fd warn select
189   \return      FD warn code
190 */
191 uint32_t drv_sensor_fd_get_warn(drv_sensor_warn_t warn);
192 
193 #endif /* _DRV_SENSOR_H_ */
194