Skip to content

Commit 1e657ad

Browse files
mikuintideak
authored andcommitted
drm/i915/gen9: Write dc state debugmask bits only once
DMC debugmask bits should stick so no need to write them everytime dc state is changed. v2: Write after firmware has been successfully loaded (Ville) Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1455808874-22089-5-git-send-email-mika.kuoppala@intel.com
1 parent 5b07688 commit 1e657ad

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

drivers/gpu/drm/i915/intel_csr.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,19 +220,19 @@ static const struct stepping_info *intel_get_stepping_info(struct drm_device *de
220220
* Everytime display comes back from low power state this function is called to
221221
* copy the firmware from internal memory to registers.
222222
*/
223-
void intel_csr_load_program(struct drm_i915_private *dev_priv)
223+
bool intel_csr_load_program(struct drm_i915_private *dev_priv)
224224
{
225225
u32 *payload = dev_priv->csr.dmc_payload;
226226
uint32_t i, fw_size;
227227

228228
if (!IS_GEN9(dev_priv)) {
229229
DRM_ERROR("No CSR support available for this platform\n");
230-
return;
230+
return false;
231231
}
232232

233233
if (!dev_priv->csr.dmc_payload) {
234234
DRM_ERROR("Tried to program CSR with empty payload\n");
235-
return;
235+
return false;
236236
}
237237

238238
fw_size = dev_priv->csr.dmc_fw_size;
@@ -245,6 +245,8 @@ void intel_csr_load_program(struct drm_i915_private *dev_priv)
245245
}
246246

247247
dev_priv->csr.dc_state = 0;
248+
249+
return true;
248250
}
249251

250252
static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,

drivers/gpu/drm/i915/intel_drv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1225,7 +1225,7 @@ u32 skl_plane_ctl_rotation(unsigned int rotation);
12251225

12261226
/* intel_csr.c */
12271227
void intel_csr_ucode_init(struct drm_i915_private *);
1228-
void intel_csr_load_program(struct drm_i915_private *);
1228+
bool intel_csr_load_program(struct drm_i915_private *);
12291229
void intel_csr_ucode_fini(struct drm_i915_private *);
12301230

12311231
/* intel_dp.c */

drivers/gpu/drm/i915/intel_runtime_pm.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -529,9 +529,6 @@ static void gen9_set_dc_state(struct drm_i915_private *dev_priv, uint32_t state)
529529
else if (i915.enable_dc == 1 && state > DC_STATE_EN_UPTO_DC5)
530530
state = DC_STATE_EN_UPTO_DC5;
531531

532-
if (state & DC_STATE_EN_UPTO_DC5_DC6_MASK)
533-
gen9_set_dc_state_debugmask(dev_priv);
534-
535532
val = I915_READ(DC_STATE_EN);
536533
DRM_DEBUG_KMS("Setting DC state from %02x to %02x\n",
537534
val & mask, state);
@@ -2122,8 +2119,8 @@ static void skl_display_core_init(struct drm_i915_private *dev_priv,
21222119

21232120
skl_init_cdclk(dev_priv);
21242121

2125-
if (dev_priv->csr.dmc_payload)
2126-
intel_csr_load_program(dev_priv);
2122+
if (dev_priv->csr.dmc_payload && intel_csr_load_program(dev_priv))
2123+
gen9_set_dc_state_debugmask(dev_priv);
21272124
}
21282125

21292126
static void skl_display_core_uninit(struct drm_i915_private *dev_priv)

0 commit comments

Comments
 (0)