>-----Original Message-----
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Wednesday, November 30, 2016 12:50 AM
>To: Jani Nikula <jani.nik...@linux.intel.com>
>Cc: Yang, Libin <libin.y...@intel.com>; intel-gfx@lists.freedesktop.org; 
>Vetter,
>Daniel <daniel.vet...@intel.com>; Pandiyan, Dhinakaran
><dhinakaran.pandi...@intel.com>; Kp, Jeeja <jeeja...@intel.com>;
>ti...@suse.de
>Subject: Re: [PATCH 2/2] drm/i915/audio: Extend audio sync rate support for
>DP MST
>
>On Tue, Nov 29, 2016 at 06:33:50PM +0200, Jani Nikula wrote:
>> On Tue, 15 Nov 2016, libin.y...@intel.com wrote:
>> > From: Libin Yang <libin.y...@intel.com>
>> >
>> > This patch extends the support of audio sample rate sync up to DP
>> > MST.
>> >
>> > Signed-off-by: Libin Yang <libin.y...@intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/intel_audio.c | 3 ++-
>> >  1 file changed, 2 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/intel_audio.c
>> > b/drivers/gpu/drm/i915/intel_audio.c
>> > index c8a1345..88ed869 100644
>> > --- a/drivers/gpu/drm/i915/intel_audio.c
>> > +++ b/drivers/gpu/drm/i915/intel_audio.c
>> > @@ -807,7 +807,8 @@ static int
>i915_audio_component_sync_audio_rate(struct device *kdev, int port,
>> >    intel_encoder = get_saved_enc(dev_priv, port, pipe);
>> >    if (!intel_encoder || !intel_encoder->base.crtc ||
>> >        (intel_encoder->type != INTEL_OUTPUT_HDMI &&
>> > -       intel_encoder->type != INTEL_OUTPUT_DP)) {
>> > +       intel_encoder->type != INTEL_OUTPUT_DP &&
>> > +           intel_encoder->type != INTEL_OUTPUT_DP_MST)) {
>>
>> I think the better option is to make absolutely sure we never store
>> other kinds of encoders in dev_priv->av_enc_map[pipe] to begin with. I
>> think that's true already, but please add
>>
>>      if (WARN_ON(intel_encoder->type != INTEL_OUTPUT_HDMI &&
>>                  intel_encoder->type != INTEL_OUTPUT_DP &&
>>                  intel_encoder->type != INTEL_OUTPUT_DP_MST))
>>              return;
>>
>> near the beginning of intel_audio_codec_enable(), and remove the type
>> checks here. This reduces the confusion about different kinds of
>> checks after calling get_saved_enc().
>
>This while encoder->type thing is pretty broken actually. Currently we're semi-
>randomly flipping DDI encoders between UNKNOWN,HDMI and DP.
>I want to eliminate that so that their type will always be just "DDI".
>For iguring out what kind of signal we are driving out you should be looking at
>crtc_state->output_types.

Do you mean the code should be like:
@@ -807,10 +807,7 @@ static int i915_audio_component_sync_audio_rate(struct 
device *kdev, int port,
 
        /* 1. get the pipe */
        intel_encoder = get_saved_enc(dev_priv, port, pipe);
-       if (!intel_encoder || !intel_encoder->base.crtc ||
-           (intel_encoder->type != INTEL_OUTPUT_HDMI &&
-            intel_encoder->type != INTEL_OUTPUT_DP &&
-                intel_encoder->type != INTEL_OUTPUT_DP_MST)) {
+       if (!intel_encoder || !intel_encoder->base.crtc) {
                DRM_DEBUG_KMS("Not valid for port %c\n", port_name(port));
                err = -ENODEV;
                goto unlock;
@@ -819,7 +816,12 @@ static int i915_audio_component_sync_audio_rate(struct 
device *kdev, int port,
        /* pipe passed from the audio driver will be -1 for Non-MST case */
        crtc = to_intel_crtc(intel_encoder->base.crtc);
        crtc_state = crtc->config;
+       if (WARN_ON((crtc_state->output_types &
+               ((1 << INTEL_OUTPUT_HDMI) |
+                (1 << INTEL_OUTPUT_DP) |
+                (1 << INTEL_OUTPUT_DP_MST))) == 0))
+               return 0;
+
        pipe = crtc->pipe;

I did the test, and it seems intel_encoder->type can show the correct type 
on my platform. It is similar with crtc_state->output_types.

Regards,
Libin

>
>--
>Ville Syrjälä
>Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to