summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2013-08-23 16:37:32 -0300
committerPaulo Zanoni <paulo.r.zanoni@intel.com>2013-08-23 16:37:32 -0300
commited9817a6e5431423e11d3c66f4d1555abe123f0b (patch)
treed14655d5dc874b3ae6c77c5636aca5eb6113eaff
parenteb2b76d5cb7432ea4ca60f87b3a0e2f052af48dd (diff)
XXX: more D3 stuffd3-wip
- My bikeshed to Jani's patch - A debugfs file Not-signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c14
-rw-r--r--drivers/gpu/drm/i915/intel_display.c6
2 files changed, 16 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 8378ee732128..3527ab4989f7 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1815,6 +1815,19 @@ static int i915_pc8_status(struct seq_file *m, void *unused)
return 0;
}
+static int i915_d3_status(struct seq_file *m, void *unused)
+{
+ struct drm_info_node *node = (struct drm_info_node *) m->private;
+ struct drm_device *dev = node->minor->dev;
+ struct drm_i915_private *dev_priv = dev->dev_private;
+ u16 val;
+
+ pci_read_config_word(dev->pdev, 0xd4, &val);
+ seq_printf(m, "0xd4:0x%04x\n", val);
+
+ return 0;
+}
+
static int
i915_wedged_get(void *data, u64 *val)
{
@@ -2256,6 +2269,7 @@ static struct drm_info_list i915_debugfs_list[] = {
{"i915_edp_psr_status", i915_edp_psr_status, 0},
{"i915_energy_uJ", i915_energy_uJ, 0},
{"i915_pc8_status", i915_pc8_status, 0},
+ {"i915_d3_status", i915_d3_status, 0},
};
#define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index b769dda732cb..bbb6690f4ca1 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -6098,9 +6098,8 @@ void hsw_enable_pc8_work(struct work_struct *__work)
lpt_disable_clkout_dp(dev);
hsw_pc8_disable_interrupts(dev);
+ intel_opregion_notify_adapter(dev, PCI_D3cold);
hsw_disable_lcpll(dev_priv, true, true);
-
- intel_opregion_notify_adapter(dev, PCI_D1);
}
static void __hsw_enable_package_c8(struct drm_i915_private *dev_priv)
@@ -6134,11 +6133,10 @@ static void __hsw_disable_package_c8(struct drm_i915_private *dev_priv)
if (!dev_priv->pc8.enabled)
return;
- intel_opregion_notify_adapter(dev, PCI_D0);
-
DRM_DEBUG_KMS("Disabling package C8+\n");
hsw_restore_lcpll(dev_priv);
+ intel_opregion_notify_adapter(dev, PCI_D0);
hsw_pc8_restore_interrupts(dev);
lpt_init_pch_refclk(dev);