hwmon: (pmbus/core) Add support for rated attributes

Adding implementation for new attributes (rated_min/rated_max) to
cover PMBus specification about rated values reporting:
MFR_VIN_MIN, MFR_VIN_MAX, MFR_IIN_MAX, MFR_PIN_MAX, MFR_VOUT_MIN,
MFR_VOUT_MAX, MFR_IOUT_MAX, MFR_POUT_MAX, MFR_MAX_TEMP_1/2/3.

Tested with OpenBMC stack. All rated attributes were available
and reported correct values.

Signed-off-by: Zbigniew Lukwinski <zbigniew.lukwinski@linux.intel.com>
Link: https://lore.kernel.org/r/1596224237-32280-4-git-send-email-zbigniew.lukwinski@linux.intel.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Zbigniew Lukwinski 2020-07-31 21:37:17 +02:00 committed by Guenter Roeck
parent 1967f71267
commit 787c095eda
3 changed files with 68 additions and 9 deletions

View file

@ -211,6 +211,10 @@ inX_lcrit_alarm Voltage critical low alarm.
inX_crit_alarm Voltage critical high alarm.
From VOLTAGE_OV_FAULT status.
inX_label "vin", "vcap", or "voutY"
inX_rated_min Minimum rated voltage.
From MFR_VIN_MIN or MFR_VOUT_MIN register.
inX_rated_max Maximum rated voltage.
From MFR_VIN_MAX or MFR_VOUT_MAX register.
currX_input Measured current. From READ_IIN or READ_IOUT register.
currX_max Maximum current.
@ -230,6 +234,8 @@ currX_crit_alarm Current critical high alarm.
currX_label "iin", "iinY", "iinY.Z", "ioutY", or "ioutY.Z",
where Y reflects the page number and Z reflects the
phase.
currX_rated_max Maximum rated current.
From MFR_IIN_MAX or MFR_IOUT_MAX register.
powerX_input Measured power. From READ_PIN or READ_POUT register.
powerX_cap Output power cap. From POUT_MAX register.
@ -244,10 +250,12 @@ powerX_crit_alarm Output power critical high alarm.
powerX_label "pin", "pinY", "pinY.Z", "poutY", or "poutY.Z",
where Y reflects the page number and Z reflects the
phase.
powerX_rated_max Maximum rated power.
From MFR_PIN_MAX or MFR_POUT_MAX register.
tempX_input Measured temperature.
From READ_TEMPERATURE_X register.
tempX_min Mimimum temperature. From UT_WARN_LIMIT register.
tempX_min Minimum temperature. From UT_WARN_LIMIT register.
tempX_max Maximum temperature. From OT_WARN_LIMIT register.
tempX_lcrit Critical low temperature.
From UT_FAULT_LIMIT register.
@ -265,4 +273,9 @@ tempX_lcrit_alarm Chip temperature critical low alarm. Set by comparing
tempX_crit_alarm Chip temperature critical high alarm. Set by comparing
READ_TEMPERATURE_X with OT_FAULT_LIMIT if
TEMP_OT_FAULT status is set.
tempX_rated_min Minimum rated temperature.
From MFR_TAMBIENT_MIN register.
tempX_rated_max Maximum rated temperature.
From MFR_TAMBIENT_MAX, MFR_MAX_TEMP_1, MFR_MAX_TEMP_2 or
MFR_MAX_TEMP_3 register.
======================= ========================================================

View file

