static int sun4i_tcon_init_clocks(struct device *dev,
                                  struct sun4i_tcon *tcon)
 {
-       tcon->clk = devm_clk_get(dev, "ahb");
+       tcon->clk = devm_clk_get_enabled(dev, "ahb");
        if (IS_ERR(tcon->clk)) {
                dev_err(dev, "Couldn't get the TCON bus clock\n");
                return PTR_ERR(tcon->clk);
        }
-       clk_prepare_enable(tcon->clk);
 
        if (tcon->quirks->has_channel_0) {
-               tcon->sclk0 = devm_clk_get(dev, "tcon-ch0");
+               tcon->sclk0 = devm_clk_get_enabled(dev, "tcon-ch0");
                if (IS_ERR(tcon->sclk0)) {
                        dev_err(dev, "Couldn't get the TCON channel 0 clock\n");
                        return PTR_ERR(tcon->sclk0);
                }
        }
-       clk_prepare_enable(tcon->sclk0);
 
        if (tcon->quirks->has_channel_1) {
                tcon->sclk1 = devm_clk_get(dev, "tcon-ch1");
        return 0;
 }
 
-static void sun4i_tcon_free_clocks(struct sun4i_tcon *tcon)
-{
-       clk_disable_unprepare(tcon->sclk0);
-       clk_disable_unprepare(tcon->clk);
-}
-
 static int sun4i_tcon_init_irq(struct device *dev,
                               struct sun4i_tcon *tcon)
 {
        ret = sun4i_tcon_init_regmap(dev, tcon);
        if (ret) {
                dev_err(dev, "Couldn't init our TCON regmap\n");
-               goto err_free_clocks;
+               goto err_assert_reset;
        }
 
        if (tcon->quirks->has_channel_0) {
                ret = sun4i_dclk_create(dev, tcon);
                if (ret) {
                        dev_err(dev, "Couldn't create our TCON dot clock\n");
-                       goto err_free_clocks;
+                       goto err_assert_reset;
                }
        }
 
 err_free_dclk:
        if (tcon->quirks->has_channel_0)
                sun4i_dclk_free(tcon);
-err_free_clocks:
-       sun4i_tcon_free_clocks(tcon);
 err_assert_reset:
        reset_control_assert(tcon->lcd_rst);
        return ret;
        list_del(&tcon->list);
        if (tcon->quirks->has_channel_0)
                sun4i_dclk_free(tcon);
-       sun4i_tcon_free_clocks(tcon);
 }
 
 static const struct component_ops sun4i_tcon_ops = {