From: H Hartley Sweeten <hsweeten@visionengravers.com>
Date: Mon, 12 Jan 2015 17:55:40 +0000 (-0700)
Subject: staging: comedi: das1800: reduce indent level of das1800_init_dma()
X-Git-Tag: firefly_0821_release~176^2~2320^2~436
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=f19810d21becb4f3a92ce8d0b7cc2a0657a153de;p=firefly-linux-kernel-4.4.55.git

staging: comedi: das1800: reduce indent level of das1800_init_dma()

An IRQ and at least one DMA channel are required to use DMA with this driver.
Move the check to the caller to reduce the indent level of this function.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---

diff --git a/drivers/staging/comedi/drivers/das1800.c b/drivers/staging/comedi/drivers/das1800.c
index be825d21a185..c415b578f5fb 100644
--- a/drivers/staging/comedi/drivers/das1800.c
+++ b/drivers/staging/comedi/drivers/das1800.c
@@ -1240,72 +1240,70 @@ static int das1800_init_dma(struct comedi_device *dev, unsigned int dma0,
 	struct das1800_private *devpriv = dev->private;
 	unsigned long flags;
 
-	/*  need an irq to do dma */
-	if (dev->irq && dma0) {
-		/* encode dma0 and dma1 into 2 digit hexadecimal for switch */
-		switch ((dma0 & 0x7) | (dma1 << 4)) {
-		case 0x5:	/*  dma0 == 5 */
-			devpriv->dma_bits |= DMA_CH5;
-			break;
-		case 0x6:	/*  dma0 == 6 */
-			devpriv->dma_bits |= DMA_CH6;
-			break;
-		case 0x7:	/*  dma0 == 7 */
-			devpriv->dma_bits |= DMA_CH7;
-			break;
-		case 0x65:	/*  dma0 == 5, dma1 == 6 */
-			devpriv->dma_bits |= DMA_CH5_CH6;
-			break;
-		case 0x76:	/*  dma0 == 6, dma1 == 7 */
-			devpriv->dma_bits |= DMA_CH6_CH7;
-			break;
-		case 0x57:	/*  dma0 == 7, dma1 == 5 */
-			devpriv->dma_bits |= DMA_CH7_CH5;
-			break;
-		default:
-			dev_err(dev->class_dev,
-				"only supports dma channels 5 through 7\n");
-			dev_err(dev->class_dev,
-				"Dual dma only allows the following combinations:\n");
-			dev_err(dev->class_dev,
-				"dma 5,6 / 6,7 / or 7,5\n");
-			return -EINVAL;
-		}
-		if (request_dma(dma0, dev->driver->driver_name)) {
+	/* encode dma0 and dma1 into 2 digit hexadecimal for switch */
+	switch ((dma0 & 0x7) | (dma1 << 4)) {
+	case 0x5:	/*  dma0 == 5 */
+		devpriv->dma_bits |= DMA_CH5;
+		break;
+	case 0x6:	/*  dma0 == 6 */
+		devpriv->dma_bits |= DMA_CH6;
+		break;
+	case 0x7:	/*  dma0 == 7 */
+		devpriv->dma_bits |= DMA_CH7;
+		break;
+	case 0x65:	/*  dma0 == 5, dma1 == 6 */
+		devpriv->dma_bits |= DMA_CH5_CH6;
+		break;
+	case 0x76:	/*  dma0 == 6, dma1 == 7 */
+		devpriv->dma_bits |= DMA_CH6_CH7;
+		break;
+	case 0x57:	/*  dma0 == 7, dma1 == 5 */
+		devpriv->dma_bits |= DMA_CH7_CH5;
+		break;
+	default:
+		dev_err(dev->class_dev,
+			"only supports dma channels 5 through 7\n");
+		dev_err(dev->class_dev,
+			"Dual dma only allows the following combinations:\n");
+		dev_err(dev->class_dev,
+			"dma 5,6 / 6,7 / or 7,5\n");
+		return -EINVAL;
+	}
+	if (request_dma(dma0, dev->driver->driver_name)) {
+		dev_err(dev->class_dev,
+			"failed to allocate dma channel %i\n", dma0);
+		return -EINVAL;
+	}
+	devpriv->dma0 = dma0;
+	devpriv->dma_current = dma0;
+	if (dma1) {
+		if (request_dma(dma1, dev->driver->driver_name)) {
 			dev_err(dev->class_dev,
-				"failed to allocate dma channel %i\n", dma0);
+				"failed to allocate dma channel %i\n",
+				dma1);
 			return -EINVAL;
 		}
-		devpriv->dma0 = dma0;
-		devpriv->dma_current = dma0;
-		if (dma1) {
-			if (request_dma(dma1, dev->driver->driver_name)) {
-				dev_err(dev->class_dev,
-					"failed to allocate dma channel %i\n",
-					dma1);
-				return -EINVAL;
-			}
-			devpriv->dma1 = dma1;
-		}
-		devpriv->ai_buf0 = kmalloc(DMA_BUF_SIZE, GFP_KERNEL | GFP_DMA);
-		if (devpriv->ai_buf0 == NULL)
+		devpriv->dma1 = dma1;
+	}
+	devpriv->ai_buf0 = kmalloc(DMA_BUF_SIZE, GFP_KERNEL | GFP_DMA);
+	if (devpriv->ai_buf0 == NULL)
+		return -ENOMEM;
+	devpriv->dma_current_buf = devpriv->ai_buf0;
+	if (dma1) {
+		devpriv->ai_buf1 =
+			kmalloc(DMA_BUF_SIZE, GFP_KERNEL | GFP_DMA);
+		if (devpriv->ai_buf1 == NULL)
 			return -ENOMEM;
-		devpriv->dma_current_buf = devpriv->ai_buf0;
-		if (dma1) {
-			devpriv->ai_buf1 =
-			    kmalloc(DMA_BUF_SIZE, GFP_KERNEL | GFP_DMA);
-			if (devpriv->ai_buf1 == NULL)
-				return -ENOMEM;
-		}
-		flags = claim_dma_lock();
-		disable_dma(devpriv->dma0);
-		set_dma_mode(devpriv->dma0, DMA_MODE_READ);
-		if (dma1) {
-			disable_dma(devpriv->dma1);
-			set_dma_mode(devpriv->dma1, DMA_MODE_READ);
-		}
-		release_dma_lock(flags);
 	}
+	flags = claim_dma_lock();
+	disable_dma(devpriv->dma0);
+	set_dma_mode(devpriv->dma0, DMA_MODE_READ);
+	if (dma1) {
+		disable_dma(devpriv->dma1);
+		set_dma_mode(devpriv->dma1, DMA_MODE_READ);
+	}
+	release_dma_lock(flags);
+
 	return 0;
 }
 
@@ -1437,9 +1435,12 @@ static int das1800_attach(struct comedi_device *dev,
 		}
 	}
 
-	ret = das1800_init_dma(dev, dma0, dma1);
-	if (ret < 0)
-		return ret;
+	/* an irq and one dma channel is required to use dma */
+	if (dev->irq & dma0) {
+		ret = das1800_init_dma(dev, dma0, dma1);
+		if (ret < 0)
+			return ret;
+	}
 
 	if (devpriv->ai_buf0 == NULL) {
 		devpriv->ai_buf0 =