@ -119,9 +119,22 @@ enum pmbus_regs {
PMBUS_MFR_DATE = 0x9D,
PMBUS_MFR_SERIAL = 0x9E,
PMBUS_MFR_VIN_MIN = 0xA0,
PMBUS_MFR_VIN_MAX = 0xA1,
PMBUS_MFR_IIN_MAX = 0xA2,
PMBUS_MFR_PIN_MAX = 0xA3,
PMBUS_MFR_VOUT_MIN = 0xA4,
PMBUS_MFR_VOUT_MAX = 0xA5,
PMBUS_MFR_IOUT_MAX = 0xA6,
PMBUS_MFR_POUT_MAX = 0xA7,
PMBUS_IC_DEVICE_ID = 0xAD,
PMBUS_IC_DEVICE_REV = 0xAE,
PMBUS_MFR_MAX_TEMP_1 = 0xC0,
PMBUS_MFR_MAX_TEMP_2 = 0xC1,
PMBUS_MFR_MAX_TEMP_3 = 0xC2,
/*
* Virtual registers.
* Useful to support attributes which are not supported by standard PMBus

View file

@ -1404,6 +1404,12 @@ static const struct pmbus_limit_attr vin_limit_attrs[] = {
}, {
.reg = PMBUS_VIRT_RESET_VIN_HISTORY,
.attr = "reset_history",
}, {
.reg = PMBUS_MFR_VIN_MIN,
.attr = "rated_min",
}, {
.reg = PMBUS_MFR_VIN_MAX,
.attr = "rated_max",
},
};
@ -1467,7 +1473,13 @@ static const struct pmbus_limit_attr vout_limit_attrs[] = {
}, {
.reg = PMBUS_VIRT_RESET_VOUT_HISTORY,
.attr = "reset_history",
}
}, {
.reg = PMBUS_MFR_VOUT_MIN,
.attr = "rated_min",
}, {
.reg = PMBUS_MFR_VOUT_MAX,
.attr = "rated_max",
},
};
static const struct pmbus_sensor_attr voltage_attributes[] = {
@ -1537,7 +1549,10 @@ static const struct pmbus_limit_attr iin_limit_attrs[] = {
}, {
.reg = PMBUS_VIRT_RESET_IIN_HISTORY,
.attr = "reset_history",
}
}, {
.reg = PMBUS_MFR_IIN_MAX,
.attr = "rated_max",
},
};
static const struct pmbus_limit_attr iout_limit_attrs[] = {
@ -1571,7 +1586,10 @@ static const struct pmbus_limit_attr iout_limit_attrs[] = {
}, {
.reg = PMBUS_VIRT_RESET_IOUT_HISTORY,
.attr = "reset_history",
}
}, {
.reg = PMBUS_MFR_IOUT_MAX,
.attr = "rated_max",
},
};
static const struct pmbus_sensor_attr current_attributes[] = {
@ -1622,7 +1640,10 @@ static const struct pmbus_limit_attr pin_limit_attrs[] = {
}, {
.reg = PMBUS_VIRT_RESET_PIN_HISTORY,
.attr = "reset_history",
}
}, {
.reg = PMBUS_MFR_PIN_MAX,
.attr = "rated_max",
},
};
static const struct pmbus_limit_attr pout_limit_attrs[] = {
@ -1656,7 +1677,10 @@ static const struct pmbus_limit_attr pout_limit_attrs[] = {
}, {
.reg = PMBUS_VIRT_RESET_POUT_HISTORY,
.attr = "reset_history",
}
}, {
.reg = PMBUS_MFR_POUT_MAX,
.attr = "rated_max",
},
};
static const struct pmbus_sensor_attr power_attributes[] = {
@ -1720,7 +1744,10 @@ static const struct pmbus_limit_attr temp_limit_attrs[] = {
}, {
.reg = PMBUS_VIRT_RESET_TEMP_HISTORY,
.attr = "reset_history",
}
}, {
.reg = PMBUS_MFR_MAX_TEMP_1,
.attr = "rated_max",
},
};
static const struct pmbus_limit_attr temp_limit_attrs2[] = {
@ -1758,7 +1785,10 @@ static const struct pmbus_limit_attr temp_limit_attrs2[] = {
}, {
.reg = PMBUS_VIRT_RESET_TEMP2_HISTORY,
.attr = "reset_history",
}
}, {
.reg = PMBUS_MFR_MAX_TEMP_2,
.attr = "rated_max",
},
};
static const struct pmbus_limit_attr temp_limit_attrs3[] = {
@ -1784,7 +1814,10 @@ static const struct pmbus_limit_attr temp_limit_attrs3[] = {
.attr = "crit",
.alarm = "crit_alarm",
.sbit = PB_TEMP_OT_FAULT,
}
}, {
.reg = PMBUS_MFR_MAX_TEMP_3,
.attr = "rated_max",
},
};
static const struct pmbus_sensor_attr temp_attributes[] = {