Lines Matching refs:sgc
819 static u32 get_physaddr_from_sgc(struct esas2r_sg_context *sgc, u64 *addr) in get_physaddr_from_sgc() argument
823 if (likely(sgc->cur_offset == sgc->exp_offset)) { in get_physaddr_from_sgc()
829 if (sgc->sgel_count < sgc->num_sgel) { in get_physaddr_from_sgc()
831 if (sgc->exp_offset > (u8 *)0) { in get_physaddr_from_sgc()
833 sgc->cur_sgel = sg_next(sgc->cur_sgel); in get_physaddr_from_sgc()
834 ++(sgc->sgel_count); in get_physaddr_from_sgc()
838 len = sg_dma_len(sgc->cur_sgel); in get_physaddr_from_sgc()
839 (*addr) = sg_dma_address(sgc->cur_sgel); in get_physaddr_from_sgc()
842 sgc->exp_offset += len; in get_physaddr_from_sgc()
847 } else if (sgc->cur_offset < sgc->exp_offset) { in get_physaddr_from_sgc()
853 len = sg_dma_len(sgc->cur_sgel); in get_physaddr_from_sgc()
854 (*addr) = sg_dma_address(sgc->cur_sgel); in get_physaddr_from_sgc()
856 sgc->exp_offset -= len; in get_physaddr_from_sgc()
860 (sgc->cur_offset - sgc->exp_offset); in get_physaddr_from_sgc()
862 sgc->exp_offset += len; in get_physaddr_from_sgc()
866 sgc->exp_offset - sgc->cur_offset); in get_physaddr_from_sgc()
883 struct esas2r_sg_context sgc; in esas2r_queuecommand() local
918 esas2r_sgc_init(&sgc, a, rq, NULL); in esas2r_queuecommand()
920 sgc.length = bufflen; in esas2r_queuecommand()
921 sgc.cur_offset = NULL; in esas2r_queuecommand()
923 sgc.cur_sgel = scsi_sglist(cmd); in esas2r_queuecommand()
924 sgc.exp_offset = NULL; in esas2r_queuecommand()
925 sgc.num_sgel = scsi_dma_map(cmd); in esas2r_queuecommand()
926 sgc.sgel_count = 0; in esas2r_queuecommand()
928 if (unlikely(sgc.num_sgel < 0)) { in esas2r_queuecommand()
933 sgc.get_phys_addr = (PGETPHYSADDR)get_physaddr_from_sgc; in esas2r_queuecommand()
935 if (unlikely(!esas2r_build_sg_list(a, rq, &sgc))) { in esas2r_queuecommand()