diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 23 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 2 | 
2 files changed, 25 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 4785d8c14654..236d97e51c3a 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -31,6 +31,7 @@  #include <linux/slab.h>  #include <linux/export.h>  #include <linux/list_sort.h> +#include <asm/msr-index.h>  #include <drm/drmP.h>  #include "intel_drv.h"  #include "intel_ringbuffer.h" @@ -1769,6 +1770,27 @@ static int i915_edp_psr_status(struct seq_file *m, void *data)  	return 0;  } +static int i915_energy_uJ(struct seq_file *m, void *data) +{ +	struct drm_info_node *node = m->private; +	struct drm_device *dev = node->minor->dev; +	struct drm_i915_private *dev_priv = dev->dev_private; +	u64 power; +	u32 units; + +	if (INTEL_INFO(dev)->gen < 6) +		return -ENODEV; + +	rdmsrl(MSR_RAPL_POWER_UNIT, power); +	power = (power & 0x1f00) >> 8; +	units = 1000000 / (1 << power); /* convert to uJ */ +	power = I915_READ(MCH_SECP_NRG_STTS); +	power *= units; + +	seq_printf(m, "%llu", (long long unsigned)power); +	return 0; +} +  static int  i915_wedged_get(void *data, u64 *val)  { @@ -2208,6 +2230,7 @@ static struct drm_info_list i915_debugfs_list[] = {  	{"i915_dpio", i915_dpio_info, 0},  	{"i915_llc", i915_llc, 0},  	{"i915_edp_psr_status", i915_edp_psr_status, 0}, +	{"i915_energy_uJ", i915_energy_uJ, 0},  };  #define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 3c652eb7ee6c..c4c509895826 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -1447,6 +1447,8 @@  #define   MCH_SSKPD_WM0_MASK		0x3f  #define   MCH_SSKPD_WM0_VAL		0xc +#define MCH_SECP_NRG_STTS		(MCHBAR_MIRROR_BASE_SNB + 0x592c) +  /* Clocking configuration register */  #define CLKCFG			0x10c00  #define CLKCFG_FSB_400					(5 << 0)	/* hrawclk 100 */ | 
