1#ifndef _QLA_DSD_H_
2#define _QLA_DSD_H_
3
4#include <asm/unaligned.h>
5
6/* 32-bit data segment descriptor (8 bytes) */
7struct dsd32 {
8	__le32 address;
9	__le32 length;
10};
11
12static inline void append_dsd32(struct dsd32 **dsd, struct scatterlist *sg)
13{
14	put_unaligned_le32(sg_dma_address(sg), &(*dsd)->address);
15	put_unaligned_le32(sg_dma_len(sg),     &(*dsd)->length);
16	(*dsd)++;
17}
18
19/* 64-bit data segment descriptor (12 bytes) */
20struct dsd64 {
21	__le64 address;
22	__le32 length;
23} __packed;
24
25static inline void append_dsd64(struct dsd64 **dsd, struct scatterlist *sg)
26{
27	put_unaligned_le64(sg_dma_address(sg), &(*dsd)->address);
28	put_unaligned_le32(sg_dma_len(sg),     &(*dsd)->length);
29	(*dsd)++;
30}
31
32#endif
33