Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915: move DP save/restore into i915_ums.c

Note that this slightly changes the order, but we only move it within
the block of registers that restore encoder state. Specifically LVDS
is now restored after DP, whereas previously it was done before.

Legacy vga is still restored afterwards, which seems to be the
important thing (if there's anything important in this restore
ordering at all).

Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

+25 -28
+1 -28
drivers/gpu/drm/i915/i915_suspend.c
··· 240 240 dev_priv->regfile.savePP_DIVISOR = I915_READ(PP_DIVISOR); 241 241 } 242 242 243 - if (!drm_core_check_feature(dev, DRIVER_MODESET)) { 244 - /* Display Port state */ 245 - if (SUPPORTS_INTEGRATED_DP(dev)) { 246 - dev_priv->regfile.saveDP_B = I915_READ(DP_B); 247 - dev_priv->regfile.saveDP_C = I915_READ(DP_C); 248 - dev_priv->regfile.saveDP_D = I915_READ(DP_D); 249 - dev_priv->regfile.savePIPEA_GMCH_DATA_M = I915_READ(_PIPEA_GMCH_DATA_M); 250 - dev_priv->regfile.savePIPEB_GMCH_DATA_M = I915_READ(_PIPEB_GMCH_DATA_M); 251 - dev_priv->regfile.savePIPEA_GMCH_DATA_N = I915_READ(_PIPEA_GMCH_DATA_N); 252 - dev_priv->regfile.savePIPEB_GMCH_DATA_N = I915_READ(_PIPEB_GMCH_DATA_N); 253 - dev_priv->regfile.savePIPEA_DP_LINK_M = I915_READ(_PIPEA_DP_LINK_M); 254 - dev_priv->regfile.savePIPEB_DP_LINK_M = I915_READ(_PIPEB_DP_LINK_M); 255 - dev_priv->regfile.savePIPEA_DP_LINK_N = I915_READ(_PIPEA_DP_LINK_N); 256 - dev_priv->regfile.savePIPEB_DP_LINK_N = I915_READ(_PIPEB_DP_LINK_N); 257 - } 258 - /* FIXME: regfile.save TV & SDVO state */ 259 - } 260 - 261 243 /* Only regfile.save FBC state on the platform that supports FBC */ 262 244 if (I915_HAS_FBC(dev)) { 263 245 if (HAS_PCH_SPLIT(dev)) { ··· 305 323 I915_WRITE(PP_CONTROL, dev_priv->regfile.savePP_CONTROL); 306 324 } 307 325 308 - if (!drm_core_check_feature(dev, DRIVER_MODESET)) { 309 - /* Display Port state */ 310 - if (SUPPORTS_INTEGRATED_DP(dev)) { 311 - I915_WRITE(DP_B, dev_priv->regfile.saveDP_B); 312 - I915_WRITE(DP_C, dev_priv->regfile.saveDP_C); 313 - I915_WRITE(DP_D, dev_priv->regfile.saveDP_D); 314 - } 315 - /* FIXME: restore TV & SDVO state */ 316 - } 317 - 318 326 /* only restore FBC info on the platform that supports FBC*/ 319 327 intel_disable_fbc(dev); 320 328 if (I915_HAS_FBC(dev)) { ··· 319 347 I915_WRITE(FBC_CONTROL, dev_priv->regfile.saveFBC_CONTROL); 320 348 } 321 349 } 350 + 322 351 if (!drm_core_check_feature(dev, DRIVER_MODESET)) 323 352 i915_restore_vga(dev); 324 353 else
+24
drivers/gpu/drm/i915/i915_ums.c
··· 254 254 else 255 255 dev_priv->regfile.saveADPA = I915_READ(ADPA); 256 256 257 + /* Display Port state */ 258 + if (SUPPORTS_INTEGRATED_DP(dev)) { 259 + dev_priv->regfile.saveDP_B = I915_READ(DP_B); 260 + dev_priv->regfile.saveDP_C = I915_READ(DP_C); 261 + dev_priv->regfile.saveDP_D = I915_READ(DP_D); 262 + dev_priv->regfile.savePIPEA_GMCH_DATA_M = I915_READ(_PIPEA_GMCH_DATA_M); 263 + dev_priv->regfile.savePIPEB_GMCH_DATA_M = I915_READ(_PIPEB_GMCH_DATA_M); 264 + dev_priv->regfile.savePIPEA_GMCH_DATA_N = I915_READ(_PIPEA_GMCH_DATA_N); 265 + dev_priv->regfile.savePIPEB_GMCH_DATA_N = I915_READ(_PIPEB_GMCH_DATA_N); 266 + dev_priv->regfile.savePIPEA_DP_LINK_M = I915_READ(_PIPEA_DP_LINK_M); 267 + dev_priv->regfile.savePIPEB_DP_LINK_M = I915_READ(_PIPEB_DP_LINK_M); 268 + dev_priv->regfile.savePIPEA_DP_LINK_N = I915_READ(_PIPEA_DP_LINK_N); 269 + dev_priv->regfile.savePIPEB_DP_LINK_N = I915_READ(_PIPEB_DP_LINK_N); 270 + } 271 + /* FIXME: regfile.save TV & SDVO state */ 272 + 257 273 return; 258 274 } 259 275 ··· 490 474 I915_WRITE(PCH_ADPA, dev_priv->regfile.saveADPA); 491 475 else 492 476 I915_WRITE(ADPA, dev_priv->regfile.saveADPA); 477 + 478 + /* Display Port state */ 479 + if (SUPPORTS_INTEGRATED_DP(dev)) { 480 + I915_WRITE(DP_B, dev_priv->regfile.saveDP_B); 481 + I915_WRITE(DP_C, dev_priv->regfile.saveDP_C); 482 + I915_WRITE(DP_D, dev_priv->regfile.saveDP_D); 483 + } 484 + /* FIXME: restore TV & SDVO state */ 493 485 494 486 return; 495 487 }