>-----Original Message----- >From: Ville Syrjälä [mailto:ville.syrjala@xxxxxxxxxxxxxxx] >Sent: Tuesday, February 5, 2019 10:03 PM >To: Shankar, Uma <uma.shankar@xxxxxxxxx> >Cc: intel-gfx@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; Syrjala, Ville ><ville.syrjala@xxxxxxxxx>; Lankhorst, Maarten <maarten.lankhorst@xxxxxxxxx> >Subject: Re: [Intel-gfx] [v11 3/4] drm: Add colorspace info to AVI Infoframe > >On Tue, Feb 05, 2019 at 09:33:36PM +0530, Uma Shankar wrote: >> This adds colorspace information to HDMI AVI infoframe. >> A helper function is added to program the same. >> >> v2: Moved this to drm core instead of i915 driver. >> >> Signed-off-by: Uma Shankar <uma.shankar@xxxxxxxxx> >> --- >> drivers/gpu/drm/drm_connector.c | 2 +- >> drivers/gpu/drm/drm_edid.c | 28 ++++++++++++++++++++++++++++ >> include/drm/drm_edid.h | 6 ++++++ >> 3 files changed, 35 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_connector.c >> b/drivers/gpu/drm/drm_connector.c index 86b368bf..086085d 100644 >> --- a/drivers/gpu/drm/drm_connector.c >> +++ b/drivers/gpu/drm/drm_connector.c >> @@ -862,7 +862,7 @@ int drm_display_info_set_bus_formats(struct >drm_display_info *info, >> { DRM_MODE_COLORIMETRY_XVYCC_709, "XVYCC_709" }, >> /* Colorimetry based on IEC 61966-2-5 */ >> { DRM_MODE_COLORIMETRY_OPRGB, "opRGB" }, >> - { DRM_MODE_COLORIMETRY_DCI_P3, "DCI-P3" }, >> + { DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65, "DCI-P3_RGB_D65" }, >> /* DP MSA Colorimetry */ >> { DRM_MODE_DP_COLORIMETRY_YCBCR_ITU_601, "YCBCR_ITU_601" }, >> { DRM_MODE_DP_COLORIMETRY_YCBCR_ITU_709, "YCBCR_ITU_709" }, >diff >> --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index >> 990b190..1fc0978 100644 >> --- a/drivers/gpu/drm/drm_edid.c >> +++ b/drivers/gpu/drm/drm_edid.c >> @@ -4925,6 +4925,34 @@ static bool is_hdmi2_sink(struct drm_connector >> *connector) EXPORT_SYMBOL(drm_hdmi_avi_infoframe_from_display_mode); >> >> /** >> + * drm_hdmi_avi_infoframe_colorspace() - fill the HDMI AVI infoframe >> + * colorspace information >> + * @frame: HDMI AVI infoframe >> + * @conn_state: connector state >> + */ >> +void >> +drm_hdmi_avi_infoframe_colorspace(struct hdmi_avi_infoframe *frame, >> + const struct drm_connector_state >*conn_state) { >> + if (conn_state->colorspace == DRM_MODE_COLORIMETRY_DEFAULT) { >> + /* Set No Data as default for HDMI */ >> + frame->colorimetry = DRM_MODE_COLORIMETRY_NO_DATA; >> + } else if (conn_state->colorspace < >DRM_MODE_COLORIMETRY_XVYCC_601) { >> + frame->colorimetry = conn_state->colorspace; >> + } else { >> + frame->colorimetry = HDMI_COLORIMETRY_EXTENDED; >> + /* >> + * Starting from extended list where COLORIMETRY_XV_YCC_601 >> + * is the first extended mode and its value is 0 as per HDMI >> + * specification. >> + * ToDO: Extend to support ACE formats defined in CTA 861.G >> + */ >> + frame->extended_colorimetry = conn_state->colorspace - >> + > DRM_MODE_COLORIMETRY_XVYCC_601; > >IMO if you don't want to make the numbers based on the spec, then this sould >become a proper lookup table. Ok seems good, will define the values separately and use them here. >> + } >> +} >> + >> +/** >> * drm_hdmi_avi_infoframe_quant_range() - fill the HDMI AVI infoframe >> * quantization range information >> * @frame: HDMI AVI infoframe >> diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h index >> 8dc1a08..9d3b5b9 100644 >> --- a/include/drm/drm_edid.h >> +++ b/include/drm/drm_edid.h >> @@ -331,6 +331,7 @@ struct cea_sad { >> >> struct drm_encoder; >> struct drm_connector; >> +struct drm_connector_state; >> struct drm_display_mode; >> >> int drm_edid_to_sad(struct edid *edid, struct cea_sad **sads); @@ >> -358,6 +359,11 @@ int drm_av_sync_delay(struct drm_connector >> *connector, drm_hdmi_vendor_infoframe_from_display_mode(struct >hdmi_vendor_infoframe *frame, >> struct drm_connector *connector, >> const struct drm_display_mode >*mode); >> + >> +void >> +drm_hdmi_avi_infoframe_colorspace(struct hdmi_avi_infoframe *frame, >> + const struct drm_connector_state >*conn_state); >> + >> void >> drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame, >> struct drm_connector *connector, >> -- >> 1.9.1 >> >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx > >-- >Ville Syrjälä >Intel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel