|
@@ -905,11 +905,10 @@ intel_tv_mode_valid(struct drm_connector *connector,
|
|
|
|
|
|
|
|
|
static bool
|
|
|
-intel_tv_mode_fixup(struct drm_encoder *encoder,
|
|
|
- const struct drm_display_mode *mode,
|
|
|
- struct drm_display_mode *adjusted_mode)
|
|
|
+intel_tv_compute_config(struct intel_encoder *encoder,
|
|
|
+ struct intel_crtc_config *pipe_config)
|
|
|
{
|
|
|
- struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
|
|
|
+ struct intel_tv *intel_tv = enc_to_intel_tv(&encoder->base);
|
|
|
const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
|
|
|
|
|
|
if (!tv_mode)
|
|
@@ -918,7 +917,10 @@ intel_tv_mode_fixup(struct drm_encoder *encoder,
|
|
|
if (intel_encoder_check_is_cloned(&intel_tv->base))
|
|
|
return false;
|
|
|
|
|
|
- adjusted_mode->clock = tv_mode->clock;
|
|
|
+ pipe_config->adjusted_mode.clock = tv_mode->clock;
|
|
|
+ DRM_DEBUG_KMS("forcing bpc to 8 for TV\n");
|
|
|
+ pipe_config->pipe_bpp = 8*3;
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -1485,7 +1487,6 @@ out:
|
|
|
}
|
|
|
|
|
|
static const struct drm_encoder_helper_funcs intel_tv_helper_funcs = {
|
|
|
- .mode_fixup = intel_tv_mode_fixup,
|
|
|
.mode_set = intel_tv_mode_set,
|
|
|
};
|
|
|
|
|
@@ -1620,6 +1621,7 @@ intel_tv_init(struct drm_device *dev)
|
|
|
drm_encoder_init(dev, &intel_encoder->base, &intel_tv_enc_funcs,
|
|
|
DRM_MODE_ENCODER_TVDAC);
|
|
|
|
|
|
+ intel_encoder->compute_config = intel_tv_compute_config;
|
|
|
intel_encoder->enable = intel_enable_tv;
|
|
|
intel_encoder->disable = intel_disable_tv;
|
|
|
intel_encoder->get_hw_state = intel_tv_get_hw_state;
|