Skip to content

Commit 5ce5cef

Browse files
committed
Merge tag 'drm-intel-fixes-2021-08-18' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
- Expand a tweaked display workaround for all PCHs. (Anshuman) - Fix eDP MSO pipe sanity checks for ADL-P. (Jani) - Remove superfluous EXPORT_SYMBOL(). (Jani) Signed-off-by: Dave Airlie <[email protected]> From: Rodrigo Vivi <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents b88aefc + e3e86f4 commit 5ce5cef

File tree

4 files changed

+20
-42
lines changed

4 files changed

+20
-42
lines changed

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2463,6 +2463,15 @@ static void intel_ddi_power_up_lanes(struct intel_encoder *encoder,
24632463
}
24642464
}
24652465

2466+
/* Splitter enable for eDP MSO is limited to certain pipes. */
2467+
static u8 intel_ddi_splitter_pipe_mask(struct drm_i915_private *i915)
2468+
{
2469+
if (IS_ALDERLAKE_P(i915))
2470+
return BIT(PIPE_A) | BIT(PIPE_B);
2471+
else
2472+
return BIT(PIPE_A);
2473+
}
2474+
24662475
static void intel_ddi_mso_get_config(struct intel_encoder *encoder,
24672476
struct intel_crtc_state *pipe_config)
24682477
{
@@ -2480,8 +2489,7 @@ static void intel_ddi_mso_get_config(struct intel_encoder *encoder,
24802489
if (!pipe_config->splitter.enable)
24812490
return;
24822491

2483-
/* Splitter enable is supported for pipe A only. */
2484-
if (drm_WARN_ON(&i915->drm, pipe != PIPE_A)) {
2492+
if (drm_WARN_ON(&i915->drm, !(intel_ddi_splitter_pipe_mask(i915) & BIT(pipe)))) {
24852493
pipe_config->splitter.enable = false;
24862494
return;
24872495
}
@@ -2513,10 +2521,6 @@ static void intel_ddi_mso_configure(const struct intel_crtc_state *crtc_state)
25132521
return;
25142522

25152523
if (crtc_state->splitter.enable) {
2516-
/* Splitter enable is supported for pipe A only. */
2517-
if (drm_WARN_ON(&i915->drm, pipe != PIPE_A))
2518-
return;
2519-
25202524
dss1 |= SPLITTER_ENABLE;
25212525
dss1 |= OVERLAP_PIXELS(crtc_state->splitter.pixel_overlap);
25222526
if (crtc_state->splitter.link_count == 2)
@@ -4743,12 +4747,8 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
47434747

47444748
dig_port->hpd_pulse = intel_dp_hpd_pulse;
47454749

4746-
/* Splitter enable for eDP MSO is limited to certain pipes. */
4747-
if (dig_port->dp.mso_link_count) {
4748-
encoder->pipe_mask = BIT(PIPE_A);
4749-
if (IS_ALDERLAKE_P(dev_priv))
4750-
encoder->pipe_mask |= BIT(PIPE_B);
4751-
}
4750+
if (dig_port->dp.mso_link_count)
4751+
encoder->pipe_mask = intel_ddi_splitter_pipe_mask(dev_priv);
47524752
}
47534753

47544754
/* In theory we don't need the encoder->type check, but leave it just in

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6387,13 +6387,13 @@ void intel_display_power_suspend_late(struct drm_i915_private *i915)
63876387
if (DISPLAY_VER(i915) >= 11 || IS_GEMINILAKE(i915) ||
63886388
IS_BROXTON(i915)) {
63896389
bxt_enable_dc9(i915);
6390-
/* Tweaked Wa_14010685332:icp,jsp,mcc */
6391-
if (INTEL_PCH_TYPE(i915) >= PCH_ICP && INTEL_PCH_TYPE(i915) <= PCH_MCC)
6392-
intel_de_rmw(i915, SOUTH_CHICKEN1,
6393-
SBCLK_RUN_REFCLK_DIS, SBCLK_RUN_REFCLK_DIS);
63946390
} else if (IS_HASWELL(i915) || IS_BROADWELL(i915)) {
63956391
hsw_enable_pc8(i915);
63966392
}
6393+
6394+
/* Tweaked Wa_14010685332:cnp,icp,jsp,mcc,tgp,adp */
6395+
if (INTEL_PCH_TYPE(i915) >= PCH_CNP && INTEL_PCH_TYPE(i915) < PCH_DG1)
6396+
intel_de_rmw(i915, SOUTH_CHICKEN1, SBCLK_RUN_REFCLK_DIS, SBCLK_RUN_REFCLK_DIS);
63976397
}
63986398

63996399
void intel_display_power_resume_early(struct drm_i915_private *i915)
@@ -6402,13 +6402,13 @@ void intel_display_power_resume_early(struct drm_i915_private *i915)
64026402
IS_BROXTON(i915)) {
64036403
gen9_sanitize_dc_state(i915);
64046404
bxt_disable_dc9(i915);
6405-
/* Tweaked Wa_14010685332:icp,jsp,mcc */
6406-
if (INTEL_PCH_TYPE(i915) >= PCH_ICP && INTEL_PCH_TYPE(i915) <= PCH_MCC)
6407-
intel_de_rmw(i915, SOUTH_CHICKEN1, SBCLK_RUN_REFCLK_DIS, 0);
6408-
64096405
} else if (IS_HASWELL(i915) || IS_BROADWELL(i915)) {
64106406
hsw_disable_pc8(i915);
64116407
}
6408+
6409+
/* Tweaked Wa_14010685332:cnp,icp,jsp,mcc,tgp,adp */
6410+
if (INTEL_PCH_TYPE(i915) >= PCH_CNP && INTEL_PCH_TYPE(i915) < PCH_DG1)
6411+
intel_de_rmw(i915, SOUTH_CHICKEN1, SBCLK_RUN_REFCLK_DIS, 0);
64126412
}
64136413

64146414
void intel_display_power_suspend(struct drm_i915_private *i915)

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,6 @@ int intel_dp_init_lttpr_and_dprx_caps(struct intel_dp *intel_dp)
206206

207207
return lttpr_count;
208208
}
209-
EXPORT_SYMBOL(intel_dp_init_lttpr_and_dprx_caps);
210209

211210
static u8 dp_voltage_max(u8 preemph)
212211
{

drivers/gpu/drm/i915/i915_irq.c

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3064,24 +3064,6 @@ static void valleyview_irq_reset(struct drm_i915_private *dev_priv)
30643064
spin_unlock_irq(&dev_priv->irq_lock);
30653065
}
30663066

3067-
static void cnp_display_clock_wa(struct drm_i915_private *dev_priv)
3068-
{
3069-
struct intel_uncore *uncore = &dev_priv->uncore;
3070-
3071-
/*
3072-
* Wa_14010685332:cnp/cmp,tgp,adp
3073-
* TODO: Clarify which platforms this applies to
3074-
* TODO: Figure out if this workaround can be applied in the s0ix suspend/resume handlers as
3075-
* on earlier platforms and whether the workaround is also needed for runtime suspend/resume
3076-
*/
3077-
if (INTEL_PCH_TYPE(dev_priv) == PCH_CNP ||
3078-
(INTEL_PCH_TYPE(dev_priv) >= PCH_TGP && INTEL_PCH_TYPE(dev_priv) < PCH_DG1)) {
3079-
intel_uncore_rmw(uncore, SOUTH_CHICKEN1, SBCLK_RUN_REFCLK_DIS,
3080-
SBCLK_RUN_REFCLK_DIS);
3081-
intel_uncore_rmw(uncore, SOUTH_CHICKEN1, SBCLK_RUN_REFCLK_DIS, 0);
3082-
}
3083-
}
3084-
30853067
static void gen8_display_irq_reset(struct drm_i915_private *dev_priv)
30863068
{
30873069
struct intel_uncore *uncore = &dev_priv->uncore;
@@ -3115,7 +3097,6 @@ static void gen8_irq_reset(struct drm_i915_private *dev_priv)
31153097
if (HAS_PCH_SPLIT(dev_priv))
31163098
ibx_irq_reset(dev_priv);
31173099

3118-
cnp_display_clock_wa(dev_priv);
31193100
}
31203101

31213102
static void gen11_display_irq_reset(struct drm_i915_private *dev_priv)
@@ -3159,8 +3140,6 @@ static void gen11_display_irq_reset(struct drm_i915_private *dev_priv)
31593140

31603141
if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP)
31613142
GEN3_IRQ_RESET(uncore, SDE);
3162-
3163-
cnp_display_clock_wa(dev_priv);
31643143
}
31653144

31663145
static void gen11_irq_reset(struct drm_i915_private *dev_priv)

0 commit comments

Comments
 (0)