From: rmk+kernel@arm•linux.org.uk (Russell King)
To: linux-arm-kernel@lists•infradead.org
Subject: [CFT 12/31] dmaengine: PL08x: ignore 'direction' argument in dma_slave_config
Date: Thu, 07 Jun 2012 11:49:46 +0100 [thread overview]
Message-ID: <E1ScaHi-0003kl-8T@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20120607104527.GA15973@n2100.arm.linux.org.uk>
Ignore the direction argument in dma_slave_config, and configure both
directions independently. We still check that the configuration for
the intended direction is valid; this check will eventually be dropped.
This check is just for debugging at present.
Acked-by: Linus Walleij <linus.walleij@linaro•org>
Signed-off-by: Russell King <rmk+kernel@arm•linux.org.uk>
---
drivers/dma/amba-pl08x.c | 56 ++++++++++++++-------------------------------
1 files changed, 18 insertions(+), 38 deletions(-)
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index fde801f..50b9a83 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -218,8 +218,6 @@ enum pl08x_dma_chan_state {
* @name: name of channel
* @cd: channel platform data
* @runtime_addr: address for RX/TX according to the runtime config
- * @runtime_direction: current direction of this channel according to
- * runtime config
* @pend_list: queued transactions pending on this channel
* @at: active transaction on this channel
* @lock: a lock for this channel data
@@ -239,7 +237,6 @@ struct pl08x_dma_chan {
struct dma_slave_config cfg;
u32 src_cctl;
u32 dst_cctl;
- enum dma_transfer_direction runtime_direction;
struct list_head pend_list;
struct pl08x_txd *at;
spinlock_t lock;
@@ -1239,50 +1236,31 @@ static int dma_set_runtime_config(struct dma_chan *chan,
{
struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
struct pl08x_driver_data *pl08x = plchan->host;
- enum dma_slave_buswidth addr_width;
- u32 maxburst, cctl = 0;
+ u32 src_cctl, dst_cctl;
if (!plchan->slave)
return -EINVAL;
- /* Transfer direction */
- plchan->runtime_direction = config->direction;
- if (config->direction == DMA_MEM_TO_DEV) {
- addr_width = config->dst_addr_width;
- maxburst = config->dst_maxburst;
- } else if (config->direction == DMA_DEV_TO_MEM) {
- addr_width = config->src_addr_width;
- maxburst = config->src_maxburst;
- } else {
+ dst_cctl = pl08x_get_cctl(plchan, config->dst_addr_width,
+ config->dst_maxburst);
+ if (dst_cctl == ~0 && config->direction == DMA_MEM_TO_DEV) {
dev_err(&pl08x->adev->dev,
- "bad runtime_config: alien transfer direction\n");
+ "bad runtime_config: alien address width (M2D)\n");
return -EINVAL;
}
- cctl = pl08x_get_cctl(plchan, addr_width, maxburst);
- if (cctl == ~0) {
+ src_cctl = pl08x_get_cctl(plchan, config->src_addr_width,
+ config->src_maxburst);
+ if (src_cctl == ~0 && config->direction == DMA_DEV_TO_MEM) {
dev_err(&pl08x->adev->dev,
- "bad runtime_config: alien address width\n");
+ "bad runtime_config: alien address width (D2M)\n");
return -EINVAL;
}
+ plchan->dst_cctl = dst_cctl;
+ plchan->src_cctl = src_cctl;
plchan->cfg = *config;
- if (plchan->runtime_direction == DMA_DEV_TO_MEM) {
- plchan->src_cctl = cctl;
- } else {
- plchan->dst_cctl = cctl;
- }
-
- dev_dbg(&pl08x->adev->dev,
- "configured channel %s (%s) for %s, data width %d, "
- "maxburst %d words, LE, CCTL=0x%08x\n",
- dma_chan_name(chan), plchan->name,
- (config->direction == DMA_DEV_TO_MEM) ? "RX" : "TX",
- addr_width,
- maxburst,
- cctl);
-
return 0;
}
@@ -1470,11 +1448,6 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
return NULL;
}
- if (direction != plchan->runtime_direction)
- dev_err(&pl08x->adev->dev, "%s DMA setup does not match "
- "the direction configured for the PrimeCell\n",
- __func__);
-
/*
* Set up addresses, the PrimeCell configured address
* will take precedence since this may configure the
@@ -1499,6 +1472,13 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
return NULL;
}
+ if (cctl == ~0) {
+ pl08x_free_txd(pl08x, txd);
+ dev_err(&pl08x->adev->dev,
+ "DMA slave configuration botched?\n");
+ return NULL;
+ }
+
txd->cctl = cctl | pl08x_select_bus(src_buses, dst_buses);
if (plchan->cfg.device_fc)
--
1.7.4.4
next prev parent reply other threads:[~2012-06-07 10:49 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-07 10:34 [CFT] DMA engine patches Russell King - ARM Linux
2012-06-07 10:40 ` [CFT 1/3] dmaengine: split out virtual channel DMA support from sa11x0 driver Russell King
2012-06-07 10:41 ` [CFT 2/3] dmaengine: virt-dma: vchan_find_desc() Russell King
2012-06-07 10:41 ` [CFT 3/3] dmaengine: virt-dma: add support for cyclic DMA periodic callbacks Russell King
2012-06-07 10:42 ` [CFT] SA11x0 patches Russell King - ARM Linux
2012-06-07 10:43 ` [CFT 1/2] dmaengine: sa11x0-dma: fix DMA residue support Russell King
2012-06-07 10:43 ` [CFT 2/2] dmaengine: sa11x0-dma: add cyclic DMA support Russell King
2012-06-07 10:45 ` [CFT] PL08x patches Russell King - ARM Linux
2012-06-07 10:46 ` [CFT 01/31] dmaengine: PL08x: remove runtime PM support Russell King
2012-06-07 10:46 ` [CFT 02/31] dmaengine: PL08x: fix missed dma_transfer_direction fixup Russell King
2012-06-07 10:46 ` [CFT 03/31] dmaengine: PL08x: remove redundant spinlock Russell King
2012-06-07 10:47 ` [CFT 04/31] dmaengine: PL08x: remove circular_buffer boolean from channel data Russell King
2012-06-07 10:47 ` [CFT 05/31] dmaengine: PL08x: clean up get_signal/put_signal Russell King
2012-06-10 10:03 ` Russell King - ARM Linux
2012-06-07 10:47 ` [CFT 06/31] dmaengine: PL08x: move private data structures into amba-pl08x.c Russell King
2012-06-07 10:48 ` [CFT 07/31] dmaengine: PL08x: constify channel names and bus_id strings Russell King
2012-06-07 10:48 ` [CFT 08/31] dmaengine: PL08x: get src/dst addr direct from dma_slave_config struct Russell King
2012-06-07 10:48 ` [CFT 09/31] dmaengine: PL08x: get rid of device_fc in struct pl08x_dma_chan Russell King
2012-06-07 10:49 ` [CFT 10/31] dmaengine: PL08x: move the bus and increment selection to dma prepare function Russell King
2012-06-07 10:49 ` [CFT 11/31] dmaengine: PL08x: extract function to to generate cctl values Russell King
2012-06-07 10:49 ` Russell King [this message]
2012-06-07 10:50 ` [CFT 13/31] dmaengine: PL08x: get rid of unnecessary checks in dma_slave_config Russell King
2012-06-07 10:50 ` [CFT 14/31] dmaengine: PL08x: split DMA signal muxing from channel alloc Russell King
2012-06-07 10:50 ` [CFT 15/31] dmaengine: PL08x: move DMA signal muxing into pl08x_dma_chan struct Russell King
2012-06-07 10:51 ` [CFT 16/31] dmaengine: PL08x: track mux usage on a per-channel basis Russell King
2012-06-07 10:51 ` [CFT 17/31] dmaengine: PL08x: convert to a list of completed descriptors Russell King
2012-06-07 10:51 ` [CFT 18/31] dmaengine: PL08x: move DMA signal muxing into slave prepare code Russell King
2012-06-07 10:52 ` [CFT 19/31] dmaengine: PL08x: remove waiting descriptor pointer Russell King
2012-06-07 10:52 ` [CFT 20/31] dmaengine: PL08x: re-jig the starting of txds Russell King
2012-06-07 10:52 ` [CFT 21/31] dmaengine: PL08x: split the pend_list in two Russell King
2012-06-07 10:53 ` [CFT 22/31] dmaengine: PL08x: start next descriptor from irq context Russell King
2012-06-07 10:53 ` [CFT 23/31] dmaengine: PL08x: rejig physical channel allocation Russell King
2012-06-07 10:53 ` [CFT 24/31] dmaengine: PL08x: convert to use virt-dma structs Russell King
2012-06-07 10:54 ` [CFT 25/31] dmaengine: PL08x: use vchan's spinlock Russell King
2012-06-07 10:54 ` [CFT 26/31] dmaengine: PL08x: convert to use vchan submitted/issued lists Russell King
2012-06-07 10:54 ` [CFT 27/31] dmaengine: PL08x: convert to use vchan done list Russell King
2012-06-07 10:55 ` [CFT 28/31] dmaengine: PL08x: fix tx_status function to return correct residue Russell King
2012-06-07 10:55 ` [CFT 29/31] dmaengine: PL08x: get rid of pl08x_prep_channel_resources Russell King
2012-06-07 10:55 ` [CFT 30/31] dmaengine: PL08x: get rid of write only pool_ctr and free_txd locking Russell King
2012-06-07 10:56 ` [CFT 31/31] dmaengine: PL08x: ensure all descriptors are freed when channel is released Russell King
2012-06-08 8:32 ` [CFT] PL08x patches Linus Walleij
2012-06-07 11:06 ` [CFT] OMAP patches Russell King - ARM Linux
2012-06-07 11:06 ` [CFT 01/11] dmaengine: add OMAP DMA engine driver Russell King
2012-06-07 12:40 ` S, Venkatraman
2012-06-07 12:45 ` S, Venkatraman
2012-06-08 6:19 ` Shilimkar, Santosh
2012-06-08 9:02 ` Russell King - ARM Linux
2012-06-08 10:00 ` Shilimkar, Santosh
2012-06-08 10:01 ` Russell King - ARM Linux
2012-06-07 11:06 ` [CFT 02/11] mmc: omap_hsmmc: add DMA engine support Russell King
2012-06-07 17:04 ` Tony Lindgren
2012-06-08 8:53 ` Linus Walleij
2012-06-07 11:07 ` [CFT 03/11] mmc: omap_hsmmc: remove private DMA API implementation Russell King
2012-06-07 17:04 ` Tony Lindgren
2012-06-07 17:53 ` S, Venkatraman
2012-07-10 21:48 ` Kevin Hilman
2012-06-07 11:07 ` [CFT 04/11] mmc: omap: add DMA engine support Russell King
2012-06-07 17:05 ` Tony Lindgren
2012-06-08 8:52 ` Linus Walleij
2012-06-07 11:07 ` [CFT 05/11] mmc: omap: remove private DMA API implementation Russell King
2012-06-07 17:05 ` Tony Lindgren
2012-06-07 11:08 ` [CFT 06/11] ARM: omap: remove mmc platform data dma_mask and initialization Russell King
2012-06-07 17:06 ` Tony Lindgren
2012-06-07 11:08 ` [CFT 07/11] spi: omap2-mcspi: add DMA engine support Russell King
2012-06-08 8:50 ` Linus Walleij
2012-06-14 11:53 ` Russell King - ARM Linux
2012-06-14 12:08 ` Russell King - ARM Linux
2012-06-14 12:50 ` Russell King - ARM Linux
2012-06-14 14:07 ` [PATCH] SPI: OMAP: fix over-eager devm_xxx() conversion (was: Re: [CFT 07/11] spi: omap2-mcspi: add DMA engine support) Russell King - ARM Linux
2012-06-16 10:33 ` Russell King - ARM Linux
2012-06-18 6:41 ` [CFT 07/11] spi: omap2-mcspi: add DMA engine support Shubhrajyoti
2012-06-07 11:08 ` [CFT 08/11] spi: omap2-mcspi: remove private DMA API implementation Russell King
2012-06-07 11:09 ` [CFT 09/11] mtd: omap2: add DMA engine support Russell King
2012-06-07 12:49 ` Artem Bityutskiy
2012-06-07 13:11 ` Russell King - ARM Linux
2012-06-07 13:28 ` Artem Bityutskiy
2012-06-07 17:10 ` Tony Lindgren
2012-06-07 11:09 ` [CFT 10/11] mtd: omap2: remove private DMA API implementation Russell King
2012-06-07 11:09 ` [CFT 11/11] Add feature removal of old OMAP private DMA implementation Russell King
2012-06-07 17:07 ` Tony Lindgren
2012-06-08 6:10 ` Shilimkar, Santosh
2012-06-08 18:37 ` Rob Landley
2012-06-09 8:32 ` Russell King - ARM Linux
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=E1ScaHi-0003kl-8T@rmk-PC.arm.linux.org.uk \
--to=rmk+kernel@arm$(echo .)linux.org.uk \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox