All of lore.kernel.org
 help / color / mirror / Atom feed
From: shawn.guo@linaro.org (Shawn Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 23/34] dma: imx-dma: use devm_kzalloc and devm_request_irq
Date: Mon, 17 Sep 2012 13:34:52 +0800	[thread overview]
Message-ID: <1347860103-4141-24-git-send-email-shawn.guo@linaro.org> (raw)
In-Reply-To: <1347860103-4141-1-git-send-email-shawn.guo@linaro.org>

Use managed functions devm_kzalloc and devm_request_irq instead to
make the error patch simpler.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Cc: Vinod Koul <vinod.koul@linux.intel.com>
---
 drivers/dma/imx-dma.c |   54 ++++++++++++++-----------------------------------
 1 file changed, 15 insertions(+), 39 deletions(-)

diff --git a/drivers/dma/imx-dma.c b/drivers/dma/imx-dma.c
index b90aaec..64ba65b 100644
--- a/drivers/dma/imx-dma.c
+++ b/drivers/dma/imx-dma.c
@@ -962,7 +962,7 @@ static int __init imxdma_probe(struct platform_device *pdev)
 	int ret, i;
 
 
-	imxdma = kzalloc(sizeof(*imxdma), GFP_KERNEL);
+	imxdma = devm_kzalloc(&pdev->dev, sizeof(*imxdma), GFP_KERNEL);
 	if (!imxdma)
 		return -ENOMEM;
 
@@ -978,16 +978,12 @@ static int __init imxdma_probe(struct platform_device *pdev)
 	}
 
 	imxdma->dma_ipg = devm_clk_get(&pdev->dev, "ipg");
-	if (IS_ERR(imxdma->dma_ipg)) {
-		ret = PTR_ERR(imxdma->dma_ipg);
-		goto err_clk;
-	}
+	if (IS_ERR(imxdma->dma_ipg))
+		return PTR_ERR(imxdma->dma_ipg);
 
 	imxdma->dma_ahb = devm_clk_get(&pdev->dev, "ahb");
-	if (IS_ERR(imxdma->dma_ahb)) {
-		ret = PTR_ERR(imxdma->dma_ahb);
-		goto err_clk;
-	}
+	if (IS_ERR(imxdma->dma_ahb))
+		return PTR_ERR(imxdma->dma_ahb);
 
 	clk_prepare_enable(imxdma->dma_ipg);
 	clk_prepare_enable(imxdma->dma_ahb);
@@ -996,17 +992,18 @@ static int __init imxdma_probe(struct platform_device *pdev)
 	imx_dmav1_writel(imxdma, DCR_DRST, DMA_DCR);
 
 	if (cpu_is_mx1()) {
-		ret = request_irq(MX1_DMA_INT, dma_irq_handler, 0, "DMA", imxdma);
+		ret = devm_request_irq(&pdev->dev, MX1_DMA_INT,
+				       dma_irq_handler, 0, "DMA", imxdma);
 		if (ret) {
 			dev_warn(imxdma->dev, "Can't register IRQ for DMA\n");
-			goto err_enable;
+			goto err;
 		}
 
-		ret = request_irq(MX1_DMA_ERR, imxdma_err_handler, 0, "DMA", imxdma);
+		ret = devm_request_irq(&pdev->dev, MX1_DMA_ERR,
+				       imxdma_err_handler, 0, "DMA", imxdma);
 		if (ret) {
 			dev_warn(imxdma->dev, "Can't register ERRIRQ for DMA\n");
-			free_irq(MX1_DMA_INT, NULL);
-			goto err_enable;
+			goto err;
 		}
 	}
 
