On Tue, May 23, 2017 at 12:33:12PM +0530, Arvind Yadav wrote: > clk_prepare_enable() can fail here and we must check its return value. ok > Replace '%d' by '%zu' to fix the following compilation warning:- > drivers/dma/imx-sdma.c: In function ‘sdma_prep_dma_cyclic’: > drivers/dma/imx-sdma.c:1327:5: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘size_t’ [-Wformat=] > channel, period_len, 0xffff); > ^ > drivers/dma/imx-sdma.c:1350:3: warning: format ‘%d’ expects argument of type ‘int’, but argument 5 has type ‘size_t’ [-Wformat=] > dev_dbg(sdma->dev, "entry %d: count: %d dma: %#llx %s%s\n", this should be a separate patch > > Signed-off-by: Arvind Yadav <arvind.yadav.cs@xxxxxxxxx> > --- > drivers/dma/imx-sdma.c | 27 ++++++++++++++++++++------- > 1 file changed, 20 insertions(+), 7 deletions(-) > > diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c > index 085993c..a67ec1b 100644 > --- a/drivers/dma/imx-sdma.c > +++ b/drivers/dma/imx-sdma.c > @@ -1323,7 +1323,7 @@ static struct dma_async_tx_descriptor *sdma_prep_dma_cyclic( > } > > if (period_len > 0xffff) { > - dev_err(sdma->dev, "SDMA channel %d: maximum period size exceeded: %d > %d\n", > + dev_err(sdma->dev, "SDMA channel %d: maximum period size exceeded: %zu > %d\n", > channel, period_len, 0xffff); > goto err_out; > } > @@ -1347,7 +1347,7 @@ static struct dma_async_tx_descriptor *sdma_prep_dma_cyclic( > if (i + 1 == num_periods) > param |= BD_WRAP; > > - dev_dbg(sdma->dev, "entry %d: count: %d dma: %#llx %s%s\n", > + dev_dbg(sdma->dev, "entry %d: count: %zu dma: %#llx %s%s\n", > i, period_len, (u64)dma_addr, > param & BD_WRAP ? "wrap" : "", > param & BD_INTR ? " intr" : ""); > @@ -1755,19 +1755,26 @@ static int sdma_probe(struct platform_device *pdev) > if (IS_ERR(sdma->clk_ahb)) > return PTR_ERR(sdma->clk_ahb); > > - clk_prepare(sdma->clk_ipg); > - clk_prepare(sdma->clk_ahb); > + ret = clk_prepare(sdma->clk_ipg); > + if (ret) > + return ret; > + > + ret = clk_prepare(sdma->clk_ahb); > + if (ret) > + goto err_clk; > > ret = devm_request_irq(&pdev->dev, irq, sdma_int_handler, 0, "sdma", > sdma); > if (ret) > - return ret; > + goto err_irq; > > sdma->irq = irq; > > sdma->script_addrs = kzalloc(sizeof(*sdma->script_addrs), GFP_KERNEL); > - if (!sdma->script_addrs) > - return -ENOMEM; > + if (!sdma->script_addrs) { > + ret = -ENOMEM; > + goto err_irq; > + } > > /* initially no scripts available */ > saddr_arr = (s32 *)sdma->script_addrs; > @@ -1882,6 +1889,10 @@ static int sdma_probe(struct platform_device *pdev) > dma_async_device_unregister(&sdma->dma_device); > err_init: > kfree(sdma->script_addrs); > +err_irq: > + clk_unprepare(sdma->clk_ahb); > +err_clk: > + clk_unprepare(sdma->clk_ipg); > return ret; > } > > @@ -1893,6 +1904,8 @@ static int sdma_remove(struct platform_device *pdev) > devm_free_irq(&pdev->dev, sdma->irq, sdma); > dma_async_device_unregister(&sdma->dma_device); > kfree(sdma->script_addrs); > + clk_unprepare(sdma->clk_ahb); > + clk_unprepare(sdma->clk_ipg); and this is not documented in log, so was unexpected > /* Kill the tasklet */ > for (i = 0; i < MAX_DMA_CHANNELS; i++) { > struct sdma_channel *sdmac = &sdma->channel[i]; > -- > 1.9.1 > > -- > 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 -- ~Vinod -- 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