Commit cc19439f authored by Ido Schimmel's avatar Ido Schimmel Committed by David S. Miller

mlxsw: core_thermal: Simplify transceiver module get_temp() callback

The get_temp() callback of a thermal zone associated with a transceiver
module no longer needs to read the temperature thresholds of the module.
Therefore, simplify the callback by only reading the temperature.
Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
Reviewed-by: default avatarVadim Pasternak <vadimp@nvidia.com>
Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c1536d85
...@@ -283,50 +283,22 @@ static int mlxsw_thermal_module_unbind(struct thermal_zone_device *tzdev, ...@@ -283,50 +283,22 @@ static int mlxsw_thermal_module_unbind(struct thermal_zone_device *tzdev,
return err; return err;
} }
static void
mlxsw_thermal_module_temp_and_thresholds_get(struct mlxsw_core *core,
u8 slot_index, u16 sensor_index,
int *p_temp, int *p_crit_temp,
int *p_emerg_temp)
{
char mtmp_pl[MLXSW_REG_MTMP_LEN];
int err;
/* Read module temperature and thresholds. */
mlxsw_reg_mtmp_pack(mtmp_pl, slot_index, sensor_index,
false, false);
err = mlxsw_reg_query(core, MLXSW_REG(mtmp), mtmp_pl);
if (err) {
/* Set temperature and thresholds to zero to avoid passing
* uninitialized data back to the caller.
*/
*p_temp = 0;
*p_crit_temp = 0;
*p_emerg_temp = 0;
return;
}
mlxsw_reg_mtmp_unpack(mtmp_pl, p_temp, NULL, p_crit_temp, p_emerg_temp,
NULL);
}
static int mlxsw_thermal_module_temp_get(struct thermal_zone_device *tzdev, static int mlxsw_thermal_module_temp_get(struct thermal_zone_device *tzdev,
int *p_temp) int *p_temp)
{ {
struct mlxsw_thermal_module *tz = tzdev->devdata; struct mlxsw_thermal_module *tz = tzdev->devdata;
struct mlxsw_thermal *thermal = tz->parent; struct mlxsw_thermal *thermal = tz->parent;
int temp, crit_temp, emerg_temp; char mtmp_pl[MLXSW_REG_MTMP_LEN];
u16 sensor_index; u16 sensor_index;
int err;
sensor_index = MLXSW_REG_MTMP_MODULE_INDEX_MIN + tz->module; sensor_index = MLXSW_REG_MTMP_MODULE_INDEX_MIN + tz->module;
mlxsw_reg_mtmp_pack(mtmp_pl, tz->slot_index, sensor_index,
/* Read module temperature and thresholds. */ false, false);
mlxsw_thermal_module_temp_and_thresholds_get(thermal->core, err = mlxsw_reg_query(thermal->core, MLXSW_REG(mtmp), mtmp_pl);
tz->slot_index, if (err)
sensor_index, &temp, return err;
&crit_temp, &emerg_temp); mlxsw_reg_mtmp_unpack(mtmp_pl, p_temp, NULL, NULL, NULL, NULL);
*p_temp = temp;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment