mlxsw: core_thermal: Simplify transceiver module get_temp() callback
authorIdo Schimmel <idosch@nvidia.com>
Fri, 31 Mar 2023 14:17:32 +0000 (16:17 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 2 Apr 2023 12:42:30 +0000 (13:42 +0100)
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: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Vadim Pasternak <vadimp@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/core_thermal.c

index f0c5a2c..deac4bc 100644 (file)
@@ -283,50 +283,22 @@ static int mlxsw_thermal_module_unbind(struct thermal_zone_device *tzdev,
        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,
                                         int *p_temp)
 {
        struct mlxsw_thermal_module *tz = tzdev->devdata;
        struct mlxsw_thermal *thermal = tz->parent;
-       int temp, crit_temp, emerg_temp;
+       char mtmp_pl[MLXSW_REG_MTMP_LEN];
        u16 sensor_index;
+       int err;
 
        sensor_index = MLXSW_REG_MTMP_MODULE_INDEX_MIN + tz->module;
-
-       /* Read module temperature and thresholds. */
-       mlxsw_thermal_module_temp_and_thresholds_get(thermal->core,
-                                                    tz->slot_index,
-                                                    sensor_index, &temp,
-                                                    &crit_temp, &emerg_temp);
-       *p_temp = temp;
-
+       mlxsw_reg_mtmp_pack(mtmp_pl, tz->slot_index, sensor_index,
+                           false, false);
+       err = mlxsw_reg_query(thermal->core, MLXSW_REG(mtmp), mtmp_pl);
+       if (err)
+               return err;
+       mlxsw_reg_mtmp_unpack(mtmp_pl, p_temp, NULL, NULL, NULL, NULL);
        return 0;
 }