aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSonic Zhang <sonic.zhang@analog.com>2012-05-22 06:23:40 -0400
committerBob Liu <lliubbo@gmail.com>2012-07-24 01:39:48 -0400
commit86d688a3c370093f978c7ced9b510944301fc9d4 (patch)
tree8cce56eaa8994c2af8108af887939e712bb7061f /arch
parentc8d11a06bf8242d5d6ff86fa2514c4f50cb847fb (diff)
blackfin: Call sg_for_each to pass through the whole sg list.
Otherwise, chained sg list may be missed. Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Bob Liu <lliubbo@gmail.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/blackfin/kernel/dma-mapping.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/blackfin/kernel/dma-mapping.c b/arch/blackfin/kernel/dma-mapping.c
index f0d1118f1825..e7be6532d6a0 100644
--- a/arch/blackfin/kernel/dma-mapping.c
+++ b/arch/blackfin/kernel/dma-mapping.c
@@ -122,12 +122,13 @@ void __dma_sync(dma_addr_t addr, size_t size,
122EXPORT_SYMBOL(__dma_sync); 122EXPORT_SYMBOL(__dma_sync);
123 123
124int 124int
125dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, 125dma_map_sg(struct device *dev, struct scatterlist *sg_list, int nents,
126 enum dma_data_direction direction) 126 enum dma_data_direction direction)
127{ 127{
128 struct scatterlist *sg;
128 int i; 129 int i;
129 130
130 for (i = 0; i < nents; i++, sg++) { 131 for_each_sg(sg_list, sg, nents, i) {
131 sg->dma_address = (dma_addr_t) sg_virt(sg); 132 sg->dma_address = (dma_addr_t) sg_virt(sg);
132 __dma_sync(sg_dma_address(sg), sg_dma_len(sg), direction); 133 __dma_sync(sg_dma_address(sg), sg_dma_len(sg), direction);
133 } 134 }
@@ -136,12 +137,13 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
136} 137}
137EXPORT_SYMBOL(dma_map_sg); 138EXPORT_SYMBOL(dma_map_sg);
138 139
139void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, 140void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg_list,
140 int nelems, enum dma_data_direction direction) 141 int nelems, enum dma_data_direction direction)
141{ 142{
143 struct scatterlist *sg;
142 int i; 144 int i;
143 145
144 for (i = 0; i < nelems; i++, sg++) { 146 for_each_sg(sg_list, sg, nelems, i) {
145 sg->dma_address = (dma_addr_t) sg_virt(sg); 147 sg->dma_address = (dma_addr_t) sg_virt(sg);
146 __dma_sync(sg_dma_address(sg), sg_dma_len(sg), direction); 148 __dma_sync(sg_dma_address(sg), sg_dma_len(sg), direction);
147 } 149 }