Lines Matching full:pm

36 nvkm_pm_count_perfdom(struct nvkm_pm *pm)  in nvkm_pm_count_perfdom()  argument
41 list_for_each_entry(dom, &pm->domains, head) in nvkm_pm_count_perfdom()
62 nvkm_perfdom_find(struct nvkm_pm *pm, int di) in nvkm_perfdom_find() argument
67 list_for_each_entry(dom, &pm->domains, head) { in nvkm_perfdom_find()
75 nvkm_perfsig_find(struct nvkm_pm *pm, u8 di, u8 si, struct nvkm_perfdom **pdom) in nvkm_perfsig_find() argument
80 dom = nvkm_perfdom_find(pm, di); in nvkm_perfsig_find()
104 nvkm_perfsrc_find(struct nvkm_pm *pm, struct nvkm_perfsig *sig, int si) in nvkm_perfsrc_find() argument
119 list_for_each_entry(src, &pm->sources, head) { in nvkm_perfsrc_find()
129 nvkm_perfsrc_enable(struct nvkm_pm *pm, struct nvkm_perfctr *ctr) in nvkm_perfsrc_enable() argument
131 struct nvkm_subdev *subdev = &pm->engine.subdev; in nvkm_perfsrc_enable()
141 sig = nvkm_perfsig_find(pm, ctr->domain, in nvkm_perfsrc_enable()
146 src = nvkm_perfsrc_find(pm, sig, ctr->source[i][j]); in nvkm_perfsrc_enable()
168 nvkm_perfsrc_disable(struct nvkm_pm *pm, struct nvkm_perfctr *ctr) in nvkm_perfsrc_disable() argument
170 struct nvkm_subdev *subdev = &pm->engine.subdev; in nvkm_perfsrc_disable()
180 sig = nvkm_perfsig_find(pm, ctr->domain, in nvkm_perfsrc_disable()
185 src = nvkm_perfsrc_find(pm, sig, ctr->source[i][j]); in nvkm_perfsrc_disable()
214 struct nvkm_pm *pm = dom->perfmon->pm; in nvkm_perfdom_init() local
225 dom->func->init(pm, dom, dom->ctr[i]); in nvkm_perfdom_init()
228 nvkm_perfsrc_enable(pm, dom->ctr[i]); in nvkm_perfdom_init()
233 dom->func->next(pm, dom); in nvkm_perfdom_init()
244 struct nvkm_pm *pm = dom->perfmon->pm; in nvkm_perfdom_sample() local
252 pm->sequence++; in nvkm_perfdom_sample()
255 list_for_each_entry(dom, &pm->domains, head) in nvkm_perfdom_sample()
256 dom->func->next(pm, dom); in nvkm_perfdom_sample()
268 struct nvkm_pm *pm = dom->perfmon->pm; in nvkm_perfdom_read() local
279 dom->func->read(pm, dom, dom->ctr[i]); in nvkm_perfdom_read()
313 struct nvkm_pm *pm = dom->perfmon->pm; in nvkm_perfdom_dtor() local
319 nvkm_perfsrc_disable(pm, ctr); in nvkm_perfdom_dtor()
373 struct nvkm_pm *pm = perfmon->pm; in nvkm_perfdom_new_() local
393 sig[s] = nvkm_perfsig_find(pm, args->v0.domain, in nvkm_perfdom_new_()
401 if (src[s][m] && !nvkm_perfsrc_find(pm, sig[s], in nvkm_perfdom_new_()
441 struct nvkm_pm *pm = perfmon->pm; in nvkm_perfmon_mthd_query_domain() local
454 domain_nr = nvkm_pm_count_perfdom(pm); in nvkm_perfmon_mthd_query_domain()
459 dom = nvkm_perfdom_find(pm, di); in nvkm_perfmon_mthd_query_domain()
489 struct nvkm_pm *pm = perfmon->pm; in nvkm_perfmon_mthd_query_signal() local
490 struct nvkm_device *device = pm->engine.subdev.device; in nvkm_perfmon_mthd_query_signal()
506 dom = nvkm_perfdom_find(pm, args->v0.domain); in nvkm_perfmon_mthd_query_signal()
542 struct nvkm_pm *pm = perfmon->pm; in nvkm_perfmon_mthd_query_source() local
559 sig = nvkm_perfsig_find(pm, args->v0.domain, args->v0.signal, &dom); in nvkm_perfmon_mthd_query_source()
568 src = nvkm_perfsrc_find(pm, sig, sig->source[si]); in nvkm_perfmon_mthd_query_source()
629 struct nvkm_pm *pm = perfmon->pm; in nvkm_perfmon_dtor() local
630 spin_lock(&pm->client.lock); in nvkm_perfmon_dtor()
631 if (pm->client.object == &perfmon->object) in nvkm_perfmon_dtor()
632 pm->client.object = NULL; in nvkm_perfmon_dtor()
633 spin_unlock(&pm->client.lock); in nvkm_perfmon_dtor()
645 nvkm_perfmon_new(struct nvkm_pm *pm, const struct nvkm_oclass *oclass, in nvkm_perfmon_new() argument
653 perfmon->pm = pm; in nvkm_perfmon_new()
666 struct nvkm_pm *pm = nvkm_pm(oclass->engine); in nvkm_pm_oclass_new() local
669 ret = nvkm_perfmon_new(pm, oclass, data, size, pobject); in nvkm_pm_oclass_new()
673 spin_lock(&pm->client.lock); in nvkm_pm_oclass_new()
674 if (pm->client.object == NULL) in nvkm_pm_oclass_new()
675 pm->client.object = *pobject; in nvkm_pm_oclass_new()
676 ret = (pm->client.object == *pobject) ? 0 : -EBUSY; in nvkm_pm_oclass_new()
677 spin_unlock(&pm->client.lock); in nvkm_pm_oclass_new()
702 nvkm_perfsrc_new(struct nvkm_pm *pm, struct nvkm_perfsig *sig, in nvkm_perfsrc_new() argument
723 list_for_each_entry(src, &pm->sources, head) { in nvkm_perfsrc_new()
752 list_add_tail(&src->head, &pm->sources); in nvkm_perfsrc_new()
765 nvkm_perfdom_new(struct nvkm_pm *pm, const char *name, u32 mask, in nvkm_perfdom_new() argument
795 list_add_tail(&dom->head, &pm->domains); in nvkm_perfdom_new()
806 ret = nvkm_perfsrc_new(pm, sig, ssig->source); in nvkm_perfdom_new()
824 struct nvkm_pm *pm = nvkm_pm(engine); in nvkm_pm_fini() local
825 if (pm->func->fini) in nvkm_pm_fini()
826 pm->func->fini(pm); in nvkm_pm_fini()
833 struct nvkm_pm *pm = nvkm_pm(engine); in nvkm_pm_dtor() local
837 list_for_each_entry_safe(dom, next_dom, &pm->domains, head) { in nvkm_pm_dtor()
842 list_for_each_entry_safe(src, next_src, &pm->sources, head) { in nvkm_pm_dtor()
848 return pm; in nvkm_pm_dtor()
860 enum nvkm_subdev_type type, int inst, struct nvkm_pm *pm) in nvkm_pm_ctor() argument
862 pm->func = func; in nvkm_pm_ctor()
863 INIT_LIST_HEAD(&pm->domains); in nvkm_pm_ctor()
864 INIT_LIST_HEAD(&pm->sources); in nvkm_pm_ctor()
865 spin_lock_init(&pm->client.lock); in nvkm_pm_ctor()
866 return nvkm_engine_ctor(&nvkm_pm, device, type, inst, true, &pm->engine); in nvkm_pm_ctor()