Lines Matching defs:srcimp

596 	rsc->idx = container_of(rsc, struct srcimp, rsc)->idx[0];
606 return container_of(rsc, struct srcimp, rsc)->idx[rsc->conj];
616 static int srcimp_map(struct srcimp *srcimp, struct src *src, struct rsc *input)
621 srcimp->rsc.ops->master(&srcimp->rsc);
626 for (i = 0; i < srcimp->rsc.msr; i++) {
627 entry = &srcimp->imappers[i];
630 entry->addr = srcimp->rsc.ops->index(&srcimp->rsc);
631 srcimp->mgr->imap_add(srcimp->mgr, entry);
632 srcimp->mapped |= (0x1 << i);
634 srcimp->rsc.ops->next_conj(&srcimp->rsc);
638 srcimp->rsc.ops->master(&srcimp->rsc);
644 static int srcimp_unmap(struct srcimp *srcimp)
649 for (i = 0; i < srcimp->rsc.msr; i++) {
650 if (srcimp->mapped & (0x1 << i)) {
651 srcimp->mgr->imap_delete(srcimp->mgr,
652 &srcimp->imappers[i]);
653 srcimp->mapped &= ~(0x1 << i);
665 static int srcimp_rsc_init(struct srcimp *srcimp,
671 err = rsc_init(&srcimp->rsc, srcimp->idx[0],
677 srcimp->imappers = kcalloc(desc->msr, sizeof(struct imapper),
679 if (!srcimp->imappers) {
684 /* Set srcimp specific operations */
685 srcimp->rsc.ops = &srcimp_basic_rsc_ops;
686 srcimp->ops = &srcimp_ops;
687 srcimp->mgr = mgr;
689 srcimp->rsc.ops->master(&srcimp->rsc);
694 rsc_uninit(&srcimp->rsc);
698 static int srcimp_rsc_uninit(struct srcimp *srcimp)
700 kfree(srcimp->imappers);
701 srcimp->imappers = NULL;
702 srcimp->ops = NULL;
703 srcimp->mgr = NULL;
704 rsc_uninit(&srcimp->rsc);
711 struct srcimp **rsrcimp)
715 struct srcimp *srcimp;
721 srcimp = kzalloc(sizeof(*srcimp), GFP_KERNEL);
722 if (!srcimp)
733 srcimp->idx[i] = idx;
742 err = srcimp_rsc_init(srcimp, desc, mgr);
746 *rsrcimp = srcimp;
753 mgr_put_resource(&mgr->mgr, 1, srcimp->idx[i]);
756 kfree(srcimp);
760 static int put_srcimp_rsc(struct srcimp_mgr *mgr, struct srcimp *srcimp)
766 for (i = 0; i < srcimp->rsc.msr; i++)
767 mgr_put_resource(&mgr->mgr, 1, srcimp->idx[i]);
770 srcimp_rsc_uninit(srcimp);
771 kfree(srcimp);