[PATCH 1/1 RFC] dmaengine: bcm2835: Remove redundant info from channel info

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



There is no need to store the DREQ channel additionally in the channel
structure. This information is already stored in struct dma_slave_config
which is setup by bcm2835_dma_xlate.

Signed-off-by: Alexander Stein <alexanders83@xxxxxx>
---
I compared this driver with the Raspberry Pi foundation kernel and noticed
they set dreq from cfg.slave_id in their bcm2835_dma_prep_slave_sg.
Finding out why they do, I come to the conclusion the channel ID in slave_id
and dreq must be the same each time, even after bcm2835_dma_slave_config has
been called, AFAICS the only position c->cfg is set.
So we can remove the redundant storage.

 drivers/dma/bcm2835-dma.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
index 0723096..6478dc6 100644
--- a/drivers/dma/bcm2835-dma.c
+++ b/drivers/dma/bcm2835-dma.c
@@ -68,7 +68,6 @@ struct bcm2835_chan {
 
 	struct dma_slave_config	cfg;
 	bool cyclic;
-	unsigned int dreq;
 
 	int ch;
 	struct bcm2835_desc *desc;
@@ -415,9 +414,9 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
 			control_block->info |= sync_type;
 
 		/* Setup DREQ channel */
-		if (c->dreq != 0)
+		if (c->cfg.slave_id != 0)
 			control_block->info |=
-				BCM2835_DMA_PER_MAP(c->dreq);
+				BCM2835_DMA_PER_MAP(c->cfg.slave_id);
 
 		/* Length of a frame */
 		control_block->length = period_len;
@@ -545,7 +544,7 @@ static struct dma_chan *bcm2835_dma_xlate(struct of_phandle_args *spec,
 		return NULL;
 
 	/* Set DREQ from param */
-	to_bcm2835_dma_chan(chan)->dreq = spec->args[0];
+	to_bcm2835_dma_chan(chan)->cfg.slave_id = spec->args[0];
 
 	return chan;
 }
-- 
2.3.3

--
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




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux