dmaengine: imx-sdma: Declare slave capabilities for the generic code
Subsystems (2)
Fabio Estevam
reviewerPATCH 1/3 dmaengine: imx-sdma: Declare slave capabilities for the generic code
From: Fabio Estevam <[email protected]>
Since ecc19d17868be9c ("dmaengine: Add a warning for drivers not using the generic slave caps retrieval") the following warning is observed:
[ 0.224981] ------------[ cut here ]------------ [ 0.225013] WARNING: CPU: 0 PID: 1 at drivers/dma/dmaengine.c:830 dma_async_device_register+0x2a0/0x4c8() [ 0.225023] this driver doesn't support generic slave capabilities reporting
Declare the slave capabilities to avoid such warning.
--- drivers/dma/imx-sdma.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/dma/imx-sdma.c +4 -0
@@ -1595,6 +1595,10 @@ static int sdma_probe(struct platform_device *pdev) sdma->dma_device.device_prep_dma_cyclic = sdma_prep_dma_cyclic; sdma->dma_device.device_config = sdma_config; sdma->dma_device.device_terminate_all = sdma_disable_channel; + sdma->dma_device.src_addr_widths =BIT (DMA_SLAVE_BUSWIDTH_4_BYTES ); + sdma->dma_device.dst_addr_widths =BIT (DMA_SLAVE_BUSWIDTH_4_BYTES ); + sdma->dma_device.directions =BIT (DMA_DEV_TO_MEM ) |BIT (DMA_MEM_TO_DEV ); + sdma->dma_device.residue_granularity =DMA_RESIDUE_GRANULARITY_BURST ; sdma->dma_device.device_issue_pending = sdma_issue_pending; sdma->dma_device.dev->dma_parms = &sdma->dma_parms;dma_set_max_seg_size (sdma->dma_device.dev,65535 );
Signature · 1 line
1.9.1
Fabio Estevam
reviewerPATCH 2/3 dmaengine: imx-sdma: Use devm functions
From: Fabio Estevam <[email protected]>
By using devm functions we can make the code shorter and cleaner.
--- drivers/dma/imx-sdma.c | 62 +++++++++++++------------------------------------- 1 file changed, 16 insertions(+), 46 deletions(-)
drivers/dma/imx-sdma.c +16 -46
@@ -1472,7 +1472,7 @@ static int sdma_probe(struct platform_device *pdev)if (ret)return ret; - sdma =kzalloc (sizeof (*sdma),GFP_KERNEL ); + sdma =devm_kzalloc (&pdev->dev,sizeof (*sdma),GFP_KERNEL );if (!sdma)return -ENOMEM ;
@@ -1481,48 +1481,34 @@ static int sdma_probe(struct platform_device *pdev) sdma->dev = &pdev->dev; sdma->drvdata = drvdata; - iores =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); irq =platform_get_irq (pdev,0 ); -if (!iores || irq <0 ) { - ret = -EINVAL ; - goto err_irq; - } +if (irq <0 ) +return -EINVAL ; -if (!request_mem_region (iores->start,resource_size (iores), pdev->name)) { - ret = -EBUSY ; - goto err_request_region; - } + iores =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); + sdma->regs =devm_ioremap_resource (&pdev->dev, iores); +if (IS_ERR (sdma->regs)) +return PTR_ERR (sdma->regs); sdma->clk_ipg =devm_clk_get (&pdev->dev,"ipg" ); -if (IS_ERR (sdma->clk_ipg)) { - ret =PTR_ERR (sdma->clk_ipg); - goto err_clk; - } +if (IS_ERR (sdma->clk_ipg)) +return PTR_ERR (sdma->clk_ipg); sdma->clk_ahb =devm_clk_get (&pdev->dev,"ahb" ); -if (IS_ERR (sdma->clk_ahb)) { - ret =PTR_ERR (sdma->clk_ahb); - goto err_clk; - } +if (IS_ERR (sdma->clk_ahb)) +return PTR_ERR (sdma->clk_ahb);clk_prepare (sdma->clk_ipg);clk_prepare (sdma->clk_ahb); - sdma->regs =ioremap (iores->start,resource_size (iores)); -if (!sdma->regs) { - ret = -ENOMEM ; - goto err_ioremap; - } - - ret =request_irq (irq, sdma_int_handler,0 ,"sdma" , sdma); + ret =devm_request_irq (&pdev->dev, irq, sdma_int_handler,0 ,"sdma" , + sdma);if (ret) - goto err_request_irq; +return ret; sdma->script_addrs =kzalloc (sizeof (*sdma->script_addrs),GFP_KERNEL ); -if (!sdma->script_addrs) { - ret = -ENOMEM ; - goto err_alloc; - } +if (!sdma->script_addrs) +return -ENOMEM ;/* initially no scripts available */ saddr_arr = (s32 *)sdma->script_addrs;
@@ -1627,38 +1613,22 @@ err_register:dma_async_device_unregister (&sdma->dma_device); err_init:kfree (sdma->script_addrs); -err_alloc: -free_irq (irq, sdma); -err_request_irq: -iounmap (sdma->regs); -err_ioremap: -err_clk: -release_mem_region (iores->start,resource_size (iores)); -err_request_region: -err_irq: -kfree (sdma);return ret; }static int sdma_remove (struct platform_device *pdev) {struct sdma_engine *sdma =platform_get_drvdata (pdev); -struct resource *iores =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); -int irq =platform_get_irq (pdev,0 );int i;dma_async_device_unregister (&sdma->dma_device);kfree (sdma->script_addrs); -free_irq (irq, sdma); -iounmap (sdma->regs); -release_mem_region (iores->start,resource_size (iores));/* Kill the tasklet */ for (i =0 ; i <MAX_DMA_CHANNELS ; i++) {struct sdma_channel *sdmac = &sdma->channel[i];tasklet_kill (&sdmac->tasklet); } -kfree (sdma);platform_set_drvdata (pdev,NULL );dev_info (&pdev->dev,"Removed...\n" );
Signature · 1 line
1.9.1
Fabio Estevam
reviewerPATCH 3/3 dmaengine: imx-sdma: Return a proper error code in platform_get_irq()
In reply to Fabio EstevamFrom: Fabio Estevam <[email protected]>
There is no need to return a 'fake' value upon platform_get_irq() failure.
Just propagate the real error instead.
--- drivers/dma/imx-sdma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/dma/imx-sdma.c +1 -1
@@ -1483,7 +1483,7 @@ static int sdma_probe(struct platform_device *pdev) irq =platform_get_irq (pdev,0 );if (irq <0 ) -return -EINVAL ; +return irq; iores =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); sdma->regs =devm_ioremap_resource (&pdev->dev, iores);
Signature · 1 line
1.9.1
Hi,
Quoted 5 lines · Fabio Estevam
From: Fabio Estevam <[email protected]>
Since
ecc19d17868be9c("dmaengine: Add a warning for drivers not using the generic slave caps retrieval") the following warning is observed:
Quoted 8 lines
[ 0.224981] ------------[ cut here ]------------ [ 0.225013] WARNING: CPU: 0 PID: 1 at drivers/dma/dmaengine.c:830 dma_async_device_register+0x2a0/0x4c8() [ 0.225023] this driver doesn't support generic slave capabilities reportingDeclare the slave capabilities to avoid such warning.
Cc Maxime Ripard <[email protected]>Signed-off-by Fabio Estevam <[email protected]>
Thanks!
Maxime
Signature · 3 lines
Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
Vinod Koul
AppliedQuoted 10 lines · Fabio Estevam
From: Fabio Estevam <[email protected]>
Since
ecc19d17868be9c("dmaengine: Add a warning for drivers not using the generic slave caps retrieval") the following warning is observed:[ 0.224981] ------------[ cut here ]------------ [ 0.225013] WARNING: CPU: 0 PID: 1 at drivers/dma/dmaengine.c:830 dma_async_device_register+0x2a0/0x4c8() [ 0.225023] this driver doesn't support generic slave capabilities reportingDeclare the slave capabilities to avoid such warning.
Applied all, thanks
Signature · 1 line
~Vinod