On Wed, Oct 28, 2015 at 12:05 AM, Han Xu <b45815@xxxxxxxxxxxxx> wrote: > From: Adrian Alonso <aalonso@xxxxxxxxxxxxx> > > supports APBH DMA on i.MX7D by add extra clock clk_io [] > MODULE_DEVICE_TABLE(of, mxs_dma_dt_ids); > @@ -440,6 +448,13 @@ static int mxs_dma_alloc_chan_resources(struct dma_chan *chan) > if (ret) > goto err_clk; > > + /* enable the extra clk_io clock for i.MX7D */ > + if (mxs_dma->dev_id == IMX7D_DMA) { > + ret = clk_prepare_enable(mxs_dma->clk_io); > + if (ret) > + goto err_clk_unprepare; Perhaps err_clk. > + } > + > mxs_dma_reset_chan(chan); > > dma_async_tx_descriptor_init(&mxs_chan->desc, chan); > @@ -450,6 +465,8 @@ static int mxs_dma_alloc_chan_resources(struct dma_chan *chan) > > return 0; > > +err_clk_unprepare: > + clk_disable_unprepare(mxs_dma->clk); > err_clk: > free_irq(mxs_chan->chan_irq, mxs_dma); > err_irq: > @@ -471,6 +488,9 @@ static void mxs_dma_free_chan_resources(struct dma_chan *chan) > dma_free_coherent(mxs_dma->dma_device.dev, CCW_BLOCK_SIZE, > mxs_chan->ccw, mxs_chan->ccw_phys); > > + if (mxs_dma->dev_id == IMX7D_DMA) > + clk_disable_unprepare(mxs_dma->clk_io); > + > clk_disable_unprepare(mxs_dma->clk); > } > > @@ -701,9 +721,15 @@ static int mxs_dma_init(struct mxs_dma_engine *mxs_dma) > if (ret) > return ret; > > + if (mxs_dma->dev_id == IMX7D_DMA) { > + ret = clk_prepare_enable(mxs_dma->clk_io); > + if (ret) > + goto err_clk_bch; > + } > + > ret = stmp_reset_block(mxs_dma->base); > if (ret) > - goto err_out; > + goto err_clk_io; > > /* enable apbh burst */ > if (dma_is_apbh(mxs_dma)) { > @@ -717,7 +743,10 @@ static int mxs_dma_init(struct mxs_dma_engine *mxs_dma) > writel(MXS_DMA_CHANNELS_MASK << MXS_DMA_CHANNELS, > mxs_dma->base + HW_APBHX_CTRL1 + STMP_OFFSET_REG_SET); > > -err_out: > +err_clk_io: > + if (mxs_dma->dev_id == IMX7D_DMA) > + clk_disable_unprepare(mxs_dma->clk_io); > +err_clk_bch: > clk_disable_unprepare(mxs_dma->clk); > return ret; > } > @@ -803,9 +832,19 @@ static int __init mxs_dma_probe(struct platform_device *pdev) > if (IS_ERR(mxs_dma->base)) > return PTR_ERR(mxs_dma->base); > > - mxs_dma->clk = devm_clk_get(&pdev->dev, NULL); > - if (IS_ERR(mxs_dma->clk)) > - return PTR_ERR(mxs_dma->clk); > + if (mxs_dma->dev_id == IMX7D_DMA) { > + mxs_dma->clk = devm_clk_get(&pdev->dev, "dma_apbh_bch"); > + if (IS_ERR(mxs_dma->clk)) > + return PTR_ERR(mxs_dma->clk); > + mxs_dma->clk_io = devm_clk_get(&pdev->dev, "dma_apbh_io"); > + if (IS_ERR(mxs_dma->clk_io)) > + return PTR_ERR(mxs_dma->clk_io); > + Redundant empty line. > + } else { > + mxs_dma->clk = devm_clk_get(&pdev->dev, NULL); > + if (IS_ERR(mxs_dma->clk)) > + return PTR_ERR(mxs_dma->clk); > + } -- With Best Regards, Andy Shevchenko -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html