|
@@ -188,43 +188,23 @@ static inline void sg_chain(struct scatterlist *prv, unsigned int prv_nents,
|
|
|
|
|
|
/**
|
|
/**
|
|
* sg_mark_end - Mark the end of the scatterlist
|
|
* sg_mark_end - Mark the end of the scatterlist
|
|
- * @sgl: Scatterlist
|
|
|
|
- * @nents: Number of entries in sgl
|
|
|
|
|
|
+ * @sg: SG entryScatterlist
|
|
*
|
|
*
|
|
* Description:
|
|
* Description:
|
|
- * Marks the last entry as the termination point for sg_next()
|
|
|
|
|
|
+ * Marks the passed in sg entry as the termination point for the sg
|
|
|
|
+ * table. A call to sg_next() on this entry will return NULL.
|
|
*
|
|
*
|
|
**/
|
|
**/
|
|
-static inline void sg_mark_end(struct scatterlist *sgl, unsigned int nents)
|
|
|
|
|
|
+static inline void sg_mark_end(struct scatterlist *sg)
|
|
{
|
|
{
|
|
- sgl[nents - 1].page_link = 0x02;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline void __sg_mark_end(struct scatterlist *sg)
|
|
|
|
-{
|
|
|
|
- sg->page_link |= 0x02;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * sg_init_one - Initialize a single entry sg list
|
|
|
|
- * @sg: SG entry
|
|
|
|
- * @buf: Virtual address for IO
|
|
|
|
- * @buflen: IO length
|
|
|
|
- *
|
|
|
|
- * Notes:
|
|
|
|
- * This should not be used on a single entry that is part of a larger
|
|
|
|
- * table. Use sg_init_table() for that.
|
|
|
|
- *
|
|
|
|
- **/
|
|
|
|
-static inline void sg_init_one(struct scatterlist *sg, const void *buf,
|
|
|
|
- unsigned int buflen)
|
|
|
|
-{
|
|
|
|
- memset(sg, 0, sizeof(*sg));
|
|
|
|
#ifdef CONFIG_DEBUG_SG
|
|
#ifdef CONFIG_DEBUG_SG
|
|
- sg->sg_magic = SG_MAGIC;
|
|
|
|
|
|
+ BUG_ON(sg->sg_magic != SG_MAGIC);
|
|
#endif
|
|
#endif
|
|
- sg_mark_end(sg, 1);
|
|
|
|
- sg_set_buf(sg, buf, buflen);
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Set termination bit, clear potential chain bit
|
|
|
|
+ */
|
|
|
|
+ sg->page_link |= 0x02;
|
|
|
|
+ sg->page_link &= ~0x01;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -240,7 +220,6 @@ static inline void sg_init_one(struct scatterlist *sg, const void *buf,
|
|
static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents)
|
|
static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents)
|
|
{
|
|
{
|
|
memset(sgl, 0, sizeof(*sgl) * nents);
|
|
memset(sgl, 0, sizeof(*sgl) * nents);
|
|
- sg_mark_end(sgl, nents);
|
|
|
|
#ifdef CONFIG_DEBUG_SG
|
|
#ifdef CONFIG_DEBUG_SG
|
|
{
|
|
{
|
|
unsigned int i;
|
|
unsigned int i;
|
|
@@ -248,6 +227,25 @@ static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents)
|
|
sgl[i].sg_magic = SG_MAGIC;
|
|
sgl[i].sg_magic = SG_MAGIC;
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
+ sg_mark_end(&sgl[nents - 1]);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * sg_init_one - Initialize a single entry sg list
|
|
|
|
+ * @sg: SG entry
|
|
|
|
+ * @buf: Virtual address for IO
|
|
|
|
+ * @buflen: IO length
|
|
|
|
+ *
|
|
|
|
+ * Notes:
|
|
|
|
+ * This should not be used on a single entry that is part of a larger
|
|
|
|
+ * table. Use sg_init_table() for that.
|
|
|
|
+ *
|
|
|
|
+ **/
|
|
|
|
+static inline void sg_init_one(struct scatterlist *sg, const void *buf,
|
|
|
|
+ unsigned int buflen)
|
|
|
|
+{
|
|
|
|
+ sg_init_table(sg, 1);
|
|
|
|
+ sg_set_buf(sg, buf, buflen);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|