aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_sdvo.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2012-06-01 04:49:16 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-06-01 04:52:54 -0400
commite269f90f3d3f7c70cf661c660bf445597261f54a (patch)
treef09685517e9efa7d675dad8fd13694157ce50521 /drivers/gpu/drm/i915/intel_sdvo.c
parent112abd291db7d47974f166e742104d761bc76977 (diff)
parent63bc620b45af8c743ac291c8725933278c712692 (diff)
Merge remote-tracking branch 'airlied/drm-prime-vmap' into drm-intel-next-queued
We need the latest dma-buf code from Dave Airlie so that we can pimp the backing storage handling code in drm/i915 with Chris Wilson's unbound tracking and stolen mem backed gem object code. Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_sdvo.c')
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index ca3c6e128594..2f5106a488c5 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -780,10 +780,12 @@ static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd,
780 ((v_sync_len & 0x30) >> 4); 780 ((v_sync_len & 0x30) >> 4);
781 781
782 dtd->part2.dtd_flags = 0x18; 782 dtd->part2.dtd_flags = 0x18;
783 if (mode->flags & DRM_MODE_FLAG_INTERLACE)
784 dtd->part2.dtd_flags |= DTD_FLAG_INTERLACE;
783 if (mode->flags & DRM_MODE_FLAG_PHSYNC) 785 if (mode->flags & DRM_MODE_FLAG_PHSYNC)
784 dtd->part2.dtd_flags |= 0x2; 786 dtd->part2.dtd_flags |= DTD_FLAG_HSYNC_POSITIVE;
785 if (mode->flags & DRM_MODE_FLAG_PVSYNC) 787 if (mode->flags & DRM_MODE_FLAG_PVSYNC)
786 dtd->part2.dtd_flags |= 0x4; 788 dtd->part2.dtd_flags |= DTD_FLAG_VSYNC_POSITIVE;
787 789
788 dtd->part2.sdvo_flags = 0; 790 dtd->part2.sdvo_flags = 0;
789 dtd->part2.v_sync_off_high = v_sync_offset & 0xc0; 791 dtd->part2.v_sync_off_high = v_sync_offset & 0xc0;
@@ -817,9 +819,11 @@ static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode,
817 mode->clock = dtd->part1.clock * 10; 819 mode->clock = dtd->part1.clock * 10;
818 820
819 mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); 821 mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
820 if (dtd->part2.dtd_flags & 0x2) 822 if (dtd->part2.dtd_flags & DTD_FLAG_INTERLACE)
823 mode->flags |= DRM_MODE_FLAG_INTERLACE;
824 if (dtd->part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE)
821 mode->flags |= DRM_MODE_FLAG_PHSYNC; 825 mode->flags |= DRM_MODE_FLAG_PHSYNC;
822 if (dtd->part2.dtd_flags & 0x4) 826 if (dtd->part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE)
823 mode->flags |= DRM_MODE_FLAG_PVSYNC; 827 mode->flags |= DRM_MODE_FLAG_PVSYNC;
824} 828}
825 829
@@ -1246,8 +1250,14 @@ static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct in
1246 1250
1247static int intel_sdvo_supports_hotplug(struct intel_sdvo *intel_sdvo) 1251static int intel_sdvo_supports_hotplug(struct intel_sdvo *intel_sdvo)
1248{ 1252{
1253 struct drm_device *dev = intel_sdvo->base.base.dev;
1249 u8 response[2]; 1254 u8 response[2];
1250 1255
1256 /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise
1257 * on the line. */
1258 if (IS_I945G(dev) || IS_I945GM(dev))
1259 return false;
1260
1251 return intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT, 1261 return intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT,
1252 &response, 2) && response[0]; 1262 &response, 2) && response[0];
1253} 1263}