drm/nouveau/pm: use hardware signals indexes instead of user-readable names
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
e4047599ae
commit
10a4d2b248
|
@ -267,7 +267,8 @@ struct nvif_perfmon_query_signal_v0 {
|
||||||
__u8 version;
|
__u8 version;
|
||||||
__u8 domain;
|
__u8 domain;
|
||||||
__u16 iter;
|
__u16 iter;
|
||||||
__u8 pad03[4];
|
__u8 signal;
|
||||||
|
__u8 pad04[3];
|
||||||
char name[64];
|
char name[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -278,10 +279,12 @@ struct nvif_perfmon_query_signal_v0 {
|
||||||
|
|
||||||
struct nvif_perfctr_v0 {
|
struct nvif_perfctr_v0 {
|
||||||
__u8 version;
|
__u8 version;
|
||||||
__u8 pad01[1];
|
__u8 domain;
|
||||||
|
__u8 pad02[2];
|
||||||
__u16 logic_op;
|
__u16 logic_op;
|
||||||
__u8 pad04[4];
|
__u8 pad04[2];
|
||||||
char name[4][64];
|
__u8 signal[4];
|
||||||
|
__u8 pad06[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NVIF_PERFCTR_V0_SAMPLE 0x00
|
#define NVIF_PERFCTR_V0_SAMPLE 0x00
|
||||||
|
|
|
@ -73,49 +73,22 @@ nvkm_perfdom_find(struct nvkm_pm *ppm, int di)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct nvkm_perfsig *
|
|
||||||
nvkm_perfsig_find_(struct nvkm_perfdom *dom, const char *name, u32 size)
|
|
||||||
{
|
|
||||||
char path[64];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (name[0] != '/') {
|
|
||||||
for (i = 0; i < dom->signal_nr; i++) {
|
|
||||||
if ( dom->signal[i].name &&
|
|
||||||
!strncmp(name, dom->signal[i].name, size))
|
|
||||||
return &dom->signal[i];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (i = 0; i < dom->signal_nr; i++) {
|
|
||||||
snprintf(path, sizeof(path), "/%s/%02x", dom->name, i);
|
|
||||||
if (!strncmp(name, path, size))
|
|
||||||
return &dom->signal[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct nvkm_perfsig *
|
struct nvkm_perfsig *
|
||||||
nvkm_perfsig_find(struct nvkm_pm *ppm, const char *name, u32 size,
|
nvkm_perfsig_find(struct nvkm_pm *ppm, uint8_t di, uint8_t si,
|
||||||
struct nvkm_perfdom **pdom)
|
struct nvkm_perfdom **pdom)
|
||||||
{
|
{
|
||||||
struct nvkm_perfdom *dom = *pdom;
|
struct nvkm_perfdom *dom = *pdom;
|
||||||
struct nvkm_perfsig *sig;
|
|
||||||
|
|
||||||
if (dom == NULL) {
|
if (dom == NULL) {
|
||||||
list_for_each_entry(dom, &ppm->domains, head) {
|
dom = nvkm_perfdom_find(ppm, di);
|
||||||
sig = nvkm_perfsig_find_(dom, name, size);
|
if (dom == NULL)
|
||||||
if (sig) {
|
return NULL;
|
||||||
*pdom = dom;
|
*pdom = dom;
|
||||||
return sig;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nvkm_perfsig_find_(dom, name, size);
|
if (!dom->signal[si].name)
|
||||||
|
return NULL;
|
||||||
|
return &dom->signal[si];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
@ -200,6 +173,7 @@ nvkm_perfmon_mthd_query_signal(struct nvkm_object *object, void *data, u32 size)
|
||||||
} else {
|
} else {
|
||||||
strncpy(args->v0.name, name, sizeof(args->v0.name));
|
strncpy(args->v0.name, name, sizeof(args->v0.name));
|
||||||
}
|
}
|
||||||
|
args->v0.signal = si;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (++si < dom->signal_nr) {
|
while (++si < dom->signal_nr) {
|
||||||
|
@ -359,11 +333,9 @@ nvkm_perfctr_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
|
||||||
} else
|
} else
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(args->v0.name) && args->v0.name[i][0]; i++) {
|
for (i = 0; i < ARRAY_SIZE(args->v0.signal) && args->v0.signal[i]; i++) {
|
||||||
sig[i] = nvkm_perfsig_find(ppm, args->v0.name[i],
|
sig[i] = nvkm_perfsig_find(ppm, args->v0.domain,
|
||||||
strnlen(args->v0.name[i],
|
args->v0.signal[i], &dom);
|
||||||
sizeof(args->v0.name[i])),
|
|
||||||
&dom);
|
|
||||||
if (!sig[i])
|
if (!sig[i])
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue