Lines Matching refs:srcimp
600 return rsc->idx = container_of(rsc, struct srcimp, rsc)->idx[0]; in srcimp_master()
606 return container_of(rsc, struct srcimp, rsc)->idx[rsc->conj]; in srcimp_next_conj()
611 return container_of(rsc, struct srcimp, rsc)->idx[rsc->conj]; in srcimp_index()
621 static int srcimp_map(struct srcimp *srcimp, struct src *src, struct rsc *input) in srcimp_map() argument
626 srcimp->rsc.ops->master(&srcimp->rsc); in srcimp_map()
631 for (i = 0; i < srcimp->rsc.msr; i++) { in srcimp_map()
632 entry = &srcimp->imappers[i]; in srcimp_map()
635 entry->addr = srcimp->rsc.ops->index(&srcimp->rsc); in srcimp_map()
636 srcimp->mgr->imap_add(srcimp->mgr, entry); in srcimp_map()
637 srcimp->mapped |= (0x1 << i); in srcimp_map()
639 srcimp->rsc.ops->next_conj(&srcimp->rsc); in srcimp_map()
643 srcimp->rsc.ops->master(&srcimp->rsc); in srcimp_map()
649 static int srcimp_unmap(struct srcimp *srcimp) in srcimp_unmap() argument
654 for (i = 0; i < srcimp->rsc.msr; i++) { in srcimp_unmap()
655 if (srcimp->mapped & (0x1 << i)) { in srcimp_unmap()
656 srcimp->mgr->imap_delete(srcimp->mgr, in srcimp_unmap()
657 &srcimp->imappers[i]); in srcimp_unmap()
658 srcimp->mapped &= ~(0x1 << i); in srcimp_unmap()
670 static int srcimp_rsc_init(struct srcimp *srcimp, in srcimp_rsc_init() argument
676 err = rsc_init(&srcimp->rsc, srcimp->idx[0], in srcimp_rsc_init()
682 srcimp->imappers = kzalloc(sizeof(struct imapper)*desc->msr, in srcimp_rsc_init()
684 if (!srcimp->imappers) { in srcimp_rsc_init()
690 srcimp->rsc.ops = &srcimp_basic_rsc_ops; in srcimp_rsc_init()
691 srcimp->ops = &srcimp_ops; in srcimp_rsc_init()
692 srcimp->mgr = mgr; in srcimp_rsc_init()
694 srcimp->rsc.ops->master(&srcimp->rsc); in srcimp_rsc_init()
699 rsc_uninit(&srcimp->rsc); in srcimp_rsc_init()
703 static int srcimp_rsc_uninit(struct srcimp *srcimp) in srcimp_rsc_uninit() argument
705 if (NULL != srcimp->imappers) { in srcimp_rsc_uninit()
706 kfree(srcimp->imappers); in srcimp_rsc_uninit()
707 srcimp->imappers = NULL; in srcimp_rsc_uninit()
709 srcimp->ops = NULL; in srcimp_rsc_uninit()
710 srcimp->mgr = NULL; in srcimp_rsc_uninit()
711 rsc_uninit(&srcimp->rsc); in srcimp_rsc_uninit()
718 struct srcimp **rsrcimp) in get_srcimp_rsc()
722 struct srcimp *srcimp; in get_srcimp_rsc() local
728 srcimp = kzalloc(sizeof(*srcimp), GFP_KERNEL); in get_srcimp_rsc()
729 if (!srcimp) in get_srcimp_rsc()
740 srcimp->idx[i] = idx; in get_srcimp_rsc()
749 err = srcimp_rsc_init(srcimp, desc, mgr); in get_srcimp_rsc()
753 *rsrcimp = srcimp; in get_srcimp_rsc()
760 mgr_put_resource(&mgr->mgr, 1, srcimp->idx[i]); in get_srcimp_rsc()
763 kfree(srcimp); in get_srcimp_rsc()
767 static int put_srcimp_rsc(struct srcimp_mgr *mgr, struct srcimp *srcimp) in put_srcimp_rsc() argument
773 for (i = 0; i < srcimp->rsc.msr; i++) in put_srcimp_rsc()
774 mgr_put_resource(&mgr->mgr, 1, srcimp->idx[i]); in put_srcimp_rsc()
777 srcimp_rsc_uninit(srcimp); in put_srcimp_rsc()
778 kfree(srcimp); in put_srcimp_rsc()