xref: /linux/drivers/hwmon/peci/common.h (revision 2cddfc2e8fc78c13b0f5286ea5dd48cdf527ad41)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Copyright (c) 2021 Intel Corporation */
3 
4 #include <linux/types.h>
5 
6 #ifndef __PECI_HWMON_COMMON_H
7 #define __PECI_HWMON_COMMON_H
8 
9 #define PECI_HWMON_UPDATE_INTERVAL	HZ
10 
11 /**
12  * struct peci_sensor_state - PECI state information
13  * @valid: flag to indicate the sensor value is valid
14  * @last_updated: time of the last update in jiffies
15  */
16 struct peci_sensor_state {
17 	bool valid;
18 	unsigned long last_updated;
19 };
20 
21 /**
22  * struct peci_sensor_data - PECI sensor information
23  * @value: sensor value in milli units
24  * @state: sensor update state
25  */
26 
27 struct peci_sensor_data {
28 	s32 value;
29 	struct peci_sensor_state state;
30 };
31 
32 /**
33  * peci_sensor_need_update() - check whether sensor update is needed or not
34  * @sensor: pointer to sensor data struct
35  *
36  * Return: true if update is needed, false if not.
37  */
38 
39 static inline bool peci_sensor_need_update(struct peci_sensor_state *state)
40 {
41 	return !state->valid ||
42 	       time_after(jiffies, state->last_updated + PECI_HWMON_UPDATE_INTERVAL);
43 }
44 
45 /**
46  * peci_sensor_mark_updated() - mark the sensor is updated
47  * @sensor: pointer to sensor data struct
48  */
49 static inline void peci_sensor_mark_updated(struct peci_sensor_state *state)
50 {
51 	state->valid = true;
52 	state->last_updated = jiffies;
53 }
54 
55 #endif /* __PECI_HWMON_COMMON_H */
56