forked from Minki/linux
drm/vc4: hdmi: Signal the proper colorimetry info in the infoframe
Our driver while supporting HDR didn't send the proper colorimetry info in the AVI infoframe. Let's add the property needed so that the userspace can let us know what the colorspace is supposed to be. Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> Link: https://patchwork.freedesktop.org/patch/msgid/20210430094451.2145002-5-maxime@cerno.tech
This commit is contained in:
parent
21f79128e0
commit
76a262d274
@ -226,7 +226,8 @@ static int vc4_hdmi_connector_atomic_check(struct drm_connector *connector,
|
|||||||
if (!crtc)
|
if (!crtc)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!drm_connector_atomic_hdr_metadata_equal(old_state, new_state)) {
|
if (old_state->colorspace != new_state->colorspace ||
|
||||||
|
!drm_connector_atomic_hdr_metadata_equal(old_state, new_state)) {
|
||||||
struct drm_crtc_state *crtc_state;
|
struct drm_crtc_state *crtc_state;
|
||||||
|
|
||||||
crtc_state = drm_atomic_get_crtc_state(state, crtc);
|
crtc_state = drm_atomic_get_crtc_state(state, crtc);
|
||||||
@ -316,6 +317,11 @@ static int vc4_hdmi_connector_init(struct drm_device *dev,
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
ret = drm_mode_create_hdmi_colorspace_property(connector);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
drm_connector_attach_colorspace_property(connector);
|
||||||
drm_connector_attach_tv_margin_properties(connector);
|
drm_connector_attach_tv_margin_properties(connector);
|
||||||
drm_connector_attach_max_bpc_property(connector, 8, 12);
|
drm_connector_attach_max_bpc_property(connector, 8, 12);
|
||||||
|
|
||||||
@ -424,7 +430,7 @@ static void vc4_hdmi_set_avi_infoframe(struct drm_encoder *encoder)
|
|||||||
vc4_encoder->limited_rgb_range ?
|
vc4_encoder->limited_rgb_range ?
|
||||||
HDMI_QUANTIZATION_RANGE_LIMITED :
|
HDMI_QUANTIZATION_RANGE_LIMITED :
|
||||||
HDMI_QUANTIZATION_RANGE_FULL);
|
HDMI_QUANTIZATION_RANGE_FULL);
|
||||||
|
drm_hdmi_avi_infoframe_colorspace(&frame.avi, cstate);
|
||||||
drm_hdmi_avi_infoframe_bars(&frame.avi, cstate);
|
drm_hdmi_avi_infoframe_bars(&frame.avi, cstate);
|
||||||
|
|
||||||
vc4_hdmi_write_infoframe(encoder, &frame);
|
vc4_hdmi_write_infoframe(encoder, &frame);
|
||||||
|
Loading…
Reference in New Issue
Block a user