Lines Matching refs:pRing

923     struct amd8111s_dma_ringbuf *pRing, uint32_t ring_size, uint32_t msg_size)  in amd8111s_alloc_dma_ringbuf()  argument
931 pRing->dma_buf_sz = msg_size; in amd8111s_alloc_dma_ringbuf()
932 pRing->ring_size = ring_size; in amd8111s_alloc_dma_ringbuf()
933 pRing->trunk_num = AMD8111S_SPLIT; in amd8111s_alloc_dma_ringbuf()
934 pRing->buf_sz = msg_size * ring_size; in amd8111s_alloc_dma_ringbuf()
935 if (ring_size < pRing->trunk_num) in amd8111s_alloc_dma_ringbuf()
936 pRing->trunk_num = ring_size; in amd8111s_alloc_dma_ringbuf()
937 ASSERT((pRing->buf_sz % pRing->trunk_num) == 0); in amd8111s_alloc_dma_ringbuf()
939 pRing->trunk_sz = pRing->buf_sz / pRing->trunk_num; in amd8111s_alloc_dma_ringbuf()
940 ASSERT((pRing->trunk_sz % pRing->dma_buf_sz) == 0); in amd8111s_alloc_dma_ringbuf()
942 pRing->msg_buf = kmem_zalloc(sizeof (struct amd8111s_msgbuf) * in amd8111s_alloc_dma_ringbuf()
944 pRing->dma_hdl = kmem_zalloc(sizeof (ddi_dma_handle_t) * in amd8111s_alloc_dma_ringbuf()
945 pRing->trunk_num, KM_NOSLEEP); in amd8111s_alloc_dma_ringbuf()
946 pRing->acc_hdl = kmem_zalloc(sizeof (ddi_acc_handle_t) * in amd8111s_alloc_dma_ringbuf()
947 pRing->trunk_num, KM_NOSLEEP); in amd8111s_alloc_dma_ringbuf()
948 pRing->dma_cookie = kmem_zalloc(sizeof (ddi_dma_cookie_t) * in amd8111s_alloc_dma_ringbuf()
949 pRing->trunk_num, KM_NOSLEEP); in amd8111s_alloc_dma_ringbuf()
950 pRing->trunk_addr = kmem_zalloc(sizeof (caddr_t) * in amd8111s_alloc_dma_ringbuf()
951 pRing->trunk_num, KM_NOSLEEP); in amd8111s_alloc_dma_ringbuf()
952 if (pRing->msg_buf == NULL || pRing->dma_hdl == NULL || in amd8111s_alloc_dma_ringbuf()
953 pRing->acc_hdl == NULL || pRing->trunk_addr == NULL || in amd8111s_alloc_dma_ringbuf()
954 pRing->dma_cookie == NULL) { in amd8111s_alloc_dma_ringbuf()
960 for (idx = 0; idx < pRing->trunk_num; ++idx) { in amd8111s_alloc_dma_ringbuf()
962 DDI_DMA_SLEEP, NULL, &(pRing->dma_hdl[idx])) in amd8111s_alloc_dma_ringbuf()
968 } else if (ddi_dma_mem_alloc(pRing->dma_hdl[idx], in amd8111s_alloc_dma_ringbuf()
969 pRing->trunk_sz, &pcn_acc_attr, DDI_DMA_STREAMING, in amd8111s_alloc_dma_ringbuf()
971 (caddr_t *)&(pRing->trunk_addr[idx]), in amd8111s_alloc_dma_ringbuf()
972 (size_t *)(&real_length), &pRing->acc_hdl[idx]) in amd8111s_alloc_dma_ringbuf()
978 } else if (real_length != pRing->trunk_sz) { in amd8111s_alloc_dma_ringbuf()
982 } else if (ddi_dma_addr_bind_handle(pRing->dma_hdl[idx], in amd8111s_alloc_dma_ringbuf()
983 NULL, (caddr_t)pRing->trunk_addr[idx], real_length, in amd8111s_alloc_dma_ringbuf()
985 &pRing->dma_cookie[idx], &count) != DDI_DMA_MAPPED) { in amd8111s_alloc_dma_ringbuf()
992 msg_acc < pRing->trunk_sz / pRing->dma_buf_sz; in amd8111s_alloc_dma_ringbuf()
994 pRing->msg_buf[msg_idx].offset = in amd8111s_alloc_dma_ringbuf()
995 msg_acc * pRing->dma_buf_sz; in amd8111s_alloc_dma_ringbuf()
996 pRing->msg_buf[msg_idx].vir_addr = in amd8111s_alloc_dma_ringbuf()
997 pRing->trunk_addr[idx] + in amd8111s_alloc_dma_ringbuf()
998 pRing->msg_buf[msg_idx].offset; in amd8111s_alloc_dma_ringbuf()
999 pRing->msg_buf[msg_idx].phy_addr = in amd8111s_alloc_dma_ringbuf()
1000 pRing->dma_cookie[idx].dmac_laddress + in amd8111s_alloc_dma_ringbuf()
1001 pRing->msg_buf[msg_idx].offset; in amd8111s_alloc_dma_ringbuf()
1002 pRing->msg_buf[msg_idx].p_hdl = in amd8111s_alloc_dma_ringbuf()
1003 pRing->dma_hdl[idx]; in amd8111s_alloc_dma_ringbuf()
1009 pRing->free = pRing->msg_buf; in amd8111s_alloc_dma_ringbuf()
1010 pRing->next = pRing->msg_buf; in amd8111s_alloc_dma_ringbuf()
1011 pRing->curr = pRing->msg_buf; in amd8111s_alloc_dma_ringbuf()
1015 amd8111s_free_dma_ringbuf(pRing); in amd8111s_alloc_dma_ringbuf()
1023 amd8111s_free_dma_ringbuf(struct amd8111s_dma_ringbuf *pRing) in amd8111s_free_dma_ringbuf() argument
1027 if (pRing->dma_cookie != NULL) { in amd8111s_free_dma_ringbuf()
1028 for (idx = 0; idx < pRing->trunk_num; idx ++) { in amd8111s_free_dma_ringbuf()
1029 if (pRing->dma_cookie[idx].dmac_laddress == 0) { in amd8111s_free_dma_ringbuf()
1032 (void) ddi_dma_unbind_handle(pRing->dma_hdl[idx]); in amd8111s_free_dma_ringbuf()
1034 kmem_free(pRing->dma_cookie, in amd8111s_free_dma_ringbuf()
1035 sizeof (ddi_dma_cookie_t) * pRing->trunk_num); in amd8111s_free_dma_ringbuf()
1038 if (pRing->acc_hdl != NULL) { in amd8111s_free_dma_ringbuf()
1039 for (idx = 0; idx < pRing->trunk_num; idx ++) { in amd8111s_free_dma_ringbuf()
1040 if (pRing->acc_hdl[idx] == NULL) in amd8111s_free_dma_ringbuf()
1042 ddi_dma_mem_free(&pRing->acc_hdl[idx]); in amd8111s_free_dma_ringbuf()
1044 kmem_free(pRing->acc_hdl, in amd8111s_free_dma_ringbuf()
1045 sizeof (ddi_acc_handle_t) * pRing->trunk_num); in amd8111s_free_dma_ringbuf()
1048 if (pRing->dma_hdl != NULL) { in amd8111s_free_dma_ringbuf()
1049 for (idx = 0; idx < pRing->trunk_num; idx ++) { in amd8111s_free_dma_ringbuf()
1050 if (pRing->dma_hdl[idx] == 0) { in amd8111s_free_dma_ringbuf()
1053 ddi_dma_free_handle(&pRing->dma_hdl[idx]); in amd8111s_free_dma_ringbuf()
1055 kmem_free(pRing->dma_hdl, in amd8111s_free_dma_ringbuf()
1056 sizeof (ddi_dma_handle_t) * pRing->trunk_num); in amd8111s_free_dma_ringbuf()
1059 if (pRing->msg_buf != NULL) { in amd8111s_free_dma_ringbuf()
1060 kmem_free(pRing->msg_buf, in amd8111s_free_dma_ringbuf()
1061 sizeof (struct amd8111s_msgbuf) * pRing->ring_size); in amd8111s_free_dma_ringbuf()
1064 if (pRing->trunk_addr != NULL) { in amd8111s_free_dma_ringbuf()
1065 kmem_free(pRing->trunk_addr, in amd8111s_free_dma_ringbuf()
1066 sizeof (caddr_t) * pRing->trunk_num); in amd8111s_free_dma_ringbuf()
1069 bzero(pRing, sizeof (*pRing)); in amd8111s_free_dma_ringbuf()