Loading drivers/dma/imx-sdma.c +18 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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); /* Kill the tasklet */ for (i = 0; i < MAX_DMA_CHANNELS; i++) { struct sdma_channel *sdmac = &sdma->channel[i]; Loading Loading
drivers/dma/imx-sdma.c +18 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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); /* Kill the tasklet */ for (i = 0; i < MAX_DMA_CHANNELS; i++) { struct sdma_channel *sdmac = &sdma->channel[i]; Loading