From: Ville Syrjälä <ville.syrj...@linux.intel.com>

No idea if we might want these. Perhaps there is a "keep your paws off
my GPU" bit in there somewhere to avoid BIOS crap?

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h     | 13 ++++++++++---
 drivers/gpu/drm/i915/i915_reg.h     |  1 +
 drivers/gpu/drm/i915/i915_suspend.c |  6 ++++++
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index cfac5c3..88ab00b 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1016,9 +1016,16 @@ struct i915_suspend_saved_registers {
        u32 saveFBC_CONTROL;
        u32 saveCACHE_MODE_0;
        u32 saveMI_ARB_STATE;
-       u32 saveSWF0[16];
-       u32 saveSWF1[16];
-       u32 saveSWF3[3];
+       union {
+               struct {
+                       u32 saveSWF0[16];
+                       u32 saveSWF1[16];
+                       u32 saveSWF3[3];
+               };
+               struct {
+                       u32 saveSWF_ILK[36];
+               };
+       };
        uint64_t saveFENCE[I915_MAX_NUM_FENCES];
        u32 savePCH_PORT_HOTPLUG;
        u16 saveGCDGMBUS;
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 2478267..96fd0f5 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -5030,6 +5030,7 @@ enum skl_disp_power_wells {
 #define SWF0(i)        (dev_priv->info.display_mmio_offset + 0x70410 + (i) * 4)
 #define SWF1(i)        (dev_priv->info.display_mmio_offset + 0x71410 + (i) * 4)
 #define SWF3(i)        (dev_priv->info.display_mmio_offset + 0x72414 + (i) * 4)
+#define SWF_ILK(i)     (0x4F000 + (i) * 4)
 
 /* Pipe B */
 #define _PIPEBDSL              (dev_priv->info.display_mmio_offset + 0x71000)
diff --git a/drivers/gpu/drm/i915/i915_suspend.c 
b/drivers/gpu/drm/i915/i915_suspend.c
index 2d91821..297afe9 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -139,6 +139,9 @@ int i915_save_state(struct drm_device *dev)
                }
                for (i = 0; i < 3; i++)
                        dev_priv->regfile.saveSWF3[i] = I915_READ(SWF3(i));
+       } else {
+               for (i = 0; i < 36; i++)
+                       dev_priv->regfile.saveSWF_ILK[i] = 
I915_READ(SWF_ILK(i));
        }
 
        mutex_unlock(&dev->struct_mutex);
@@ -186,6 +189,9 @@ int i915_restore_state(struct drm_device *dev)
                }
                for (i = 0; i < 3; i++)
                        I915_WRITE(SWF3(i), dev_priv->regfile.saveSWF3[i]);
+       } else {
+               for (i = 0; i < 36; i++)
+                       I915_WRITE(SWF_ILK(i), 
dev_priv->regfile.saveSWF_ILK[i]);
        }
 
        mutex_unlock(&dev->struct_mutex);
-- 
2.4.10

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to