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 26/31] dmaengine: PL08x: convert to use vchan submitted/issued lists
Date: Thu, 07 Jun 2012 11:54:30 +0100 [thread overview]
Message-ID: <E1ScaMI-0003m8-KA@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20120607104527.GA15973@n2100.arm.linux.org.uk>
Convert to use the virtual dma channel submitted/issued descriptor
lists rather than our own private lists, and use the virtual dma
channel support functions to manage these lists.
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
drivers/dma/amba-pl08x.c | 64 ++++++++++++---------------------------------
1 files changed, 17 insertions(+), 47 deletions(-)
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index 398a5da..5333a91 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -215,8 +215,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
- * @pend_list: queued transactions pending on this channel
- * @issued_list: issued transactions for this channel
* @done_list: list of completed transactions
* @at: active transaction on this channel
* @lock: a lock for this channel data
@@ -233,8 +231,6 @@ struct pl08x_dma_chan {
const char *name;
const struct pl08x_channel_data *cd;
struct dma_slave_config cfg;
- struct list_head pend_list;
- struct list_head issued_list;
struct list_head done_list;
struct pl08x_txd *at;
struct pl08x_driver_data *host;
@@ -357,12 +353,12 @@ static void pl08x_start_next_txd(struct pl08x_dma_chan *plchan)
{
struct pl08x_driver_data *pl08x = plchan->host;
struct pl08x_phy_chan *phychan = plchan->phychan;
+ struct virt_dma_desc *vd = vchan_next_desc(&plchan->vc);
+ struct pl08x_txd *txd = to_pl08x_txd(&vd->tx);
struct pl08x_lli *lli;
- struct pl08x_txd *txd;
u32 val;
- txd = list_first_entry(&plchan->issued_list, struct pl08x_txd, node);
- list_del(&txd->node);
+ list_del(&txd->vd.node);
plchan->at = txd;
@@ -524,18 +520,18 @@ static u32 pl08x_getbytes_chan(struct pl08x_dma_chan *plchan)
}
/* Sum up all queued transactions */
- if (!list_empty(&plchan->issued_list)) {
+ if (!list_empty(&plchan->vc.desc_issued)) {
struct pl08x_txd *txdi;
- list_for_each_entry(txdi, &plchan->issued_list, node) {
+ list_for_each_entry(txdi, &plchan->vc.desc_issued, vd.node) {
struct pl08x_sg *dsg;
list_for_each_entry(dsg, &txd->dsg_list, node)
bytes += dsg->len;
}
}
- if (!list_empty(&plchan->pend_list)) {
+ if (!list_empty(&plchan->vc.desc_submitted)) {
struct pl08x_txd *txdi;
- list_for_each_entry(txdi, &plchan->pend_list, node) {
+ list_for_each_entry(txdi, &plchan->vc.desc_submitted, vd.node) {
struct pl08x_sg *dsg;
list_for_each_entry(dsg, &txd->dsg_list, node)
bytes += dsg->len;
@@ -1094,13 +1090,12 @@ static void pl08x_free_txd_list(struct pl08x_driver_data *pl08x,
LIST_HEAD(head);
struct pl08x_txd *txd;
- list_splice_tail_init(&plchan->issued_list, &head);
- list_splice_tail_init(&plchan->pend_list, &head);
+ vchan_get_all_descriptors(&plchan->vc, &head);
while (!list_empty(&head)) {
- txd = list_first_entry(&head, struct pl08x_txd, node);
+ txd = list_first_entry(&head, struct pl08x_txd, vd.node);
pl08x_release_mux(plchan);
- list_del(&txd->node);
+ list_del(&txd->vd.node);
pl08x_free_txd(pl08x, txd);
}
}
@@ -1117,23 +1112,6 @@ static void pl08x_free_chan_resources(struct dma_chan *chan)
{
}
-static dma_cookie_t pl08x_tx_submit(struct dma_async_tx_descriptor *tx)
-{
- struct pl08x_dma_chan *plchan = to_pl08x_chan(tx->chan);
- struct pl08x_txd *txd = to_pl08x_txd(tx);
- unsigned long flags;
- dma_cookie_t cookie;
-
- spin_lock_irqsave(&plchan->vc.lock, flags);
- cookie = dma_cookie_assign(tx);
-
- /* Put this onto the pending list */
- list_add_tail(&txd->node, &plchan->pend_list);
- spin_unlock_irqrestore(&plchan->vc.lock, flags);
-
- return cookie;
-}
-
static struct dma_async_tx_descriptor *pl08x_prep_dma_interrupt(
struct dma_chan *chan, unsigned long flags)
{
@@ -1318,8 +1296,7 @@ static void pl08x_issue_pending(struct dma_chan *chan)
unsigned long flags;
spin_lock_irqsave(&plchan->vc.lock, flags);
- list_splice_tail_init(&plchan->pend_list, &plchan->issued_list);
- if (!list_empty(&plchan->issued_list)) {
+ if (vchan_issue_pending(&plchan->vc)) {
if (!plchan->phychan && plchan->state != PL08X_CHAN_WAITING)
pl08x_phy_alloc_and_start(plchan);
}
@@ -1345,16 +1322,11 @@ static int pl08x_prep_channel_resources(struct pl08x_dma_chan *plchan,
return 0;
}
-static struct pl08x_txd *pl08x_get_txd(struct pl08x_dma_chan *plchan,
- unsigned long flags)
+static struct pl08x_txd *pl08x_get_txd(struct pl08x_dma_chan *plchan)
{
struct pl08x_txd *txd = kzalloc(sizeof(*txd), GFP_NOWAIT);
if (txd) {
- dma_async_tx_descriptor_init(&txd->vd.tx, &plchan->vc.chan);
- txd->vd.tx.flags = flags;
- txd->vd.tx.tx_submit = pl08x_tx_submit;
- INIT_LIST_HEAD(&txd->node);
INIT_LIST_HEAD(&txd->dsg_list);
/* Always enable error and terminal interrupts */
@@ -1377,7 +1349,7 @@ static struct dma_async_tx_descriptor *pl08x_prep_dma_memcpy(
struct pl08x_sg *dsg;
int ret;
- txd = pl08x_get_txd(plchan, flags);
+ txd = pl08x_get_txd(plchan);
if (!txd) {
dev_err(&pl08x->adev->dev,
"%s no memory for descriptor\n", __func__);
@@ -1413,7 +1385,7 @@ static struct dma_async_tx_descriptor *pl08x_prep_dma_memcpy(
if (ret)
return NULL;
- return &txd->vd.tx;
+ return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
}
static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
@@ -1435,7 +1407,7 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
dev_dbg(&pl08x->adev->dev, "%s prepare transaction of %d bytes from %s\n",
__func__, sg_dma_len(sgl), plchan->name);
- txd = pl08x_get_txd(plchan, flags);
+ txd = pl08x_get_txd(plchan);
if (!txd) {
dev_err(&pl08x->adev->dev, "%s no txd\n", __func__);
return NULL;
@@ -1529,7 +1501,7 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
if (ret)
return NULL;
- return &txd->vd.tx;
+ return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
}
static int pl08x_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
@@ -1739,7 +1711,7 @@ static irqreturn_t pl08x_irq(int irq, void *dev)
* And start the next descriptor (if any),
* otherwise free this channel.
*/
- if (!list_empty(&plchan->issued_list))
+ if (vchan_next_desc(&plchan->vc))
pl08x_start_next_txd(plchan);
else
pl08x_phy_free(plchan);
@@ -1807,8 +1779,6 @@ static int pl08x_dma_init_virtual_channels(struct pl08x_driver_data *pl08x,
"initialize virtual channel \"%s\"\n",
chan->name);
- INIT_LIST_HEAD(&chan->pend_list);
- INIT_LIST_HEAD(&chan->issued_list);
INIT_LIST_HEAD(&chan->done_list);
tasklet_init(&chan->tasklet, pl08x_tasklet,
(unsigned long) chan);
--
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 26/31] dmaengine: PL08x: convert to use vchan submitted/issued lists
Date: Thu, 07 Jun 2012 11:54:30 +0100 [thread overview]
Message-ID: <E1ScaMI-0003m8-KA@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20120607104527.GA15973@n2100.arm.linux.org.uk>
Convert to use the virtual dma channel submitted/issued descriptor
lists rather than our own private lists, and use the virtual dma
channel support functions to manage these lists.
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
drivers/dma/amba-pl08x.c | 64 ++++++++++++---------------------------------
1 files changed, 17 insertions(+), 47 deletions(-)
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index 398a5da..5333a91 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -215,8 +215,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
- * @pend_list: queued transactions pending on this channel
- * @issued_list: issued transactions for this channel
* @done_list: list of completed transactions
* @at: active transaction on this channel
* @lock: a lock for this channel data
@@ -233,8 +231,6 @@ struct pl08x_dma_chan {
const char *name;
const struct pl08x_channel_data *cd;
struct dma_slave_config cfg;
- struct list_head pend_list;
- struct list_head issued_list;
struct list_head done_list;
struct pl08x_txd *at;
struct pl08x_driver_data *host;
@@ -357,12 +353,12 @@ static void pl08x_start_next_txd(struct pl08x_dma_chan *plchan)
{
struct pl08x_driver_data *pl08x = plchan->host;
struct pl08x_phy_chan *phychan = plchan->phychan;
+ struct virt_dma_desc *vd = vchan_next_desc(&plchan->vc);
+ struct pl08x_txd *txd = to_pl08x_txd(&vd->tx);
struct pl08x_lli *lli;
- struct pl08x_txd *txd;
u32 val;
- txd = list_first_entry(&plchan->issued_list, struct pl08x_txd, node);
- list_del(&txd->node);
+ list_del(&txd->vd.node);
plchan->at = txd;
@@ -524,18 +520,18 @@ static u32 pl08x_getbytes_chan(struct pl08x_dma_chan *plchan)
}
/* Sum up all queued transactions */
- if (!list_empty(&plchan->issued_list)) {
+ if (!list_empty(&plchan->vc.desc_issued)) {
struct pl08x_txd *txdi;
- list_for_each_entry(txdi, &plchan->issued_list, node) {
+ list_for_each_entry(txdi, &plchan->vc.desc_issued, vd.node) {
struct pl08x_sg *dsg;
list_for_each_entry(dsg, &txd->dsg_list, node)
bytes += dsg->len;
}
}
- if (!list_empty(&plchan->pend_list)) {
+ if (!list_empty(&plchan->vc.desc_submitted)) {
struct pl08x_txd *txdi;
- list_for_each_entry(txdi, &plchan->pend_list, node) {
+ list_for_each_entry(txdi, &plchan->vc.desc_submitted, vd.node) {
struct pl08x_sg *dsg;
list_for_each_entry(dsg, &txd->dsg_list, node)
bytes += dsg->len;
@@ -1094,13 +1090,12 @@ static void pl08x_free_txd_list(struct pl08x_driver_data *pl08x,
LIST_HEAD(head);
struct pl08x_txd *txd;
- list_splice_tail_init(&plchan->issued_list, &head);
- list_splice_tail_init(&plchan->pend_list, &head);
+ vchan_get_all_descriptors(&plchan->vc, &head);
while (!list_empty(&head)) {
- txd = list_first_entry(&head, struct pl08x_txd, node);
+ txd = list_first_entry(&head, struct pl08x_txd, vd.node);
pl08x_release_mux(plchan);
- list_del(&txd->node);
+ list_del(&txd->vd.node);
pl08x_free_txd(pl08x, txd);
}
}
@@ -1117,23 +1112,6 @@ static void pl08x_free_chan_resources(struct dma_chan *chan)
{
}
-static dma_cookie_t pl08x_tx_submit(struct dma_async_tx_descriptor *tx)
-{
- struct pl08x_dma_chan *plchan = to_pl08x_chan(tx->chan);
- struct pl08x_txd *txd = to_pl08x_txd(tx);
- unsigned long flags;
- dma_cookie_t cookie;
-
- spin_lock_irqsave(&plchan->vc.lock, flags);
- cookie = dma_cookie_assign(tx);
-
- /* Put this onto the pending list */
- list_add_tail(&txd->node, &plchan->pend_list);
- spin_unlock_irqrestore(&plchan->vc.lock, flags);
-
- return cookie;
-}
-
static struct dma_async_tx_descriptor *pl08x_prep_dma_interrupt(
struct dma_chan *chan, unsigned long flags)
{
@@ -1318,8 +1296,7 @@ static void pl08x_issue_pending(struct dma_chan *chan)
unsigned long flags;
spin_lock_irqsave(&plchan->vc.lock, flags);
- list_splice_tail_init(&plchan->pend_list, &plchan->issued_list);
- if (!list_empty(&plchan->issued_list)) {
+ if (vchan_issue_pending(&plchan->vc)) {
if (!plchan->phychan && plchan->state != PL08X_CHAN_WAITING)
pl08x_phy_alloc_and_start(plchan);
}
@@ -1345,16 +1322,11 @@ static int pl08x_prep_channel_resources(struct pl08x_dma_chan *plchan,
return 0;
}
-static struct pl08x_txd *pl08x_get_txd(struct pl08x_dma_chan *plchan,
- unsigned long flags)
+static struct pl08x_txd *pl08x_get_txd(struct pl08x_dma_chan *plchan)
{
struct pl08x_txd *txd = kzalloc(sizeof(*txd), GFP_NOWAIT);
if (txd) {
- dma_async_tx_descriptor_init(&txd->vd.tx, &plchan->vc.chan);
- txd->vd.tx.flags = flags;
- txd->vd.tx.tx_submit = pl08x_tx_submit;
- INIT_LIST_HEAD(&txd->node);
INIT_LIST_HEAD(&txd->dsg_list);
/* Always enable error and terminal interrupts */
@@ -1377,7 +1349,7 @@ static struct dma_async_tx_descriptor *pl08x_prep_dma_memcpy(
struct pl08x_sg *dsg;
int ret;
- txd = pl08x_get_txd(plchan, flags);
+ txd = pl08x_get_txd(plchan);
if (!txd) {
dev_err(&pl08x->adev->dev,
"%s no memory for descriptor\n", __func__);
@@ -1413,7 +1385,7 @@ static struct dma_async_tx_descriptor *pl08x_prep_dma_memcpy(
if (ret)
return NULL;
- return &txd->vd.tx;
+ return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
}
static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
@@ -1435,7 +1407,7 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
dev_dbg(&pl08x->adev->dev, "%s prepare transaction of %d bytes from %s\n",
__func__, sg_dma_len(sgl), plchan->name);
- txd = pl08x_get_txd(plchan, flags);
+ txd = pl08x_get_txd(plchan);
if (!txd) {
dev_err(&pl08x->adev->dev, "%s no txd\n", __func__);
return NULL;
@@ -1529,7 +1501,7 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
if (ret)
return NULL;
- return &txd->vd.tx;
+ return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
}
static int pl08x_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
@@ -1739,7 +1711,7 @@ static irqreturn_t pl08x_irq(int irq, void *dev)
* And start the next descriptor (if any),
* otherwise free this channel.
*/
- if (!list_empty(&plchan->issued_list))
+ if (vchan_next_desc(&plchan->vc))
pl08x_start_next_txd(plchan);
else
pl08x_phy_free(plchan);
@@ -1807,8 +1779,6 @@ static int pl08x_dma_init_virtual_channels(struct pl08x_driver_data *pl08x,
"initialize virtual channel \"%s\"\n",
chan->name);
- INIT_LIST_HEAD(&chan->pend_list);
- INIT_LIST_HEAD(&chan->issued_list);
INIT_LIST_HEAD(&chan->done_list);
tasklet_init(&chan->tasklet, pl08x_tasklet,
(unsigned long) chan);
--
1.7.4.4
next prev parent reply other threads:[~2012-06-07 10:54 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 ` [CFT 18/31] dmaengine: PL08x: move DMA signal muxing into slave prepare code Russell King
2012-06-07 10:51 ` 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 ` Russell King [this message]
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: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=E1ScaMI-0003m8-KA@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.