atdma->dma_common.cap_mask = plat_dat->cap_mask;
        atdma->all_chan_mask = (1 << plat_dat->nr_channels) - 1;
 
-       atdma->clk = clk_get(&pdev->dev, "dma_clk");
+       atdma->clk = devm_clk_get(&pdev->dev, "dma_clk");
        if (IS_ERR(atdma->clk))
                return PTR_ERR(atdma->clk);
 
        err = clk_prepare_enable(atdma->clk);
        if (err)
-               goto err_clk_prepare;
+               return err;
 
        /* force dma off, just in case */
        at_dma_off(atdma);
        free_irq(platform_get_irq(pdev, 0), atdma);
 err_irq:
        clk_disable_unprepare(atdma->clk);
-err_clk_prepare:
-       clk_put(atdma->clk);
        return err;
 }
 
        }
 
        clk_disable_unprepare(atdma->clk);
-       clk_put(atdma->clk);
 
        return 0;
 }