hwmon: (mlxreg-fan) Support distinctive names per different cooling devices
authorVadim Pasternak <vadimp@nvidia.com>
Sun, 26 Sep 2021 05:35:41 +0000 (08:35 +0300)
committerGuenter Roeck <linux@roeck-us.net>
Tue, 12 Oct 2021 14:22:41 +0000 (07:22 -0700)
Provide different names for cooling devices registration to allow
binding each cooling devices to relevant thermal zone. Thus, specific
cooling device can be associated with related thermal sensor by setting
thermal cooling device type for example to "mlxreg_fan2" and passing
this type to thermal_zone_bind_cooling_device() through 'cdev->type'.

Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Link: https://lore.kernel.org/r/20210926053541.1806937-3-vadimp@nvidia.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/mlxreg-fan.c

index 8e5cd6991929975091b43e8c8e57365e56fb51be..4a8becdb0d582ea06fe96eedcddd974ef2fbdbb6 100644 (file)
@@ -263,6 +263,13 @@ mlxreg_fan_is_visible(const void *data, enum hwmon_sensor_types type, u32 attr,
        return 0;
 }
 
+static char *mlxreg_fan_name[] = {
+       "mlxreg_fan",
+       "mlxreg_fan1",
+       "mlxreg_fan2",
+       "mlxreg_fan3",
+};
+
 static const struct hwmon_channel_info *mlxreg_fan_hwmon_info[] = {
        HWMON_CHANNEL_INFO(fan,
                           HWMON_F_INPUT | HWMON_F_FAULT,
@@ -565,8 +572,8 @@ static int mlxreg_fan_cooling_config(struct device *dev, struct mlxreg_fan *fan)
                if (!pwm->connected)
                        continue;
                pwm->fan = fan;
-               pwm->cdev = devm_thermal_of_cooling_device_register(dev, NULL, "mlxreg_fan", pwm,
-                                                                   &mlxreg_fan_cooling_ops);
+               pwm->cdev = devm_thermal_of_cooling_device_register(dev, NULL, mlxreg_fan_name[i],
+                                                                   pwm, &mlxreg_fan_cooling_ops);
                if (IS_ERR(pwm->cdev)) {
                        dev_err(dev, "Failed to register cooling device\n");
                        return PTR_ERR(pwm->cdev);