struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
        struct clk *clk;
 
-       clk = clk_get(&dsidev->dev, "fck");
+       clk = devm_clk_get(&dsidev->dev, "fck");
        if (IS_ERR(clk)) {
                DSSERR("can't get fck\n");
                return PTR_ERR(clk);
 
        dsi->dss_clk = clk;
 
-       clk = clk_get(&dsidev->dev, "sys_clk");
+       clk = devm_clk_get(&dsidev->dev, "sys_clk");
        if (IS_ERR(clk)) {
                DSSERR("can't get sys_clk\n");
-               clk_put(dsi->dss_clk);
-               dsi->dss_clk = NULL;
                return PTR_ERR(clk);
        }
 
        return 0;
 }
 
-static void dsi_put_clocks(struct platform_device *dsidev)
-{
-       struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
-
-       if (dsi->dss_clk)
-               clk_put(dsi->dss_clk);
-       if (dsi->sys_clk)
-               clk_put(dsi->sys_clk);
-}
-
 static struct omap_dss_device * __init dsi_find_dssdev(struct platform_device *pdev)
 {
        struct omap_dss_board_info *pdata = pdev->dev.platform_data;
 
 err_runtime_get:
        pm_runtime_disable(&dsidev->dev);
-       dsi_put_clocks(dsidev);
        return r;
 }
 
 
        pm_runtime_disable(&dsidev->dev);
 
-       dsi_put_clocks(dsidev);
-
        if (dsi->vdds_dsi_reg != NULL) {
                if (dsi->vdds_dsi_enabled) {
                        regulator_disable(dsi->vdds_dsi_reg);