linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] thermal/drivers/iwlwifi: Use generic thermal_zone_get_trip() function
@ 2022-10-14  7:32 Daniel Lezcano
  2022-10-14  7:32 ` [PATCH 2/2] thermal/drivers/mellanox: " Daniel Lezcano
  2022-10-14 10:15 ` [PATCH 1/2] thermal/drivers/iwlwifi: " Kalle Valo
  0 siblings, 2 replies; 11+ messages in thread
From: Daniel Lezcano @ 2022-10-14  7:32 UTC (permalink / raw)
  To: rafael, daniel.lezcano
  Cc: linux-pm, linux-kernel, Gregory Greenman, Kalle Valo,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Luca Coelho, Johannes Berg, Emmanuel Grumbach, Miri Korenblit,
	Nathan Errera, open list:INTEL WIRELESS WIFI LINK (iwlwifi),
	open list:NETWORKING DRIVERS

The thermal framework gives the possibility to register the trip
points with the thermal zone. When that is done, no get_trip_* ops are
needed and they can be removed.

The get_trip_temp, get_trip_hyst and get_trip_type are handled by the
get_trip_point().

The set_trip_temp() generic function does some checks which are no
longer needed in the set_trip_point() ops.

Convert ops content logic into generic trip points and register them
with the thermal zone.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h |  2 +-
 drivers/net/wireless/intel/iwlwifi/mvm/tt.c  | 71 ++++----------------
 2 files changed, 13 insertions(+), 60 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
index bf35e130c876..38e7426f98c0 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
@@ -501,7 +501,7 @@ struct iwl_mvm_tt_mgmt {
  * @tzone: thermal zone device data
 */
 struct iwl_mvm_thermal_device {
-	s16 temp_trips[IWL_MAX_DTS_TRIPS];
+	struct thermal_trip trips[IWL_MAX_DTS_TRIPS];
 	u8 fw_trips_index[IWL_MAX_DTS_TRIPS];
 	struct thermal_zone_device *tzone;
 };
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c
index 69cf3a372759..3da4af7bc1ca 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c
@@ -573,11 +573,11 @@ int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm)
 	 * and uncompressed, the FW should get it compressed and sorted
 	 */
 
-	/* compress temp_trips to cmd array, remove uninitialized values*/
+	/* compress trips to cmd array, remove uninitialized values*/
 	for (i = 0; i < IWL_MAX_DTS_TRIPS; i++) {
-		if (mvm->tz_device.temp_trips[i] != S16_MIN) {
+		if (mvm->tz_device.trips[i].temperature != INT_MIN) {
 			cmd.thresholds[idx++] =
-				cpu_to_le16(mvm->tz_device.temp_trips[i]);
+				cpu_to_le16((s16)(mvm->tz_device.trips[i].temperature / 1000));
 		}
 	}
 	cmd.num_temps = cpu_to_le32(idx);
@@ -593,8 +593,8 @@ int iwl_mvm_send_temp_report_ths_cmd(struct iwl_mvm *mvm)
 	 */
 	for (i = 0; i < idx; i++) {
 		for (j = 0; j < IWL_MAX_DTS_TRIPS; j++) {
-			if (le16_to_cpu(cmd.thresholds[i]) ==
-				mvm->tz_device.temp_trips[j])
+			if ((int)(le16_to_cpu(cmd.thresholds[i]) * 1000) ==
+			    mvm->tz_device.trips[j].temperature)
 				mvm->tz_device.fw_trips_index[i] = j;
 		}
 	}
@@ -638,37 +638,12 @@ static int iwl_mvm_tzone_get_temp(struct thermal_zone_device *device,
 	return ret;
 }
 
-static int iwl_mvm_tzone_get_trip_temp(struct thermal_zone_device *device,
-				       int trip, int *temp)
-{
-	struct iwl_mvm *mvm = (struct iwl_mvm *)device->devdata;
-
-	if (trip < 0 || trip >= IWL_MAX_DTS_TRIPS)
-		return -EINVAL;
-
-	*temp = mvm->tz_device.temp_trips[trip] * 1000;
-
-	return 0;
-}
-
-static int iwl_mvm_tzone_get_trip_type(struct thermal_zone_device *device,
-				       int trip, enum thermal_trip_type *type)
-{
-	if (trip < 0 || trip >= IWL_MAX_DTS_TRIPS)
-		return -EINVAL;
-
-	*type = THERMAL_TRIP_PASSIVE;
-
-	return 0;
-}
-
 static int iwl_mvm_tzone_set_trip_temp(struct thermal_zone_device *device,
 				       int trip, int temp)
 {
 	struct iwl_mvm *mvm = (struct iwl_mvm *)device->devdata;
 	struct iwl_mvm_thermal_device *tzone;
-	int i, ret;
-	s16 temperature;
+	int ret;
 
 	mutex_lock(&mvm->mutex);
 
@@ -678,40 +653,17 @@ static int iwl_mvm_tzone_set_trip_temp(struct thermal_zone_device *device,
 		goto out;
 	}
 
-	if (trip < 0 || trip >= IWL_MAX_DTS_TRIPS) {
-		ret = -EINVAL;
-		goto out;
-	}
-
 	if ((temp / 1000) > S16_MAX) {
 		ret = -EINVAL;
 		goto out;
 	}
 
-	temperature = (s16)(temp / 1000);
 	tzone = &mvm->tz_device;
-
 	if (!tzone) {
 		ret = -EIO;
 		goto out;
 	}
 
-	/* no updates*/
-	if (tzone->temp_trips[trip] == temperature) {
-		ret = 0;
-		goto out;
-	}
-
-	/* already existing temperature */
-	for (i = 0; i < IWL_MAX_DTS_TRIPS; i++) {
-		if (tzone->temp_trips[i] == temperature) {
-			ret = -EINVAL;
-			goto out;
-		}
-	}
-
-	tzone->temp_trips[trip] = temperature;
-
 	ret = iwl_mvm_send_temp_report_ths_cmd(mvm);
 out:
 	mutex_unlock(&mvm->mutex);
@@ -720,8 +672,6 @@ static int iwl_mvm_tzone_set_trip_temp(struct thermal_zone_device *device,
 
 static  struct thermal_zone_device_ops tzone_ops = {
 	.get_temp = iwl_mvm_tzone_get_temp,
-	.get_trip_temp = iwl_mvm_tzone_get_trip_temp,
-	.get_trip_type = iwl_mvm_tzone_get_trip_type,
 	.set_trip_temp = iwl_mvm_tzone_set_trip_temp,
 };
 
@@ -743,7 +693,8 @@ static void iwl_mvm_thermal_zone_register(struct iwl_mvm *mvm)
 	BUILD_BUG_ON(ARRAY_SIZE(name) >= THERMAL_NAME_LENGTH);
 
 	sprintf(name, "iwlwifi_%u", atomic_inc_return(&counter) & 0xFF);
-	mvm->tz_device.tzone = thermal_zone_device_register(name,
+	mvm->tz_device.tzone = thermal_zone_device_register_with_trips(name,
+							mvm->tz_device.trips,    
 							IWL_MAX_DTS_TRIPS,
 							IWL_WRITABLE_TRIPS_MSK,
 							mvm, &tzone_ops,
@@ -766,8 +717,10 @@ static void iwl_mvm_thermal_zone_register(struct iwl_mvm *mvm)
 	/* 0 is a valid temperature,
 	 * so initialize the array with S16_MIN which invalid temperature
 	 */
-	for (i = 0 ; i < IWL_MAX_DTS_TRIPS; i++)
-		mvm->tz_device.temp_trips[i] = S16_MIN;
+	for (i = 0 ; i < IWL_MAX_DTS_TRIPS; i++) {
+		mvm->tz_device.trips[i].temperature = INT_MIN;
+		mvm->tz_device.trips[i].type = THERMAL_TRIP_PASSIVE;
+	}
 }
 
 static int iwl_mvm_tcool_get_max_state(struct thermal_cooling_device *cdev,
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/2] thermal/drivers/mellanox: Use generic thermal_zone_get_trip() function
  2022-10-14  7:32 [PATCH 1/2] thermal/drivers/iwlwifi: Use generic thermal_zone_get_trip() function Daniel Lezcano
@ 2022-10-14  7:32 ` Daniel Lezcano
  2022-10-18  6:28   ` Ido Schimmel
  2022-10-14 10:15 ` [PATCH 1/2] thermal/drivers/iwlwifi: " Kalle Valo
  1 sibling, 1 reply; 11+ messages in thread
From: Daniel Lezcano @ 2022-10-14  7:32 UTC (permalink / raw)
  To: rafael, daniel.lezcano
  Cc: linux-pm, linux-kernel, Ido Schimmel, Petr Machata,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	open list:MELLANOX ETHERNET SWITCH DRIVERS

The thermal framework gives the possibility to register the trip
points with the thermal zone. When that is done, no get_trip_* ops are
needed and they can be removed.

Convert ops content logic into generic trip points and register them with the
thermal zone.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
 .../ethernet/mellanox/mlxsw/core_thermal.c    | 209 ++++--------------
 1 file changed, 48 insertions(+), 161 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c
index 987fe5c9d5a3..c5240d38c9db 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c
@@ -36,33 +36,39 @@ enum mlxsw_thermal_trips {
 	MLXSW_THERMAL_TEMP_TRIP_HOT,
 };
 
-struct mlxsw_thermal_trip {
-	int	type;
-	int	temp;
-	int	hyst;
+struct mlxsw_cooling_states {
 	int	min_state;
 	int	max_state;
 };
 
-static const struct mlxsw_thermal_trip default_thermal_trips[] = {
+static const struct thermal_trip default_thermal_trips[] = {
 	{	/* In range - 0-40% PWM */
 		.type		= THERMAL_TRIP_ACTIVE,
-		.temp		= MLXSW_THERMAL_ASIC_TEMP_NORM,
-		.hyst		= MLXSW_THERMAL_HYSTERESIS_TEMP,
-		.min_state	= 0,
-		.max_state	= (4 * MLXSW_THERMAL_MAX_STATE) / 10,
+		.temperature	= MLXSW_THERMAL_ASIC_TEMP_NORM,
+		.hysteresis	= MLXSW_THERMAL_HYSTERESIS_TEMP,
 	},
 	{
 		/* In range - 40-100% PWM */
 		.type		= THERMAL_TRIP_ACTIVE,
-		.temp		= MLXSW_THERMAL_ASIC_TEMP_HIGH,
-		.hyst		= MLXSW_THERMAL_HYSTERESIS_TEMP,
-		.min_state	= (4 * MLXSW_THERMAL_MAX_STATE) / 10,
-		.max_state	= MLXSW_THERMAL_MAX_STATE,
+		.temperature	= MLXSW_THERMAL_ASIC_TEMP_HIGH,
+		.hysteresis	= MLXSW_THERMAL_HYSTERESIS_TEMP,
 	},
 	{	/* Warning */
 		.type		= THERMAL_TRIP_HOT,
-		.temp		= MLXSW_THERMAL_ASIC_TEMP_HOT,
+		.temperature	= MLXSW_THERMAL_ASIC_TEMP_HOT,
+	},
+};
+
+static const struct mlxsw_cooling_states default_cooling_states[] = {
+	{
+		.min_state	= 0,
+		.max_state	= (4 * MLXSW_THERMAL_MAX_STATE) / 10,
+	},
+	{
+		.min_state	= (4 * MLXSW_THERMAL_MAX_STATE) / 10,
+		.max_state	= MLXSW_THERMAL_MAX_STATE,
+	},
+	{
 		.min_state	= MLXSW_THERMAL_MAX_STATE,
 		.max_state	= MLXSW_THERMAL_MAX_STATE,
 	},
@@ -78,7 +84,8 @@ struct mlxsw_thermal;
 struct mlxsw_thermal_module {
 	struct mlxsw_thermal *parent;
 	struct thermal_zone_device *tzdev;
-	struct mlxsw_thermal_trip trips[MLXSW_THERMAL_NUM_TRIPS];
+	struct thermal_trip trips[MLXSW_THERMAL_NUM_TRIPS];
+	struct mlxsw_cooling_states cooling_states[MLXSW_THERMAL_NUM_TRIPS];
 	int module; /* Module or gearbox number */
 	u8 slot_index;
 };
@@ -99,7 +106,8 @@ struct mlxsw_thermal {
 	int polling_delay;
 	struct thermal_cooling_device *cdevs[MLXSW_MFCR_PWMS_MAX];
 	u8 cooling_levels[MLXSW_THERMAL_MAX_STATE + 1];
-	struct mlxsw_thermal_trip trips[MLXSW_THERMAL_NUM_TRIPS];
+	struct thermal_trip trips[MLXSW_THERMAL_NUM_TRIPS];
+	struct mlxsw_cooling_states cooling_states[MLXSW_THERMAL_NUM_TRIPS];
 	struct mlxsw_thermal_area line_cards[];
 };
 
@@ -136,9 +144,9 @@ static int mlxsw_get_cooling_device_idx(struct mlxsw_thermal *thermal,
 static void
 mlxsw_thermal_module_trips_reset(struct mlxsw_thermal_module *tz)
 {
-	tz->trips[MLXSW_THERMAL_TEMP_TRIP_NORM].temp = 0;
-	tz->trips[MLXSW_THERMAL_TEMP_TRIP_HIGH].temp = 0;
-	tz->trips[MLXSW_THERMAL_TEMP_TRIP_HOT].temp = 0;
+	tz->trips[MLXSW_THERMAL_TEMP_TRIP_NORM].temperature = 0;
+	tz->trips[MLXSW_THERMAL_TEMP_TRIP_HIGH].temperature = 0;
+	tz->trips[MLXSW_THERMAL_TEMP_TRIP_HOT].temperature = 0;
 }
 
 static int
@@ -180,12 +188,12 @@ mlxsw_thermal_module_trips_update(struct device *dev, struct mlxsw_core *core,
 	 * by subtracting double hysteresis value.
 	 */
 	if (crit_temp >= MLXSW_THERMAL_MODULE_TEMP_SHIFT)
-		tz->trips[MLXSW_THERMAL_TEMP_TRIP_NORM].temp = crit_temp -
+		tz->trips[MLXSW_THERMAL_TEMP_TRIP_NORM].temperature = crit_temp -
 					MLXSW_THERMAL_MODULE_TEMP_SHIFT;
 	else
-		tz->trips[MLXSW_THERMAL_TEMP_TRIP_NORM].temp = crit_temp;
-	tz->trips[MLXSW_THERMAL_TEMP_TRIP_HIGH].temp = crit_temp;
-	tz->trips[MLXSW_THERMAL_TEMP_TRIP_HOT].temp = emerg_temp;
+		tz->trips[MLXSW_THERMAL_TEMP_TRIP_NORM].temperature = crit_temp;
+	tz->trips[MLXSW_THERMAL_TEMP_TRIP_HIGH].temperature = crit_temp;
+	tz->trips[MLXSW_THERMAL_TEMP_TRIP_HOT].temperature = emerg_temp;
 
 	return 0;
 }
@@ -202,11 +210,11 @@ static int mlxsw_thermal_bind(struct thermal_zone_device *tzdev,
 		return 0;
 
 	for (i = 0; i < MLXSW_THERMAL_NUM_TRIPS; i++) {
-		const struct mlxsw_thermal_trip *trip = &thermal->trips[i];
+		const struct mlxsw_cooling_states *state = &thermal->cooling_states[i];
 
 		err = thermal_zone_bind_cooling_device(tzdev, i, cdev,
-						       trip->max_state,
-						       trip->min_state,
+						       state->max_state,
+						       state->min_state,
 						       THERMAL_WEIGHT_DEFAULT);
 		if (err < 0) {
 			dev_err(dev, "Failed to bind cooling device to trip %d\n", i);
@@ -260,61 +268,6 @@ static int mlxsw_thermal_get_temp(struct thermal_zone_device *tzdev,
 	return 0;
 }
 
-static int mlxsw_thermal_get_trip_type(struct thermal_zone_device *tzdev,
-				       int trip,
-				       enum thermal_trip_type *p_type)
-{
-	struct mlxsw_thermal *thermal = tzdev->devdata;
-
-	if (trip < 0 || trip >= MLXSW_THERMAL_NUM_TRIPS)
-		return -EINVAL;
-
-	*p_type = thermal->trips[trip].type;
-	return 0;
-}
-
-static int mlxsw_thermal_get_trip_temp(struct thermal_zone_device *tzdev,
-				       int trip, int *p_temp)
-{
-	struct mlxsw_thermal *thermal = tzdev->devdata;
-
-	if (trip < 0 || trip >= MLXSW_THERMAL_NUM_TRIPS)
-		return -EINVAL;
-
-	*p_temp = thermal->trips[trip].temp;
-	return 0;
-}
-
-static int mlxsw_thermal_set_trip_temp(struct thermal_zone_device *tzdev,
-				       int trip, int temp)
-{
-	struct mlxsw_thermal *thermal = tzdev->devdata;
-
-	if (trip < 0 || trip >= MLXSW_THERMAL_NUM_TRIPS)
-		return -EINVAL;
-
-	thermal->trips[trip].temp = temp;
-	return 0;
-}
-
-static int mlxsw_thermal_get_trip_hyst(struct thermal_zone_device *tzdev,
-				       int trip, int *p_hyst)
-{
-	struct mlxsw_thermal *thermal = tzdev->devdata;
-
-	*p_hyst = thermal->trips[trip].hyst;
-	return 0;
-}
-
-static int mlxsw_thermal_set_trip_hyst(struct thermal_zone_device *tzdev,
-				       int trip, int hyst)
-{
-	struct mlxsw_thermal *thermal = tzdev->devdata;
-
-	thermal->trips[trip].hyst = hyst;
-	return 0;
-}
-
 static struct thermal_zone_params mlxsw_thermal_params = {
 	.no_hwmon = true,
 };
@@ -323,11 +276,6 @@ static struct thermal_zone_device_ops mlxsw_thermal_ops = {
 	.bind = mlxsw_thermal_bind,
 	.unbind = mlxsw_thermal_unbind,
 	.get_temp = mlxsw_thermal_get_temp,
-	.get_trip_type	= mlxsw_thermal_get_trip_type,
-	.get_trip_temp	= mlxsw_thermal_get_trip_temp,
-	.set_trip_temp	= mlxsw_thermal_set_trip_temp,
-	.get_trip_hyst	= mlxsw_thermal_get_trip_hyst,
-	.set_trip_hyst	= mlxsw_thermal_set_trip_hyst,
 };
 
 static int mlxsw_thermal_module_bind(struct thermal_zone_device *tzdev,
@@ -342,11 +290,11 @@ static int mlxsw_thermal_module_bind(struct thermal_zone_device *tzdev,
 		return 0;
 
 	for (i = 0; i < MLXSW_THERMAL_NUM_TRIPS; i++) {
-		const struct mlxsw_thermal_trip *trip = &tz->trips[i];
+		const struct mlxsw_cooling_states *state = &tz->cooling_states[i];
 
 		err = thermal_zone_bind_cooling_device(tzdev, i, cdev,
-						       trip->max_state,
-						       trip->min_state,
+						       state->max_state,
+						       state->min_state,
 						       THERMAL_WEIGHT_DEFAULT);
 		if (err < 0)
 			goto err_thermal_zone_bind_cooling_device;
@@ -434,74 +382,10 @@ static int mlxsw_thermal_module_temp_get(struct thermal_zone_device *tzdev,
 	return 0;
 }
 
-static int
-mlxsw_thermal_module_trip_type_get(struct thermal_zone_device *tzdev, int trip,
-				   enum thermal_trip_type *p_type)
-{
-	struct mlxsw_thermal_module *tz = tzdev->devdata;
-
-	if (trip < 0 || trip >= MLXSW_THERMAL_NUM_TRIPS)
-		return -EINVAL;
-
-	*p_type = tz->trips[trip].type;
-	return 0;
-}
-
-static int
-mlxsw_thermal_module_trip_temp_get(struct thermal_zone_device *tzdev,
-				   int trip, int *p_temp)
-{
-	struct mlxsw_thermal_module *tz = tzdev->devdata;
-
-	if (trip < 0 || trip >= MLXSW_THERMAL_NUM_TRIPS)
-		return -EINVAL;
-
-	*p_temp = tz->trips[trip].temp;
-	return 0;
-}
-
-static int
-mlxsw_thermal_module_trip_temp_set(struct thermal_zone_device *tzdev,
-				   int trip, int temp)
-{
-	struct mlxsw_thermal_module *tz = tzdev->devdata;
-
-	if (trip < 0 || trip >= MLXSW_THERMAL_NUM_TRIPS)
-		return -EINVAL;
-
-	tz->trips[trip].temp = temp;
-	return 0;
-}
-
-static int
-mlxsw_thermal_module_trip_hyst_get(struct thermal_zone_device *tzdev, int trip,
-				   int *p_hyst)
-{
-	struct mlxsw_thermal_module *tz = tzdev->devdata;
-
-	*p_hyst = tz->trips[trip].hyst;
-	return 0;
-}
-
-static int
-mlxsw_thermal_module_trip_hyst_set(struct thermal_zone_device *tzdev, int trip,
-				   int hyst)
-{
-	struct mlxsw_thermal_module *tz = tzdev->devdata;
-
-	tz->trips[trip].hyst = hyst;
-	return 0;
-}
-
 static struct thermal_zone_device_ops mlxsw_thermal_module_ops = {
 	.bind		= mlxsw_thermal_module_bind,
 	.unbind		= mlxsw_thermal_module_unbind,
 	.get_temp	= mlxsw_thermal_module_temp_get,
-	.get_trip_type	= mlxsw_thermal_module_trip_type_get,
-	.get_trip_temp	= mlxsw_thermal_module_trip_temp_get,
-	.set_trip_temp	= mlxsw_thermal_module_trip_temp_set,
-	.get_trip_hyst	= mlxsw_thermal_module_trip_hyst_get,
-	.set_trip_hyst	= mlxsw_thermal_module_trip_hyst_set,
 };
 
 static int mlxsw_thermal_gearbox_temp_get(struct thermal_zone_device *tzdev,
@@ -531,11 +415,6 @@ static struct thermal_zone_device_ops mlxsw_thermal_gearbox_ops = {
 	.bind		= mlxsw_thermal_module_bind,
 	.unbind		= mlxsw_thermal_module_unbind,
 	.get_temp	= mlxsw_thermal_gearbox_temp_get,
-	.get_trip_type	= mlxsw_thermal_module_trip_type_get,
-	.get_trip_temp	= mlxsw_thermal_module_trip_temp_get,
-	.set_trip_temp	= mlxsw_thermal_module_trip_temp_set,
-	.get_trip_hyst	= mlxsw_thermal_module_trip_hyst_get,
-	.set_trip_hyst	= mlxsw_thermal_module_trip_hyst_set,
 };
 
 static int mlxsw_thermal_get_max_state(struct thermal_cooling_device *cdev,
@@ -617,7 +496,8 @@ mlxsw_thermal_module_tz_init(struct mlxsw_thermal_module *module_tz)
 	else
 		snprintf(tz_name, sizeof(tz_name), "mlxsw-module%d",
 			 module_tz->module + 1);
-	module_tz->tzdev = thermal_zone_device_register(tz_name,
+	module_tz->tzdev = thermal_zone_device_register_with_trips(tz_name,
+							module_tz->trips,
 							MLXSW_THERMAL_NUM_TRIPS,
 							MLXSW_THERMAL_TRIP_MASK,
 							module_tz,
@@ -661,6 +541,8 @@ mlxsw_thermal_module_init(struct device *dev, struct mlxsw_core *core,
 	module_tz->parent = thermal;
 	memcpy(module_tz->trips, default_thermal_trips,
 	       sizeof(thermal->trips));
+	memcpy(module_tz->cooling_states, default_cooling_states,
+	       sizeof(thermal->cooling_states));
 	/* Initialize all trip point. */
 	mlxsw_thermal_module_trips_reset(module_tz);
 	/* Read module temperature and thresholds. */
@@ -756,7 +638,8 @@ mlxsw_thermal_gearbox_tz_init(struct mlxsw_thermal_module *gearbox_tz)
 	else
 		snprintf(tz_name, sizeof(tz_name), "mlxsw-gearbox%d",
 			 gearbox_tz->module + 1);
-	gearbox_tz->tzdev = thermal_zone_device_register(tz_name,
+	gearbox_tz->tzdev = thermal_zone_device_register_with_trips(tz_name,
+						gearbox_tz->trips,
 						MLXSW_THERMAL_NUM_TRIPS,
 						MLXSW_THERMAL_TRIP_MASK,
 						gearbox_tz,
@@ -813,6 +696,8 @@ mlxsw_thermal_gearboxes_init(struct device *dev, struct mlxsw_core *core,
 		gearbox_tz = &area->tz_gearbox_arr[i];
 		memcpy(gearbox_tz->trips, default_thermal_trips,
 		       sizeof(thermal->trips));
+		memcpy(gearbox_tz->cooling_states, default_cooling_states,
+		       sizeof(thermal->cooling_states));
 		gearbox_tz->module = i;
 		gearbox_tz->parent = thermal;
 		gearbox_tz->slot_index = area->slot_index;
@@ -928,6 +813,7 @@ int mlxsw_thermal_init(struct mlxsw_core *core,
 	thermal->core = core;
 	thermal->bus_info = bus_info;
 	memcpy(thermal->trips, default_thermal_trips, sizeof(thermal->trips));
+	memcpy(thermal->cooling_states, default_cooling_states, sizeof(thermal->cooling_states));
 	thermal->line_cards[0].slot_index = 0;
 
 	err = mlxsw_reg_query(thermal->core, MLXSW_REG(mfcr), mfcr_pl);
@@ -981,7 +867,8 @@ int mlxsw_thermal_init(struct mlxsw_core *core,
 				 MLXSW_THERMAL_SLOW_POLL_INT :
 				 MLXSW_THERMAL_POLL_INT;
 
-	thermal->tzdev = thermal_zone_device_register("mlxsw",
+	thermal->tzdev = thermal_zone_device_register_with_trips("mlxsw",
+						      thermal->trips,
 						      MLXSW_THERMAL_NUM_TRIPS,
 						      MLXSW_THERMAL_TRIP_MASK,
 						      thermal,
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] thermal/drivers/iwlwifi: Use generic thermal_zone_get_trip() function
  2022-10-14  7:32 [PATCH 1/2] thermal/drivers/iwlwifi: Use generic thermal_zone_get_trip() function Daniel Lezcano
  2022-10-14  7:32 ` [PATCH 2/2] thermal/drivers/mellanox: " Daniel Lezcano
@ 2022-10-14 10:15 ` Kalle Valo
  2022-10-14 10:21   ` Daniel Lezcano
  1 sibling, 1 reply; 11+ messages in thread
From: Kalle Valo @ 2022-10-14 10:15 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: rafael, linux-pm, linux-kernel, Gregory Greenman,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Luca Coelho, Johannes Berg, Emmanuel Grumbach, Miri Korenblit,
	Nathan Errera, open list:INTEL WIRELESS WIFI LINK (iwlwifi),
	open list:NETWORKING DRIVERS

Daniel Lezcano <daniel.lezcano@linaro.org> writes:

> The thermal framework gives the possibility to register the trip
> points with the thermal zone. When that is done, no get_trip_* ops are
> needed and they can be removed.
>
> The get_trip_temp, get_trip_hyst and get_trip_type are handled by the
> get_trip_point().
>
> The set_trip_temp() generic function does some checks which are no
> longer needed in the set_trip_point() ops.
>
> Convert ops content logic into generic trip points and register them
> with the thermal zone.
>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>  drivers/net/wireless/intel/iwlwifi/mvm/mvm.h |  2 +-
>  drivers/net/wireless/intel/iwlwifi/mvm/tt.c  | 71 ++++----------------
>  2 files changed, 13 insertions(+), 60 deletions(-)

The subject should begin with "wifi: iwlwifi: ".

I don't see patch 2. Via which tree is the plan for this patch?

Gregory, please review this.

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] thermal/drivers/iwlwifi: Use generic thermal_zone_get_trip() function
  2022-10-14 10:15 ` [PATCH 1/2] thermal/drivers/iwlwifi: " Kalle Valo
@ 2022-10-14 10:21   ` Daniel Lezcano
  2022-10-18  9:38     ` Greenman, Gregory
  2022-10-19  6:04     ` Kalle Valo
  0 siblings, 2 replies; 11+ messages in thread
From: Daniel Lezcano @ 2022-10-14 10:21 UTC (permalink / raw)
  To: Kalle Valo
  Cc: rafael, linux-pm, linux-kernel, Gregory Greenman,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Luca Coelho, Johannes Berg, Emmanuel Grumbach, Miri Korenblit,
	Nathan Errera, open list:INTEL WIRELESS WIFI LINK (iwlwifi),
	open list:NETWORKING DRIVERS

On 14/10/2022 12:15, Kalle Valo wrote:
> Daniel Lezcano <daniel.lezcano@linaro.org> writes:
> 
>> The thermal framework gives the possibility to register the trip
>> points with the thermal zone. When that is done, no get_trip_* ops are
>> needed and they can be removed.
>>
>> The get_trip_temp, get_trip_hyst and get_trip_type are handled by the
>> get_trip_point().
>>
>> The set_trip_temp() generic function does some checks which are no
>> longer needed in the set_trip_point() ops.
>>
>> Convert ops content logic into generic trip points and register them
>> with the thermal zone.
>>
>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>> ---
>>   drivers/net/wireless/intel/iwlwifi/mvm/mvm.h |  2 +-
>>   drivers/net/wireless/intel/iwlwifi/mvm/tt.c  | 71 ++++----------------
>>   2 files changed, 13 insertions(+), 60 deletions(-)
> 
> The subject should begin with "wifi: iwlwifi: ".
> 
> I don't see patch 2. Via which tree is the plan for this patch?

patch 2 are similar changes but related to the mellanox driver.

This is the continuation of the trip point rework:

https://lore.kernel.org/netdev/20221003092602.1323944-22-daniel.lezcano@linaro.org/t/

This patch is planned to go through the thermal tree

Sorry I should have mentioned that.

-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] thermal/drivers/mellanox: Use generic thermal_zone_get_trip() function
  2022-10-14  7:32 ` [PATCH 2/2] thermal/drivers/mellanox: " Daniel Lezcano
@ 2022-10-18  6:28   ` Ido Schimmel
  2022-10-25  7:02     ` Daniel Lezcano
  0 siblings, 1 reply; 11+ messages in thread
From: Ido Schimmel @ 2022-10-18  6:28 UTC (permalink / raw)
  To: Daniel Lezcano, vadimp
  Cc: rafael, linux-pm, linux-kernel, Petr Machata, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	open list:MELLANOX ETHERNET SWITCH DRIVERS

+ Vadim

On Fri, Oct 14, 2022 at 09:32:51AM +0200, Daniel Lezcano wrote:
> The thermal framework gives the possibility to register the trip
> points with the thermal zone. When that is done, no get_trip_* ops are
> needed and they can be removed.
> 
> Convert ops content logic into generic trip points and register them with the
> thermal zone.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

Vadim, can you please review and test?

Daniel, I saw that you wrote to Kalle that you want to take it via the
thermal tree. Any reason not to take it via net-next? I'm asking because
it will be the second release in a row where we need to try to avoid
conflicts in this file.

Thanks

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] thermal/drivers/iwlwifi: Use generic thermal_zone_get_trip() function
  2022-10-14 10:21   ` Daniel Lezcano
@ 2022-10-18  9:38     ` Greenman, Gregory
  2022-10-19  6:04     ` Kalle Valo
  1 sibling, 0 replies; 11+ messages in thread
From: Greenman, Gregory @ 2022-10-18  9:38 UTC (permalink / raw)
  To: kvalo, daniel.lezcano
  Cc: Coelho, Luciano, davem, rafael, Berg, Johannes, Errera, Nathan,
	linux-kernel, linux-wireless, pabeni, kuba, linux-pm, edumazet,
	Grumbach, Emmanuel, netdev, Korenblit, Miriam Rachel

On Fri, 2022-10-14 at 12:21 +0200, Daniel Lezcano wrote:
> On 14/10/2022 12:15, Kalle Valo wrote:
> > Daniel Lezcano <daniel.lezcano@linaro.org> writes:
> > 
> > > The thermal framework gives the possibility to register the trip
> > > points with the thermal zone. When that is done, no get_trip_* ops are
> > > needed and they can be removed.
> > > 
> > > The get_trip_temp, get_trip_hyst and get_trip_type are handled by the
> > > get_trip_point().
> > > 
> > > The set_trip_temp() generic function does some checks which are no
> > > longer needed in the set_trip_point() ops.
> > > 
> > > Convert ops content logic into generic trip points and register them
> > > with the thermal zone.
> > > 
> > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> > > ---
> > >   drivers/net/wireless/intel/iwlwifi/mvm/mvm.h |  2 +-
> > >   drivers/net/wireless/intel/iwlwifi/mvm/tt.c  | 71 ++++----------------
> > >   2 files changed, 13 insertions(+), 60 deletions(-)
> > 
> > The subject should begin with "wifi: iwlwifi: ".
> > 
> > I don't see patch 2. Via which tree is the plan for this patch?
> 
> patch 2 are similar changes but related to the mellanox driver.
> 
> This is the continuation of the trip point rework:
> 
> https://lore.kernel.org/netdev/20221003092602.1323944-22-daniel.lezcano@linaro.org/t/
> 
> This patch is planned to go through the thermal tree
> 
> Sorry I should have mentioned that.
> 

As Kalle commented above, the subject should start with wifi: iwlwifi:
The commit itself seems fine to me.

Acked-by: Gregory Greenman <gregory.greenman@intel.com>
 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] thermal/drivers/iwlwifi: Use generic thermal_zone_get_trip() function
  2022-10-14 10:21   ` Daniel Lezcano
  2022-10-18  9:38     ` Greenman, Gregory
@ 2022-10-19  6:04     ` Kalle Valo
  1 sibling, 0 replies; 11+ messages in thread
From: Kalle Valo @ 2022-10-19  6:04 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: rafael, linux-pm, linux-kernel, Gregory Greenman,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Luca Coelho, Johannes Berg, Emmanuel Grumbach, Miri Korenblit,
	Nathan Errera, open list:INTEL WIRELESS WIFI LINK (iwlwifi),
	open list:NETWORKING DRIVERS

Daniel Lezcano <daniel.lezcano@linaro.org> writes:

> On 14/10/2022 12:15, Kalle Valo wrote:
>
>> Daniel Lezcano <daniel.lezcano@linaro.org> writes:
>>
>>> The thermal framework gives the possibility to register the trip
>>> points with the thermal zone. When that is done, no get_trip_* ops are
>>> needed and they can be removed.
>>>
>>> The get_trip_temp, get_trip_hyst and get_trip_type are handled by the
>>> get_trip_point().
>>>
>>> The set_trip_temp() generic function does some checks which are no
>>> longer needed in the set_trip_point() ops.
>>>
>>> Convert ops content logic into generic trip points and register them
>>> with the thermal zone.
>>>
>>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>>> ---
>>>   drivers/net/wireless/intel/iwlwifi/mvm/mvm.h |  2 +-
>>>   drivers/net/wireless/intel/iwlwifi/mvm/tt.c  | 71 ++++----------------
>>>   2 files changed, 13 insertions(+), 60 deletions(-)
>>
>> The subject should begin with "wifi: iwlwifi: ".
>>
>> I don't see patch 2. Via which tree is the plan for this patch?
>
> patch 2 are similar changes but related to the mellanox driver.
>
> This is the continuation of the trip point rework:
>
> https://lore.kernel.org/netdev/20221003092602.1323944-22-daniel.lezcano@linaro.org/t/
>
> This patch is planned to go through the thermal tree

Ok, feel free to take this via the thermal tree:

Acked-by: Kalle Valo <kvalo@kernel.org>

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] thermal/drivers/mellanox: Use generic thermal_zone_get_trip() function
  2022-10-18  6:28   ` Ido Schimmel
@ 2022-10-25  7:02     ` Daniel Lezcano
  2022-10-25 10:32       ` Ido Schimmel
  0 siblings, 1 reply; 11+ messages in thread
From: Daniel Lezcano @ 2022-10-25  7:02 UTC (permalink / raw)
  To: Ido Schimmel, vadimp
  Cc: rafael, linux-pm, linux-kernel, Petr Machata, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	open list:MELLANOX ETHERNET SWITCH DRIVERS


Hi Ido,

On 18/10/2022 08:28, Ido Schimmel wrote:
> + Vadim
> 
> On Fri, Oct 14, 2022 at 09:32:51AM +0200, Daniel Lezcano wrote:
>> The thermal framework gives the possibility to register the trip
>> points with the thermal zone. When that is done, no get_trip_* ops are
>> needed and they can be removed.
>>
>> Convert ops content logic into generic trip points and register them with the
>> thermal zone.
>>
>> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> 
> Vadim, can you please review and test?
> 
> Daniel, I saw that you wrote to Kalle that you want to take it via the
> thermal tree. Any reason not to take it via net-next? I'm asking because
> it will be the second release in a row where we need to try to avoid
> conflicts in this file.

Because I hope I can remove the ops->get_trip_ ops from thermal_ops 
structure before the end of this cycle.

May be you can consider moving the thermal driver into drivers/thermal?


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] thermal/drivers/mellanox: Use generic thermal_zone_get_trip() function
  2022-10-25  7:02     ` Daniel Lezcano
@ 2022-10-25 10:32       ` Ido Schimmel
  2022-10-30 17:24         ` Vadim Pasternak
  0 siblings, 1 reply; 11+ messages in thread
From: Ido Schimmel @ 2022-10-25 10:32 UTC (permalink / raw)
  To: Daniel Lezcano, vadimp
  Cc: vadimp, rafael, linux-pm, linux-kernel, Petr Machata,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	open list:MELLANOX ETHERNET SWITCH DRIVERS

On Tue, Oct 25, 2022 at 09:02:23AM +0200, Daniel Lezcano wrote:
> Because I hope I can remove the ops->get_trip_ ops from thermal_ops
> structure before the end of this cycle.

OK. Vadim, any chance you can review the patch?

> May be you can consider moving the thermal driver into drivers/thermal?

I don't think it's worth the hassle (if possible at all). In practice,
this code is upstream for almost six years and IIRC we didn't have any
conflicts with the thermal tree. I don't expect conflicts this cycle
either.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [PATCH 2/2] thermal/drivers/mellanox: Use generic thermal_zone_get_trip() function
  2022-10-25 10:32       ` Ido Schimmel
