Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93dccbed authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/pm: show any info we can manage to glean on current perflvl



Previously wouldn't show detected voltage if we couldn't figure out the
clock frequencies..

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 3b5565dd
Loading
Loading
Loading
Loading
+25 −23
Original line number Diff line number Diff line
@@ -123,11 +123,9 @@ nouveau_pm_perflvl_get(struct drm_device *dev, struct nouveau_pm_level *perflvl)
	struct nouveau_pm_engine *pm = &dev_priv->engine.pm;
	int ret;

	if (!pm->clock_get)
		return -EINVAL;

	memset(perflvl, 0, sizeof(*perflvl));

	if (pm->clock_get) {
		ret = pm->clock_get(dev, PLL_CORE);
		if (ret > 0)
			perflvl->core = ret;
@@ -143,6 +141,7 @@ nouveau_pm_perflvl_get(struct drm_device *dev, struct nouveau_pm_level *perflvl)
		ret = pm->clock_get(dev, PLL_UNK05);
		if (ret > 0)
			perflvl->unk05 = ret;
	}

	if (pm->voltage.supported && pm->voltage_get) {
		ret = pm->voltage_get(dev);
@@ -158,7 +157,7 @@ nouveau_pm_perflvl_get(struct drm_device *dev, struct nouveau_pm_level *perflvl)
static void
nouveau_pm_perflvl_info(struct nouveau_pm_level *perflvl, char *ptr, int len)
{
	char c[16], s[16], v[32], f[16], t[16];
	char c[16], s[16], v[32], f[16], t[16], m[16];

	c[0] = '\0';
	if (perflvl->core)
@@ -168,6 +167,10 @@ nouveau_pm_perflvl_info(struct nouveau_pm_level *perflvl, char *ptr, int len)
	if (perflvl->shader)
		snprintf(s, sizeof(s), " shader %dMHz", perflvl->shader / 1000);

	m[0] = '\0';
	if (perflvl->memory)
		snprintf(m, sizeof(m), " memory %dMHz", perflvl->memory / 1000);

	v[0] = '\0';
	if (perflvl->volt_min && perflvl->volt_min != perflvl->volt_max) {
		snprintf(v, sizeof(v), " voltage %dmV-%dmV",
@@ -186,8 +189,7 @@ nouveau_pm_perflvl_info(struct nouveau_pm_level *perflvl, char *ptr, int len)
	if (perflvl->timing)
		snprintf(t, sizeof(t), " timing %d", perflvl->timing->id);

	snprintf(ptr, len, "memory %dMHz%s%s%s%s%s\n", perflvl->memory / 1000,
		 c, s, v, f, t);
	snprintf(ptr, len, "%s%s%s%s%s%s\n", c, s, m, t, v, f);
}

static ssize_t