|
@@ -749,8 +749,14 @@ dwc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
|
|
|
|
|
|
mem = sg_phys(sg);
|
|
|
len = sg_dma_len(sg);
|
|
|
- mem_width = 2;
|
|
|
- if (unlikely(mem & 3 || len & 3))
|
|
|
+
|
|
|
+ if (!((mem | len) & 7))
|
|
|
+ mem_width = 3;
|
|
|
+ else if (!((mem | len) & 3))
|
|
|
+ mem_width = 2;
|
|
|
+ else if (!((mem | len) & 1))
|
|
|
+ mem_width = 1;
|
|
|
+ else
|
|
|
mem_width = 0;
|
|
|
|
|
|
slave_sg_todev_fill_desc:
|
|
@@ -807,8 +813,14 @@ slave_sg_todev_fill_desc:
|
|
|
|
|
|
mem = sg_phys(sg);
|
|
|
len = sg_dma_len(sg);
|
|
|
- mem_width = 2;
|
|
|
- if (unlikely(mem & 3 || len & 3))
|
|
|
+
|
|
|
+ if (!((mem | len) & 7))
|
|
|
+ mem_width = 3;
|
|
|
+ else if (!((mem | len) & 3))
|
|
|
+ mem_width = 2;
|
|
|
+ else if (!((mem | len) & 1))
|
|
|
+ mem_width = 1;
|
|
|
+ else
|
|
|
mem_width = 0;
|
|
|
|
|
|
slave_sg_fromdev_fill_desc:
|