All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King <rmk+kernel@arm.linux.org.uk>
To: linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org
Cc: Dan Williams <dan.j.williams@intel.com>,
	Vinod Koul <vinod.koul@intel.com>
Subject: [CFT 18/31] dmaengine: PL08x: move DMA signal muxing into slave prepare code
Date: Thu, 07 Jun 2012 11:51:48 +0100	[thread overview]
Message-ID: <E1ScaJg-0003lN-SY@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20120607104527.GA15973@n2100.arm.linux.org.uk>

Move the DMA request muxing into the slave prepare code and txd
release/completion code.  This means we only hold the DMA request
mux while there are descriptors waiting to be started or are in
progress.

This leaves txd->direction as a write-only variable; remove it.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 drivers/dma/amba-pl08x.c |   79 ++++++++++++++++++---------------------------
 1 files changed, 32 insertions(+), 47 deletions(-)

diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index 54e3eb0..e04ca0b 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -168,7 +168,6 @@ struct pl08x_sg {
  * @tx: async tx descriptor
  * @node: node for txd list for channels
  * @dsg_list: list of children sg's
- * @direction: direction of transfer
  * @llis_bus: DMA memory address (physical) start for the LLIs
  * @llis_va: virtual memory address start for the LLIs
  * @cctl: control reg values for current txd
@@ -178,7 +177,6 @@ struct pl08x_txd {
 	struct dma_async_tx_descriptor tx;
 	struct list_head node;
 	struct list_head dsg_list;
-	enum dma_transfer_direction direction;
 	dma_addr_t llis_bus;
 	struct pl08x_lli *llis_va;
 	/* Default cctl value for LLIs */
@@ -997,6 +995,7 @@ static void pl08x_free_txd_list(struct pl08x_driver_data *pl08x,
 	if (!list_empty(&plchan->pend_list)) {
 		list_for_each_entry_safe(txdi,
 					 next, &plchan->pend_list, node) {
+			pl08x_release_mux(plchan);
 			list_del(&txdi->node);
 			pl08x_free_txd(pl08x, txdi);
 		}
@@ -1018,12 +1017,10 @@ static void pl08x_free_chan_resources(struct dma_chan *chan)
 /*
  * This should be called with the channel plchan->lock held
  */
-static int prep_phy_channel(struct pl08x_dma_chan *plchan,
-			    struct pl08x_txd *txd)
+static int prep_phy_channel(struct pl08x_dma_chan *plchan)
 {
 	struct pl08x_driver_data *pl08x = plchan->host;
 	struct pl08x_phy_chan *ch;
-	int ret;
 
 	/* Check if we already have a channel */
 	if (plchan->phychan) {
@@ -1038,36 +1035,11 @@ static int prep_phy_channel(struct pl08x_dma_chan *plchan,
 		return -EBUSY;
 	}
 
-	/*
-	 * OK we have a physical channel: for memcpy() this is all we
-	 * need, but for slaves the physical signals may be muxed!
-	 * Can the platform allow us to use this channel?
-	 */
-	if (plchan->slave) {
-		ret = pl08x_request_mux(plchan);
-		if (ret < 0) {
-			dev_dbg(&pl08x->adev->dev,
-				"unable to use physical channel %d for transfer on %s due to platform restrictions\n",
-				ch->id, plchan->name);
-			/* Release physical channel & return */
-			pl08x_put_phy_channel(pl08x, ch);
-			return -EBUSY;
-		}
-	}
-
 	plchan->phychan = ch;
-	dev_dbg(&pl08x->adev->dev, "allocated physical channel %d and signal %d for xfer on %s\n",
-		 ch->id,
-		 plchan->signal,
-		 plchan->name);
+	dev_dbg(&pl08x->adev->dev, "allocated physical channel %d for xfer on %s\n",
+		 ch->id, plchan->name);
 
 got_channel:
-	/* Assign the flow control signal to this channel */
-	if (txd->direction == DMA_MEM_TO_DEV)
-		txd->ccfg |= plchan->signal << PL080_CONFIG_DST_SEL_SHIFT;
-	else if (txd->direction == DMA_DEV_TO_MEM)
-		txd->ccfg |= plchan->signal << PL080_CONFIG_SRC_SEL_SHIFT;
-
 	plchan->phychan_hold++;
 
 	return 0;
@@ -1077,7 +1049,6 @@ static void release_phy_channel(struct pl08x_dma_chan *plchan)
 {
 	struct pl08x_driver_data *pl08x = plchan->host;
 
-	pl08x_release_mux(plchan);
 	pl08x_put_phy_channel(pl08x, plchan->phychan);
 	plchan->phychan = NULL;
 }
@@ -1340,19 +1311,12 @@ static int pl08x_prep_channel_resources(struct pl08x_dma_chan *plchan,
 	 * See if we already have a physical channel allocated,
 	 * else this is the time to try to get one.
 	 */
-	ret = prep_phy_channel(plchan, txd);
+	ret = prep_phy_channel(plchan);
 	if (ret) {
 		/*
 		 * No physical channel was available.
 		 *
 		 * memcpy transfers can be sorted out at submission time.
-		 *
-		 * Slave transfers may have been denied due to platform
-		 * channel muxing restrictions.  Since there is no guarantee
-		 * that this will ever be resolved, and the signal must be
-		 * acquired AFTER acquiring the physical channel, we will let
-		 * them be NACK:ed with -EBUSY here. The drivers can retry
-		 * the prep() call if they are eager on doing this using DMA.
 		 */
 		if (plchan->slave) {
 			pl08x_free_txd_list(pl08x, plchan);
@@ -1423,7 +1387,6 @@ static struct dma_async_tx_descriptor *pl08x_prep_dma_memcpy(
 	}
 	list_add_tail(&dsg->node, &txd->dsg_list);
 
-	txd->direction = DMA_MEM_TO_MEM;
 	dsg->src_addr = src;
 	dsg->dst_addr = dest;
 	dsg->len = len;
@@ -1477,8 +1440,6 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
 	 * will take precedence since this may configure the
 	 * channel target address dynamically at runtime.
 	 */
-	txd->direction = direction;
-
 	if (direction == DMA_MEM_TO_DEV) {
 		cctl = PL080_CONTROL_SRC_INCR;
 		slave_addr = plchan->cfg.dst_addr;
@@ -1519,9 +1480,28 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
 
 	txd->ccfg |= tmp << PL080_CONFIG_FLOW_CONTROL_SHIFT;
 
+	ret = pl08x_request_mux(plchan);
+	if (ret < 0) {
+		pl08x_free_txd(pl08x, txd);
+		dev_dbg(&pl08x->adev->dev,
+			"unable to mux for transfer on %s due to platform restrictions\n",
+			plchan->name);
+		return NULL;
+	}
+
+	dev_dbg(&pl08x->adev->dev, "allocated DMA request signal %d for xfer on %s\n",
+		 plchan->signal, plchan->name);
+
+	/* Assign the flow control signal to this channel */
+	if (direction == DMA_MEM_TO_DEV)
+		txd->ccfg |= plchan->signal << PL080_CONFIG_DST_SEL_SHIFT;
+	else
+		txd->ccfg |= plchan->signal << PL080_CONFIG_SRC_SEL_SHIFT;
+
 	for_each_sg(sgl, sg, sg_len, tmp) {
 		dsg = kzalloc(sizeof(struct pl08x_sg), GFP_NOWAIT);
 		if (!dsg) {
+			pl08x_release_mux(plchan);
 			pl08x_free_txd(pl08x, txd);
 			dev_err(&pl08x->adev->dev, "%s no mem for pl080 sg\n",
 					__func__);
@@ -1586,6 +1566,8 @@ static int pl08x_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
 		}
 		/* Dequeue jobs and free LLIs */
 		if (plchan->at) {
+			/* Killing this one off, release its mux */
+			pl08x_release_mux(plchan);
 			pl08x_free_txd(pl08x, plchan->at);
 			plchan->at = NULL;
 		}
@@ -1702,7 +1684,6 @@ static void pl08x_tasklet(unsigned long data)
 
 		/*
 		 * No more jobs, so free up the physical channel
-		 * Free any allocated signal on slave transfers too
 		 */
 		release_phy_channel(plchan);
 		plchan->state = PL08X_CHAN_IDLE;
@@ -1720,8 +1701,7 @@ static void pl08x_tasklet(unsigned long data)
 				int ret;
 
 				/* This should REALLY not fail now */
-				ret = prep_phy_channel(waiting,
-						       waiting->waiting);
+				ret = prep_phy_channel(waiting);
 				BUG_ON(ret);
 				waiting->phychan_hold--;
 				waiting->state = PL08X_CHAN_RUNNING;
@@ -1794,6 +1774,11 @@ static irqreturn_t pl08x_irq(int irq, void *dev)
 			tx = plchan->at;
 			if (tx) {
 				plchan->at = NULL;
+				/*
+				 * This descriptor is done, release its mux
+				 * reservation.
+				 */
+				pl08x_release_mux(plchan);
 				dma_cookie_complete(&tx->tx);
 				list_add_tail(&tx->node, &plchan->done_list);
 			}
-- 
1.7.4.4


WARNING: multiple messages have this Message-ID (diff)
From: rmk+kernel@arm.linux.org.uk (Russell King)
To: linux-arm-kernel@lists.infradead.org
Subject: [CFT 18/31] dmaengine: PL08x: move DMA signal muxing into slave prepare code
Date: Thu, 07 Jun 2012 11:51:48 +0100	[thread overview]
Message-ID: <E1ScaJg-0003lN-SY@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20120607104527.GA15973@n2100.arm.linux.org.uk>

Move the DMA request muxing into the slave prepare code and txd
release/completion code.  This means we only hold the DMA request
mux while there are descriptors waiting to be started or are in
progress.

This leaves txd->direction as a write-only variable; remove it.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 drivers/dma/amba-pl08x.c |   79 ++++++++++++++++++---------------------------
 1 files changed, 32 insertions(+), 47 deletions(-)

diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index 54e3eb0..e04ca0b 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -168,7 +168,6 @@ struct pl08x_sg {
  * @tx: async tx descriptor
  * @node: node for txd list for channels
  * @dsg_list: list of children sg's
- * @direction: direction of transfer
  * @llis_bus: DMA memory address (physical) start for the LLIs
  * @llis_va: virtual memory address start for the LLIs
  * @cctl: control reg values for current txd
@@ -178,7 +177,6 @@ struct pl08x_txd {
 	struct dma_async_tx_descriptor tx;
 	struct list_head node;
 	struct list_head dsg_list;
-	enum dma_transfer_direction direction;
 	dma_addr_t llis_bus;
 	struct pl08x_lli *llis_va;
 	/* Default cctl value for LLIs */
@@ -997,6 +995,7 @@ static void pl08x_free_txd_list(struct pl08x_driver_data *pl08x,
 	if (!list_empty(&plchan->pend_list)) {
 		list_for_each_entry_safe(txdi,
 					 next, &plchan->pend_list, node) {
+			pl08x_release_mux(plchan);
 			list_del(&txdi->node);
 			pl08x_free_txd(pl08x, txdi);
 		}
@@ -1018,12 +1017,10 @@ static void pl08x_free_chan_resources(struct dma_chan *chan)
 /*
  * This should be called with the channel plchan->lock held
  */
-static int prep_phy_channel(struct pl08x_dma_chan *plchan,
-			    struct pl08x_txd *txd)
+static int prep_phy_channel(struct pl08x_dma_chan *plchan)
 {
 	struct pl08x_driver_data *pl08x = plchan->host;
 	struct pl08x_phy_chan *ch;
-	int ret;
 
 	/* Check if we already have a channel */
 	if (plchan->phychan) {
@@ -1038,36 +1035,11 @@ static int prep_phy_channel(struct pl08x_dma_chan *plchan,
 		return -EBUSY;
 	}
 
-	/*
-	 * OK we have a physical channel: for memcpy() this is all we
-	 * need, but for slaves the physical signals may be muxed!
-	 * Can the platform allow us to use this channel?
-	 */
-	if (plchan->slave) {
-		ret = pl08x_request_mux(plchan);
-		if (ret < 0) {
-			dev_dbg(&pl08x->adev->dev,
-				"unable to use physical channel %d for transfer on %s due to platform restrictions\n",
-				ch->id, plchan->name);
-			/* Release physical channel & return */
-			pl08x_put_phy_channel(pl08x, ch);
-			return -EBUSY;
-		}
-	}
-
 	plchan->phychan = ch;
-	dev_dbg(&pl08x->adev->dev, "allocated physical channel %d and signal %d for xfer on %s\n",
-		 ch->id,
-		 plchan->signal,
-		 plchan->name);
+	dev_dbg(&pl08x->adev->dev, "allocated physical channel %d for xfer on %s\n",
+		 ch->id, plchan->name);
 
 got_channel:
-	/* Assign the flow control signal to this channel */
-	if (txd->direction == DMA_MEM_TO_DEV)
-		txd->ccfg |= plchan->signal << PL080_CONFIG_DST_SEL_SHIFT;
-	else if (txd->direction == DMA_DEV_TO_MEM)
-		txd->ccfg |= plchan->signal << PL080_CONFIG_SRC_SEL_SHIFT;
-
 	plchan->phychan_hold++;
 
 	return 0;
@@ -1077,7 +1049,6 @@ static void release_phy_channel(struct pl08x_dma_chan *plchan)
 {
 	struct pl08x_driver_data *pl08x = plchan->host;
 
-	pl08x_release_mux(plchan);
 	pl08x_put_phy_channel(pl08x, plchan->phychan);
 	plchan->phychan = NULL;
 }
@@ -1340,19 +1311,12 @@ static int pl08x_prep_channel_resources(struct pl08x_dma_chan *plchan,
 	 * See if we already have a physical channel allocated,
 	 * else this is the time to try to get one.
 	 */
-	ret = prep_phy_channel(plchan, txd);
+	ret = prep_phy_channel(plchan);
 	if (ret) {
 		/*
 		 * No physical channel was available.
 		 *
 		 * memcpy transfers can be sorted out at submission time.
-		 *
-		 * Slave transfers may have been denied due to platform
-		 * channel muxing restrictions.  Since there is no guarantee
-		 * that this will ever be resolved, and the signal must be
-		 * acquired AFTER acquiring the physical channel, we will let
-		 * them be NACK:ed with -EBUSY here. The drivers can retry
-		 * the prep() call if they are eager on doing this using DMA.
 		 */
 		if (plchan->slave) {
 			pl08x_free_txd_list(pl08x, plchan);
@@ -1423,7 +1387,6 @@ static struct dma_async_tx_descriptor *pl08x_prep_dma_memcpy(
 	}
 	list_add_tail(&dsg->node, &txd->dsg_list);
 
-	txd->direction = DMA_MEM_TO_MEM;
 	dsg->src_addr = src;
 	dsg->dst_addr = dest;
 	dsg->len = len;
@@ -1477,8 +1440,6 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
 	 * will take precedence since this may configure the
 	 * channel target address dynamically at runtime.
 	 */
-	txd->direction = direction;
-
 	if (direction == DMA_MEM_TO_DEV) {
 		cctl = PL080_CONTROL_SRC_INCR;
 		slave_addr = plchan->cfg.dst_addr;
@@ -1519,9 +1480,28 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
 
 	txd->ccfg |= tmp << PL080_CONFIG_FLOW_CONTROL_SHIFT;
 
+	ret = pl08x_request_mux(plchan);
+	if (ret < 0) {
+		pl08x_free_txd(pl08x, txd);
+		dev_dbg(&pl08x->adev->dev,
+			"unable to mux for transfer on %s due to platform restrictions\n",
+			plchan->name);
+		return NULL;
+	}
+
+	dev_dbg(&pl08x->adev->dev, "allocated DMA request signal %d for xfer on %s\n",
+		 plchan->signal, plchan->name);
+
+	/* Assign the flow control signal to this channel */
+	if (direction == DMA_MEM_TO_DEV)
+		txd->ccfg |= plchan->signal << PL080_CONFIG_DST_SEL_SHIFT;
+	else
+		txd->ccfg |= plchan->signal << PL080_CONFIG_SRC_SEL_SHIFT;
+
 	for_each_sg(sgl, sg, sg_len, tmp) {
 		dsg = kzalloc(sizeof(struct pl08x_sg), GFP_NOWAIT);
 		if (!dsg) {
+			pl08x_release_mux(plchan);
 			pl08x_free_txd(pl08x, txd);
 			dev_err(&pl08x->adev->dev, "%s no mem for pl080 sg\n",
 					__func__);
@@ -1586,6 +1566,8 @@ static int pl08x_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
 		}
 		/* Dequeue jobs and free LLIs */
 		if (plchan->at) {
+			/* Killing this one off, release its mux */
+			pl08x_release_mux(plchan);
 			pl08x_free_txd(pl08x, plchan->at);
 			plchan->at = NULL;
 		}
@@ -1702,7 +1684,6 @@ static void pl08x_tasklet(unsigned long data)
 
 		/*
 		 * No more jobs, so free up the physical channel
-		 * Free any allocated signal on slave transfers too
 		 */
 		release_phy_channel(plchan);
 		plchan->state = PL08X_CHAN_IDLE;
@@ -1720,8 +1701,7 @@ static void pl08x_tasklet(unsigned long data)
 				int ret;
 
 				/* This should REALLY not fail now */
-				ret = prep_phy_channel(waiting,
-						       waiting->waiting);
+				ret = prep_phy_channel(waiting);
 				BUG_ON(ret);
 				waiting->phychan_hold--;
 				waiting->state = PL08X_CHAN_RUNNING;
@@ -1794,6 +1774,11 @@ static irqreturn_t pl08x_irq(int irq, void *dev)
 			tx = plchan->at;
 			if (tx) {
 				plchan->at = NULL;
+				/*
+				 * This descriptor is done, release its mux
+				 * reservation.
+				 */
+				pl08x_release_mux(plchan);
 				dma_cookie_complete(&tx->tx);
 				list_add_tail(&tx->node, &plchan->done_list);
 			}
-- 
1.7.4.4

  parent reply	other threads:[~2012-06-07 10:51 UTC|newest]

Thread overview: 172+ 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:34 ` 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:40   ` Russell King
2012-06-07 10:41 ` [CFT 2/3] dmaengine: virt-dma: vchan_find_desc() Russell King
2012-06-07 10:41   ` 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:41   ` Russell King
2012-06-07 10:42   ` [CFT] SA11x0 patches Russell King - ARM Linux
2012-06-07 10:42     ` 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       ` Russell King
2012-06-07 10:43     ` [CFT 2/2] dmaengine: sa11x0-dma: add cyclic DMA support Russell King
2012-06-07 10:43       ` Russell King
2012-06-07 10:45   ` [CFT] PL08x patches Russell King - ARM Linux
2012-06-07 10:45     ` 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       ` 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       ` Russell King
2012-06-07 10:46     ` [CFT 03/31] dmaengine: PL08x: remove redundant spinlock Russell King
2012-06-07 10:46       ` 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       ` Russell King
2012-06-07 10:47     ` [CFT 05/31] dmaengine: PL08x: clean up get_signal/put_signal Russell King
2012-06-07 10:47       ` Russell King
2012-06-10 10:03       ` Russell King - ARM Linux
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:47       ` 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       ` 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       ` 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:48       ` 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       ` 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
2012-06-07 10:49     ` [CFT 12/31] dmaengine: PL08x: ignore 'direction' argument in dma_slave_config Russell King
2012-06-07 10:49       ` Russell King
2012-06-07 10:50     ` [CFT 13/31] dmaengine: PL08x: get rid of unnecessary checks " Russell King
2012-06-07 10:50       ` 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       ` 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:50       ` 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       ` 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       ` Russell King
2012-06-07 10:51     ` Russell King [this message]
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       ` 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       ` Russell King
2012-06-07 10:52     ` [CFT 21/31] dmaengine: PL08x: split the pend_list in two Russell King
2012-06-07 10:52       ` 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       ` Russell King
2012-06-07 10:53     ` [CFT 23/31] dmaengine: PL08x: rejig physical channel allocation Russell King
2012-06-07 10:53       ` Russell King
2012-06-07 10:53     ` [CFT 24/31] dmaengine: PL08x: convert to use virt-dma structs Russell King
2012-06-07 10:53       ` Russell King
2012-06-07 10:54     ` [CFT 25/31] dmaengine: PL08x: use vchan's spinlock Russell King
2012-06-07 10:54       ` 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       ` Russell King
2012-06-07 10:54     ` [CFT 27/31] dmaengine: PL08x: convert to use vchan done list Russell King
2012-06-07 10:54       ` 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       ` 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       ` 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:55       ` 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-07 10:56       ` Russell King
2012-06-08  8:32     ` [CFT] PL08x patches Linus Walleij
2012-06-08  8:32       ` Linus Walleij
2012-06-07 11:06   ` [CFT] OMAP patches Russell King - ARM Linux
2012-06-07 11:06     ` Russell King - ARM Linux
2012-06-07 11:06     ` [CFT 01/11] dmaengine: add OMAP DMA engine driver Russell King
2012-06-07 11:06       ` Russell King
2012-06-07 12:40       ` S, Venkatraman
2012-06-07 12:40         ` S, Venkatraman
2012-06-07 12:45         ` S, Venkatraman
2012-06-07 12:45           ` S, Venkatraman
2012-06-08  6:19       ` Shilimkar, Santosh
2012-06-08  6:19         ` Shilimkar, Santosh
2012-06-08  9:02       ` Russell King - ARM Linux
2012-06-08  9:02         ` Russell King - ARM Linux
2012-06-08 10:00         ` Shilimkar, Santosh
2012-06-08 10:00           ` Shilimkar, Santosh
2012-06-08 10:01           ` Russell King - ARM Linux
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 11:06       ` Russell King
2012-06-07 17:04       ` Tony Lindgren
2012-06-07 17:04         ` Tony Lindgren
2012-06-08  8:53       ` Linus Walleij
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 11:07       ` Russell King
2012-06-07 17:04       ` Tony Lindgren
2012-06-07 17:04         ` Tony Lindgren
2012-06-07 17:53       ` S, Venkatraman
2012-06-07 17:53         ` S, Venkatraman
2012-07-10 21:48       ` Kevin Hilman
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 11:07       ` Russell King
2012-06-07 17:05       ` Tony Lindgren
2012-06-07 17:05         ` Tony Lindgren
2012-06-08  8:52       ` Linus Walleij
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 11:07       ` Russell King
2012-06-07 17:05       ` Tony Lindgren
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 11:08       ` Russell King
2012-06-07 17:06       ` Tony Lindgren
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-07 11:08       ` Russell King
2012-06-08  8:50       ` Linus Walleij
2012-06-08  8:50         ` Linus Walleij
2012-06-14 11:53       ` Russell King - ARM Linux
2012-06-14 11:53         ` Russell King - ARM Linux
2012-06-14 12:08         ` 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 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-14 14:07               ` Russell King - ARM Linux
     [not found]               ` <20120614140712.GH31187-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2012-06-16 10:33                 ` 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-18  6:41               ` Shubhrajyoti
2012-06-07 11:08     ` [CFT 08/11] spi: omap2-mcspi: remove private DMA API implementation Russell King
2012-06-07 11:08       ` Russell King
2012-06-07 11:09     ` [CFT 09/11] mtd: omap2: add DMA engine support Russell King
2012-06-07 11:09       ` Russell King
2012-06-07 11:09       ` Russell King
2012-06-07 12:49       ` Artem Bityutskiy
2012-06-07 12:49         ` Artem Bityutskiy
2012-06-07 12:49         ` Artem Bityutskiy
2012-06-07 13:11         ` Russell King - ARM Linux
2012-06-07 13:11           ` Russell King - ARM Linux
2012-06-07 13:11           ` Russell King - ARM Linux
2012-06-07 13:28           ` Artem Bityutskiy
2012-06-07 13:28             ` Artem Bityutskiy
2012-06-07 13:28             ` Artem Bityutskiy
2012-06-07 17:10             ` Tony Lindgren
2012-06-07 17:10               ` Tony Lindgren
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       ` Russell King
2012-06-07 11:09       ` Russell King
2012-06-07 11:09     ` [CFT 11/11] Add feature removal of old OMAP private DMA implementation Russell King
2012-06-07 11:09       ` Russell King
2012-06-07 17:07       ` Tony Lindgren
2012-06-07 17:07         ` Tony Lindgren
2012-06-08  6:10       ` Shilimkar, Santosh
2012-06-08  6:10         ` Shilimkar, Santosh
2012-06-08 18:37       ` Rob Landley
2012-06-08 18:37         ` Rob Landley
2012-06-09  8:32         ` Russell King - ARM Linux
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=E1ScaJg-0003lN-SY@rmk-PC.arm.linux.org.uk \
    --to=rmk+kernel@arm.linux.org.uk \
    --cc=dan.j.williams@intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=vinod.koul@intel.com \
    /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.