summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/intel_ddi.c
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2012-10-15 18:51:30 (GMT)
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-10-17 20:01:54 (GMT)
commitdae847991a4327b8883a2a4e7b0440a42d528b77 (patch)
tree63441a3045e50247d7495baae8724f331224789b /drivers/gpu/drm/i915/intel_ddi.c
parent7739c33ba48174204b24c1b867b455318e752787 (diff)
downloadlinux-fsl-qoriq-dae847991a4327b8883a2a4e7b0440a42d528b77.tar.xz
drm/i915: add intel_ddi_set_pipe_settings
In theory, all the DDI pipe settings should be set here, including timing and M/N registers. For now, let's just set the DP MSA attributes. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> [danvet: fixed up the unused typo in a #define, spotted by Jani Nikula.] Reviewed-by: Jani Nikula <jani.nikula@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ddi.c')
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 9659c227..e58df71 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -827,6 +827,40 @@ bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock)
return true;
}
+void intel_ddi_set_pipe_settings(struct drm_crtc *crtc)
+{
+ struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc);
+ enum pipe pipe = intel_crtc->pipe;
+ int type = intel_encoder->type;
+ uint32_t temp;
+
+ if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) {
+
+ temp = PIPE_MSA_SYNC_CLK;
+ switch (intel_crtc->bpp) {
+ case 18:
+ temp |= PIPE_MSA_6_BPC;
+ break;
+ case 24:
+ temp |= PIPE_MSA_8_BPC;
+ break;
+ case 30:
+ temp |= PIPE_MSA_10_BPC;
+ break;
+ case 36:
+ temp |= PIPE_MSA_12_BPC;
+ break;
+ default:
+ temp |= PIPE_MSA_8_BPC;
+ WARN(1, "%d bpp unsupported by pipe DDI function\n",
+ intel_crtc->bpp);
+ }
+ I915_WRITE(PIPE_MSA_MISC(pipe), temp);
+ }
+}
+
void intel_ddi_enable_pipe_func(struct drm_crtc *crtc)
{
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);