diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index a9533c54c93c..a9ae374861e7 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
| @@ -1454,6 +1454,14 @@ unsigned long i915_chipset_val(struct drm_i915_private *dev_priv) | |||
| 1454 | 1454 | ||
| 1455 | diff1 = now - dev_priv->last_time1; | 1455 | diff1 = now - dev_priv->last_time1; |
| 1456 | 1456 | ||
| 1457 | /* Prevent division-by-zero if we are asking too fast. | ||
| 1458 | * Also, we don't get interesting results if we are polling | ||
| 1459 | * faster than once in 10ms, so just return the saved value | ||
| 1460 | * in such cases. | ||
| 1461 | */ | ||
| 1462 | if (diff1 <= 10) | ||
| 1463 | return dev_priv->chipset_power; | ||
| 1464 | |||
| 1457 | count1 = I915_READ(DMIEC); | 1465 | count1 = I915_READ(DMIEC); |
| 1458 | count2 = I915_READ(DDREC); | 1466 | count2 = I915_READ(DDREC); |
| 1459 | count3 = I915_READ(CSIEC); | 1467 | count3 = I915_READ(CSIEC); |
| @@ -1484,6 +1492,8 @@ unsigned long i915_chipset_val(struct drm_i915_private *dev_priv) | |||
| 1484 | dev_priv->last_count1 = total_count; | 1492 | dev_priv->last_count1 = total_count; |
| 1485 | dev_priv->last_time1 = now; | 1493 | dev_priv->last_time1 = now; |
| 1486 | 1494 | ||
| 1495 | dev_priv->chipset_power = ret; | ||
| 1496 | |||
| 1487 | return ret; | 1497 | return ret; |
| 1488 | } | 1498 | } |
| 1489 | 1499 | ||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 8ba88cfc36de..39a72f642b33 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -713,6 +713,7 @@ typedef struct drm_i915_private { | |||
| 713 | 713 | ||
| 714 | u64 last_count1; | 714 | u64 last_count1; |
| 715 | unsigned long last_time1; | 715 | unsigned long last_time1; |
| 716 | unsigned long chipset_power; | ||
| 716 | u64 last_count2; | 717 | u64 last_count2; |
| 717 | struct timespec last_time2; | 718 | struct timespec last_time2; |
| 718 | unsigned long gfx_power; | 719 | unsigned long gfx_power; |
