All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ander Conselvan de Oliveira <conselvan2@gmail.com>
To: Jesse Barnes <jbarnes@virtuousgeek.org>, intel-gfx@lists.freedesktop.org
Cc: shuang.he@linux.intel.com
Subject: Re: [PATCH 3/6] drm/i915/hdmi: fetch infoframe status in get_config v2
Date: Mon, 10 Nov 2014 18:09:21 +0200	[thread overview]
Message-ID: <5460E331.2070604@gmail.com> (raw)
In-Reply-To: <1415226371-1880-3-git-send-email-jbarnes@virtuousgeek.org>

Reviewed-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>

On 11/06/2014 12:26 AM, Jesse Barnes wrote:
> This is useful for checking things later.
> 
> v2:
>    - fix hsw infoframe enabled check (Ander)
> 
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>   drivers/gpu/drm/i915/intel_drv.h  |  4 +++
>   drivers/gpu/drm/i915/intel_hdmi.c | 62 +++++++++++++++++++++++++++++++++++++++
>   2 files changed, 66 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index d53ac23..8aa80e1 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -292,6 +292,9 @@ struct intel_crtc_config {
>   	 * between pch encoders and cpu encoders. */
>   	bool has_pch_encoder;
>   
> +	/* Are we sending infoframes on the attached port */
> +	bool has_infoframe;
> +
>   	/* CPU Transcoder for the pipe. Currently this can only differ from the
>   	 * pipe on Haswell (where we have a special eDP transcoder). */
>   	enum transcoder cpu_transcoder;
> @@ -543,6 +546,7 @@ struct intel_hdmi {
>   	void (*set_infoframes)(struct drm_encoder *encoder,
>   			       bool enable,
>   			       struct drm_display_mode *adjusted_mode);
> +	bool (*infoframe_enabled)(struct drm_encoder *encoder);
>   };
>   
>   struct intel_dp_mst_encoder;
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 07b5ebd..994237a 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -166,6 +166,15 @@ static void g4x_write_infoframe(struct drm_encoder *encoder,
>   	POSTING_READ(VIDEO_DIP_CTL);
>   }
>   
> +static bool g4x_infoframe_enabled(struct drm_encoder *encoder)
> +{
> +	struct drm_device *dev = encoder->dev;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	u32 val = I915_READ(VIDEO_DIP_CTL);
> +
> +	return val & VIDEO_DIP_ENABLE;
> +}
> +
>   static void ibx_write_infoframe(struct drm_encoder *encoder,
>   				enum hdmi_infoframe_type type,
>   				const void *frame, ssize_t len)
> @@ -204,6 +213,17 @@ static void ibx_write_infoframe(struct drm_encoder *encoder,
>   	POSTING_READ(reg);
>   }
>   
> +static bool ibx_infoframe_enabled(struct drm_encoder *encoder)
> +{
> +	struct drm_device *dev = encoder->dev;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> +	int reg = TVIDEO_DIP_CTL(intel_crtc->pipe);
> +	u32 val = I915_READ(reg);
> +
> +	return val & VIDEO_DIP_ENABLE;
> +}
> +
>   static void cpt_write_infoframe(struct drm_encoder *encoder,
>   				enum hdmi_infoframe_type type,
>   				const void *frame, ssize_t len)
> @@ -245,6 +265,17 @@ static void cpt_write_infoframe(struct drm_encoder *encoder,
>   	POSTING_READ(reg);
>   }
>   
> +static bool cpt_infoframe_enabled(struct drm_encoder *encoder)
> +{
> +	struct drm_device *dev = encoder->dev;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> +	int reg = TVIDEO_DIP_CTL(intel_crtc->pipe);
> +	u32 val = I915_READ(reg);
> +
> +	return val & VIDEO_DIP_ENABLE;
> +}
> +
>   static void vlv_write_infoframe(struct drm_encoder *encoder,
>   				enum hdmi_infoframe_type type,
>   				const void *frame, ssize_t len)
> @@ -283,6 +314,17 @@ static void vlv_write_infoframe(struct drm_encoder *encoder,
>   	POSTING_READ(reg);
>   }
>   
> +static bool vlv_infoframe_enabled(struct drm_encoder *encoder)
> +{
> +	struct drm_device *dev = encoder->dev;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> +	int reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe);
> +	u32 val = I915_READ(reg);
> +
> +	return val & VIDEO_DIP_ENABLE;
> +}
> +
>   static void hsw_write_infoframe(struct drm_encoder *encoder,
>   				enum hdmi_infoframe_type type,
>   				const void *frame, ssize_t len)
> @@ -320,6 +362,18 @@ static void hsw_write_infoframe(struct drm_encoder *encoder,
>   	POSTING_READ(ctl_reg);
>   }
>   
> +static bool hsw_infoframe_enabled(struct drm_encoder *encoder)
> +{
> +	struct drm_device *dev = encoder->dev;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> +	u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config.cpu_transcoder);
> +	u32 val = I915_READ(ctl_reg);
> +
> +	return val & (VIDEO_DIP_ENABLE_AVI_HSW | VIDEO_DIP_ENABLE_SPD_HSW |
> +		      VIDEO_DIP_ENABLE_VS_HSW);
> +}
> +
>   /*
>    * The data we write to the DIP data buffer registers is 1 byte bigger than the
>    * HDMI infoframe size because of an ECC/reserved byte at position 3 (starting
> @@ -732,6 +786,9 @@ static void intel_hdmi_get_config(struct intel_encoder *encoder,
>   	if (tmp & HDMI_MODE_SELECT_HDMI)
>   		pipe_config->has_hdmi_sink = true;
>   
> +	if (intel_hdmi->infoframe_enabled(&encoder->base))
> +		pipe_config->has_infoframe = true;
> +
>   	if (tmp & SDVO_AUDIO_ENABLE)
>   		pipe_config->has_audio = true;
>   
> @@ -1616,18 +1673,23 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>   	if (IS_VALLEYVIEW(dev)) {
>   		intel_hdmi->write_infoframe = vlv_write_infoframe;
>   		intel_hdmi->set_infoframes = vlv_set_infoframes;
> +		intel_hdmi->infoframe_enabled = vlv_infoframe_enabled;
>   	} else if (IS_G4X(dev)) {
>   		intel_hdmi->write_infoframe = g4x_write_infoframe;
>   		intel_hdmi->set_infoframes = g4x_set_infoframes;
> +		intel_hdmi->infoframe_enabled = g4x_infoframe_enabled;
>   	} else if (HAS_DDI(dev)) {
>   		intel_hdmi->write_infoframe = hsw_write_infoframe;
>   		intel_hdmi->set_infoframes = hsw_set_infoframes;
> +		intel_hdmi->infoframe_enabled = hsw_infoframe_enabled;
>   	} else if (HAS_PCH_IBX(dev)) {
>   		intel_hdmi->write_infoframe = ibx_write_infoframe;
>   		intel_hdmi->set_infoframes = ibx_set_infoframes;
> +		intel_hdmi->infoframe_enabled = ibx_infoframe_enabled;
>   	} else {
>   		intel_hdmi->write_infoframe = cpt_write_infoframe;
>   		intel_hdmi->set_infoframes = cpt_set_infoframes;
> +		intel_hdmi->infoframe_enabled = cpt_infoframe_enabled;
>   	}
>   
>   	if (HAS_DDI(dev))
> 

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2014-11-10 16:10 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-05 22:26 [PATCH 1/6] drm/i915: factor out compute_config from __intel_set_mode v3 Jesse Barnes
2014-11-05 22:26 ` [PATCH 2/6] drm/i915: use compute_config in set_config v3 Jesse Barnes
2014-11-07  9:41   ` Ander Conselvan de Oliveira
2014-11-07 16:59     ` Jesse Barnes
2014-11-07 21:11     ` [PATCH] drm/i915: use compute_config in set_config v4 Jesse Barnes
2014-11-10 16:09       ` Ander Conselvan de Oliveira
2014-11-05 22:26 ` [PATCH 3/6] drm/i915/hdmi: fetch infoframe status in get_config v2 Jesse Barnes
2014-11-10 16:09   ` Ander Conselvan de Oliveira [this message]
2014-11-11 15:00   ` Daniel Vetter
2014-11-11 15:19     ` Ville Syrjälä
2014-11-11 15:23       ` Daniel Vetter
2014-11-11 15:59         ` Jesse Barnes
2014-11-05 22:26 ` [PATCH 4/6] drm/i915: check for audio and infoframe changes across mode sets v2 Jesse Barnes
2014-11-10 16:09   ` Ander Conselvan de Oliveira
2014-12-01 10:25   ` Jani Nikula
2014-12-01 16:04     ` Jesse Barnes
2014-12-01 16:09       ` Chris Wilson
2014-12-01 16:30         ` Daniel Vetter
2014-12-01 16:37           ` Chris Wilson
2014-12-01 17:23             ` Daniel Vetter
2014-12-01 17:35               ` Jani Nikula
2014-12-01 19:26                 ` Daniel Vetter
2014-12-01 16:16     ` Daniel Vetter
2014-12-01 17:22       ` Jesse Barnes
2014-11-05 22:26 ` [PATCH 5/6] drm/i915: update pipe size at set_config time Jesse Barnes
2014-11-10 16:09   ` Ander Conselvan de Oliveira
2014-11-11 15:08     ` Daniel Vetter
2014-11-05 22:26 ` [PATCH 6/6] drm/i915: calculate pfit changes in set_config v2 Jesse Barnes
2014-11-06  8:43   ` [PATCH 6/6] drm/i915: calculate pfit changes in shuang.he
2014-11-10 16:20   ` [PATCH 6/6] drm/i915: calculate pfit changes in set_config v2 Ander Conselvan de Oliveira
2014-11-10 16:32     ` Jesse Barnes
2014-11-06  9:04 ` [PATCH 1/6] drm/i915: factor out compute_config from __intel_set_mode v3 Chris Wilson
2014-11-06 14:34   ` Daniel Vetter
2014-11-10 16:08 ` Ander Conselvan de Oliveira
  -- strict thread matches above, loose matches on Subject: below --
2014-10-30 18:53 [PATCH 1/6] drm/i915: factor out compute_config from __intel_set_mode v2 Jesse Barnes
2014-10-30 18:54 ` [PATCH 3/6] drm/i915/hdmi: fetch infoframe status in get_config v2 Jesse Barnes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5460E331.2070604@gmail.com \
    --to=conselvan2@gmail.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jbarnes@virtuousgeek.org \
    --cc=shuang.he@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.