Lines Matching full:sg
265 assume it doesn't support sg mapping, and, since we tried to in pci_map_single_1()
268 printk_once(KERN_WARNING "pci_map_single: no HW sg\n"); in pci_map_single_1()
295 DBGA2("pci_map_single: [%p,%zx] np %ld -> sg %llx from %ps\n", in pci_map_single_1()
401 DBGA2("pci_unmap_single: sg [%llx,%zx] np %ld from %ps\n", in alpha_pci_unmap_page()
427 with vmalloc and sg if we can't find contiguous memory. */ in alpha_pci_alloc_coherent()
476 #define SG_ENT_VIRT_ADDRESS(SG) (sg_virt((SG))) argument
477 #define SG_ENT_PHYS_ADDRESS(SG) __pa(SG_ENT_VIRT_ADDRESS(SG)) argument
480 sg_classify(struct device *dev, struct scatterlist *sg, struct scatterlist *end, in sg_classify() argument
488 leader = sg; in sg_classify()
493 /* we will not marge sg without device. */ in sg_classify()
495 for (++sg; sg < end; ++sg) { in sg_classify()
497 addr = SG_ENT_PHYS_ADDRESS(sg); in sg_classify()
498 len = sg->length; in sg_classify()
504 sg->dma_address = -1; in sg_classify()
507 sg->dma_address = -2; in sg_classify()
514 leader = sg; in sg_classify()
536 struct scatterlist *sg; in sg_fill() local
587 DBGA(" sg_fill: [%p,%lx] -> sg %llx np %ld\n", in sg_fill()
593 sg = leader; in sg_fill()
596 struct scatterlist *last_sg = sg; in sg_fill()
599 size = sg->length; in sg_fill()
600 paddr = SG_ENT_PHYS_ADDRESS(sg); in sg_fill()
602 while (sg+1 < end && (int) sg[1].dma_address == -1) { in sg_fill()
603 size += sg[1].length; in sg_fill()
604 sg = sg_next(sg); in sg_fill()
617 while (++last_sg <= sg) { in sg_fill()
623 } while (++sg < end && (int) sg->dma_address < 0); in sg_fill()
628 static int alpha_pci_map_sg(struct device *dev, struct scatterlist *sg, in alpha_pci_map_sg() argument
645 sg->dma_length = sg->length; in alpha_pci_map_sg()
646 sg->dma_address in alpha_pci_map_sg()
647 = pci_map_single_1(pdev, SG_ENT_VIRT_ADDRESS(sg), in alpha_pci_map_sg()
648 sg->length, dac_allowed); in alpha_pci_map_sg()
649 if (sg->dma_address == DMA_MAPPING_ERROR) in alpha_pci_map_sg()
654 start = sg; in alpha_pci_map_sg()
655 end = sg + nents; in alpha_pci_map_sg()
658 sg_classify(dev, sg, end, alpha_mv.mv_pci_tbi != 0); in alpha_pci_map_sg()
675 for (out = sg; sg < end; ++sg) { in alpha_pci_map_sg()
676 if ((int) sg->dma_address < 0) in alpha_pci_map_sg()
678 if (sg_fill(dev, sg, end, out, arena, max_dma, dac_allowed) < 0) in alpha_pci_map_sg()
710 static void alpha_pci_unmap_sg(struct device *dev, struct scatterlist *sg, in alpha_pci_unmap_sg() argument
737 for (end = sg + nents; sg < end; ++sg) { in alpha_pci_unmap_sg()
743 addr = sg->dma_address; in alpha_pci_unmap_sg()
744 size = sg->dma_length; in alpha_pci_unmap_sg()
751 sg - end + nents, addr, size); in alpha_pci_unmap_sg()
759 sg - end + nents, addr, size); in alpha_pci_unmap_sg()
763 DBGA(" (%ld) sg [%llx,%zx]\n", in alpha_pci_unmap_sg()
764 sg - end + nents, addr, size); in alpha_pci_unmap_sg()
783 DBGA("pci_unmap_sg: %ld entries\n", nents - (end - sg)); in alpha_pci_unmap_sg()