Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hwmon: (core) Add support for rated attributes

Adding implementation for new attributes (rated_min/rated_max) for
currentX, inX, powerX, tempX and humidityX.

Tested with OpenBMC stack and simple hwmon driver using
rated_min/rated_max for the following types of sensors: hwmon_temp,
hwmon_in, hwmon_curr, hwmon_power, hwmon_humidity.
For each sensor rated attributes were available and returned
expected values.

Signed-off-by: Zbigniew Lukwinski <zbigniew.lukwinski@linux.intel.com>
Link: https://lore.kernel.org/r/1596224237-32280-3-git-send-email-zbigniew.lukwinski@linux.intel.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>

authored by

Zbigniew Lukwinski and committed by
Guenter Roeck
1967f712 e8e61235

+30
+10
drivers/hwmon/hwmon.c
··· 431 431 [hwmon_temp_lowest] = "temp%d_lowest", 432 432 [hwmon_temp_highest] = "temp%d_highest", 433 433 [hwmon_temp_reset_history] = "temp%d_reset_history", 434 + [hwmon_temp_rated_min] = "temp%d_rated_min", 435 + [hwmon_temp_rated_max] = "temp%d_rated_max", 434 436 }; 435 437 436 438 static const char * const hwmon_in_attr_templates[] = { ··· 452 450 [hwmon_in_max_alarm] = "in%d_max_alarm", 453 451 [hwmon_in_lcrit_alarm] = "in%d_lcrit_alarm", 454 452 [hwmon_in_crit_alarm] = "in%d_crit_alarm", 453 + [hwmon_in_rated_min] = "in%d_rated_min", 454 + [hwmon_in_rated_max] = "in%d_rated_max", 455 455 }; 456 456 457 457 static const char * const hwmon_curr_attr_templates[] = { ··· 473 469 [hwmon_curr_max_alarm] = "curr%d_max_alarm", 474 470 [hwmon_curr_lcrit_alarm] = "curr%d_lcrit_alarm", 475 471 [hwmon_curr_crit_alarm] = "curr%d_crit_alarm", 472 + [hwmon_curr_rated_min] = "curr%d_rated_min", 473 + [hwmon_curr_rated_max] = "curr%d_rated_max", 476 474 }; 477 475 478 476 static const char * const hwmon_power_attr_templates[] = { ··· 507 501 [hwmon_power_max_alarm] = "power%d_max_alarm", 508 502 [hwmon_power_lcrit_alarm] = "power%d_lcrit_alarm", 509 503 [hwmon_power_crit_alarm] = "power%d_crit_alarm", 504 + [hwmon_power_rated_min] = "power%d_rated_min", 505 + [hwmon_power_rated_max] = "power%d_rated_max", 510 506 }; 511 507 512 508 static const char * const hwmon_energy_attr_templates[] = { ··· 527 519 [hwmon_humidity_max_hyst] = "humidity%d_max_hyst", 528 520 [hwmon_humidity_alarm] = "humidity%d_alarm", 529 521 [hwmon_humidity_fault] = "humidity%d_fault", 522 + [hwmon_humidity_rated_min] = "humidity%d_rated_min", 523 + [hwmon_humidity_rated_max] = "humidity%d_rated_max", 530 524 }; 531 525 532 526 static const char * const hwmon_fan_attr_templates[] = {
+20
include/linux/hwmon.h
··· 85 85 hwmon_temp_lowest, 86 86 hwmon_temp_highest, 87 87 hwmon_temp_reset_history, 88 + hwmon_temp_rated_min, 89 + hwmon_temp_rated_max, 88 90 }; 89 91 90 92 #define HWMON_T_ENABLE BIT(hwmon_temp_enable) ··· 114 112 #define HWMON_T_LOWEST BIT(hwmon_temp_lowest) 115 113 #define HWMON_T_HIGHEST BIT(hwmon_temp_highest) 116 114 #define HWMON_T_RESET_HISTORY BIT(hwmon_temp_reset_history) 115 + #define HWMON_T_RATED_MIN BIT(hwmon_temp_rated_min) 116 + #define HWMON_T_RATED_MAX BIT(hwmon_temp_rated_max) 117 117 118 118 enum hwmon_in_attributes { 119 119 hwmon_in_enable, ··· 134 130 hwmon_in_max_alarm, 135 131 hwmon_in_lcrit_alarm, 136 132 hwmon_in_crit_alarm, 133 + hwmon_in_rated_min, 134 + hwmon_in_rated_max, 137 135 }; 138 136 139 137 #define HWMON_I_ENABLE BIT(hwmon_in_enable) ··· 154 148 #define HWMON_I_MAX_ALARM BIT(hwmon_in_max_alarm) 155 149 #define HWMON_I_LCRIT_ALARM BIT(hwmon_in_lcrit_alarm) 156 150 #define HWMON_I_CRIT_ALARM BIT(hwmon_in_crit_alarm) 151 + #define HWMON_I_RATED_MIN BIT(hwmon_in_rated_min) 152 + #define HWMON_I_RATED_MAX BIT(hwmon_in_rated_max) 157 153 158 154 enum hwmon_curr_attributes { 159 155 hwmon_curr_enable, ··· 174 166 hwmon_curr_max_alarm, 175 167 hwmon_curr_lcrit_alarm, 176 168 hwmon_curr_crit_alarm, 169 + hwmon_curr_rated_min, 170 + hwmon_curr_rated_max, 177 171 }; 178 172 179 173 #define HWMON_C_ENABLE BIT(hwmon_curr_enable) ··· 194 184 #define HWMON_C_MAX_ALARM BIT(hwmon_curr_max_alarm) 195 185 #define HWMON_C_LCRIT_ALARM BIT(hwmon_curr_lcrit_alarm) 196 186 #define HWMON_C_CRIT_ALARM BIT(hwmon_curr_crit_alarm) 187 + #define HWMON_C_RATED_MIN BIT(hwmon_curr_rated_min) 188 + #define HWMON_C_RATED_MAX BIT(hwmon_curr_rated_max) 197 189 198 190 enum hwmon_power_attributes { 199 191 hwmon_power_enable, ··· 227 215 hwmon_power_max_alarm, 228 216 hwmon_power_lcrit_alarm, 229 217 hwmon_power_crit_alarm, 218 + hwmon_power_rated_min, 219 + hwmon_power_rated_max, 230 220 }; 231 221 232 222 #define HWMON_P_ENABLE BIT(hwmon_power_enable) ··· 260 246 #define HWMON_P_MAX_ALARM BIT(hwmon_power_max_alarm) 261 247 #define HWMON_P_LCRIT_ALARM BIT(hwmon_power_lcrit_alarm) 262 248 #define HWMON_P_CRIT_ALARM BIT(hwmon_power_crit_alarm) 249 + #define HWMON_P_RATED_MIN BIT(hwmon_power_rated_min) 250 + #define HWMON_P_RATED_MAX BIT(hwmon_power_rated_max) 263 251 264 252 enum hwmon_energy_attributes { 265 253 hwmon_energy_enable, ··· 283 267 hwmon_humidity_max_hyst, 284 268 hwmon_humidity_alarm, 285 269 hwmon_humidity_fault, 270 + hwmon_humidity_rated_min, 271 + hwmon_humidity_rated_max, 286 272 }; 287 273 288 274 #define HWMON_H_ENABLE BIT(hwmon_humidity_enable) ··· 296 278 #define HWMON_H_MAX_HYST BIT(hwmon_humidity_max_hyst) 297 279 #define HWMON_H_ALARM BIT(hwmon_humidity_alarm) 298 280 #define HWMON_H_FAULT BIT(hwmon_humidity_fault) 281 + #define HWMON_H_RATED_MIN BIT(hwmon_humidity_rated_min) 282 + #define HWMON_H_RATED_MAX BIT(hwmon_humidity_rated_max) 299 283 300 284 enum hwmon_fan_attributes { 301 285 hwmon_fan_enable,