hwmon: (axi-fan-control) Make sure the clock is enabled
authorNuno Sá <nuno.sa@analog.com>
Wed, 11 Aug 2021 11:48:51 +0000 (13:48 +0200)
committerGuenter Roeck <linux@roeck-us.net>
Tue, 17 Aug 2021 21:54:26 +0000 (14:54 -0700)
The core will only work if it's clock is enabled. This patch is a
minor enhancement to make sure that's the case.

Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20210811114853.159298-2-nuno.sa@analog.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/axi-fan-control.c

index e3f6b03..901d158 100644 (file)
@@ -351,6 +351,11 @@ static int axi_fan_control_init(struct axi_fan_control_data *ctl,
        return ret;
 }
 
+static void axi_fan_control_clk_disable(void *clk)
+{
+       clk_disable_unprepare(clk);
+}
+
 static const struct hwmon_channel_info *axi_fan_control_info[] = {
        HWMON_CHANNEL_INFO(pwm, HWMON_PWM_INPUT),
        HWMON_CHANNEL_INFO(fan, HWMON_F_INPUT | HWMON_F_FAULT | HWMON_F_LABEL),
@@ -406,6 +411,14 @@ static int axi_fan_control_probe(struct platform_device *pdev)
                return PTR_ERR(clk);
        }
 
+       ret = clk_prepare_enable(clk);
+       if (ret)
+               return ret;
+
+       ret = devm_add_action_or_reset(&pdev->dev, axi_fan_control_clk_disable, clk);
+       if (ret)
+               return ret;
+
        ctl->clk_rate = clk_get_rate(clk);
        if (!ctl->clk_rate)
                return -EINVAL;