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