Lines Matching refs:srcimp

596 	return rsc->idx = container_of(rsc, struct srcimp, rsc)->idx[0];  in srcimp_master()
602 return container_of(rsc, struct srcimp, rsc)->idx[rsc->conj]; in srcimp_next_conj()
607 return container_of(rsc, struct srcimp, rsc)->idx[rsc->conj]; in srcimp_index()
617 static int srcimp_map(struct srcimp *srcimp, struct src *src, struct rsc *input) in srcimp_map() argument
622 srcimp->rsc.ops->master(&srcimp->rsc); in srcimp_map()
627 for (i = 0; i < srcimp->rsc.msr; i++) { in srcimp_map()
628 entry = &srcimp->imappers[i]; in srcimp_map()
631 entry->addr = srcimp->rsc.ops->index(&srcimp->rsc); in srcimp_map()
632 srcimp->mgr->imap_add(srcimp->mgr, entry); in srcimp_map()
633 srcimp->mapped |= (0x1 << i); in srcimp_map()
635 srcimp->rsc.ops->next_conj(&srcimp->rsc); in srcimp_map()
639 srcimp->rsc.ops->master(&srcimp->rsc); in srcimp_map()
645 static int srcimp_unmap(struct srcimp *srcimp) in srcimp_unmap() argument
650 for (i = 0; i < srcimp->rsc.msr; i++) { in srcimp_unmap()
651 if (srcimp->mapped & (0x1 << i)) { in srcimp_unmap()
652 srcimp->mgr->imap_delete(srcimp->mgr, in srcimp_unmap()
653 &srcimp->imappers[i]); in srcimp_unmap()
654 srcimp->mapped &= ~(0x1 << i); in srcimp_unmap()
666 static int srcimp_rsc_init(struct srcimp *srcimp, in srcimp_rsc_init() argument
672 err = rsc_init(&srcimp->rsc, srcimp->idx[0], in srcimp_rsc_init()
678 srcimp->imappers = kcalloc(desc->msr, sizeof(struct imapper), in srcimp_rsc_init()
680 if (!srcimp->imappers) { in srcimp_rsc_init()
686 srcimp->rsc.ops = &srcimp_basic_rsc_ops; in srcimp_rsc_init()
687 srcimp->ops = &srcimp_ops; in srcimp_rsc_init()
688 srcimp->mgr = mgr; in srcimp_rsc_init()
690 srcimp->rsc.ops->master(&srcimp->rsc); in srcimp_rsc_init()
695 rsc_uninit(&srcimp->rsc); in srcimp_rsc_init()
699 static int srcimp_rsc_uninit(struct srcimp *srcimp) in srcimp_rsc_uninit() argument
701 kfree(srcimp->imappers); in srcimp_rsc_uninit()
702 srcimp->imappers = NULL; in srcimp_rsc_uninit()
703 srcimp->ops = NULL; in srcimp_rsc_uninit()
704 srcimp->mgr = NULL; in srcimp_rsc_uninit()
705 rsc_uninit(&srcimp->rsc); in srcimp_rsc_uninit()
712 struct srcimp **rsrcimp) in get_srcimp_rsc()
716 struct srcimp *srcimp; in get_srcimp_rsc() local
722 srcimp = kzalloc(sizeof(*srcimp), GFP_KERNEL); in get_srcimp_rsc()
723 if (!srcimp) in get_srcimp_rsc()
734 srcimp->idx[i] = idx; in get_srcimp_rsc()
743 err = srcimp_rsc_init(srcimp, desc, mgr); in get_srcimp_rsc()
747 *rsrcimp = srcimp; in get_srcimp_rsc()
754 mgr_put_resource(&mgr->mgr, 1, srcimp->idx[i]); in get_srcimp_rsc()
757 kfree(srcimp); in get_srcimp_rsc()
761 static int put_srcimp_rsc(struct srcimp_mgr *mgr, struct srcimp *srcimp) in put_srcimp_rsc() argument
767 for (i = 0; i < srcimp->rsc.msr; i++) in put_srcimp_rsc()
768 mgr_put_resource(&mgr->mgr, 1, srcimp->idx[i]); in put_srcimp_rsc()
771 srcimp_rsc_uninit(srcimp); in put_srcimp_rsc()
772 kfree(srcimp); in put_srcimp_rsc()