mtd: nand: Clarify Kconfig entry for software Hamming ECC entries
[sfrench/cifs-2.6.git] / lib / scatterlist.c
index 9ba349e775ef0839b11eb18d1bc671357ab68ae3..739dc9fe2c55ecce2777a498db03396673d5a9c3 100644 (file)
@@ -625,6 +625,32 @@ bool __sg_page_iter_next(struct sg_page_iter *piter)
 }
 EXPORT_SYMBOL(__sg_page_iter_next);
 
+static int sg_dma_page_count(struct scatterlist *sg)
+{
+       return PAGE_ALIGN(sg->offset + sg_dma_len(sg)) >> PAGE_SHIFT;
+}
+
+bool __sg_page_iter_dma_next(struct sg_dma_page_iter *dma_iter)
+{
+       struct sg_page_iter *piter = &dma_iter->base;
+
+       if (!piter->__nents || !piter->sg)
+               return false;
+
+       piter->sg_pgoffset += piter->__pg_advance;
+       piter->__pg_advance = 1;
+
+       while (piter->sg_pgoffset >= sg_dma_page_count(piter->sg)) {
+               piter->sg_pgoffset -= sg_dma_page_count(piter->sg);
+               piter->sg = sg_next(piter->sg);
+               if (!--piter->__nents || !piter->sg)
+                       return false;
+       }
+
+       return true;
+}
+EXPORT_SYMBOL(__sg_page_iter_dma_next);
+
 /**
  * sg_miter_start - start mapping iteration over a sg list
  * @miter: sg mapping iter to be started