Lines Matching defs:sgc
760 static u32 get_physaddr_from_sgc(struct esas2r_sg_context *sgc, u64 *addr)
764 if (likely(sgc->cur_offset == sgc->exp_offset)) {
770 if (sgc->sgel_count < sgc->num_sgel) {
772 if (sgc->exp_offset > (u8 *)0) {
774 sgc->cur_sgel = sg_next(sgc->cur_sgel);
775 ++(sgc->sgel_count);
779 len = sg_dma_len(sgc->cur_sgel);
780 (*addr) = sg_dma_address(sgc->cur_sgel);
783 sgc->exp_offset += len;
788 } else if (sgc->cur_offset < sgc->exp_offset) {
794 len = sg_dma_len(sgc->cur_sgel);
795 (*addr) = sg_dma_address(sgc->cur_sgel);
797 sgc->exp_offset -= len;
801 (sgc->cur_offset - sgc->exp_offset);
803 sgc->exp_offset += len;
807 sgc->exp_offset - sgc->cur_offset);
808 } else { /* if ( sgc->cur_offset > sgc->exp_offset ) */
824 struct esas2r_sg_context sgc;
859 esas2r_sgc_init(&sgc, a, rq, NULL);
861 sgc.length = bufflen;
862 sgc.cur_offset = NULL;
864 sgc.cur_sgel = scsi_sglist(cmd);
865 sgc.exp_offset = NULL;
866 sgc.num_sgel = scsi_dma_map(cmd);
867 sgc.sgel_count = 0;
869 if (unlikely(sgc.num_sgel < 0)) {
874 sgc.get_phys_addr = (PGETPHYSADDR)get_physaddr_from_sgc;
876 if (unlikely(!esas2r_build_sg_list(a, rq, &sgc))) {