dma40: combine duplicated code in log_sg_to_dev

Acked-by: Per Forlin <per.forlin@stericsson.com>
Acked-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
Rabin Vincent 2011-01-25 11:18:25 +01:00 committed by Dan Williams
parent 1c4b0927fe
commit e24b36bdf8
1 changed files with 23 additions and 29 deletions

View File

@ -385,40 +385,34 @@ int d40_log_sg_to_dev(struct scatterlist *sg,
struct d40_log_lli *lli_dst = lli->dst;
for_each_sg(sg, current_sg, sg_len, i) {
total_size += sg_dma_len(current_sg);
dma_addr_t sg_addr = sg_dma_address(current_sg);
unsigned int len = sg_dma_len(current_sg);
dma_addr_t src;
dma_addr_t dst;
total_size += len;
if (direction == DMA_TO_DEVICE) {
lli_src =
d40_log_buf_to_lli(lli_src,
sg_dma_address(current_sg),
sg_dma_len(current_sg),
lcsp->lcsp1, src_data_width,
dst_data_width,
true);
lli_dst =
d40_log_buf_to_lli(lli_dst,
dev_addr,
sg_dma_len(current_sg),
lcsp->lcsp3, dst_data_width,
src_data_width,
false);
src = sg_addr;
dst = dev_addr;
} else {
lli_dst =
d40_log_buf_to_lli(lli_dst,
sg_dma_address(current_sg),
sg_dma_len(current_sg),
lcsp->lcsp3, dst_data_width,
src_data_width,
true);
lli_src =
d40_log_buf_to_lli(lli_src,
dev_addr,
sg_dma_len(current_sg),
lcsp->lcsp1, src_data_width,
dst_data_width,
false);
src = dev_addr;
dst = sg_addr;
}
lli_src = d40_log_buf_to_lli(lli_src, src, len,
lcsp->lcsp1,
src_data_width,
dst_data_width,
src == sg_addr);
lli_dst = d40_log_buf_to_lli(lli_dst, dst, len,
lcsp->lcsp3,
dst_data_width,
src_data_width,
dst == sg_addr);
}
return total_size;
}