[PATCH 1/5] hwmon: Export sensor and attribute definitions to userspace
flat view
WARM1d
From: Jihong Min <hidden>
Date: 2026-10-09 15:39:19
Also in:
linux-doc, linux-hwmon, lkml
Subsystem:
hardware monitoring, the rest · Maintainers:
Guenter Roeck, Linus Torvalds
Move sensor types, attribute identifiers and configuration bits to linux/hwmon.h in the UAPI so kernel and userspace drivers share them. Keep existing values unchanged and use userspace-safe bit definitions. Keep operations, channel structures and registration helpers in the kernel header. Assisted-by: Codex:gpt-6-astra Signed-off-by: Jihong Min <redacted> --- MAINTAINERS | 1 + include/linux/hwmon.h | 353 +---------------------------------- include/uapi/linux/hwmon.h | 372 +++++++++++++++++++++++++++++++++++++ 3 files changed, 374 insertions(+), 352 deletions(-) create mode 100644 include/uapi/linux/hwmon.h
diff --git a/MAINTAINERS b/MAINTAINERS
index 65e8a4b5c90b..f3f0292832bb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS@@ -11492,6 +11492,7 @@ F: Documentation/hwmon/ F: drivers/hwmon/ F: include/linux/hwmon*.h F: include/trace/events/hwmon*.h +F: include/uapi/linux/hwmon.h K: (devm_)?hwmon_device_(un)?register(|_with_groups|_with_info) HARDWARE RANDOM NUMBER GENERATOR CORE
diff --git a/include/linux/hwmon.h b/include/linux/hwmon.h
index dd713e193d0c..d48e0aa82bc5 100644
--- a/include/linux/hwmon.h
+++ b/include/linux/hwmon.h@@ -14,362 +14,11 @@ #include <linux/bitops.h> #include <linux/cleanup.h> +#include <uapi/linux/hwmon.h> struct device; struct attribute_group; -enum hwmon_sensor_types { - hwmon_chip, - hwmon_temp, - hwmon_in, - hwmon_curr, - hwmon_power, - hwmon_energy, - hwmon_energy64, - hwmon_humidity, - hwmon_fan, - hwmon_pwm, - hwmon_intrusion, - hwmon_max, -}; - -enum hwmon_chip_attributes { - hwmon_chip_temp_reset_history, - hwmon_chip_in_reset_history, - hwmon_chip_curr_reset_history, - hwmon_chip_power_reset_history, - hwmon_chip_register_tz, - hwmon_chip_update_interval, - hwmon_chip_update_interval_us, - hwmon_chip_alarms, - hwmon_chip_samples, - hwmon_chip_curr_samples, - hwmon_chip_in_samples, - hwmon_chip_power_samples, - hwmon_chip_temp_samples, - hwmon_chip_beep_enable, - hwmon_chip_pec, -}; - -#define HWMON_C_TEMP_RESET_HISTORY BIT(hwmon_chip_temp_reset_history) -#define HWMON_C_IN_RESET_HISTORY BIT(hwmon_chip_in_reset_history) -#define HWMON_C_CURR_RESET_HISTORY BIT(hwmon_chip_curr_reset_history) -#define HWMON_C_POWER_RESET_HISTORY BIT(hwmon_chip_power_reset_history) -#define HWMON_C_REGISTER_TZ BIT(hwmon_chip_register_tz) -#define HWMON_C_UPDATE_INTERVAL BIT(hwmon_chip_update_interval) -#define HWMON_C_UPDATE_INTERVAL_US BIT(hwmon_chip_update_interval_us) -#define HWMON_C_ALARMS BIT(hwmon_chip_alarms) -#define HWMON_C_SAMPLES BIT(hwmon_chip_samples) -#define HWMON_C_CURR_SAMPLES BIT(hwmon_chip_curr_samples) -#define HWMON_C_IN_SAMPLES BIT(hwmon_chip_in_samples) -#define HWMON_C_POWER_SAMPLES BIT(hwmon_chip_power_samples) -#define HWMON_C_TEMP_SAMPLES BIT(hwmon_chip_temp_samples) -#define HWMON_C_BEEP_ENABLE BIT(hwmon_chip_beep_enable) -#define HWMON_C_PEC BIT(hwmon_chip_pec) - -enum hwmon_temp_attributes { - hwmon_temp_enable, - hwmon_temp_input, - hwmon_temp_type, - hwmon_temp_lcrit, - hwmon_temp_lcrit_hyst, - hwmon_temp_min, - hwmon_temp_min_hyst, - hwmon_temp_max, - hwmon_temp_max_hyst, - hwmon_temp_crit, - hwmon_temp_crit_hyst, - hwmon_temp_emergency, - hwmon_temp_emergency_hyst, - hwmon_temp_alarm, - hwmon_temp_lcrit_alarm, - hwmon_temp_min_alarm, - hwmon_temp_max_alarm, - hwmon_temp_crit_alarm, - hwmon_temp_emergency_alarm, - hwmon_temp_fault, - hwmon_temp_offset, - hwmon_temp_label, - hwmon_temp_lowest, - hwmon_temp_highest, - hwmon_temp_reset_history, - hwmon_temp_rated_min, - hwmon_temp_rated_max, - hwmon_temp_beep, -}; - -#define HWMON_T_ENABLE BIT(hwmon_temp_enable) -#define HWMON_T_INPUT BIT(hwmon_temp_input) -#define HWMON_T_TYPE BIT(hwmon_temp_type) -#define HWMON_T_LCRIT BIT(hwmon_temp_lcrit) -#define HWMON_T_LCRIT_HYST BIT(hwmon_temp_lcrit_hyst) -#define HWMON_T_MIN BIT(hwmon_temp_min) -#define HWMON_T_MIN_HYST BIT(hwmon_temp_min_hyst) -#define HWMON_T_MAX BIT(hwmon_temp_max) -#define HWMON_T_MAX_HYST BIT(hwmon_temp_max_hyst) -#define HWMON_T_CRIT BIT(hwmon_temp_crit) -#define HWMON_T_CRIT_HYST BIT(hwmon_temp_crit_hyst) -#define HWMON_T_EMERGENCY BIT(hwmon_temp_emergency) -#define HWMON_T_EMERGENCY_HYST BIT(hwmon_temp_emergency_hyst) -#define HWMON_T_ALARM BIT(hwmon_temp_alarm) -#define HWMON_T_MIN_ALARM BIT(hwmon_temp_min_alarm) -#define HWMON_T_MAX_ALARM BIT(hwmon_temp_max_alarm) -#define HWMON_T_CRIT_ALARM BIT(hwmon_temp_crit_alarm) -#define HWMON_T_LCRIT_ALARM BIT(hwmon_temp_lcrit_alarm) -#define HWMON_T_EMERGENCY_ALARM BIT(hwmon_temp_emergency_alarm) -#define HWMON_T_FAULT BIT(hwmon_temp_fault) -#define HWMON_T_OFFSET BIT(hwmon_temp_offset) -#define HWMON_T_LABEL BIT(hwmon_temp_label) -#define HWMON_T_LOWEST BIT(hwmon_temp_lowest) -#define HWMON_T_HIGHEST BIT(hwmon_temp_highest) -#define HWMON_T_RESET_HISTORY BIT(hwmon_temp_reset_history) -#define HWMON_T_RATED_MIN BIT(hwmon_temp_rated_min) -#define HWMON_T_RATED_MAX BIT(hwmon_temp_rated_max) -#define HWMON_T_BEEP BIT(hwmon_temp_beep) - -enum hwmon_in_attributes { - hwmon_in_enable, - hwmon_in_input, - hwmon_in_min, - hwmon_in_max, - hwmon_in_lcrit, - hwmon_in_crit, - hwmon_in_average, - hwmon_in_lowest, - hwmon_in_highest, - hwmon_in_reset_history, - hwmon_in_label, - hwmon_in_alarm, - hwmon_in_min_alarm, - hwmon_in_max_alarm, - hwmon_in_lcrit_alarm, - hwmon_in_crit_alarm, - hwmon_in_rated_min, - hwmon_in_rated_max, - hwmon_in_beep, - hwmon_in_fault, -}; - -#define HWMON_I_ENABLE BIT(hwmon_in_enable) -#define HWMON_I_INPUT BIT(hwmon_in_input) -#define HWMON_I_MIN BIT(hwmon_in_min) -#define HWMON_I_MAX BIT(hwmon_in_max) -#define HWMON_I_LCRIT BIT(hwmon_in_lcrit) -#define HWMON_I_CRIT BIT(hwmon_in_crit) -#define HWMON_I_AVERAGE BIT(hwmon_in_average) -#define HWMON_I_LOWEST BIT(hwmon_in_lowest) -#define HWMON_I_HIGHEST BIT(hwmon_in_highest) -#define HWMON_I_RESET_HISTORY BIT(hwmon_in_reset_history) -#define HWMON_I_LABEL BIT(hwmon_in_label) -#define HWMON_I_ALARM BIT(hwmon_in_alarm) -#define HWMON_I_MIN_ALARM BIT(hwmon_in_min_alarm) -#define HWMON_I_MAX_ALARM BIT(hwmon_in_max_alarm) -#define HWMON_I_LCRIT_ALARM BIT(hwmon_in_lcrit_alarm) -#define HWMON_I_CRIT_ALARM BIT(hwmon_in_crit_alarm) -#define HWMON_I_RATED_MIN BIT(hwmon_in_rated_min) -#define HWMON_I_RATED_MAX BIT(hwmon_in_rated_max) -#define HWMON_I_BEEP BIT(hwmon_in_beep) -#define HWMON_I_FAULT BIT(hwmon_in_fault) - -enum hwmon_curr_attributes { - hwmon_curr_enable, - hwmon_curr_input, - hwmon_curr_min, - hwmon_curr_max, - hwmon_curr_lcrit, - hwmon_curr_crit, - hwmon_curr_average, - hwmon_curr_lowest, - hwmon_curr_highest, - hwmon_curr_reset_history, - hwmon_curr_label, - hwmon_curr_alarm, - hwmon_curr_min_alarm, - hwmon_curr_max_alarm, - hwmon_curr_lcrit_alarm, - hwmon_curr_crit_alarm, - hwmon_curr_rated_min, - hwmon_curr_rated_max, - hwmon_curr_beep, -}; - -#define HWMON_C_ENABLE BIT(hwmon_curr_enable) -#define HWMON_C_INPUT BIT(hwmon_curr_input) -#define HWMON_C_MIN BIT(hwmon_curr_min) -#define HWMON_C_MAX BIT(hwmon_curr_max) -#define HWMON_C_LCRIT BIT(hwmon_curr_lcrit) -#define HWMON_C_CRIT BIT(hwmon_curr_crit) -#define HWMON_C_AVERAGE BIT(hwmon_curr_average) -#define HWMON_C_LOWEST BIT(hwmon_curr_lowest) -#define HWMON_C_HIGHEST BIT(hwmon_curr_highest) -#define HWMON_C_RESET_HISTORY BIT(hwmon_curr_reset_history) -#define HWMON_C_LABEL BIT(hwmon_curr_label) -#define HWMON_C_ALARM BIT(hwmon_curr_alarm) -#define HWMON_C_MIN_ALARM BIT(hwmon_curr_min_alarm) -#define HWMON_C_MAX_ALARM BIT(hwmon_curr_max_alarm) -#define HWMON_C_LCRIT_ALARM BIT(hwmon_curr_lcrit_alarm) -#define HWMON_C_CRIT_ALARM BIT(hwmon_curr_crit_alarm) -#define HWMON_C_RATED_MIN BIT(hwmon_curr_rated_min) -#define HWMON_C_RATED_MAX BIT(hwmon_curr_rated_max) -#define HWMON_C_BEEP BIT(hwmon_curr_beep) - -enum hwmon_power_attributes { - hwmon_power_enable, - hwmon_power_average, - hwmon_power_average_interval, - hwmon_power_average_interval_max, - hwmon_power_average_interval_min, - hwmon_power_average_highest, - hwmon_power_average_lowest, - hwmon_power_average_max, - hwmon_power_average_min, - hwmon_power_input, - hwmon_power_input_highest, - hwmon_power_input_lowest, - hwmon_power_reset_history, - hwmon_power_accuracy, - hwmon_power_cap, - hwmon_power_cap_hyst, - hwmon_power_cap_max, - hwmon_power_cap_min, - hwmon_power_min, - hwmon_power_max, - hwmon_power_crit, - hwmon_power_lcrit, - hwmon_power_label, - hwmon_power_alarm, - hwmon_power_cap_alarm, - hwmon_power_min_alarm, - hwmon_power_max_alarm, - hwmon_power_lcrit_alarm, - hwmon_power_crit_alarm, - hwmon_power_rated_min, - hwmon_power_rated_max, -}; - -#define HWMON_P_ENABLE BIT(hwmon_power_enable) -#define HWMON_P_AVERAGE BIT(hwmon_power_average) -#define HWMON_P_AVERAGE_INTERVAL BIT(hwmon_power_average_interval) -#define HWMON_P_AVERAGE_INTERVAL_MAX BIT(hwmon_power_average_interval_max) -#define HWMON_P_AVERAGE_INTERVAL_MIN BIT(hwmon_power_average_interval_min) -#define HWMON_P_AVERAGE_HIGHEST BIT(hwmon_power_average_highest) -#define HWMON_P_AVERAGE_LOWEST BIT(hwmon_power_average_lowest) -#define HWMON_P_AVERAGE_MAX BIT(hwmon_power_average_max) -#define HWMON_P_AVERAGE_MIN BIT(hwmon_power_average_min) -#define HWMON_P_INPUT BIT(hwmon_power_input) -#define HWMON_P_INPUT_HIGHEST BIT(hwmon_power_input_highest) -#define HWMON_P_INPUT_LOWEST BIT(hwmon_power_input_lowest) -#define HWMON_P_RESET_HISTORY BIT(hwmon_power_reset_history) -#define HWMON_P_ACCURACY BIT(hwmon_power_accuracy) -#define HWMON_P_CAP BIT(hwmon_power_cap) -#define HWMON_P_CAP_HYST BIT(hwmon_power_cap_hyst) -#define HWMON_P_CAP_MAX BIT(hwmon_power_cap_max) -#define HWMON_P_CAP_MIN BIT(hwmon_power_cap_min) -#define HWMON_P_MIN BIT(hwmon_power_min) -#define HWMON_P_MAX BIT(hwmon_power_max) -#define HWMON_P_LCRIT BIT(hwmon_power_lcrit) -#define HWMON_P_CRIT BIT(hwmon_power_crit) -#define HWMON_P_LABEL BIT(hwmon_power_label) -#define HWMON_P_ALARM BIT(hwmon_power_alarm) -#define HWMON_P_CAP_ALARM BIT(hwmon_power_cap_alarm) -#define HWMON_P_MIN_ALARM BIT(hwmon_power_min_alarm) -#define HWMON_P_MAX_ALARM BIT(hwmon_power_max_alarm) -#define HWMON_P_LCRIT_ALARM BIT(hwmon_power_lcrit_alarm) -#define HWMON_P_CRIT_ALARM BIT(hwmon_power_crit_alarm) -#define HWMON_P_RATED_MIN BIT(hwmon_power_rated_min) -#define HWMON_P_RATED_MAX BIT(hwmon_power_rated_max) - -enum hwmon_energy_attributes { - hwmon_energy_enable, - hwmon_energy_input, - hwmon_energy_label, -}; - -#define HWMON_E_ENABLE BIT(hwmon_energy_enable) -#define HWMON_E_INPUT BIT(hwmon_energy_input) -#define HWMON_E_LABEL BIT(hwmon_energy_label) - -enum hwmon_humidity_attributes { - hwmon_humidity_enable, - hwmon_humidity_input, - hwmon_humidity_label, - hwmon_humidity_min, - hwmon_humidity_min_hyst, - hwmon_humidity_max, - hwmon_humidity_max_hyst, - hwmon_humidity_alarm, - hwmon_humidity_fault, - hwmon_humidity_rated_min, - hwmon_humidity_rated_max, - hwmon_humidity_min_alarm, - hwmon_humidity_max_alarm, -}; - -#define HWMON_H_ENABLE BIT(hwmon_humidity_enable) -#define HWMON_H_INPUT BIT(hwmon_humidity_input) -#define HWMON_H_LABEL BIT(hwmon_humidity_label) -#define HWMON_H_MIN BIT(hwmon_humidity_min) -#define HWMON_H_MIN_HYST BIT(hwmon_humidity_min_hyst) -#define HWMON_H_MAX BIT(hwmon_humidity_max) -#define HWMON_H_MAX_HYST BIT(hwmon_humidity_max_hyst) -#define HWMON_H_ALARM BIT(hwmon_humidity_alarm) -#define HWMON_H_FAULT BIT(hwmon_humidity_fault) -#define HWMON_H_RATED_MIN BIT(hwmon_humidity_rated_min) -#define HWMON_H_RATED_MAX BIT(hwmon_humidity_rated_max) -#define HWMON_H_MIN_ALARM BIT(hwmon_humidity_min_alarm) -#define HWMON_H_MAX_ALARM BIT(hwmon_humidity_max_alarm) - -enum hwmon_fan_attributes { - hwmon_fan_enable, - hwmon_fan_input, - hwmon_fan_label, - hwmon_fan_min, - hwmon_fan_max, - hwmon_fan_div, - hwmon_fan_pulses, - hwmon_fan_target, - hwmon_fan_alarm, - hwmon_fan_min_alarm, - hwmon_fan_max_alarm, - hwmon_fan_fault, - hwmon_fan_beep, -}; - -#define HWMON_F_ENABLE BIT(hwmon_fan_enable) -#define HWMON_F_INPUT BIT(hwmon_fan_input) -#define HWMON_F_LABEL BIT(hwmon_fan_label) -#define HWMON_F_MIN BIT(hwmon_fan_min) -#define HWMON_F_MAX BIT(hwmon_fan_max) -#define HWMON_F_DIV BIT(hwmon_fan_div) -#define HWMON_F_PULSES BIT(hwmon_fan_pulses) -#define HWMON_F_TARGET BIT(hwmon_fan_target) -#define HWMON_F_ALARM BIT(hwmon_fan_alarm) -#define HWMON_F_MIN_ALARM BIT(hwmon_fan_min_alarm) -#define HWMON_F_MAX_ALARM BIT(hwmon_fan_max_alarm) -#define HWMON_F_FAULT BIT(hwmon_fan_fault) -#define HWMON_F_BEEP BIT(hwmon_fan_beep) - -enum hwmon_pwm_attributes { - hwmon_pwm_input, - hwmon_pwm_enable, - hwmon_pwm_mode, - hwmon_pwm_freq, - hwmon_pwm_auto_channels_temp, -}; - -#define HWMON_PWM_INPUT BIT(hwmon_pwm_input) -#define HWMON_PWM_ENABLE BIT(hwmon_pwm_enable) -#define HWMON_PWM_MODE BIT(hwmon_pwm_mode) -#define HWMON_PWM_FREQ BIT(hwmon_pwm_freq) -#define HWMON_PWM_AUTO_CHANNELS_TEMP BIT(hwmon_pwm_auto_channels_temp) - -enum hwmon_intrusion_attributes { - hwmon_intrusion_alarm, - hwmon_intrusion_beep, -}; -#define HWMON_INTRUSION_ALARM BIT(hwmon_intrusion_alarm) -#define HWMON_INTRUSION_BEEP BIT(hwmon_intrusion_beep) - /** * struct hwmon_ops - hwmon device operations * @visible: Static visibility. If non-zero, 'is_visible' is ignored.
diff --git a/include/uapi/linux/hwmon.h b/include/uapi/linux/hwmon.h
new file mode 100644
index 000000000000..274f9c9dcb87
--- /dev/null
+++ b/include/uapi/linux/hwmon.h@@ -0,0 +1,372 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* + * Hardware monitoring sensor types, attributes and configuration bits. + * + * Copyright (C) 2005 Mark M. Hoffman <mhoffman@lightlink.com> + * Copyright (C) 2026 Jihong Min <hurryman2212@gmail.com> + */ + +#ifndef _UAPI_LINUX_HWMON_H +#define _UAPI_LINUX_HWMON_H + +#include <linux/const.h> + +/* + * Existing identifiers are ABI: never change their values. Append new attributes + * at the end of their enum and new sensor types before hwmon_max. + */ + +enum hwmon_sensor_types { + hwmon_chip = 0, + hwmon_temp = 1, + hwmon_in = 2, + hwmon_curr = 3, + hwmon_power = 4, + hwmon_energy = 5, + hwmon_energy64 = 6, + hwmon_humidity = 7, + hwmon_fan = 8, + hwmon_pwm = 9, + hwmon_intrusion = 10, + hwmon_max = 11, +}; + +enum hwmon_chip_attributes { + hwmon_chip_temp_reset_history = 0, + hwmon_chip_in_reset_history = 1, + hwmon_chip_curr_reset_history = 2, + hwmon_chip_power_reset_history = 3, + hwmon_chip_register_tz = 4, + hwmon_chip_update_interval = 5, + hwmon_chip_update_interval_us = 6, + hwmon_chip_alarms = 7, + hwmon_chip_samples = 8, + hwmon_chip_curr_samples = 9, + hwmon_chip_in_samples = 10, + hwmon_chip_power_samples = 11, + hwmon_chip_temp_samples = 12, + hwmon_chip_beep_enable = 13, + hwmon_chip_pec = 14, +}; + +#define HWMON_C_TEMP_RESET_HISTORY _BITUL(hwmon_chip_temp_reset_history) +#define HWMON_C_IN_RESET_HISTORY _BITUL(hwmon_chip_in_reset_history) +#define HWMON_C_CURR_RESET_HISTORY _BITUL(hwmon_chip_curr_reset_history) +#define HWMON_C_POWER_RESET_HISTORY _BITUL(hwmon_chip_power_reset_history) +#define HWMON_C_REGISTER_TZ _BITUL(hwmon_chip_register_tz) +#define HWMON_C_UPDATE_INTERVAL _BITUL(hwmon_chip_update_interval) +#define HWMON_C_UPDATE_INTERVAL_US _BITUL(hwmon_chip_update_interval_us) +#define HWMON_C_ALARMS _BITUL(hwmon_chip_alarms) +#define HWMON_C_SAMPLES _BITUL(hwmon_chip_samples) +#define HWMON_C_CURR_SAMPLES _BITUL(hwmon_chip_curr_samples) +#define HWMON_C_IN_SAMPLES _BITUL(hwmon_chip_in_samples) +#define HWMON_C_POWER_SAMPLES _BITUL(hwmon_chip_power_samples) +#define HWMON_C_TEMP_SAMPLES _BITUL(hwmon_chip_temp_samples) +#define HWMON_C_BEEP_ENABLE _BITUL(hwmon_chip_beep_enable) +#define HWMON_C_PEC _BITUL(hwmon_chip_pec) + +enum hwmon_temp_attributes { + hwmon_temp_enable = 0, + hwmon_temp_input = 1, + hwmon_temp_type = 2, + hwmon_temp_lcrit = 3, + hwmon_temp_lcrit_hyst = 4, + hwmon_temp_min = 5, + hwmon_temp_min_hyst = 6, + hwmon_temp_max = 7, + hwmon_temp_max_hyst = 8, + hwmon_temp_crit = 9, + hwmon_temp_crit_hyst = 10, + hwmon_temp_emergency = 11, + hwmon_temp_emergency_hyst = 12, + hwmon_temp_alarm = 13, + hwmon_temp_lcrit_alarm = 14, + hwmon_temp_min_alarm = 15, + hwmon_temp_max_alarm = 16, + hwmon_temp_crit_alarm = 17, + hwmon_temp_emergency_alarm = 18, + hwmon_temp_fault = 19, + hwmon_temp_offset = 20, + hwmon_temp_label = 21, + hwmon_temp_lowest = 22, + hwmon_temp_highest = 23, + hwmon_temp_reset_history = 24, + hwmon_temp_rated_min = 25, + hwmon_temp_rated_max = 26, + hwmon_temp_beep = 27, +}; + +#define HWMON_T_ENABLE _BITUL(hwmon_temp_enable) +#define HWMON_T_INPUT _BITUL(hwmon_temp_input) +#define HWMON_T_TYPE _BITUL(hwmon_temp_type) +#define HWMON_T_LCRIT _BITUL(hwmon_temp_lcrit) +#define HWMON_T_LCRIT_HYST _BITUL(hwmon_temp_lcrit_hyst) +#define HWMON_T_MIN _BITUL(hwmon_temp_min) +#define HWMON_T_MIN_HYST _BITUL(hwmon_temp_min_hyst) +#define HWMON_T_MAX _BITUL(hwmon_temp_max) +#define HWMON_T_MAX_HYST _BITUL(hwmon_temp_max_hyst) +#define HWMON_T_CRIT _BITUL(hwmon_temp_crit) +#define HWMON_T_CRIT_HYST _BITUL(hwmon_temp_crit_hyst) +#define HWMON_T_EMERGENCY _BITUL(hwmon_temp_emergency) +#define HWMON_T_EMERGENCY_HYST _BITUL(hwmon_temp_emergency_hyst) +#define HWMON_T_ALARM _BITUL(hwmon_temp_alarm) +#define HWMON_T_MIN_ALARM _BITUL(hwmon_temp_min_alarm) +#define HWMON_T_MAX_ALARM _BITUL(hwmon_temp_max_alarm) +#define HWMON_T_CRIT_ALARM _BITUL(hwmon_temp_crit_alarm) +#define HWMON_T_LCRIT_ALARM _BITUL(hwmon_temp_lcrit_alarm) +#define HWMON_T_EMERGENCY_ALARM _BITUL(hwmon_temp_emergency_alarm) +#define HWMON_T_FAULT _BITUL(hwmon_temp_fault) +#define HWMON_T_OFFSET _BITUL(hwmon_temp_offset) +#define HWMON_T_LABEL _BITUL(hwmon_temp_label) +#define HWMON_T_LOWEST _BITUL(hwmon_temp_lowest) +#define HWMON_T_HIGHEST _BITUL(hwmon_temp_highest) +#define HWMON_T_RESET_HISTORY _BITUL(hwmon_temp_reset_history) +#define HWMON_T_RATED_MIN _BITUL(hwmon_temp_rated_min) +#define HWMON_T_RATED_MAX _BITUL(hwmon_temp_rated_max) +#define HWMON_T_BEEP _BITUL(hwmon_temp_beep) + +enum hwmon_in_attributes { + hwmon_in_enable = 0, + hwmon_in_input = 1, + hwmon_in_min = 2, + hwmon_in_max = 3, + hwmon_in_lcrit = 4, + hwmon_in_crit = 5, + hwmon_in_average = 6, + hwmon_in_lowest = 7, + hwmon_in_highest = 8, + hwmon_in_reset_history = 9, + hwmon_in_label = 10, + hwmon_in_alarm = 11, + hwmon_in_min_alarm = 12, + hwmon_in_max_alarm = 13, + hwmon_in_lcrit_alarm = 14, + hwmon_in_crit_alarm = 15, + hwmon_in_rated_min = 16, + hwmon_in_rated_max = 17, + hwmon_in_beep = 18, + hwmon_in_fault = 19, +}; + +#define HWMON_I_ENABLE _BITUL(hwmon_in_enable) +#define HWMON_I_INPUT _BITUL(hwmon_in_input) +#define HWMON_I_MIN _BITUL(hwmon_in_min) +#define HWMON_I_MAX _BITUL(hwmon_in_max) +#define HWMON_I_LCRIT _BITUL(hwmon_in_lcrit) +#define HWMON_I_CRIT _BITUL(hwmon_in_crit) +#define HWMON_I_AVERAGE _BITUL(hwmon_in_average) +#define HWMON_I_LOWEST _BITUL(hwmon_in_lowest) +#define HWMON_I_HIGHEST _BITUL(hwmon_in_highest) +#define HWMON_I_RESET_HISTORY _BITUL(hwmon_in_reset_history) +#define HWMON_I_LABEL _BITUL(hwmon_in_label) +#define HWMON_I_ALARM _BITUL(hwmon_in_alarm) +#define HWMON_I_MIN_ALARM _BITUL(hwmon_in_min_alarm) +#define HWMON_I_MAX_ALARM _BITUL(hwmon_in_max_alarm) +#define HWMON_I_LCRIT_ALARM _BITUL(hwmon_in_lcrit_alarm) +#define HWMON_I_CRIT_ALARM _BITUL(hwmon_in_crit_alarm) +#define HWMON_I_RATED_MIN _BITUL(hwmon_in_rated_min) +#define HWMON_I_RATED_MAX _BITUL(hwmon_in_rated_max) +#define HWMON_I_BEEP _BITUL(hwmon_in_beep) +#define HWMON_I_FAULT _BITUL(hwmon_in_fault) + +enum hwmon_curr_attributes { + hwmon_curr_enable = 0, + hwmon_curr_input = 1, + hwmon_curr_min = 2, + hwmon_curr_max = 3, + hwmon_curr_lcrit = 4, + hwmon_curr_crit = 5, + hwmon_curr_average = 6, + hwmon_curr_lowest = 7, + hwmon_curr_highest = 8, + hwmon_curr_reset_history = 9, + hwmon_curr_label = 10, + hwmon_curr_alarm = 11, + hwmon_curr_min_alarm = 12, + hwmon_curr_max_alarm = 13, + hwmon_curr_lcrit_alarm = 14, + hwmon_curr_crit_alarm = 15, + hwmon_curr_rated_min = 16, + hwmon_curr_rated_max = 17, + hwmon_curr_beep = 18, +}; + +#define HWMON_C_ENABLE _BITUL(hwmon_curr_enable) +#define HWMON_C_INPUT _BITUL(hwmon_curr_input) +#define HWMON_C_MIN _BITUL(hwmon_curr_min) +#define HWMON_C_MAX _BITUL(hwmon_curr_max) +#define HWMON_C_LCRIT _BITUL(hwmon_curr_lcrit) +#define HWMON_C_CRIT _BITUL(hwmon_curr_crit) +#define HWMON_C_AVERAGE _BITUL(hwmon_curr_average) +#define HWMON_C_LOWEST _BITUL(hwmon_curr_lowest) +#define HWMON_C_HIGHEST _BITUL(hwmon_curr_highest) +#define HWMON_C_RESET_HISTORY _BITUL(hwmon_curr_reset_history) +#define HWMON_C_LABEL _BITUL(hwmon_curr_label) +#define HWMON_C_ALARM _BITUL(hwmon_curr_alarm) +#define HWMON_C_MIN_ALARM _BITUL(hwmon_curr_min_alarm) +#define HWMON_C_MAX_ALARM _BITUL(hwmon_curr_max_alarm) +#define HWMON_C_LCRIT_ALARM _BITUL(hwmon_curr_lcrit_alarm) +#define HWMON_C_CRIT_ALARM _BITUL(hwmon_curr_crit_alarm) +#define HWMON_C_RATED_MIN _BITUL(hwmon_curr_rated_min) +#define HWMON_C_RATED_MAX _BITUL(hwmon_curr_rated_max) +#define HWMON_C_BEEP _BITUL(hwmon_curr_beep) + +enum hwmon_power_attributes { + hwmon_power_enable = 0, + hwmon_power_average = 1, + hwmon_power_average_interval = 2, + hwmon_power_average_interval_max = 3, + hwmon_power_average_interval_min = 4, + hwmon_power_average_highest = 5, + hwmon_power_average_lowest = 6, + hwmon_power_average_max = 7, + hwmon_power_average_min = 8, + hwmon_power_input = 9, + hwmon_power_input_highest = 10, + hwmon_power_input_lowest = 11, + hwmon_power_reset_history = 12, + hwmon_power_accuracy = 13, + hwmon_power_cap = 14, + hwmon_power_cap_hyst = 15, + hwmon_power_cap_max = 16, + hwmon_power_cap_min = 17, + hwmon_power_min = 18, + hwmon_power_max = 19, + hwmon_power_crit = 20, + hwmon_power_lcrit = 21, + hwmon_power_label = 22, + hwmon_power_alarm = 23, + hwmon_power_cap_alarm = 24, + hwmon_power_min_alarm = 25, + hwmon_power_max_alarm = 26, + hwmon_power_lcrit_alarm = 27, + hwmon_power_crit_alarm = 28, + hwmon_power_rated_min = 29, + hwmon_power_rated_max = 30, +}; + +#define HWMON_P_ENABLE _BITUL(hwmon_power_enable) +#define HWMON_P_AVERAGE _BITUL(hwmon_power_average) +#define HWMON_P_AVERAGE_INTERVAL _BITUL(hwmon_power_average_interval) +#define HWMON_P_AVERAGE_INTERVAL_MAX _BITUL(hwmon_power_average_interval_max) +#define HWMON_P_AVERAGE_INTERVAL_MIN _BITUL(hwmon_power_average_interval_min) +#define HWMON_P_AVERAGE_HIGHEST _BITUL(hwmon_power_average_highest) +#define HWMON_P_AVERAGE_LOWEST _BITUL(hwmon_power_average_lowest) +#define HWMON_P_AVERAGE_MAX _BITUL(hwmon_power_average_max) +#define HWMON_P_AVERAGE_MIN _BITUL(hwmon_power_average_min) +#define HWMON_P_INPUT _BITUL(hwmon_power_input) +#define HWMON_P_INPUT_HIGHEST _BITUL(hwmon_power_input_highest) +#define HWMON_P_INPUT_LOWEST _BITUL(hwmon_power_input_lowest) +#define HWMON_P_RESET_HISTORY _BITUL(hwmon_power_reset_history) +#define HWMON_P_ACCURACY _BITUL(hwmon_power_accuracy) +#define HWMON_P_CAP _BITUL(hwmon_power_cap) +#define HWMON_P_CAP_HYST _BITUL(hwmon_power_cap_hyst) +#define HWMON_P_CAP_MAX _BITUL(hwmon_power_cap_max) +#define HWMON_P_CAP_MIN _BITUL(hwmon_power_cap_min) +#define HWMON_P_MIN _BITUL(hwmon_power_min) +#define HWMON_P_MAX _BITUL(hwmon_power_max) +#define HWMON_P_LCRIT _BITUL(hwmon_power_lcrit) +#define HWMON_P_CRIT _BITUL(hwmon_power_crit) +#define HWMON_P_LABEL _BITUL(hwmon_power_label) +#define HWMON_P_ALARM _BITUL(hwmon_power_alarm) +#define HWMON_P_CAP_ALARM _BITUL(hwmon_power_cap_alarm) +#define HWMON_P_MIN_ALARM _BITUL(hwmon_power_min_alarm) +#define HWMON_P_MAX_ALARM _BITUL(hwmon_power_max_alarm) +#define HWMON_P_LCRIT_ALARM _BITUL(hwmon_power_lcrit_alarm) +#define HWMON_P_CRIT_ALARM _BITUL(hwmon_power_crit_alarm) +#define HWMON_P_RATED_MIN _BITUL(hwmon_power_rated_min) +#define HWMON_P_RATED_MAX _BITUL(hwmon_power_rated_max) + +enum hwmon_energy_attributes { + hwmon_energy_enable = 0, + hwmon_energy_input = 1, + hwmon_energy_label = 2, +}; + +#define HWMON_E_ENABLE _BITUL(hwmon_energy_enable) +#define HWMON_E_INPUT _BITUL(hwmon_energy_input) +#define HWMON_E_LABEL _BITUL(hwmon_energy_label) + +enum hwmon_humidity_attributes { + hwmon_humidity_enable = 0, + hwmon_humidity_input = 1, + hwmon_humidity_label = 2, + hwmon_humidity_min = 3, + hwmon_humidity_min_hyst = 4, + hwmon_humidity_max = 5, + hwmon_humidity_max_hyst = 6, + hwmon_humidity_alarm = 7, + hwmon_humidity_fault = 8, + hwmon_humidity_rated_min = 9, + hwmon_humidity_rated_max = 10, + hwmon_humidity_min_alarm = 11, + hwmon_humidity_max_alarm = 12, +}; + +#define HWMON_H_ENABLE _BITUL(hwmon_humidity_enable) +#define HWMON_H_INPUT _BITUL(hwmon_humidity_input) +#define HWMON_H_LABEL _BITUL(hwmon_humidity_label) +#define HWMON_H_MIN _BITUL(hwmon_humidity_min) +#define HWMON_H_MIN_HYST _BITUL(hwmon_humidity_min_hyst) +#define HWMON_H_MAX _BITUL(hwmon_humidity_max) +#define HWMON_H_MAX_HYST _BITUL(hwmon_humidity_max_hyst) +#define HWMON_H_ALARM _BITUL(hwmon_humidity_alarm) +#define HWMON_H_FAULT _BITUL(hwmon_humidity_fault) +#define HWMON_H_RATED_MIN _BITUL(hwmon_humidity_rated_min) +#define HWMON_H_RATED_MAX _BITUL(hwmon_humidity_rated_max) +#define HWMON_H_MIN_ALARM _BITUL(hwmon_humidity_min_alarm) +#define HWMON_H_MAX_ALARM _BITUL(hwmon_humidity_max_alarm) + +enum hwmon_fan_attributes { + hwmon_fan_enable = 0, + hwmon_fan_input = 1, + hwmon_fan_label = 2, + hwmon_fan_min = 3, + hwmon_fan_max = 4, + hwmon_fan_div = 5, + hwmon_fan_pulses = 6, + hwmon_fan_target = 7, + hwmon_fan_alarm = 8, + hwmon_fan_min_alarm = 9, + hwmon_fan_max_alarm = 10, + hwmon_fan_fault = 11, + hwmon_fan_beep = 12, +}; + +#define HWMON_F_ENABLE _BITUL(hwmon_fan_enable) +#define HWMON_F_INPUT _BITUL(hwmon_fan_input) +#define HWMON_F_LABEL _BITUL(hwmon_fan_label) +#define HWMON_F_MIN _BITUL(hwmon_fan_min) +#define HWMON_F_MAX _BITUL(hwmon_fan_max) +#define HWMON_F_DIV _BITUL(hwmon_fan_div) +#define HWMON_F_PULSES _BITUL(hwmon_fan_pulses) +#define HWMON_F_TARGET _BITUL(hwmon_fan_target) +#define HWMON_F_ALARM _BITUL(hwmon_fan_alarm) +#define HWMON_F_MIN_ALARM _BITUL(hwmon_fan_min_alarm) +#define HWMON_F_MAX_ALARM _BITUL(hwmon_fan_max_alarm) +#define HWMON_F_FAULT _BITUL(hwmon_fan_fault) +#define HWMON_F_BEEP _BITUL(hwmon_fan_beep) + +enum hwmon_pwm_attributes { + hwmon_pwm_input = 0, + hwmon_pwm_enable = 1, + hwmon_pwm_mode = 2, + hwmon_pwm_freq = 3, + hwmon_pwm_auto_channels_temp = 4, +}; + +#define HWMON_PWM_INPUT _BITUL(hwmon_pwm_input) +#define HWMON_PWM_ENABLE _BITUL(hwmon_pwm_enable) +#define HWMON_PWM_MODE _BITUL(hwmon_pwm_mode) +#define HWMON_PWM_FREQ _BITUL(hwmon_pwm_freq) +#define HWMON_PWM_AUTO_CHANNELS_TEMP _BITUL(hwmon_pwm_auto_channels_temp) + +enum hwmon_intrusion_attributes { + hwmon_intrusion_alarm = 0, + hwmon_intrusion_beep = 1, +}; + +#define HWMON_INTRUSION_ALARM _BITUL(hwmon_intrusion_alarm) +#define HWMON_INTRUSION_BEEP _BITUL(hwmon_intrusion_beep) + +#endif /* _UAPI_LINUX_HWMON_H */