18c2ecf20Sopenharmony_ci#ifndef _QLA_DSD_H_ 28c2ecf20Sopenharmony_ci#define _QLA_DSD_H_ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#include <asm/unaligned.h> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci/* 32-bit data segment descriptor (8 bytes) */ 78c2ecf20Sopenharmony_cistruct dsd32 { 88c2ecf20Sopenharmony_ci __le32 address; 98c2ecf20Sopenharmony_ci __le32 length; 108c2ecf20Sopenharmony_ci}; 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cistatic inline void append_dsd32(struct dsd32 **dsd, struct scatterlist *sg) 138c2ecf20Sopenharmony_ci{ 148c2ecf20Sopenharmony_ci put_unaligned_le32(sg_dma_address(sg), &(*dsd)->address); 158c2ecf20Sopenharmony_ci put_unaligned_le32(sg_dma_len(sg), &(*dsd)->length); 168c2ecf20Sopenharmony_ci (*dsd)++; 178c2ecf20Sopenharmony_ci} 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci/* 64-bit data segment descriptor (12 bytes) */ 208c2ecf20Sopenharmony_cistruct dsd64 { 218c2ecf20Sopenharmony_ci __le64 address; 228c2ecf20Sopenharmony_ci __le32 length; 238c2ecf20Sopenharmony_ci} __packed; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistatic inline void append_dsd64(struct dsd64 **dsd, struct scatterlist *sg) 268c2ecf20Sopenharmony_ci{ 278c2ecf20Sopenharmony_ci put_unaligned_le64(sg_dma_address(sg), &(*dsd)->address); 288c2ecf20Sopenharmony_ci put_unaligned_le32(sg_dma_len(sg), &(*dsd)->length); 298c2ecf20Sopenharmony_ci (*dsd)++; 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci#endif 33