[Nouveau] [PATCH v2 04/22] volt: add nvkm_volt_map_min function
Karol Herbst
nouveau at karolherbst.de
Mon Mar 21 16:16:22 UTC 2016
this is a copy of nvkm_volt_map, which always returns the lowest possible
voltage for a cstate
nvkm_volt_map will get a temperature parameter there later and also fix the
voltage calculation, so that this functions will be completly different in
later commits
Signed-off-by: Karol Herbst <nouveau at karolherbst.de>
Tested-by: Pierre Moreau <pierre.morrow at free.fr>
---
drm/nouveau/include/nvkm/subdev/volt.h | 1 +
drm/nouveau/nvkm/subdev/volt/base.c | 22 ++++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/drm/nouveau/include/nvkm/subdev/volt.h b/drm/nouveau/include/nvkm/subdev/volt.h
index b765f4f..fc68825 100644
--- a/drm/nouveau/include/nvkm/subdev/volt.h
+++ b/drm/nouveau/include/nvkm/subdev/volt.h
@@ -17,6 +17,7 @@ struct nvkm_volt {
u32 min_uv;
};
+int nvkm_volt_map_min(struct nvkm_volt *volt, u8 id);
int nvkm_volt_get(struct nvkm_volt *);
int nvkm_volt_set_id(struct nvkm_volt *, u8 id, int condition);
diff --git a/drm/nouveau/nvkm/subdev/volt/base.c b/drm/nouveau/nvkm/subdev/volt/base.c
index 95fe065..71094a9 100644
--- a/drm/nouveau/nvkm/subdev/volt/base.c
+++ b/drm/nouveau/nvkm/subdev/volt/base.c
@@ -65,6 +65,28 @@ nvkm_volt_set(struct nvkm_volt *volt, u32 uv)
return ret;
}
+int
+nvkm_volt_map_min(struct nvkm_volt *volt, u8 id)
+{
+ struct nvkm_bios *bios = volt->subdev.device->bios;
+ struct nvbios_vmap_entry info;
+ u8 ver, len;
+ u16 vmap;
+
+ vmap = nvbios_vmap_entry_parse(bios, id, &ver, &len, &info);
+ if (vmap) {
+ if (info.link != 0xff) {
+ int ret = nvkm_volt_map_min(volt, info.link);
+ if (ret < 0)
+ return ret;
+ info.min += ret;
+ }
+ return info.min;
+ }
+
+ return id ? id * 10000 : -ENODEV;
+}
+
static int
nvkm_volt_map(struct nvkm_volt *volt, u8 id)
{
--
2.7.4
More information about the Nouveau
mailing list