Skip to content

Commit 3c65d1d

Browse files
vsyrjaladanvet
authored andcommitted
drm/i915: Disable SDVO port after the pipe on PCH platforms
While at it also remove the redundant/unneeded w/a like done for hdmi already. Signed-off-by: Ville Syrjälä <[email protected]> Reviewed-by: Jesse Barnes <[email protected]> [danvet: Mention that this also removes the unneeded w/a, as suggested by Jesse.] Signed-off-by: Daniel Vetter <[email protected]>
1 parent a4790ce commit 3c65d1d

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

drivers/gpu/drm/i915/intel_sdvo.c

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1465,6 +1465,15 @@ static void intel_disable_sdvo(struct intel_encoder *encoder)
14651465
}
14661466
}
14671467

1468+
static void pch_disable_sdvo(struct intel_encoder *encoder)
1469+
{
1470+
}
1471+
1472+
static void pch_post_disable_sdvo(struct intel_encoder *encoder)
1473+
{
1474+
intel_disable_sdvo(encoder);
1475+
}
1476+
14681477
static void intel_enable_sdvo(struct intel_encoder *encoder)
14691478
{
14701479
struct drm_device *dev = encoder->base.dev;
@@ -1477,14 +1486,9 @@ static void intel_enable_sdvo(struct intel_encoder *encoder)
14771486
bool success;
14781487

14791488
temp = I915_READ(intel_sdvo->sdvo_reg);
1480-
if ((temp & SDVO_ENABLE) == 0) {
1481-
/* HW workaround for IBX, we need to move the port
1482-
* to transcoder A before disabling it, so restore it here. */
1483-
if (HAS_PCH_IBX(dev))
1484-
temp |= SDVO_PIPE_SEL(intel_crtc->pipe);
1489+
temp |= SDVO_ENABLE;
1490+
intel_sdvo_write_sdvox(intel_sdvo, temp);
14851491

1486-
intel_sdvo_write_sdvox(intel_sdvo, temp | SDVO_ENABLE);
1487-
}
14881492
for (i = 0; i < 2; i++)
14891493
intel_wait_for_vblank(dev, intel_crtc->pipe);
14901494

@@ -2987,7 +2991,12 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob)
29872991
}
29882992

29892993
intel_encoder->compute_config = intel_sdvo_compute_config;
2990-
intel_encoder->disable = intel_disable_sdvo;
2994+
if (HAS_PCH_SPLIT(dev)) {
2995+
intel_encoder->disable = pch_disable_sdvo;
2996+
intel_encoder->post_disable = pch_post_disable_sdvo;
2997+
} else {
2998+
intel_encoder->disable = intel_disable_sdvo;
2999+
}
29913000
intel_encoder->pre_enable = intel_sdvo_pre_enable;
29923001
intel_encoder->enable = intel_enable_sdvo;
29933002
intel_encoder->get_hw_state = intel_sdvo_get_hw_state;

0 commit comments

Comments
 (0)