| .. | .. |
|---|
| 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 |
|---|