kernel_halt();
 }
 
-static void jz4740_rtc_clk_disable(void *data)
-{
-       clk_disable_unprepare(data);
-}
-
 static const struct of_device_id jz4740_rtc_of_match[] = {
        { .compatible = "ingenic,jz4740-rtc", .data = (void *)ID_JZ4740 },
        { .compatible = "ingenic,jz4760-rtc", .data = (void *)ID_JZ4760 },
        if (IS_ERR(rtc->base))
                return PTR_ERR(rtc->base);
 
-       clk = devm_clk_get(dev, "rtc");
-       if (IS_ERR(clk)) {
-               dev_err(dev, "Failed to get RTC clock\n");
-               return PTR_ERR(clk);
-       }
-
-       ret = clk_prepare_enable(clk);
-       if (ret) {
-               dev_err(dev, "Failed to enable clock\n");
-               return ret;
-       }
-
-       ret = devm_add_action_or_reset(dev, jz4740_rtc_clk_disable, clk);
-       if (ret) {
-               dev_err(dev, "Failed to register devm action\n");
-               return ret;
-       }
+       clk = devm_clk_get_enabled(dev, "rtc");
+       if (IS_ERR(clk))
+               return dev_err_probe(dev, PTR_ERR(clk), "Failed to get RTC clock\n");
 
        spin_lock_init(&rtc->lock);