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),
                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;