Signed-off-by: Karol Herbst <karolher...@gmail.com>
---
 drm/nouveau/include/nvkm/subdev/iccsense.h |  3 +++
 drm/nouveau/nvkm/subdev/iccsense/base.c    | 13 ++++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/drm/nouveau/include/nvkm/subdev/iccsense.h 
b/drm/nouveau/include/nvkm/subdev/iccsense.h
index 3c2ddd9..b7a9b04 100644
--- a/drm/nouveau/include/nvkm/subdev/iccsense.h
+++ b/drm/nouveau/include/nvkm/subdev/iccsense.h
@@ -8,6 +8,9 @@ struct nvkm_iccsense {
        bool data_valid;
        struct list_head sensors;
        struct list_head rails;
+
+       u32 power_w_max;
+       u32 power_w_crit;
 };
 
 int gf100_iccsense_new(struct nvkm_device *, int index, struct nvkm_iccsense 
**);
diff --git a/drm/nouveau/nvkm/subdev/iccsense/base.c 
b/drm/nouveau/nvkm/subdev/iccsense/base.c
index 658355f..4e2b074 100644
--- a/drm/nouveau/nvkm/subdev/iccsense/base.c
+++ b/drm/nouveau/nvkm/subdev/iccsense/base.c
@@ -26,6 +26,7 @@
 #include <subdev/bios.h>
 #include <subdev/bios/extdev.h>
 #include <subdev/bios/iccsense.h>
+#include <subdev/bios/power_budget.h>
 #include <subdev/i2c.h>
 
 static bool
@@ -216,10 +217,20 @@ nvkm_iccsense_oneinit(struct nvkm_subdev *subdev)
 {
        struct nvkm_iccsense *iccsense = nvkm_iccsense(subdev);
        struct nvkm_bios *bios = subdev->device->bios;
+       struct nvbios_power_budget budget;
        struct nvbios_iccsense stbl;
        int i;
 
-       if (!bios || nvbios_iccsense_parse(bios, &stbl) || !stbl.nr_entry)
+       if (!bios)
+               return 0;
+
+       if (!nvbios_power_budget_parse(bios, &budget) && budget.nr_entry &&
+           budget.cap_entry != 0xff) {
+               iccsense->power_w_max  = budget.entries[budget.cap_entry].avg_w;
+               iccsense->power_w_crit = budget.entries[budget.cap_entry].max_w;
+       }
+
+       if (nvbios_iccsense_parse(bios, &stbl) || !stbl.nr_entry)
                return 0;
 
        iccsense->data_valid = true;
-- 
2.10.0

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to