@ 2022-10-30 17:24         ` Vadim Pasternak
  2022-11-06 18:13           ` Vadim Pasternak
  0 siblings, 1 reply; 11+ messages in thread
From: Vadim Pasternak @ 2022-10-30 17:24 UTC (permalink / raw)
  To: Ido Schimmel, Daniel Lezcano
  Cc: rafael, linux-pm, linux-kernel, Petr Machata, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	open list:MELLANOX ETHERNET SWITCH DRIVERS



> -----Original Message-----
> From: Ido Schimmel <idosch@nvidia.com>
> Sent: Tuesday, 25 October 2022 13:32
> To: Daniel Lezcano <daniel.lezcano@linaro.org>; Vadim Pasternak
> <vadimp@nvidia.com>
> Cc: Vadim Pasternak <vadimp@nvidia.com>; rafael@kernel.org; linux-
> pm@vger.kernel.org; linux-kernel@vger.kernel.org; Petr Machata
> <petrm@nvidia.com>; David S. Miller <davem@davemloft.net>; Eric
> Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>;
> Paolo Abeni <pabeni@redhat.com>; open list:MELLANOX ETHERNET SWITCH
> DRIVERS <netdev@vger.kernel.org>
> Subject: Re: [PATCH 2/2] thermal/drivers/mellanox: Use generic
> thermal_zone_get_trip() function
> 
> On Tue, Oct 25, 2022 at 09:02:23AM +0200, Daniel Lezcano wrote:
> > Because I hope I can remove the ops->get_trip_ ops from thermal_ops
> > structure before the end of this cycle.
> 
> OK. Vadim, any chance you can review the patch?

