* [PATCH] drm/i915: ELD info update during HDMI hot plug
@ 2012-09-05 5:06 Wang Xingchao
2012-09-05 5:29 ` Fengguang Wu
0 siblings, 1 reply; 3+ messages in thread
From: Wang Xingchao @ 2012-09-05 5:06 UTC (permalink / raw)
To: intel-gfx; +Cc: daniel.vetter, fengguang.wu
ELD infomation should update immediately when detected HDMI hot plug event.
The related ELD_VALID bit should be set/clear to generate unsolicited event
to notify Alsa driver this change.
Signed-off-by: Wang Xingchao <xingchao.wang@intel.com>
---
drivers/gpu/drm/i915/intel_hdmi.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index e4c37bb..1d9aaa9 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -719,6 +719,10 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
struct drm_i915_private *dev_priv = connector->dev->dev_private;
struct edid *edid;
enum drm_connector_status status = connector_status_disconnected;
+ enum drm_connector_status old_status = connector->status;
+ int aud_cntrl_st2;
+ uint32_t eldv;
+ int i;
if (IS_G4X(connector->dev) && !g4x_hdmi_connected(intel_hdmi))
return status;
@@ -747,6 +751,30 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
(intel_hdmi->force_audio == HDMI_AUDIO_ON);
}
+ if (status != old_status) {
+ if (HAS_PCH_IBX(connector->dev))
+ aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
+ else if (IS_HASWELL(connector->dev))
+ aud_cntrl_st2 = HSW_AUD_PIN_ELD_CP_VLD;
+ else
+ aud_cntrl_st2 = CPT_AUD_CNTRL_ST2;
+
+ eldv = (AUDIO_ELD_VALID_A |
+ AUDIO_ELD_VALID_B |
+ AUDIO_ELD_VALID_C) ;
+ if (status == connector_status_connected) {
+ DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Pluged In\n", connector->base.id,
+ drm_get_connector_name(connector));
+ I915_WRITE(aud_cntrl_st2, eldv);
+ } else {
+ i = I915_READ(aud_cntrl_st2);
+ i &= ~eldv;
+ I915_WRITE(aud_cntrl_st2, i);
+ DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Pluged Out\n", connector->base.id,
+ drm_get_connector_name(connector));
+ }
+ }
+
return status;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/i915: ELD info update during HDMI hot plug
2012-09-05 5:06 [PATCH] drm/i915: ELD info update during HDMI hot plug Wang Xingchao
@ 2012-09-05 5:29 ` Fengguang Wu
2012-09-12 7:19 ` Wang, Xingchao
0 siblings, 1 reply; 3+ messages in thread
From: Fengguang Wu @ 2012-09-05 5:29 UTC (permalink / raw)
To: Wang Xingchao; +Cc: daniel.vetter, intel-gfx
Xingchao,
We have the drm_i915_display_funcs.write_eld() for such
functionalities.
Thanks,
Fengguang
On Wed, Sep 05, 2012 at 01:06:16PM +0800, Wang Xingchao wrote:
> ELD infomation should update immediately when detected HDMI hot plug event.
> The related ELD_VALID bit should be set/clear to generate unsolicited event
> to notify Alsa driver this change.
>
> Signed-off-by: Wang Xingchao <xingchao.wang@intel.com>
> ---
> drivers/gpu/drm/i915/intel_hdmi.c | 28 ++++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index e4c37bb..1d9aaa9 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -719,6 +719,10 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
> struct drm_i915_private *dev_priv = connector->dev->dev_private;
> struct edid *edid;
> enum drm_connector_status status = connector_status_disconnected;
> + enum drm_connector_status old_status = connector->status;
> + int aud_cntrl_st2;
> + uint32_t eldv;
> + int i;
>
> if (IS_G4X(connector->dev) && !g4x_hdmi_connected(intel_hdmi))
> return status;
> @@ -747,6 +751,30 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
> (intel_hdmi->force_audio == HDMI_AUDIO_ON);
> }
>
> + if (status != old_status) {
> + if (HAS_PCH_IBX(connector->dev))
> + aud_cntrl_st2 = IBX_AUD_CNTL_ST2;
> + else if (IS_HASWELL(connector->dev))
> + aud_cntrl_st2 = HSW_AUD_PIN_ELD_CP_VLD;
> + else
> + aud_cntrl_st2 = CPT_AUD_CNTRL_ST2;
> +
> + eldv = (AUDIO_ELD_VALID_A |
> + AUDIO_ELD_VALID_B |
> + AUDIO_ELD_VALID_C) ;
> + if (status == connector_status_connected) {
> + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Pluged In\n", connector->base.id,
> + drm_get_connector_name(connector));
> + I915_WRITE(aud_cntrl_st2, eldv);
> + } else {
> + i = I915_READ(aud_cntrl_st2);
> + i &= ~eldv;
> + I915_WRITE(aud_cntrl_st2, i);
> + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Pluged Out\n", connector->base.id,
> + drm_get_connector_name(connector));
> + }
> + }
> +
> return status;
> }
>
> --
> 1.7.9.5
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/i915: ELD info update during HDMI hot plug
2012-09-05 5:29 ` Fengguang Wu
@ 2012-09-12 7:19 ` Wang, Xingchao
0 siblings, 0 replies; 3+ messages in thread
From: Wang, Xingchao @ 2012-09-12 7:19 UTC (permalink / raw)
To: intel-gfx@lists.freedesktop.org; +Cc: daniel.vetter@ffwll.ch, Wu, Fengguang
> -----Original Message-----
> From: Wu, Fengguang
> Sent: Wednesday, September 05, 2012 1:30 PM
> To: Wang, Xingchao
> Cc: intel-gfx@lists.freedesktop.org; daniel.vetter@ffwll.ch; Zhao, Yakui
> Subject: Re: [PATCH] drm/i915: ELD info update during HDMI hot plug
>
> Xingchao,
>
> We have the drm_i915_display_funcs.write_eld() for such functionalities.
>
I have another simple patch to replace this one, will send it out later.
thanks
--xingchao
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-09-12 7:19 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-05 5:06 [PATCH] drm/i915: ELD info update during HDMI hot plug Wang Xingchao
2012-09-05 5:29 ` Fengguang Wu
2012-09-12 7:19 ` Wang, Xingchao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox