[Intel-gfx] [v2 09/14] drm/i915: Write HDR infoframe and send to panel
Sharma, Shashank
shashank.sharma at intel.com
Fri Dec 21 08:43:51 UTC 2018
Regards
Shashank
On 12/12/2018 2:08 AM, Uma Shankar wrote:
> Enable writing of HDR metadata infoframe to panel.
> The data will be provid by usersapace compositors, based
> on blending policies and passsed to driver through a blob
> property.
>
> v2: Rebase
>
> Signed-off-by: Uma Shankar <uma.shankar at intel.com>
> ---
> drivers/gpu/drm/i915/intel_hdmi.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 8a1e5cb..6286c4a 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -475,6 +475,29 @@ static void intel_write_infoframe(struct intel_encoder *encoder,
> frame->any.type, buffer, len);
> }
>
> +/* Set Dynamic Range and Mastering Infoframe */
> +static void intel_hdmi_set_drm_infoframe(struct drm_encoder *encoder,
> + const struct intel_crtc_state
> + *crtc_state,
> + const struct drm_connector_state
> +
We will need this function for lspcon too, if you want to add in a
different series, please add a TODO: here.
> *conn_state)
> +{
> + union hdmi_infoframe frame;
> + struct hdr_static_metadata *hdr_metadata;
> + int ret;
> +
> + hdr_metadata = (struct hdr_static_metadata *)
> + conn_state->hdr_source_metadata_blob_ptr->data;
> +
> + ret = drm_hdmi_infoframe_set_hdr_metadata(&frame.drm, hdr_metadata);
> + if (ret < 0) {
> + DRM_ERROR("couldn't set HDR metadata in infoframe\n");
> + return;
> + }
> +
> + intel_write_infoframe(encoder, crtc_state, &frame);
> +}
> +
> static void intel_hdmi_set_avi_infoframe(struct intel_encoder *encoder,
> const struct intel_crtc_state *crtc_state,
> const struct drm_connector_state *conn_state)
> @@ -883,6 +906,10 @@ static void hsw_set_infoframes(struct intel_encoder *encoder,
> intel_hdmi_set_avi_infoframe(encoder, crtc_state, conn_state);
> intel_hdmi_set_spd_infoframe(encoder, crtc_state);
> intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state);
> +
> + /* Set Dynamic Range and Mastering Infoframe if supported and changed */
> + if (conn_state->hdr_metadata_changed)
> + intel_hdmi_set_drm_infoframe(encoder, crtc_state, conn_state);
> }
>
> void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi *hdmi, bool enable)
- Shashank
More information about the Intel-gfx
mailing list