It seems to be OK.
Anyway, I'll take this patch for testing by the end of this week and update.

> 
> > May be you can consider moving the thermal driver into drivers/thermal?
> 
> I don't think it's worth the hassle (if possible at all). In practice, this code is
> upstream for almost six years and IIRC we didn't have any conflicts with the
> thermal tree. I don't expect conflicts this cycle either.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [PATCH 2/2] thermal/drivers/mellanox: Use generic thermal_zone_get_trip() function
  2022-10-30 17:24         ` Vadim Pasternak
@ 2022-11-06 18:13           ` Vadim Pasternak
  0 siblings, 0 replies; 11+ messages in thread
From: Vadim Pasternak @ 2022-11-06 18:13 UTC (permalink / raw)
  To: Ido Schimmel, Daniel Lezcano
  Cc: rafael, linux-pm, linux-kernel, Petr Machata, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	open list:MELLANOX ETHERNET SWITCH DRIVERS



> -----Original Message-----
> From: Vadim Pasternak
> Sent: Sunday, 30 October 2022 19:24
> To: Ido Schimmel <idosch@nvidia.com>; Daniel Lezcano
> <daniel.lezcano@linaro.org>
> Cc: rafael@kernel.org; linux-pm@vger.kernel.org; linux-
> kernel@vger.kernel.org; Petr Machata <petrm@nvidia.com>; David S. Miller
> <davem@davemloft.net>; Eric Dumazet <edumazet@google.com>; Jakub
> Kicinski <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; open
> list:MELLANOX ETHERNET SWITCH DRIVERS <netdev@vger.kernel.org>
> Subject: RE: [PATCH 2/2] thermal/drivers/mellanox: Use generic
> thermal_zone_get_trip() function
> 
> 
> 
> > -----Original Message-----
> > From: Ido Schimmel <idosch@nvidia.com>
> > Sent: Tuesday, 25 October 2022 13:32
> > To: Daniel Lezcano <daniel.lezcano@linaro.org>; Vadim Pasternak
> > <vadimp@nvidia.com>
> > Cc: Vadim Pasternak <vadimp@nvidia.com>; rafael@kernel.org; linux-
> > pm@vger.kernel.org; linux-kernel@vger.kernel.org; Petr Machata
> > <petrm@nvidia.com>; David S. Miller <davem@davemloft.net>; Eric
> > Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>;
> Paolo
> > Abeni <pabeni@redhat.com>; open list:MELLANOX ETHERNET SWITCH
> DRIVERS
> > <netdev@vger.kernel.org>
> > Subject: Re: [PATCH 2/2] thermal/drivers/mellanox: Use generic
> > thermal_zone_get_trip() function
> >
> > On Tue, Oct 25, 2022 at 09:02:23AM +0200, Daniel Lezcano wrote:
> > > Because I hope I can remove the ops->get_trip_ ops from thermal_ops
> > > structure before the end of this cycle.
> >
> > OK. Vadim, any chance you can review the patch?
> 
> It seems to be OK.
> Anyway, I'll take this patch for testing by the end of this week and update.
> 

Hi guys,

I see this patch is already applied to Linux-next.
I tested it along with relevant patches from drivers/thermal and it looks OK.

Thanks,
Vadim.

> >
> > > May be you can consider moving the thermal driver into drivers/thermal?
> >
> > I don't think it's worth the hassle (if possible at all). In practice,
> > this code is upstream for almost six years and IIRC we didn't have any
> > conflicts with the thermal tree. I don't expect conflicts this cycle either.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-11-06 18:13 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-14  7:32 [PATCH 1/2] thermal/drivers/iwlwifi: Use generic thermal_zone_get_trip() function Daniel Lezcano
2022-10-14  7:32 ` [PATCH 2/2] thermal/drivers/mellanox: " Daniel Lezcano
2022-10-18  6:28   ` Ido Schimmel
2022-10-25  7:02     ` Daniel Lezcano
2022-10-25 10:32       ` Ido Schimmel
2022-10-30 17:24         ` Vadim Pasternak
2022-11-06 18:13           ` Vadim Pasternak
2022-10-14 10:15 ` [PATCH 1/2] thermal/drivers/iwlwifi: " Kalle Valo
2022-10-14 10:21   ` Daniel Lezcano
2022-10-18  9:38     ` Greenman, Gregory
2022-10-19  6:04     ` Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).