@@ -2191,9 +2191,13 @@ static bool intel_hdmi_has_audio(struct intel_encoder *encoder,
2191
2191
}
2192
2192
2193
2193
static enum intel_output_format
2194
- intel_hdmi_output_format (struct intel_connector * connector ,
2194
+ intel_hdmi_output_format (const struct intel_crtc_state * crtc_state ,
2195
+ struct intel_connector * connector ,
2195
2196
bool ycbcr_420_output )
2196
2197
{
2198
+ if (!crtc_state -> has_hdmi_sink )
2199
+ return INTEL_OUTPUT_FORMAT_RGB ;
2200
+
2197
2201
if (connector -> base .ycbcr_420_allowed && ycbcr_420_output )
2198
2202
return INTEL_OUTPUT_FORMAT_YCBCR420 ;
2199
2203
else
@@ -2212,7 +2216,8 @@ static int intel_hdmi_compute_output_format(struct intel_encoder *encoder,
2212
2216
bool ycbcr_420_only = drm_mode_is_420_only (info , adjusted_mode );
2213
2217
int ret ;
2214
2218
2215
- crtc_state -> output_format = intel_hdmi_output_format (connector , ycbcr_420_only );
2219
+ crtc_state -> output_format =
2220
+ intel_hdmi_output_format (crtc_state , connector , ycbcr_420_only );
2216
2221
2217
2222
if (ycbcr_420_only && !intel_hdmi_is_ycbcr420 (crtc_state )) {
2218
2223
drm_dbg_kms (& i915 -> drm ,
@@ -2227,7 +2232,7 @@ static int intel_hdmi_compute_output_format(struct intel_encoder *encoder,
2227
2232
!drm_mode_is_420_also (info , adjusted_mode ))
2228
2233
return ret ;
2229
2234
2230
- crtc_state -> output_format = intel_hdmi_output_format (connector , true);
2235
+ crtc_state -> output_format = intel_hdmi_output_format (crtc_state , connector , true);
2231
2236
ret = intel_hdmi_compute_clock (encoder , crtc_state , respect_downstream_limits );
2232
2237
}
2233
2238
0 commit comments