struct clk *clk;
 };
 
-static void s5_temp_clk_disable(void *data)
-{
-       struct clk *clk = data;
-
-       clk_disable_unprepare(clk);
-}
-
 static void s5_temp_enable(struct s5_hwmon *hwmon)
 {
        u32 val = readl(hwmon->base + TEMP_CFG);
 {
        struct device *hwmon_dev;
        struct s5_hwmon *hwmon;
-       int ret;
 
        hwmon = devm_kzalloc(&pdev->dev, sizeof(*hwmon), GFP_KERNEL);
        if (!hwmon)
        if (IS_ERR(hwmon->base))
                return PTR_ERR(hwmon->base);
 
-       hwmon->clk = devm_clk_get(&pdev->dev, NULL);
+       hwmon->clk = devm_clk_get_enabled(&pdev->dev, NULL);
        if (IS_ERR(hwmon->clk))
                return PTR_ERR(hwmon->clk);
 
-       ret = clk_prepare_enable(hwmon->clk);
-       if (ret)
-               return ret;
-
-       ret = devm_add_action_or_reset(&pdev->dev, s5_temp_clk_disable,
-                                      hwmon->clk);
-       if (ret)
-               return ret;
-
        s5_temp_enable(hwmon);
 
        hwmon_dev = devm_hwmon_device_register_with_info(&pdev->dev,