Commit 3e373948 authored by Daniel Vetter's avatar Daniel Vetter

drm/i915: move pwrctx/renderctx to the other ilk power state

Reviewed-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent c85aa885
...@@ -1400,15 +1400,15 @@ static int i915_context_status(struct seq_file *m, void *unused) ...@@ -1400,15 +1400,15 @@ static int i915_context_status(struct seq_file *m, void *unused)
if (ret) if (ret)
return ret; return ret;
if (dev_priv->pwrctx) { if (dev_priv->ips.pwrctx) {
seq_printf(m, "power context "); seq_printf(m, "power context ");
describe_obj(m, dev_priv->pwrctx); describe_obj(m, dev_priv->ips.pwrctx);
seq_printf(m, "\n"); seq_printf(m, "\n");
} }
if (dev_priv->renderctx) { if (dev_priv->ips.renderctx) {
seq_printf(m, "render context "); seq_printf(m, "render context ");
describe_obj(m, dev_priv->renderctx); describe_obj(m, dev_priv->ips.renderctx);
seq_printf(m, "\n"); seq_printf(m, "\n");
} }
......
...@@ -581,6 +581,9 @@ struct intel_ilk_power_mgmt { ...@@ -581,6 +581,9 @@ struct intel_ilk_power_mgmt {
int c_m; int c_m;
int r_t; int r_t;
struct drm_i915_gem_object *pwrctx;
struct drm_i915_gem_object *renderctx;
}; };
typedef struct drm_i915_private { typedef struct drm_i915_private {
...@@ -618,9 +621,6 @@ typedef struct drm_i915_private { ...@@ -618,9 +621,6 @@ typedef struct drm_i915_private {
drm_dma_handle_t *status_page_dmah; drm_dma_handle_t *status_page_dmah;
uint32_t counter; uint32_t counter;
struct drm_i915_gem_object *pwrctx;
struct drm_i915_gem_object *renderctx;
struct resource mch_res; struct resource mch_res;
atomic_t irq_received; atomic_t irq_received;
......
...@@ -2593,16 +2593,16 @@ void ironlake_teardown_rc6(struct drm_device *dev) ...@@ -2593,16 +2593,16 @@ void ironlake_teardown_rc6(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
if (dev_priv->renderctx) { if (dev_priv->ips.renderctx) {
i915_gem_object_unpin(dev_priv->renderctx); i915_gem_object_unpin(dev_priv->ips.renderctx);
drm_gem_object_unreference(&dev_priv->renderctx->base); drm_gem_object_unreference(&dev_priv->ips.renderctx->base);
dev_priv->renderctx = NULL; dev_priv->ips.renderctx = NULL;
} }
if (dev_priv->pwrctx) { if (dev_priv->ips.pwrctx) {
i915_gem_object_unpin(dev_priv->pwrctx); i915_gem_object_unpin(dev_priv->ips.pwrctx);
drm_gem_object_unreference(&dev_priv->pwrctx->base); drm_gem_object_unreference(&dev_priv->ips.pwrctx->base);
dev_priv->pwrctx = NULL; dev_priv->ips.pwrctx = NULL;
} }
} }
...@@ -2628,14 +2628,14 @@ static int ironlake_setup_rc6(struct drm_device *dev) ...@@ -2628,14 +2628,14 @@ static int ironlake_setup_rc6(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
if (dev_priv->renderctx == NULL) if (dev_priv->ips.renderctx == NULL)
dev_priv->renderctx = intel_alloc_context_page(dev); dev_priv->ips.renderctx = intel_alloc_context_page(dev);
if (!dev_priv->renderctx) if (!dev_priv->ips.renderctx)
return -ENOMEM; return -ENOMEM;
if (dev_priv->pwrctx == NULL) if (dev_priv->ips.pwrctx == NULL)
dev_priv->pwrctx = intel_alloc_context_page(dev); dev_priv->ips.pwrctx = intel_alloc_context_page(dev);
if (!dev_priv->pwrctx) { if (!dev_priv->ips.pwrctx) {
ironlake_teardown_rc6(dev); ironlake_teardown_rc6(dev);
return -ENOMEM; return -ENOMEM;
} }
...@@ -2673,7 +2673,7 @@ static void ironlake_enable_rc6(struct drm_device *dev) ...@@ -2673,7 +2673,7 @@ static void ironlake_enable_rc6(struct drm_device *dev)
intel_ring_emit(ring, MI_SUSPEND_FLUSH | MI_SUSPEND_FLUSH_EN); intel_ring_emit(ring, MI_SUSPEND_FLUSH | MI_SUSPEND_FLUSH_EN);
intel_ring_emit(ring, MI_SET_CONTEXT); intel_ring_emit(ring, MI_SET_CONTEXT);
intel_ring_emit(ring, dev_priv->renderctx->gtt_offset | intel_ring_emit(ring, dev_priv->ips.renderctx->gtt_offset |
MI_MM_SPACE_GTT | MI_MM_SPACE_GTT |
MI_SAVE_EXT_STATE_EN | MI_SAVE_EXT_STATE_EN |
MI_RESTORE_EXT_STATE_EN | MI_RESTORE_EXT_STATE_EN |
...@@ -2695,7 +2695,7 @@ static void ironlake_enable_rc6(struct drm_device *dev) ...@@ -2695,7 +2695,7 @@ static void ironlake_enable_rc6(struct drm_device *dev)
return; return;
} }
I915_WRITE(PWRCTXA, dev_priv->pwrctx->gtt_offset | PWRCTX_EN); I915_WRITE(PWRCTXA, dev_priv->ips.pwrctx->gtt_offset | PWRCTX_EN);
I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) & ~RCX_SW_EXIT); I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) & ~RCX_SW_EXIT);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment