|
|
|
@ -39,7 +39,6 @@ |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#define ATC_DEFAULT_CFG (ATC_FIFOCFG_HALFFIFO) |
|
|
|
|
#define ATC_DEFAULT_CTRLA (0) |
|
|
|
|
#define ATC_DEFAULT_CTRLB (ATC_SIF(AT_DMA_MEM_IF) \ |
|
|
|
|
|ATC_DIF(AT_DMA_MEM_IF)) |
|
|
|
|
|
|
|
|
@ -574,7 +573,6 @@ atc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ctrla = ATC_DEFAULT_CTRLA; |
|
|
|
|
ctrlb = ATC_DEFAULT_CTRLB | ATC_IEN |
|
|
|
|
| ATC_SRC_ADDR_MODE_INCR |
|
|
|
|
| ATC_DST_ADDR_MODE_INCR |
|
|
|
@ -585,13 +583,13 @@ atc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, |
|
|
|
|
* of the most common optimization. |
|
|
|
|
*/ |
|
|
|
|
if (!((src | dest | len) & 3)) { |
|
|
|
|
ctrla |= ATC_SRC_WIDTH_WORD | ATC_DST_WIDTH_WORD; |
|
|
|
|
ctrla = ATC_SRC_WIDTH_WORD | ATC_DST_WIDTH_WORD; |
|
|
|
|
src_width = dst_width = 2; |
|
|
|
|
} else if (!((src | dest | len) & 1)) { |
|
|
|
|
ctrla |= ATC_SRC_WIDTH_HALFWORD | ATC_DST_WIDTH_HALFWORD; |
|
|
|
|
ctrla = ATC_SRC_WIDTH_HALFWORD | ATC_DST_WIDTH_HALFWORD; |
|
|
|
|
src_width = dst_width = 1; |
|
|
|
|
} else { |
|
|
|
|
ctrla |= ATC_SRC_WIDTH_BYTE | ATC_DST_WIDTH_BYTE; |
|
|
|
|
ctrla = ATC_SRC_WIDTH_BYTE | ATC_DST_WIDTH_BYTE; |
|
|
|
|
src_width = dst_width = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -668,7 +666,7 @@ atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ctrla = ATC_DEFAULT_CTRLA | atslave->ctrla; |
|
|
|
|
ctrla = atslave->ctrla; |
|
|
|
|
ctrlb = ATC_IEN; |
|
|
|
|
|
|
|
|
|
switch (direction) { |
|
|
|
@ -801,7 +799,7 @@ atc_dma_cyclic_fill_desc(struct dma_chan *chan, struct at_desc *desc, |
|
|
|
|
u32 ctrla; |
|
|
|
|
|
|
|
|
|
/* prepare common CRTLA value */ |
|
|
|
|
ctrla = ATC_DEFAULT_CTRLA | atslave->ctrla |
|
|
|
|
ctrla = atslave->ctrla |
|
|
|
|
| ATC_DST_WIDTH(reg_width) |
|
|
|
|
| ATC_SRC_WIDTH(reg_width) |
|
|
|
|
| period_len >> reg_width; |
|
|
|
|