SemiDrive SSDK Appication Program Interface PTG3.0
sdrv_pvt.h
Go to the documentation of this file.
1
8#ifndef SDRV_PVT_H_
9#define SDRV_PVT_H_
10
11#include <sdrv_common.h>
12#include <types.h>
13
14/* Don't use edge alarm due to limitations of hysterisis function. */
15#define SDRV_PVT_USE_EDGE_ALARM 0
16
17/* Temperature threshold range */
18#if CONFIG_PVT_TYPE_INT
19#define PVT_TEMPERATURE_MIN (-75) /* dout_to_celsius(0x0) */
20#define PVT_TEMPERATURE_MAX (230) /* dout_to_celsius(0xfff) */
21#else
22#define PVT_TEMPERATURE_MIN (-75.9f) /* dout_to_celsius(0x0) */
23#define PVT_TEMPERATURE_MAX (230.7f) /* dout_to_celsius(0xfff) */
24#endif
25
26#if CONFIG_PVT_TYPE_INT
27typedef int32_t sdrv_pvt_type;
28#else
29typedef float sdrv_pvt_type;
30#endif
31
38typedef enum sdrv_pvt_core_id {
43
49typedef enum sdrv_pvt_alarm {
54#if SDRV_PVT_USE_EDGE_ALARM
56 PVT_RISING_EDGE_ALARM,
58 PVT_FALLING_EDGE_ALARM,
59#endif
62
75
76#if SDRV_PVT_USE_EDGE_ALARM
83typedef struct sdrv_pvt_edge_alarm_config {
90 sdrv_pvt_type hyst;
91
96 sdrv_pvt_type alarm;
97} sdrv_pvt_edge_alarm_config_t;
98#endif
99
105#if SDRV_PVT_USE_EDGE_ALARM
106 sdrv_pvt_edge_alarm_config_t edge_alarm;
107#endif
109
110struct sdrv_pvt;
111
115typedef void (*sdrv_pvt_alarm_cb_t)(struct sdrv_pvt *dev,
117 sdrv_pvt_alarm_e alarm, void *arg);
118
125typedef struct sdrv_pvt_core {
127 uint32_t irq;
131 void *cb_arg;
136
140typedef struct sdrv_pvt {
142 paddr_t base;
146
153};
154
161
168
178
185
192
203
212 sdrv_pvt_alarm_cb_t alarm_cb, void *arg);
213
229 sdrv_pvt_alarm_e alarm,
230 const sdrv_pvt_alarm_config_t *config);
231
240 sdrv_pvt_alarm_e alarm);
241
242#endif /* SDRV_PVT_H_ */
unsigned char u[1]
Definition: logo_rgb565.h:32916
SemiDrive driver common header file.
@ SDRV_STATUS_GROUP_PVT
Definition: sdrv_common.h:55
int32_t status_t
Type used for all status and error return values.
Definition: sdrv_common.h:82
#define SDRV_ERROR_STATUS(group, code)
Construct a status code value from a group and code number. All the error statuses are negetive numbe...
Definition: sdrv_common.h:17
status_t sdrv_pvt_get(sdrv_pvt_t *dev, sdrv_pvt_type *temperature)
Read temperature sensor value.
status_t sdrv_pvt_enable_alarm(sdrv_pvt_t *dev, sdrv_pvt_core_id_e core, sdrv_pvt_alarm_e alarm, const sdrv_pvt_alarm_config_t *config)
Enable Temperature sensor alarm.
status_t sdrv_pvt_power_down(sdrv_pvt_t *dev)
Power down T-sensor and P-sensor.
union sdrv_pvt_alarm_config sdrv_pvt_alarm_config_t
Hysterisis alarm configuration.
struct sdrv_pvt sdrv_pvt_t
Process and temperature sensor structure.
status_t sdrv_pvt_start(sdrv_pvt_t *dev)
Start temperature sensor.
status_t sdrv_pvt_init(sdrv_pvt_t *dev)
Initialize the PVT device.
enum sdrv_pvt_core_id sdrv_pvt_core_id_e
PVT core logics.
enum sdrv_pvt_alarm sdrv_pvt_alarm_e
Temperature sensor alarm modes.
struct sdrv_pvt_level_alarm_config sdrv_pvt_level_alarm_config_t
Level alarm configuration.
sdrv_pvt_alarm
Temperature sensor alarm modes.
Definition: sdrv_pvt.h:49
@ PVT_LOW_LEVEL_ALARM
Definition: sdrv_pvt.h:53
@ PVT_ALARM_NR
Definition: sdrv_pvt.h:60
@ PVT_HIGH_LEVEL_ALARM
Definition: sdrv_pvt.h:51
sdrv_pvt_core_id
PVT core logics.
Definition: sdrv_pvt.h:38
@ PVT_CORE0
Definition: sdrv_pvt.h:39
@ PVT_CORE1
Definition: sdrv_pvt.h:40
@ PVT_CORE_NR
Definition: sdrv_pvt.h:41
struct sdrv_pvt_core sdrv_pvt_core_t
PVT core logic structure.
status_t sdrv_pvt_register_alarm_cb(sdrv_pvt_t *dev, sdrv_pvt_core_id_e core, sdrv_pvt_alarm_cb_t alarm_cb, void *arg)
Register temperature alarm callback.
float sdrv_pvt_type
Definition: sdrv_pvt.h:29
status_t sdrv_pvt_disable_alarm(sdrv_pvt_t *dev, sdrv_pvt_core_id_e core, sdrv_pvt_alarm_e alarm)
Disable Temperature sensor alarm.
sdrv_pvt_error
PVT error code.
Definition: sdrv_pvt.h:150
@ SDRV_PVT_NOT_STARTED
Definition: sdrv_pvt.h:152
@ SDRV_PVT_INVALID_PARAM
Definition: sdrv_pvt.h:151
status_t sdrv_pvt_stop(sdrv_pvt_t *dev)
Stop temperature sensor.
status_t sdrv_pvt_deinit(sdrv_pvt_t *dev)
De-initialize the PVT device.
void(* sdrv_pvt_alarm_cb_t)(struct sdrv_pvt *dev, sdrv_pvt_core_id_e core, sdrv_pvt_alarm_e alarm, void *arg)
Temperature alarm callback.
Definition: sdrv_pvt.h:115
PVT core logic structure.
Definition: sdrv_pvt.h:125
uint32_t irq
Definition: sdrv_pvt.h:127
uint32_t alarm_enable_mask
Definition: sdrv_pvt.h:134
void * cb_arg
Definition: sdrv_pvt.h:131
sdrv_pvt_alarm_cb_t alarm_cb
Definition: sdrv_pvt.h:129
Level alarm configuration.
Definition: sdrv_pvt.h:69
sdrv_pvt_type thresh_high
Definition: sdrv_pvt.h:73
sdrv_pvt_type thresh_low
Definition: sdrv_pvt.h:71
Process and temperature sensor structure.
Definition: sdrv_pvt.h:140
sdrv_pvt_core_t core[PVT_CORE_NR]
Definition: sdrv_pvt.h:144
paddr_t base
Definition: sdrv_pvt.h:142
Hysterisis alarm configuration.
Definition: sdrv_pvt.h:103
sdrv_pvt_level_alarm_config_t level_alarm
Definition: sdrv_pvt.h:104