Commit 787c095e authored by Zbigniew Lukwinski's avatar Zbigniew Lukwinski Committed by Guenter Roeck
Browse files

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: default avatarZbigniew 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: default avatarGuenter Roeck <linux@roeck-us.net>
parent 1967f712
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -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.
======================= ========================================================
+13 −0
Original line number Diff line number Diff line
@@ -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
+41 −8
Original line number Diff line number Diff line
@@ -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[] = {