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