Lines Matching full:pc

85 usbd_get_page(struct usb_page_cache *pc, usb_frlength_t offset,  in usbd_get_page()  argument
91 if (pc->page_start) { in usbd_get_page()
94 if (pc->buffer) { in usbd_get_page()
97 res->buffer = USB_ADD_BYTES(pc->buffer, offset); in usbd_get_page()
99 offset += pc->page_offset_buf; in usbd_get_page()
103 page = pc->page_start; in usbd_get_page()
105 if (pc->ismultiseg) { in usbd_get_page()
116 if (!pc->buffer) { in usbd_get_page()
126 res->buffer = USB_ADD_BYTES(pc->buffer, offset); in usbd_get_page()
140 usb_pc_buffer_is_aligned(struct usb_page_cache *pc, usb_frlength_t offset, in usb_pc_buffer_is_aligned() argument
146 usbd_get_page(pc, offset, &buf_res); in usb_pc_buffer_is_aligned()
250 usb_uiomove(struct usb_page_cache *pc, struct uio *uio, in usb_uiomove() argument
257 usbd_get_page(pc, pc_offset, &res); in usb_uiomove()
438 struct usb_page_cache *pc; in usb_pc_common_mem_cb() local
444 pc = arg; in usb_pc_common_mem_cb()
445 uptag = pc->tag_parent; in usb_pc_common_mem_cb()
459 pg = pc->page_start; in usb_pc_common_mem_cb()
462 pc->page_offset_buf = rem; in usb_pc_common_mem_cb()
463 pc->page_offset_end += rem; in usb_pc_common_mem_cb()
483 while (pc->ismultiseg) { in usb_pc_common_mem_cb()
521 usb_pc_alloc_mem(struct usb_page_cache *pc, struct usb_page *pg, in usb_pc_alloc_mem() argument
530 uptag = pc->tag_parent; in usb_pc_alloc_mem()
577 pc->buffer = ptr; in usb_pc_alloc_mem()
578 pc->page_start = pg; in usb_pc_alloc_mem()
579 pc->page_offset_buf = 0; in usb_pc_alloc_mem()
580 pc->page_offset_end = size; in usb_pc_alloc_mem()
581 pc->map = map; in usb_pc_alloc_mem()
582 pc->tag = utag->tag; in usb_pc_alloc_mem()
583 pc->ismultiseg = (align == 1); in usb_pc_alloc_mem()
590 pc, (BUS_DMA_WAITOK | BUS_DMA_COHERENT)); in usb_pc_alloc_mem()
602 pc->isloaded = 1; in usb_pc_alloc_mem()
605 usb_pc_cpu_flush(pc); in usb_pc_alloc_mem()
611 pc->buffer = NULL; in usb_pc_alloc_mem()
612 pc->page_start = NULL; in usb_pc_alloc_mem()
613 pc->page_offset_buf = 0; in usb_pc_alloc_mem()
614 pc->page_offset_end = 0; in usb_pc_alloc_mem()
615 pc->isloaded = 0; in usb_pc_alloc_mem()
616 pc->map = NULL; in usb_pc_alloc_mem()
617 pc->tag = NULL; in usb_pc_alloc_mem()
627 usb_pc_free_mem(struct usb_page_cache *pc) in usb_pc_free_mem() argument
629 if (pc && pc->buffer) { in usb_pc_free_mem()
630 if (pc->isloaded) in usb_pc_free_mem()
631 bus_dmamap_unload(pc->tag, pc->map); in usb_pc_free_mem()
633 bus_dmamem_free(pc->tag, pc->buffer, pc->map); in usb_pc_free_mem()
635 pc->buffer = NULL; in usb_pc_free_mem()
636 pc->isloaded = 0; in usb_pc_free_mem()
648 usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) in usb_pc_load_mem() argument
651 pc->page_offset_buf = 0; in usb_pc_load_mem()
652 pc->page_offset_end = size; in usb_pc_load_mem()
653 pc->ismultiseg = 1; in usb_pc_load_mem()
655 USB_MTX_ASSERT(pc->tag_parent->mtx, MA_OWNED); in usb_pc_load_mem()
662 uptag = pc->tag_parent; in usb_pc_load_mem()
668 if (pc->isloaded) in usb_pc_load_mem()
669 bus_dmamap_unload(pc->tag, pc->map); in usb_pc_load_mem()
675 pc->tag, pc->map, pc->buffer, size, in usb_pc_load_mem()
676 &usb_pc_alloc_mem_cb, pc, BUS_DMA_WAITOK); in usb_pc_load_mem()
682 pc->isloaded = 0; in usb_pc_load_mem()
690 if (pc->isloaded) in usb_pc_load_mem()
691 bus_dmamap_unload(pc->tag, pc->map); in usb_pc_load_mem()
698 pc->tag, pc->map, pc->buffer, size, in usb_pc_load_mem()
699 &usb_pc_load_mem_cb, pc, BUS_DMA_WAITOK)) { in usb_pc_load_mem()
702 pc->isloaded = 1; in usb_pc_load_mem()
709 pc->tag_parent->dma_error = 0; in usb_pc_load_mem()
710 (pc->tag_parent->func) (pc->tag_parent); in usb_pc_load_mem()
720 usb_pc_cpu_invalidate(struct usb_page_cache *pc) in usb_pc_cpu_invalidate() argument
722 if (pc->page_offset_end == pc->page_offset_buf) { in usb_pc_cpu_invalidate()
732 bus_dmamap_sync(pc->tag, pc->map, BUS_DMASYNC_POSTREAD); in usb_pc_cpu_invalidate()
733 bus_dmamap_sync(pc->tag, pc->map, BUS_DMASYNC_PREREAD); in usb_pc_cpu_invalidate()
740 usb_pc_cpu_flush(struct usb_page_cache *pc) in usb_pc_cpu_flush() argument
742 if (pc->page_offset_end == pc->page_offset_buf) { in usb_pc_cpu_flush()
746 bus_dmamap_sync(pc->tag, pc->map, BUS_DMASYNC_PREWRITE); in usb_pc_cpu_flush()
757 usb_pc_dmamap_create(struct usb_page_cache *pc, usb_size_t size) in usb_pc_dmamap_create() argument
763 info = USB_DMATAG_TO_XROOT(pc->tag_parent); in usb_pc_dmamap_create()
769 utag = usb_dma_tag_find(pc->tag_parent, size, 1); in usb_pc_dmamap_create()
774 if (bus_dmamap_create(utag->tag, 0, &pc->map)) { in usb_pc_dmamap_create()
777 pc->tag = utag->tag; in usb_pc_dmamap_create()
781 pc->map = NULL; in usb_pc_dmamap_create()
782 pc->tag = NULL; in usb_pc_dmamap_create()
792 usb_pc_dmamap_destroy(struct usb_page_cache *pc) in usb_pc_dmamap_destroy() argument
794 if (pc && pc->tag) { in usb_pc_dmamap_destroy()
795 if (pc->isloaded) in usb_pc_dmamap_destroy()
796 bus_dmamap_unload(pc->tag, pc->map); in usb_pc_dmamap_destroy()
797 bus_dmamap_destroy(pc->tag, pc->map); in usb_pc_dmamap_destroy()
798 pc->tag = NULL; in usb_pc_dmamap_destroy()
799 pc->map = NULL; in usb_pc_dmamap_destroy()
1057 struct usb_page_cache *pc; in usb_bdma_pre_sync() local
1068 pc = xfer->frbuffers; in usb_bdma_pre_sync()
1071 if (pc->isread) { in usb_bdma_pre_sync()
1072 usb_pc_cpu_invalidate(pc); in usb_bdma_pre_sync()
1074 usb_pc_cpu_flush(pc); in usb_bdma_pre_sync()
1076 pc++; in usb_bdma_pre_sync()
1089 struct usb_page_cache *pc; in usb_bdma_post_sync() local
1100 pc = xfer->frbuffers; in usb_bdma_post_sync()
1103 if (pc->isread) { in usb_bdma_post_sync()
1104 usb_pc_cpu_invalidate(pc); in usb_bdma_post_sync()
1106 pc++; in usb_bdma_post_sync()