Skip to content

Commit 700c340

Browse files
lucacoelhojnikula
authored andcommitted
drm/i915/display: tie DMC wakelock to DC5/6 state transitions
We only need DMC wakelocks when we allow DC5 and DC6 states. Add the calls to enable and disable DMC wakelock accordingly. Reviewed-by: Uma Shankar <[email protected]> Signed-off-by: Luca Coelho <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Signed-off-by: Jani Nikula <[email protected]>
1 parent 8a8dcb2 commit 700c340

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

drivers/gpu/drm/i915/display/intel_display_power_well.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "intel_dkl_phy.h"
1818
#include "intel_dkl_phy_regs.h"
1919
#include "intel_dmc.h"
20+
#include "intel_dmc_wl.h"
2021
#include "intel_dp_aux_regs.h"
2122
#include "intel_dpio_phy.h"
2223
#include "intel_dpll.h"
@@ -821,6 +822,8 @@ void gen9_enable_dc5(struct drm_i915_private *dev_priv)
821822
intel_de_rmw(dev_priv, GEN8_CHICKEN_DCPR_1,
822823
0, SKL_SELECT_ALTERNATE_DC_EXIT);
823824

825+
intel_dmc_wl_enable(dev_priv);
826+
824827
gen9_set_dc_state(dev_priv, DC_STATE_EN_UPTO_DC5);
825828
}
826829

@@ -850,6 +853,8 @@ void skl_enable_dc6(struct drm_i915_private *dev_priv)
850853
intel_de_rmw(dev_priv, GEN8_CHICKEN_DCPR_1,
851854
0, SKL_SELECT_ALTERNATE_DC_EXIT);
852855

856+
intel_dmc_wl_enable(dev_priv);
857+
853858
gen9_set_dc_state(dev_priv, DC_STATE_EN_UPTO_DC6);
854859
}
855860

@@ -970,6 +975,8 @@ void gen9_disable_dc_states(struct drm_i915_private *dev_priv)
970975
if (!HAS_DISPLAY(dev_priv))
971976
return;
972977

978+
intel_dmc_wl_disable(dev_priv);
979+
973980
intel_cdclk_get_cdclk(dev_priv, &cdclk_config);
974981
/* Can't read out voltage_level so can't use intel_cdclk_changed() */
975982
drm_WARN_ON(&dev_priv->drm,

drivers/gpu/drm/i915/display/intel_dmc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,8 @@ void intel_dmc_disable_program(struct drm_i915_private *i915)
552552
pipedmc_clock_gating_wa(i915, true);
553553
disable_all_event_handlers(i915);
554554
pipedmc_clock_gating_wa(i915, false);
555+
556+
intel_dmc_wl_disable(i915);
555557
}
556558

557559
void assert_dmc_loaded(struct drm_i915_private *i915)
@@ -1081,6 +1083,8 @@ void intel_dmc_suspend(struct drm_i915_private *i915)
10811083
if (dmc)
10821084
flush_work(&dmc->work);
10831085

1086+
intel_dmc_wl_disable(i915);
1087+
10841088
/* Drop the reference held in case DMC isn't loaded. */
10851089
if (!intel_dmc_has_payload(i915))
10861090
intel_dmc_runtime_pm_put(i915);

0 commit comments

Comments
 (0)