Lines Matching refs:dmb

218 static void ism_free_dmb(struct ism_dev *ism, struct smcd_dmb *dmb)  in ism_free_dmb()  argument
220 clear_bit(dmb->sba_idx, ism->sba_bitmap); in ism_free_dmb()
221 dma_free_coherent(&ism->pdev->dev, dmb->dmb_len, in ism_free_dmb()
222 dmb->cpu_addr, dmb->dma_addr); in ism_free_dmb()
225 static int ism_alloc_dmb(struct ism_dev *ism, struct smcd_dmb *dmb) in ism_alloc_dmb() argument
229 if (PAGE_ALIGN(dmb->dmb_len) > dma_get_max_seg_size(&ism->pdev->dev)) in ism_alloc_dmb()
232 if (!dmb->sba_idx) { in ism_alloc_dmb()
238 dmb->sba_idx = bit; in ism_alloc_dmb()
240 if (dmb->sba_idx < ISM_DMB_BIT_OFFSET || in ism_alloc_dmb()
241 test_and_set_bit(dmb->sba_idx, ism->sba_bitmap)) in ism_alloc_dmb()
244 dmb->cpu_addr = dma_alloc_coherent(&ism->pdev->dev, dmb->dmb_len, in ism_alloc_dmb()
245 &dmb->dma_addr, in ism_alloc_dmb()
247 if (!dmb->cpu_addr) in ism_alloc_dmb()
248 clear_bit(dmb->sba_idx, ism->sba_bitmap); in ism_alloc_dmb()
250 return dmb->cpu_addr ? 0 : -ENOMEM; in ism_alloc_dmb()
253 static int ism_register_dmb(struct smcd_dev *smcd, struct smcd_dmb *dmb) in ism_register_dmb() argument
259 ret = ism_alloc_dmb(ism, dmb); in ism_register_dmb()
267 cmd.request.dmb = dmb->dma_addr; in ism_register_dmb()
268 cmd.request.dmb_len = dmb->dmb_len; in ism_register_dmb()
269 cmd.request.sba_idx = dmb->sba_idx; in ism_register_dmb()
270 cmd.request.vlan_valid = dmb->vlan_valid; in ism_register_dmb()
271 cmd.request.vlan_id = dmb->vlan_id; in ism_register_dmb()
272 cmd.request.rgid = dmb->rgid; in ism_register_dmb()
276 ism_free_dmb(ism, dmb); in ism_register_dmb()
279 dmb->dmb_tok = cmd.response.dmb_tok; in ism_register_dmb()
284 static int ism_unregister_dmb(struct smcd_dev *smcd, struct smcd_dmb *dmb) in ism_unregister_dmb() argument
294 cmd.request.dmb_tok = dmb->dmb_tok; in ism_unregister_dmb()
300 ism_free_dmb(ism, dmb); in ism_unregister_dmb()