|
@@ -4983,6 +4983,22 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
|
|
|
if (!(tmp & PIPECONF_ENABLE))
|
|
|
return false;
|
|
|
|
|
|
+ if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
|
|
|
+ switch (tmp & PIPECONF_BPC_MASK) {
|
|
|
+ case PIPECONF_6BPC:
|
|
|
+ pipe_config->pipe_bpp = 18;
|
|
|
+ break;
|
|
|
+ case PIPECONF_8BPC:
|
|
|
+ pipe_config->pipe_bpp = 24;
|
|
|
+ break;
|
|
|
+ case PIPECONF_10BPC:
|
|
|
+ pipe_config->pipe_bpp = 30;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
intel_get_pipe_timings(crtc, pipe_config);
|
|
|
|
|
|
i9xx_get_pfit_config(crtc, pipe_config);
|
|
@@ -5881,6 +5897,23 @@ static bool ironlake_get_pipe_config(struct intel_crtc *crtc,
|
|
|
if (!(tmp & PIPECONF_ENABLE))
|
|
|
return false;
|
|
|
|
|
|
+ switch (tmp & PIPECONF_BPC_MASK) {
|
|
|
+ case PIPECONF_6BPC:
|
|
|
+ pipe_config->pipe_bpp = 18;
|
|
|
+ break;
|
|
|
+ case PIPECONF_8BPC:
|
|
|
+ pipe_config->pipe_bpp = 24;
|
|
|
+ break;
|
|
|
+ case PIPECONF_10BPC:
|
|
|
+ pipe_config->pipe_bpp = 30;
|
|
|
+ break;
|
|
|
+ case PIPECONF_12BPC:
|
|
|
+ pipe_config->pipe_bpp = 36;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
if (I915_READ(PCH_TRANSCONF(crtc->pipe)) & TRANS_ENABLE) {
|
|
|
struct intel_shared_dpll *pll;
|
|
|
|
|
@@ -8612,6 +8645,9 @@ intel_pipe_config_compare(struct drm_device *dev,
|
|
|
PIPE_CONF_CHECK_X(dpll_hw_state.fp0);
|
|
|
PIPE_CONF_CHECK_X(dpll_hw_state.fp1);
|
|
|
|
|
|
+ if (IS_G4X(dev) || INTEL_INFO(dev)->gen >= 5)
|
|
|
+ PIPE_CONF_CHECK_I(pipe_bpp);
|
|
|
+
|
|
|
#undef PIPE_CONF_CHECK_X
|
|
|
#undef PIPE_CONF_CHECK_I
|
|
|
#undef PIPE_CONF_CHECK_FLAGS
|