@@ -1037,13 +1034,13 @@ static int __init imxdma_probe(struct platform_device *pdev)
 		struct imxdma_channel *imxdmac = &imxdma->channel[i];
 
 		if (cpu_is_mx21() || cpu_is_mx27()) {
-			ret = request_irq(MX2x_INT_DMACH0 + i,
+			ret = devm_request_irq(&pdev->dev, MX2x_INT_DMACH0 + i,
 					dma_irq_handler, 0, "DMA", imxdma);
 			if (ret) {
 				dev_warn(imxdma->dev, "Can't register IRQ %d "
 					 "for DMA channel %d\n",
 					 MX2x_INT_DMACH0 + i, i);
-				goto err_init;
+				goto err;
 			}
 			init_timer(&imxdmac->watchdog);
 			imxdmac->watchdog.function = &imxdma_watchdog;
@@ -1089,46 +1086,25 @@ static int __init imxdma_probe(struct platform_device *pdev)
 	ret = dma_async_device_register(&imxdma->dma_device);
 	if (ret) {
 		dev_err(&pdev->dev, "unable to register\n");
-		goto err_init;
+		goto err;
 	}
 
 	return 0;
 
-err_init:
-
-	if (cpu_is_mx21() || cpu_is_mx27()) {
-		while (--i >= 0)
-			free_irq(MX2x_INT_DMACH0 + i, NULL);
-	} else if cpu_is_mx1() {
-		free_irq(MX1_DMA_INT, NULL);
-		free_irq(MX1_DMA_ERR, NULL);
-	}
-err_enable:
+err:
 	clk_disable_unprepare(imxdma->dma_ipg);
 	clk_disable_unprepare(imxdma->dma_ahb);
-err_clk:
-	kfree(imxdma);
 	return ret;
 }
 
 static int __exit imxdma_remove(struct platform_device *pdev)
 {
 	struct imxdma_engine *imxdma = platform_get_drvdata(pdev);
-	int i;
 
         dma_async_device_unregister(&imxdma->dma_device);
 
-	if (cpu_is_mx21() || cpu_is_mx27()) {
-		for (i = 0; i < IMX_DMA_CHANNELS; i++)
-			free_irq(MX2x_INT_DMACH0 + i, NULL);
-	} else if cpu_is_mx1() {
-		free_irq(MX1_DMA_INT, NULL);
-		free_irq(MX1_DMA_ERR, NULL);
-	}
-
 	clk_disable_unprepare(imxdma->dma_ipg);
 	clk_disable_unprepare(imxdma->dma_ahb);
-	kfree(imxdma);
 
         return 0;
 }
-- 
1.7.9.5

  parent reply	other threads:[~2012-09-17  5:34 UTC|newest]

Thread overview: 154+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-17  5:34 [PATCH 00/34] i.MX multi-platform support Shawn Guo
2012-09-17  5:34 ` Shawn Guo
2012-09-17  5:34 ` Shawn Guo
2012-09-17  5:34 ` Shawn Guo
2012-09-17  5:34 ` Shawn Guo
2012-09-17  5:34 ` [PATCH 01/34] ARM: imx: include board headers in the same folder Shawn Guo
2012-09-17  5:34 ` [PATCH 02/34] ASoC: mx27vis: retrieve gpio numbers from platform_data Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  9:19   ` javier Martin
2012-09-17  9:19     ` javier Martin
2012-09-17 11:07   ` Mark Brown
2012-09-17 11:07     ` Mark Brown
2012-09-20  1:14     ` Shawn Guo
2012-09-20  1:14       ` Shawn Guo
2012-09-20  1:26       ` Mark Brown
2012-09-20  1:26         ` Mark Brown
2012-09-20  2:20         ` Shawn Guo
2012-09-20  2:20           ` Shawn Guo
2012-09-17  5:34 ` [PATCH 03/34] ARM: imx: move iomux drivers and headers into mach-imx Shawn Guo
2012-09-17  5:34 ` [PATCH 04/34] ARM: imx: remove unnecessary inclusion from device-imx*.h Shawn Guo
2012-09-17  5:34 ` [PATCH 05/34] ARM: imx: move platform device code into mach-imx Shawn Guo
2012-09-17  5:34 ` [PATCH 06/34] ARM: imx: merge plat-mxc " Shawn Guo
2012-09-18  8:08   ` Shawn Guo
2012-09-17  5:34 ` [PATCH 07/34] ARM: imx: include common.h rather than mach/common.h Shawn Guo
2012-09-17  5:34 ` [PATCH 08/34] ARM: imx: ARM: imx: include cpuidle.h rather than mach/cpuidle.h Shawn Guo
2012-09-17  5:34 ` [PATCH 09/34] ARM: imx: include iim.h rather than mach/iim.h Shawn Guo
2012-09-17  5:34 ` [PATCH 10/34] ARM: imx: include iram.h rather than mach/iram.h Shawn Guo
2012-09-17  5:34 ` [PATCH 11/34] ARM: imx: include ulpi.h rather than mach/ulpi.h Shawn Guo
2012-09-17  5:34 ` [PATCH 12/34] media: mx1_camera: remove the driver Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  8:33   ` Guennadi Liakhovetski
2012-09-17  8:33     ` Guennadi Liakhovetski
2012-09-18  1:28     ` Shawn Guo
2012-09-18  1:28       ` Shawn Guo
2012-09-18  9:13       ` Arnd Bergmann
2012-09-18  9:13         ` Arnd Bergmann
2012-09-20  1:35         ` Shawn Guo
2012-09-20  1:35           ` Shawn Guo
2012-09-17  5:34 ` [PATCH 13/34] ARM: imx: remove mach/dma-mx1-mx2.h Shawn Guo
2012-09-17  5:34 ` [PATCH 14/34] dma: ipu: rename mach/ipu.h to include/linux/dma/ipu-dma.h Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  9:26   ` Guennadi Liakhovetski
2012-09-17  9:26     ` Guennadi Liakhovetski
2012-09-17  9:26     ` Guennadi Liakhovetski
2012-09-27  7:38     ` Mauro Carvalho Chehab
2012-09-27  7:38       ` Mauro Carvalho Chehab
2012-09-27  7:38       ` Mauro Carvalho Chehab
2012-09-17  5:34 ` [PATCH 15/34] dma: imx-sdma: remove unneeded mach/hardware.h inclusion Shawn Guo
2012-09-17  5:34 ` [PATCH 16/34] ASoC: imx-ssi: " Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17 11:45   ` Mark Brown
2012-09-17 11:45     ` Mark Brown
2012-09-17 14:30     ` Arnd Bergmann
2012-09-17 14:30       ` Arnd Bergmann
2012-09-19  3:23       ` Mark Brown
2012-09-19  3:23         ` Mark Brown
2012-09-19  8:01         ` Arnd Bergmann
2012-09-19  8:01           ` Arnd Bergmann
2012-09-19 11:44           ` Mark Brown
2012-09-19 11:44             ` Mark Brown
2012-09-17  5:34 ` [PATCH 17/34] usb: ehci-mxc: " Shawn Guo
2012-09-17 11:18   ` Greg Kroah-Hartman
2012-09-17  5:34 ` [PATCH 18/34] video: mx3fb: " Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  5:34 ` [PATCH 19/34] watchdog: imx2_wdt: " Shawn Guo
2012-09-17  5:34   ` Shawn Guo
     [not found] ` <1347860103-4141-1-git-send-email-shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-09-17  5:34   ` [PATCH 20/34] i2c: imx: remove " Shawn Guo
2012-09-17  5:34     ` Shawn Guo
2012-09-17  5:34 ` [PATCH 21/34] mtd: mxc_nand: " Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  5:34 ` [PATCH 22/34] rtc: mxc_rtc: " Shawn Guo
2012-09-17  5:34 ` Shawn Guo [this message]
2012-09-17  5:34 ` [PATCH 24/34] dma: imx-dma: retrieve MEM and IRQ from resources Shawn Guo
2012-09-17  5:34 ` [PATCH 25/34] dma: imx-dma: remove mach/hardware.h inclusion Shawn Guo
2012-09-17  7:58   ` Sascha Hauer
2012-09-18  1:40     ` Shawn Guo
2012-09-21  2:49     ` Shawn Guo
2012-09-17  5:34 ` [PATCH 26/34] media: mx2_camera: remove dead code in mx2_camera_add_device Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  8:18   ` Guennadi Liakhovetski
2012-09-17  8:18     ` Guennadi Liakhovetski
2012-09-17 13:36     ` javier Martin
2012-09-17 13:36       ` javier Martin
2012-09-18  1:49     ` Shawn Guo
2012-09-18  1:49       ` Shawn Guo
2012-09-17  5:34 ` [PATCH 27/34] media: mx2_camera: use managed functions to clean up code Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  9:11   ` Guennadi Liakhovetski
2012-09-17  9:11     ` Guennadi Liakhovetski
2012-09-17 13:36     ` javier Martin
2012-09-17 13:36       ` javier Martin
2012-09-18  7:43       ` Shawn Guo
2012-09-18  7:43         ` Shawn Guo
2012-09-18  8:34         ` javier Martin
2012-09-18  8:34           ` javier Martin
2012-09-17  5:34 ` [PATCH 28/34] media: mx2_camera: remove mach/hardware.h inclusion Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  9:21   ` Guennadi Liakhovetski
2012-09-17  9:21     ` Guennadi Liakhovetski
2012-09-17 13:43     ` javier Martin
2012-09-17 13:43       ` javier Martin
2012-09-17 13:59       ` Guennadi Liakhovetski
2012-09-17 13:59         ` Guennadi Liakhovetski
2012-09-18  8:35         ` javier Martin
2012-09-18  8:35           ` javier Martin
2012-09-27  7:36           ` Mauro Carvalho Chehab
2012-09-27  7:36             ` Mauro Carvalho Chehab
2012-10-06  8:16             ` Shawn Guo
2012-10-06  8:16               ` Shawn Guo
2012-09-17  5:34 ` [PATCH 29/34] mmc: mxcmmc: " Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  5:41   ` Chris Ball
2012-09-17  5:41     ` Chris Ball
2012-09-18  9:18     ` javier Martin
2012-09-18  9:18       ` javier Martin
2012-09-17  5:34 ` [PATCH 30/34] video: imxfb: " Shawn Guo
2012-09-17  5:34   ` Shawn Guo
2012-09-17  5:35 ` [PATCH 31/34] ARM: imx: move debug macros to include/debug Shawn Guo
2012-09-17  5:35 ` [PATCH 32/34] ARM: imx: include hardware.h rather than mach/hardware.h Shawn Guo
2012-09-17  5:35 ` [PATCH 33/34] ARM: imx: remove header file mach/irqs.h Shawn Guo
2012-09-17  5:35   ` Shawn Guo
2012-09-17 11:32   ` Arnd Bergmann
2012-09-17 11:32     ` Arnd Bergmann
2012-09-18  8:13     ` Shawn Guo
2012-09-18  8:13       ` Shawn Guo
2012-09-17 11:46   ` Mark Brown
2012-09-17 11:46     ` Mark Brown
2012-09-17  5:35 ` [PATCH 34/34] ARM: imx: enable multi-platform build Shawn Guo
2012-09-17 11:44   ` Arnd Bergmann
2012-09-17  7:51 ` [PATCH 00/34] i.MX multi-platform support Sascha Hauer
2012-09-17  7:51   ` Sascha Hauer
2012-09-17  7:51   ` Sascha Hauer
2012-09-17  7:51   ` Sascha Hauer
2012-09-17  7:51   ` Sascha Hauer
2012-09-17 11:38   ` Arnd Bergmann
2012-09-17 11:38     ` Arnd Bergmann
2012-09-17 11:38     ` Arnd Bergmann
2012-09-17 11:38     ` Arnd Bergmann
2012-09-18  8:20   ` Shawn Guo
2012-09-18  8:20     ` Shawn Guo
2012-09-18  8:20     ` Shawn Guo
2012-09-18  8:20     ` Shawn Guo
2012-09-18  8:20     ` Shawn Guo
2012-09-18  7:52 ` Sascha Hauer
2012-09-18  7:52   ` Sascha Hauer
2012-09-18  7:52   ` Sascha Hauer
2012-09-18  7:52   ` Sascha Hauer
2012-09-18  7:52   ` Sascha Hauer
2012-09-18  8:05   ` [alsa-devel] " Shawn Guo
2012-09-18  8:05     ` Shawn Guo
2012-09-18  8:05     ` Shawn Guo
2012-09-18  8:05     ` Shawn Guo
2012-09-18  8:05     ` Shawn Guo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1347860103-4141-24-git-send-email-shawn.guo@linaro.org \
    --to=shawn.guo@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.