.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
---|
1 | 2 | /* |
---|
2 | 3 | hwmon.h - part of lm_sensors, Linux kernel modules for hardware monitoring |
---|
3 | 4 | |
---|
.. | .. |
---|
6 | 7 | |
---|
7 | 8 | Copyright (C) 2005 Mark M. Hoffman <mhoffman@lightlink.com> |
---|
8 | 9 | |
---|
9 | | - This program is free software; you can redistribute it and/or modify |
---|
10 | | - it under the terms of the GNU General Public License as published by |
---|
11 | | - the Free Software Foundation; version 2 of the License. |
---|
12 | 10 | */ |
---|
13 | 11 | |
---|
14 | 12 | #ifndef _HWMON_H_ |
---|
.. | .. |
---|
29 | 27 | hwmon_humidity, |
---|
30 | 28 | hwmon_fan, |
---|
31 | 29 | hwmon_pwm, |
---|
| 30 | + hwmon_intrusion, |
---|
32 | 31 | hwmon_max, |
---|
33 | 32 | }; |
---|
34 | 33 | |
---|
.. | .. |
---|
40 | 39 | hwmon_chip_register_tz, |
---|
41 | 40 | hwmon_chip_update_interval, |
---|
42 | 41 | hwmon_chip_alarms, |
---|
| 42 | + hwmon_chip_samples, |
---|
| 43 | + hwmon_chip_curr_samples, |
---|
| 44 | + hwmon_chip_in_samples, |
---|
| 45 | + hwmon_chip_power_samples, |
---|
| 46 | + hwmon_chip_temp_samples, |
---|
43 | 47 | }; |
---|
44 | 48 | |
---|
45 | 49 | #define HWMON_C_TEMP_RESET_HISTORY BIT(hwmon_chip_temp_reset_history) |
---|
.. | .. |
---|
49 | 53 | #define HWMON_C_REGISTER_TZ BIT(hwmon_chip_register_tz) |
---|
50 | 54 | #define HWMON_C_UPDATE_INTERVAL BIT(hwmon_chip_update_interval) |
---|
51 | 55 | #define HWMON_C_ALARMS BIT(hwmon_chip_alarms) |
---|
| 56 | +#define HWMON_C_SAMPLES BIT(hwmon_chip_samples) |
---|
| 57 | +#define HWMON_C_CURR_SAMPLES BIT(hwmon_chip_curr_samples) |
---|
| 58 | +#define HWMON_C_IN_SAMPLES BIT(hwmon_chip_in_samples) |
---|
| 59 | +#define HWMON_C_POWER_SAMPLES BIT(hwmon_chip_power_samples) |
---|
| 60 | +#define HWMON_C_TEMP_SAMPLES BIT(hwmon_chip_temp_samples) |
---|
52 | 61 | |
---|
53 | 62 | enum hwmon_temp_attributes { |
---|
54 | | - hwmon_temp_input = 0, |
---|
| 63 | + hwmon_temp_enable, |
---|
| 64 | + hwmon_temp_input, |
---|
55 | 65 | hwmon_temp_type, |
---|
56 | 66 | hwmon_temp_lcrit, |
---|
57 | 67 | hwmon_temp_lcrit_hyst, |
---|
.. | .. |
---|
75 | 85 | hwmon_temp_lowest, |
---|
76 | 86 | hwmon_temp_highest, |
---|
77 | 87 | hwmon_temp_reset_history, |
---|
| 88 | + hwmon_temp_rated_min, |
---|
| 89 | + hwmon_temp_rated_max, |
---|
78 | 90 | }; |
---|
79 | 91 | |
---|
| 92 | +#define HWMON_T_ENABLE BIT(hwmon_temp_enable) |
---|
80 | 93 | #define HWMON_T_INPUT BIT(hwmon_temp_input) |
---|
81 | 94 | #define HWMON_T_TYPE BIT(hwmon_temp_type) |
---|
82 | 95 | #define HWMON_T_LCRIT BIT(hwmon_temp_lcrit) |
---|
.. | .. |
---|
101 | 114 | #define HWMON_T_LOWEST BIT(hwmon_temp_lowest) |
---|
102 | 115 | #define HWMON_T_HIGHEST BIT(hwmon_temp_highest) |
---|
103 | 116 | #define HWMON_T_RESET_HISTORY BIT(hwmon_temp_reset_history) |
---|
| 117 | +#define HWMON_T_RATED_MIN BIT(hwmon_temp_rated_min) |
---|
| 118 | +#define HWMON_T_RATED_MAX BIT(hwmon_temp_rated_max) |
---|
104 | 119 | |
---|
105 | 120 | enum hwmon_in_attributes { |
---|
| 121 | + hwmon_in_enable, |
---|
106 | 122 | hwmon_in_input, |
---|
107 | 123 | hwmon_in_min, |
---|
108 | 124 | hwmon_in_max, |
---|
.. | .. |
---|
118 | 134 | hwmon_in_max_alarm, |
---|
119 | 135 | hwmon_in_lcrit_alarm, |
---|
120 | 136 | hwmon_in_crit_alarm, |
---|
| 137 | + hwmon_in_rated_min, |
---|
| 138 | + hwmon_in_rated_max, |
---|
121 | 139 | }; |
---|
122 | 140 | |
---|
| 141 | +#define HWMON_I_ENABLE BIT(hwmon_in_enable) |
---|
123 | 142 | #define HWMON_I_INPUT BIT(hwmon_in_input) |
---|
124 | 143 | #define HWMON_I_MIN BIT(hwmon_in_min) |
---|
125 | 144 | #define HWMON_I_MAX BIT(hwmon_in_max) |
---|
.. | .. |
---|
135 | 154 | #define HWMON_I_MAX_ALARM BIT(hwmon_in_max_alarm) |
---|
136 | 155 | #define HWMON_I_LCRIT_ALARM BIT(hwmon_in_lcrit_alarm) |
---|
137 | 156 | #define HWMON_I_CRIT_ALARM BIT(hwmon_in_crit_alarm) |
---|
| 157 | +#define HWMON_I_RATED_MIN BIT(hwmon_in_rated_min) |
---|
| 158 | +#define HWMON_I_RATED_MAX BIT(hwmon_in_rated_max) |
---|
138 | 159 | |
---|
139 | 160 | enum hwmon_curr_attributes { |
---|
| 161 | + hwmon_curr_enable, |
---|
140 | 162 | hwmon_curr_input, |
---|
141 | 163 | hwmon_curr_min, |
---|
142 | 164 | hwmon_curr_max, |
---|
.. | .. |
---|
152 | 174 | hwmon_curr_max_alarm, |
---|
153 | 175 | hwmon_curr_lcrit_alarm, |
---|
154 | 176 | hwmon_curr_crit_alarm, |
---|
| 177 | + hwmon_curr_rated_min, |
---|
| 178 | + hwmon_curr_rated_max, |
---|
155 | 179 | }; |
---|
156 | 180 | |
---|
| 181 | +#define HWMON_C_ENABLE BIT(hwmon_curr_enable) |
---|
157 | 182 | #define HWMON_C_INPUT BIT(hwmon_curr_input) |
---|
158 | 183 | #define HWMON_C_MIN BIT(hwmon_curr_min) |
---|
159 | 184 | #define HWMON_C_MAX BIT(hwmon_curr_max) |
---|
.. | .. |
---|
169 | 194 | #define HWMON_C_MAX_ALARM BIT(hwmon_curr_max_alarm) |
---|
170 | 195 | #define HWMON_C_LCRIT_ALARM BIT(hwmon_curr_lcrit_alarm) |
---|
171 | 196 | #define HWMON_C_CRIT_ALARM BIT(hwmon_curr_crit_alarm) |
---|
| 197 | +#define HWMON_C_RATED_MIN BIT(hwmon_curr_rated_min) |
---|
| 198 | +#define HWMON_C_RATED_MAX BIT(hwmon_curr_rated_max) |
---|
172 | 199 | |
---|
173 | 200 | enum hwmon_power_attributes { |
---|
| 201 | + hwmon_power_enable, |
---|
174 | 202 | hwmon_power_average, |
---|
175 | 203 | hwmon_power_average_interval, |
---|
176 | 204 | hwmon_power_average_interval_max, |
---|
.. | .. |
---|
199 | 227 | hwmon_power_max_alarm, |
---|
200 | 228 | hwmon_power_lcrit_alarm, |
---|
201 | 229 | hwmon_power_crit_alarm, |
---|
| 230 | + hwmon_power_rated_min, |
---|
| 231 | + hwmon_power_rated_max, |
---|
202 | 232 | }; |
---|
203 | 233 | |
---|
| 234 | +#define HWMON_P_ENABLE BIT(hwmon_power_enable) |
---|
204 | 235 | #define HWMON_P_AVERAGE BIT(hwmon_power_average) |
---|
205 | 236 | #define HWMON_P_AVERAGE_INTERVAL BIT(hwmon_power_average_interval) |
---|
206 | 237 | #define HWMON_P_AVERAGE_INTERVAL_MAX BIT(hwmon_power_average_interval_max) |
---|
.. | .. |
---|
229 | 260 | #define HWMON_P_MAX_ALARM BIT(hwmon_power_max_alarm) |
---|
230 | 261 | #define HWMON_P_LCRIT_ALARM BIT(hwmon_power_lcrit_alarm) |
---|
231 | 262 | #define HWMON_P_CRIT_ALARM BIT(hwmon_power_crit_alarm) |
---|
| 263 | +#define HWMON_P_RATED_MIN BIT(hwmon_power_rated_min) |
---|
| 264 | +#define HWMON_P_RATED_MAX BIT(hwmon_power_rated_max) |
---|
232 | 265 | |
---|
233 | 266 | enum hwmon_energy_attributes { |
---|
| 267 | + hwmon_energy_enable, |
---|
234 | 268 | hwmon_energy_input, |
---|
235 | 269 | hwmon_energy_label, |
---|
236 | 270 | }; |
---|
237 | 271 | |
---|
| 272 | +#define HWMON_E_ENABLE BIT(hwmon_energy_enable) |
---|
238 | 273 | #define HWMON_E_INPUT BIT(hwmon_energy_input) |
---|
239 | 274 | #define HWMON_E_LABEL BIT(hwmon_energy_label) |
---|
240 | 275 | |
---|
241 | 276 | enum hwmon_humidity_attributes { |
---|
| 277 | + hwmon_humidity_enable, |
---|
242 | 278 | hwmon_humidity_input, |
---|
243 | 279 | hwmon_humidity_label, |
---|
244 | 280 | hwmon_humidity_min, |
---|
.. | .. |
---|
247 | 283 | hwmon_humidity_max_hyst, |
---|
248 | 284 | hwmon_humidity_alarm, |
---|
249 | 285 | hwmon_humidity_fault, |
---|
| 286 | + hwmon_humidity_rated_min, |
---|
| 287 | + hwmon_humidity_rated_max, |
---|
250 | 288 | }; |
---|
251 | 289 | |
---|
| 290 | +#define HWMON_H_ENABLE BIT(hwmon_humidity_enable) |
---|
252 | 291 | #define HWMON_H_INPUT BIT(hwmon_humidity_input) |
---|
253 | 292 | #define HWMON_H_LABEL BIT(hwmon_humidity_label) |
---|
254 | 293 | #define HWMON_H_MIN BIT(hwmon_humidity_min) |
---|
.. | .. |
---|
257 | 296 | #define HWMON_H_MAX_HYST BIT(hwmon_humidity_max_hyst) |
---|
258 | 297 | #define HWMON_H_ALARM BIT(hwmon_humidity_alarm) |
---|
259 | 298 | #define HWMON_H_FAULT BIT(hwmon_humidity_fault) |
---|
| 299 | +#define HWMON_H_RATED_MIN BIT(hwmon_humidity_rated_min) |
---|
| 300 | +#define HWMON_H_RATED_MAX BIT(hwmon_humidity_rated_max) |
---|
260 | 301 | |
---|
261 | 302 | enum hwmon_fan_attributes { |
---|
| 303 | + hwmon_fan_enable, |
---|
262 | 304 | hwmon_fan_input, |
---|
263 | 305 | hwmon_fan_label, |
---|
264 | 306 | hwmon_fan_min, |
---|
.. | .. |
---|
272 | 314 | hwmon_fan_fault, |
---|
273 | 315 | }; |
---|
274 | 316 | |
---|
| 317 | +#define HWMON_F_ENABLE BIT(hwmon_fan_enable) |
---|
275 | 318 | #define HWMON_F_INPUT BIT(hwmon_fan_input) |
---|
276 | 319 | #define HWMON_F_LABEL BIT(hwmon_fan_label) |
---|
277 | 320 | #define HWMON_F_MIN BIT(hwmon_fan_min) |
---|
.. | .. |
---|
295 | 338 | #define HWMON_PWM_ENABLE BIT(hwmon_pwm_enable) |
---|
296 | 339 | #define HWMON_PWM_MODE BIT(hwmon_pwm_mode) |
---|
297 | 340 | #define HWMON_PWM_FREQ BIT(hwmon_pwm_freq) |
---|
| 341 | + |
---|
| 342 | +enum hwmon_intrusion_attributes { |
---|
| 343 | + hwmon_intrusion_alarm, |
---|
| 344 | + hwmon_intrusion_beep, |
---|
| 345 | +}; |
---|
| 346 | +#define HWMON_INTRUSION_ALARM BIT(hwmon_intrusion_alarm) |
---|
| 347 | +#define HWMON_INTRUSION_BEEP BIT(hwmon_intrusion_beep) |
---|
298 | 348 | |
---|
299 | 349 | /** |
---|
300 | 350 | * struct hwmon_ops - hwmon device operations |
---|
.. | .. |
---|
363 | 413 | const u32 *config; |
---|
364 | 414 | }; |
---|
365 | 415 | |
---|
| 416 | +#define HWMON_CHANNEL_INFO(stype, ...) \ |
---|
| 417 | + (&(struct hwmon_channel_info) { \ |
---|
| 418 | + .type = hwmon_##stype, \ |
---|
| 419 | + .config = (u32 []) { \ |
---|
| 420 | + __VA_ARGS__, 0 \ |
---|
| 421 | + } \ |
---|
| 422 | + }) |
---|
| 423 | + |
---|
366 | 424 | /** |
---|
367 | 425 | * Chip configuration |
---|
368 | 426 | * @ops: Pointer to hwmon operations. |
---|
.. | .. |
---|
398 | 456 | void hwmon_device_unregister(struct device *dev); |
---|
399 | 457 | void devm_hwmon_device_unregister(struct device *dev); |
---|
400 | 458 | |
---|
| 459 | +int hwmon_notify_event(struct device *dev, enum hwmon_sensor_types type, |
---|
| 460 | + u32 attr, int channel); |
---|
| 461 | + |
---|
401 | 462 | /** |
---|
402 | 463 | * hwmon_is_bad_char - Is the char invalid in a hwmon name |
---|
403 | 464 | * @ch: the char to be considered |
---|