[Intel-gfx] [PATCH 7/8] drm/i915/sdvo: Port the infoframe code to the shared infrastructure
Ville Syrjälä
ville.syrjala at linux.intel.com
Mon Aug 5 20:08:30 CEST 2013
On Fri, Aug 02, 2013 at 06:22:59PM +0100, Damien Lespiau wrote:
> Signed-off-by: Damien Lespiau <damien.lespiau at intel.com>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
> Signed-off-by: Thierry Reding <thierry.reding at avionic-design.de>
Looks all right.
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/intel_sdvo.c | 38 ++++++++++++++++++++------------------
> 1 file changed, 20 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 47423f3..02f220b 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -963,30 +963,32 @@ static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo,
> static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo,
> const struct drm_display_mode *adjusted_mode)
> {
> - struct dip_infoframe avi_if = {
> - .type = DIP_TYPE_AVI,
> - .ver = DIP_VERSION_AVI,
> - .len = DIP_LEN_AVI,
> - };
> - uint8_t sdvo_data[4 + sizeof(avi_if.body.avi)];
> - struct intel_crtc *intel_crtc = to_intel_crtc(intel_sdvo->base.base.crtc);
> + uint8_t sdvo_data[HDMI_INFOFRAME_SIZE(AVI)];
> + struct drm_crtc *crtc = intel_sdvo->base.base.crtc;
> + struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> + union hdmi_infoframe frame;
> + int ret;
> + ssize_t len;
> +
> + ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
> + adjusted_mode);
> + if (ret < 0) {
> + DRM_ERROR("couldn't fill AVI infoframe\n");
> + return false;
> + }
>
> if (intel_sdvo->rgb_quant_range_selectable) {
> if (intel_crtc->config.limited_color_range)
> - avi_if.body.avi.ITC_EC_Q_SC |= DIP_AVI_RGB_QUANT_RANGE_LIMITED;
> + frame.avi.quantization_range =
> + HDMI_QUANTIZATION_RANGE_LIMITED;
> else
> - avi_if.body.avi.ITC_EC_Q_SC |= DIP_AVI_RGB_QUANT_RANGE_FULL;
> + frame.avi.quantization_range =
> + HDMI_QUANTIZATION_RANGE_FULL;
> }
>
> - avi_if.body.avi.VIC = drm_match_cea_mode(adjusted_mode);
> -
> - intel_dip_infoframe_csum(&avi_if);
> -
> - /* sdvo spec says that the ecc is handled by the hw, and it looks like
> - * we must not send the ecc field, either. */
> - memcpy(sdvo_data, &avi_if, 3);
> - sdvo_data[3] = avi_if.checksum;
> - memcpy(&sdvo_data[4], &avi_if.body, sizeof(avi_if.body.avi));
> + len = hdmi_infoframe_pack(&frame, sdvo_data, sizeof(sdvo_data));
> + if (len < 0)
> + return false;
>
> return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF,
> SDVO_HBUF_TX_VSYNC,
> --
> 1.8.3.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
More information about the Intel-gfx
mailing list