115b7a68cSBart Van Assche #ifndef _QLA_DSD_H_ 215b7a68cSBart Van Assche #define _QLA_DSD_H_ 315b7a68cSBart Van Assche 4*ba0cef25SBart Van Assche #include <asm/unaligned.h> 5*ba0cef25SBart Van Assche 615b7a68cSBart Van Assche /* 32-bit data segment descriptor (8 bytes) */ 715b7a68cSBart Van Assche struct dsd32 { 815b7a68cSBart Van Assche __le32 address; 915b7a68cSBart Van Assche __le32 length; 1015b7a68cSBart Van Assche }; 1115b7a68cSBart Van Assche append_dsd32(struct dsd32 ** dsd,struct scatterlist * sg)1215b7a68cSBart Van Asschestatic inline void append_dsd32(struct dsd32 **dsd, struct scatterlist *sg) 1315b7a68cSBart Van Assche { 1415b7a68cSBart Van Assche put_unaligned_le32(sg_dma_address(sg), &(*dsd)->address); 1515b7a68cSBart Van Assche put_unaligned_le32(sg_dma_len(sg), &(*dsd)->length); 1615b7a68cSBart Van Assche (*dsd)++; 1715b7a68cSBart Van Assche } 1815b7a68cSBart Van Assche 1915b7a68cSBart Van Assche /* 64-bit data segment descriptor (12 bytes) */ 2015b7a68cSBart Van Assche struct dsd64 { 2115b7a68cSBart Van Assche __le64 address; 2215b7a68cSBart Van Assche __le32 length; 2315b7a68cSBart Van Assche } __packed; 2415b7a68cSBart Van Assche append_dsd64(struct dsd64 ** dsd,struct scatterlist * sg)2515b7a68cSBart Van Asschestatic inline void append_dsd64(struct dsd64 **dsd, struct scatterlist *sg) 2615b7a68cSBart Van Assche { 2715b7a68cSBart Van Assche put_unaligned_le64(sg_dma_address(sg), &(*dsd)->address); 2815b7a68cSBart Van Assche put_unaligned_le32(sg_dma_len(sg), &(*dsd)->length); 2915b7a68cSBart Van Assche (*dsd)++; 3015b7a68cSBart Van Assche } 3115b7a68cSBart Van Assche 3215b7a68cSBart Van Assche #endif 33