Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 358516
b: refs/heads/master
c: 0fdb567
h: refs/heads/master
v: v3
  • Loading branch information
Andy Shevchenko authored and Vinod Koul committed Jan 12, 2013
1 parent f8986c0 commit 26e4b40
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 01126856ff4f7d4cc5899c208fd4d3c7d0a2b83a
refs/heads/master: 0fdb567fc72da906e230ce7e2aae2feba260a6be
12 changes: 10 additions & 2 deletions trunk/drivers/dma/dw_dmac.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,9 @@ static void dwc_initialize(struct dw_dma_chan *dwc)
cfghi = dws->cfg_hi;
cfglo |= dws->cfg_lo & ~DWC_CFGL_CH_PRIOR_MASK;
} else {
if (dwc->dma_sconfig.direction == DMA_MEM_TO_DEV)
if (dwc->direction == DMA_MEM_TO_DEV)
cfghi = DWC_CFGH_DST_PER(dwc->dma_sconfig.slave_id);
else if (dwc->dma_sconfig.direction == DMA_DEV_TO_MEM)
else if (dwc->direction == DMA_DEV_TO_MEM)
cfghi = DWC_CFGH_SRC_PER(dwc->dma_sconfig.slave_id);
}

Expand Down Expand Up @@ -721,6 +721,8 @@ dwc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
return NULL;
}

dwc->direction = DMA_MEM_TO_MEM;

data_width = min_t(unsigned int, dwc->dw->data_width[dwc_get_sms(dws)],
dwc->dw->data_width[dwc_get_dms(dws)]);

Expand Down Expand Up @@ -805,6 +807,8 @@ dwc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
if (unlikely(!dws || !sg_len))
return NULL;

dwc->direction = direction;

prev = first = NULL;

switch (direction) {
Expand Down Expand Up @@ -981,6 +985,7 @@ set_runtime_config(struct dma_chan *chan, struct dma_slave_config *sconfig)
return -EINVAL;

memcpy(&dwc->dma_sconfig, sconfig, sizeof(*sconfig));
dwc->direction = sconfig->direction;

convert_burst(&dwc->dma_sconfig.src_maxburst);
convert_burst(&dwc->dma_sconfig.dst_maxburst);
Expand Down Expand Up @@ -1358,6 +1363,8 @@ struct dw_cyclic_desc *dw_dma_cyclic_prep(struct dma_chan *chan,
if (unlikely(!is_slave_direction(direction)))
goto out_err;

dwc->direction = direction;

if (direction == DMA_MEM_TO_DEV)
reg_width = __ffs(sconfig->dst_addr_width);
else
Expand Down Expand Up @@ -1732,6 +1739,7 @@ static int dw_probe(struct platform_device *pdev)
channel_clear_bit(dw, CH_EN, dwc->mask);

dwc->dw = dw;
dwc->direction = DMA_TRANS_NONE;

/* hardware configuration */
if (autocfg) {
Expand Down
14 changes: 8 additions & 6 deletions trunk/drivers/dma/dw_dmac_regs.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
* published by the Free Software Foundation.
*/

#include <linux/dmaengine.h>
#include <linux/dw_dmac.h>

#define DW_DMA_MAX_NR_CHANNELS 8
Expand Down Expand Up @@ -184,12 +185,13 @@ enum dw_dmac_flags {
};

struct dw_dma_chan {
struct dma_chan chan;
void __iomem *ch_regs;
u8 mask;
u8 priority;
bool paused;
bool initialized;
struct dma_chan chan;
void __iomem *ch_regs;
u8 mask;
u8 priority;
enum dma_transfer_direction direction;
bool paused;
bool initialized;

/* software emulation of the LLP transfers */
struct list_head *tx_list;
Expand Down

0 comments on commit 26e4b40

Please sign in to comment.