drm/i915: save/restore GMBUS freq across suspend/resume on gen4
Should probably just init this in the GMbus code all the time, based on the cdclk and HPLL like we do on newer platforms. Ville has code for that in a rework branch, but until then we can fix this bug fairly easily. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76301 Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Tested-by: Nikolay <mar.kolya@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
26459343e0
commit
9f49c37635
|
@ -924,6 +924,7 @@ struct i915_suspend_saved_registers {
|
|||
u32 savePIPEB_LINK_N1;
|
||||
u32 saveMCHBAR_RENDER_STANDBY;
|
||||
u32 savePCH_PORT_HOTPLUG;
|
||||
u16 saveGCDGMBUS;
|
||||
};
|
||||
|
||||
struct vlv_s0ix_state {
|
||||
|
|
|
@ -85,6 +85,7 @@
|
|||
#define I915_GC_RENDER_CLOCK_166_MHZ (0 << 0)
|
||||
#define I915_GC_RENDER_CLOCK_200_MHZ (1 << 0)
|
||||
#define I915_GC_RENDER_CLOCK_333_MHZ (4 << 0)
|
||||
#define GCDGMBUS 0xcc
|
||||
#define PCI_LBPC 0xf4 /* legacy/combination backlight modes, also called LBB */
|
||||
|
||||
|
||||
|
|
|
@ -303,6 +303,10 @@ int i915_save_state(struct drm_device *dev)
|
|||
}
|
||||
}
|
||||
|
||||
if (IS_GEN4(dev))
|
||||
pci_read_config_word(dev->pdev, GCDGMBUS,
|
||||
&dev_priv->regfile.saveGCDGMBUS);
|
||||
|
||||
/* Cache mode state */
|
||||
if (INTEL_INFO(dev)->gen < 7)
|
||||
dev_priv->regfile.saveCACHE_MODE_0 = I915_READ(CACHE_MODE_0);
|
||||
|
@ -331,6 +335,10 @@ int i915_restore_state(struct drm_device *dev)
|
|||
mutex_lock(&dev->struct_mutex);
|
||||
|
||||
i915_gem_restore_fences(dev);
|
||||
|
||||
if (IS_GEN4(dev))
|
||||
pci_write_config_word(dev->pdev, GCDGMBUS,
|
||||
dev_priv->regfile.saveGCDGMBUS);
|
||||
i915_restore_display(dev);
|
||||
|
||||
if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
|
||||
|
|
Loading…
Reference in a new issue