]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/xe/hwmon: Add HWMON support for BMG
authorKarthik Poosa <karthik.poosa@intel.com>
Wed, 29 May 2024 05:07:57 +0000 (10:37 +0530)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Wed, 29 May 2024 13:34:47 +0000 (09:34 -0400)
Add HWMON support for BMG. Exposing the pkg power, current,
energy info.

Signed-off-by: Karthik Poosa <karthik.poosa@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://lore.kernel.org/r/20240523144351.4040131-2-balasubramani.vivekanandan@intel.com
Signed-off-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240529050758.442056-2-balasubramani.vivekanandan@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/regs/xe_pcode_regs.h
drivers/gpu/drm/xe/xe_hwmon.c

index 3dae858508c8e392dfe295162537c17dccf1288b..beba16d592fc6140a7f223a268a8b6f4f51191ec 100644 (file)
@@ -18,4 +18,9 @@
 #define PVC_GT0_PLATFORM_ENERGY_STATUS          XE_REG(0x28106c)
 #define PVC_GT0_PACKAGE_POWER_SKU               XE_REG(0x281080)
 
+#define BMG_PACKAGE_POWER_SKU                  XE_REG(0x138098)
+#define BMG_PACKAGE_POWER_SKU_UNIT             XE_REG(0x1380dc)
+#define BMG_PACKAGE_ENERGY_STATUS              XE_REG(0x138120)
+#define BMG_PACKAGE_RAPL_LIMIT                 XE_REG(0x138440)
+
 #endif /* _XE_PCODE_REGS_H_ */
index dca275117232f532b42790910bdbd929bfc7ab8e..8daa070d7b1a04ed0605079c3cbfcf9c0656be5e 100644 (file)
@@ -86,19 +86,25 @@ static struct xe_reg xe_hwmon_get_reg(struct xe_hwmon *hwmon, enum xe_hwmon_reg
 
        switch (hwmon_reg) {
        case REG_PKG_RAPL_LIMIT:
-               if (xe->info.platform == XE_PVC && channel == CHANNEL_PKG)
+               if (xe->info.platform == XE_BATTLEMAGE && channel == CHANNEL_PKG)
+                       return BMG_PACKAGE_RAPL_LIMIT;
+               else if (xe->info.platform == XE_PVC && channel == CHANNEL_PKG)
                        return PVC_GT0_PACKAGE_RAPL_LIMIT;
                else if ((xe->info.platform == XE_DG2) && (channel == CHANNEL_PKG))
                        return PCU_CR_PACKAGE_RAPL_LIMIT;
                break;
        case REG_PKG_POWER_SKU:
-               if (xe->info.platform == XE_PVC && channel == CHANNEL_PKG)
+               if (xe->info.platform == XE_BATTLEMAGE)
+                       return BMG_PACKAGE_POWER_SKU;
+               else if (xe->info.platform == XE_PVC && channel == CHANNEL_PKG)
                        return PVC_GT0_PACKAGE_POWER_SKU;
                else if ((xe->info.platform == XE_DG2) && (channel == CHANNEL_PKG))
                        return PCU_CR_PACKAGE_POWER_SKU;
                break;
        case REG_PKG_POWER_SKU_UNIT:
-               if (xe->info.platform == XE_PVC)
+               if (xe->info.platform == XE_BATTLEMAGE)
+                       return BMG_PACKAGE_POWER_SKU_UNIT;
+               else if (xe->info.platform == XE_PVC)
                        return PVC_GT0_PACKAGE_POWER_SKU_UNIT;
                else if (xe->info.platform == XE_DG2)
                        return PCU_CR_PACKAGE_POWER_SKU_UNIT;
@@ -108,7 +114,9 @@ static struct xe_reg xe_hwmon_get_reg(struct xe_hwmon *hwmon, enum xe_hwmon_reg
                        return GT_PERF_STATUS;
                break;
        case REG_PKG_ENERGY_STATUS:
-               if (xe->info.platform == XE_PVC && channel == CHANNEL_PKG)
+               if (xe->info.platform == XE_BATTLEMAGE && channel == CHANNEL_PKG)
+                       return BMG_PACKAGE_ENERGY_STATUS;
+               else if (xe->info.platform == XE_PVC && channel == CHANNEL_PKG)
                        return PVC_GT0_PLATFORM_ENERGY_STATUS;
                else if ((xe->info.platform == XE_DG2) && (channel == CHANNEL_PKG))
                        return PCU_CR_PACKAGE_ENERGY_STATUS;