Lines Matching refs:pc
86 usbd_get_page(struct usb_page_cache *pc, usb_frlength_t offset, in usbd_get_page() argument
92 if (pc->page_start) { in usbd_get_page()
96 if (pc->buffer) { in usbd_get_page()
100 res->buffer = USB_ADD_BYTES(pc->buffer, offset); in usbd_get_page()
102 offset += pc->page_offset_buf; in usbd_get_page()
106 page = pc->page_start; in usbd_get_page()
108 if (pc->ismultiseg) { in usbd_get_page()
120 if (!pc->buffer) { in usbd_get_page()
131 res->buffer = USB_ADD_BYTES(pc->buffer, offset); in usbd_get_page()
145 usb_pc_buffer_is_aligned(struct usb_page_cache *pc, usb_frlength_t offset, in usb_pc_buffer_is_aligned() argument
152 usbd_get_page(pc, offset, &buf_res); in usb_pc_buffer_is_aligned()
258 usb_uiomove(struct usb_page_cache *pc, struct uio *uio, in usb_uiomove() argument
266 usbd_get_page(pc, pc_offset, &res); in usb_uiomove()
450 struct usb_page_cache *pc; in usb_pc_common_mem_cb() local
456 pc = arg; in usb_pc_common_mem_cb()
457 uptag = pc->tag_parent; in usb_pc_common_mem_cb()
471 pg = pc->page_start; in usb_pc_common_mem_cb()
474 pc->page_offset_buf = rem; in usb_pc_common_mem_cb()
475 pc->page_offset_end += rem; in usb_pc_common_mem_cb()
495 while (pc->ismultiseg) { in usb_pc_common_mem_cb()
533 usb_pc_alloc_mem(struct usb_page_cache *pc, struct usb_page *pg, in usb_pc_alloc_mem() argument
542 uptag = pc->tag_parent; in usb_pc_alloc_mem()
589 pc->buffer = ptr; in usb_pc_alloc_mem()
590 pc->page_start = pg; in usb_pc_alloc_mem()
591 pc->page_offset_buf = 0; in usb_pc_alloc_mem()
592 pc->page_offset_end = size; in usb_pc_alloc_mem()
593 pc->map = map; in usb_pc_alloc_mem()
594 pc->tag = utag->tag; in usb_pc_alloc_mem()
595 pc->ismultiseg = (align == 1); in usb_pc_alloc_mem()
602 pc, (BUS_DMA_WAITOK | BUS_DMA_COHERENT)); in usb_pc_alloc_mem()
616 usb_pc_cpu_flush(pc); in usb_pc_alloc_mem()
622 pc->buffer = NULL; in usb_pc_alloc_mem()
623 pc->page_start = NULL; in usb_pc_alloc_mem()
624 pc->page_offset_buf = 0; in usb_pc_alloc_mem()
625 pc->page_offset_end = 0; in usb_pc_alloc_mem()
626 pc->map = NULL; in usb_pc_alloc_mem()
627 pc->tag = NULL; in usb_pc_alloc_mem()
637 usb_pc_free_mem(struct usb_page_cache *pc) in usb_pc_free_mem() argument
639 if (pc && pc->buffer) { in usb_pc_free_mem()
641 bus_dmamap_unload(pc->tag, pc->map); in usb_pc_free_mem()
643 bus_dmamem_free(pc->tag, pc->buffer, pc->map); in usb_pc_free_mem()
645 pc->buffer = NULL; in usb_pc_free_mem()
657 usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) in usb_pc_load_mem() argument
660 pc->page_offset_buf = 0; in usb_pc_load_mem()
661 pc->page_offset_end = size; in usb_pc_load_mem()
662 pc->ismultiseg = 1; in usb_pc_load_mem()
664 USB_MTX_ASSERT(pc->tag_parent->mtx, MA_OWNED); in usb_pc_load_mem()
671 uptag = pc->tag_parent; in usb_pc_load_mem()
677 bus_dmamap_unload(pc->tag, pc->map); in usb_pc_load_mem()
683 pc->tag, pc->map, pc->buffer, size, in usb_pc_load_mem()
684 &usb_pc_alloc_mem_cb, pc, BUS_DMA_WAITOK); in usb_pc_load_mem()
698 bus_dmamap_unload(pc->tag, pc->map); in usb_pc_load_mem()
705 pc->tag, pc->map, pc->buffer, size, in usb_pc_load_mem()
706 &usb_pc_load_mem_cb, pc, BUS_DMA_WAITOK)) { in usb_pc_load_mem()
715 pc->tag_parent->dma_error = 0; in usb_pc_load_mem()
716 (pc->tag_parent->func) (pc->tag_parent); in usb_pc_load_mem()
726 usb_pc_cpu_invalidate(struct usb_page_cache *pc) in usb_pc_cpu_invalidate() argument
728 if (pc->page_offset_end == pc->page_offset_buf) { in usb_pc_cpu_invalidate()
738 bus_dmamap_sync(pc->tag, pc->map, BUS_DMASYNC_POSTREAD); in usb_pc_cpu_invalidate()
739 bus_dmamap_sync(pc->tag, pc->map, BUS_DMASYNC_PREREAD); in usb_pc_cpu_invalidate()
746 usb_pc_cpu_flush(struct usb_page_cache *pc) in usb_pc_cpu_flush() argument
748 if (pc->page_offset_end == pc->page_offset_buf) { in usb_pc_cpu_flush()
752 bus_dmamap_sync(pc->tag, pc->map, BUS_DMASYNC_PREWRITE); in usb_pc_cpu_flush()
763 usb_pc_dmamap_create(struct usb_page_cache *pc, usb_size_t size) in usb_pc_dmamap_create() argument
769 info = USB_DMATAG_TO_XROOT(pc->tag_parent); in usb_pc_dmamap_create()
775 utag = usb_dma_tag_find(pc->tag_parent, size, 1); in usb_pc_dmamap_create()
780 if (bus_dmamap_create(utag->tag, 0, &pc->map)) { in usb_pc_dmamap_create()
783 pc->tag = utag->tag; in usb_pc_dmamap_create()
787 pc->map = NULL; in usb_pc_dmamap_create()
788 pc->tag = NULL; in usb_pc_dmamap_create()
798 usb_pc_dmamap_destroy(struct usb_page_cache *pc) in usb_pc_dmamap_destroy() argument
800 if (pc && pc->tag) { in usb_pc_dmamap_destroy()
801 bus_dmamap_destroy(pc->tag, pc->map); in usb_pc_dmamap_destroy()
802 pc->tag = NULL; in usb_pc_dmamap_destroy()
803 pc->map = NULL; in usb_pc_dmamap_destroy()
1065 struct usb_page_cache *pc; in usb_bdma_pre_sync() local
1076 pc = xfer->frbuffers; in usb_bdma_pre_sync()
1080 if (pc->isread) { in usb_bdma_pre_sync()
1081 usb_pc_cpu_invalidate(pc); in usb_bdma_pre_sync()
1083 usb_pc_cpu_flush(pc); in usb_bdma_pre_sync()
1085 pc++; in usb_bdma_pre_sync()
1098 struct usb_page_cache *pc; in usb_bdma_post_sync() local
1109 pc = xfer->frbuffers; in usb_bdma_post_sync()
1112 if (pc->isread) { in usb_bdma_post_sync()
1113 usb_pc_cpu_invalidate(pc); in usb_bdma_post_sync()
1115 pc++; in usb_bdma_post_sync()