[Intel-gfx] [PATCH v2 07/18] drm/i915/ddi: write ELD where it's supposed to be done

Rodrigo Vivi rodrigo.vivi at gmail.com
Thu Oct 30 18:16:17 CET 2014


Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

On Tue, Oct 28, 2014 at 1:28 AM, Jani Nikula <jani.nikula at intel.com> wrote:
> On Mon, 27 Oct 2014, Rodrigo Vivi <rodrigo.vivi at gmail.com> wrote:
>> On Mon, Oct 27, 2014 at 7:26 AM, Jani Nikula <jani.nikula at intel.com> wrote:
>>> The audio programming sequence states that the ELD must be written and
>>> enabled after the pipe is ready. Indeed, this should clarify the
>>> situation with
>>
>> Where/what doc can I confirm this?
>
> Bspec -> Display -> North Display Engine Registers -> North Display
> Engine Audio -> Audio Programming Sequence etc.
>
> Jani.
>
>
>>
>>>
>>> commit c79057922ed6c2c6df1214e6ab4414fea1b23db2
>>> Author: Daniel Vetter <daniel.vetter at ffwll.ch>
>>> Date:   Wed Apr 16 16:56:09 2014 +0200
>>>
>>>     drm/i915: Remove vblank wait from haswell_write_eld
>>>
>>> and Ville's review of it [1].
>>>
>>> Moreover, we should not touch the relevant registers before we get the
>>> audio power domain.
>>>
>>> [1] http://mid.gmane.org/20140416155309.GK18465@intel.com
>>>
>>> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>>> ---
>>>  drivers/gpu/drm/i915/intel_audio.c |  2 --
>>>  drivers/gpu/drm/i915/intel_ddi.c   | 11 ++---------
>>>  2 files changed, 2 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
>>> index 4d644efde608..b9d3a143dd8c 100644
>>> --- a/drivers/gpu/drm/i915/intel_audio.c
>>> +++ b/drivers/gpu/drm/i915/intel_audio.c
>>> @@ -160,8 +160,6 @@ static void haswell_write_eld(struct drm_connector *connector,
>>>         I915_WRITE(aud_cntrl_st2, tmp);
>>>         POSTING_READ(aud_cntrl_st2);
>>>
>>> -       assert_pipe_disabled(dev_priv, pipe);
>>> -
>>>         /* Set ELD valid state */
>>>         tmp = I915_READ(aud_cntrl_st2);
>>>         DRM_DEBUG_DRIVER("HDMI audio: pin eld vld status=0x%08x\n", tmp);
>>> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
>>> index 2688bc940879..56e7cb1ddc75 100644
>>> --- a/drivers/gpu/drm/i915/intel_ddi.c
>>> +++ b/drivers/gpu/drm/i915/intel_ddi.c
>>> @@ -1120,15 +1120,6 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder)
>>>         enum port port = intel_ddi_get_encoder_port(intel_encoder);
>>>         int type = intel_encoder->type;
>>>
>>> -       if (crtc->config.has_audio) {
>>> -               DRM_DEBUG_DRIVER("Audio on pipe %c on DDI\n",
>>> -                                pipe_name(crtc->pipe));
>>> -
>>> -               /* write eld */
>>> -               DRM_DEBUG_DRIVER("DDI audio: write eld information\n");
>>> -               intel_write_eld(intel_encoder);
>>> -       }
>>> -
>>>         if (type == INTEL_OUTPUT_EDP) {
>>>                 struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
>>>                 intel_edp_panel_on(intel_dp);
>>> @@ -1225,6 +1216,8 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder)
>>>
>>>         if (intel_crtc->config.has_audio) {
>>>                 intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO);
>>> +               intel_write_eld(intel_encoder);
>>> +
>>>                 tmp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD);
>>>                 tmp |= ((AUDIO_OUTPUT_ENABLE_A | AUDIO_ELD_VALID_A) << (pipe * 4));
>>>                 I915_WRITE(HSW_AUD_PIN_ELD_CP_VLD, tmp);
>>> --
>>> 2.1.1
>>>
>>> _______________________________________________
>>> Intel-gfx mailing list
>>> Intel-gfx at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>>
>>
>>
>> --
>> Rodrigo Vivi
>> Blog: http://blog.vivi.eng.br
>
> --
> Jani Nikula, Intel Open Source Technology Center



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br



More information about the Intel-gfx mailing list