From patchwork Tue Sep 18 14:04:33 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adam Jackson X-Patchwork-Id: 1472851 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork2.kernel.org (Postfix) with ESMTP id 9ED54DF24C for ; Tue, 18 Sep 2012 14:06:34 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 29F3DA08FD for ; Tue, 18 Sep 2012 07:06:34 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTP id 15D84A08EF for ; Tue, 18 Sep 2012 07:04:37 -0700 (PDT) Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q8IE4ZCg030147 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Sep 2012 10:04:35 -0400 Received: from [10.16.60.54] (atropine.boston.devel.redhat.com [10.16.60.54]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q8IE4Y4W027814; Tue, 18 Sep 2012 10:04:34 -0400 Message-ID: <1347977073.25266.78.camel@atropine> From: Adam Jackson To: Takashi Iwai Date: Tue, 18 Sep 2012 10:04:33 -0400 In-Reply-To: References: <50534C4F.6020607@redhat.com> <1347899076.25266.46.camel@atropine> Mime-Version: 1.0 X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 Cc: mmarek@suse.cz, intel-gfx@lists.freedesktop.org Subject: Re: [Intel-gfx] Valid DP connection without EDID? X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org On Tue, 2012-09-18 at 13:01 +0200, Takashi Iwai wrote: > > I started a patch series for this a bit ago, I'll send it on > > momentarily. > > Thanks! I evaluated it now (with a typo fix suggested by Jani). > Unfortunately, it doesn't improve the situation. > > The fetch of downstream ports succeeds, and it gets 0x09. So, this > indicates again it's a VGA downstream port. But that's all, so far. > The 0x09 is reported no matter whether the VGA cable is plugged or > not, so this can't be used as the detection of the downstream port > plug state. Sorry, there's a bug in the patch. link_configuration[0] is not DP_SINK_COUNT, I have no idea why I thought it was. Try this on top of the series: === If that doesn't work then the HPD-capable bit is useless - or if we're lucky just needs quirking by branch OUI - and we should just fall through to the drm_probe_ddc() path. What is the branch OUI, anyway? There's a third possibility, which is that HPD does work but that we're not doing enough to enable it. The DP 1.1a spec has a non-normative appendix describing one way a device could go about doing that as an optional feature, but the method described does not match how we're currently handling sink-specific IRQs. I have no idea what the 1.2 spec says on this point though. - ajax === diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 9809c53..b6b9a18 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -2098,15 +2098,22 @@ intel_dp_detect_dpcd(struct intel_dp *intel_dp) if (!intel_dp_get_dpcd(intel_dp)) return connector_status_disconnected; - + /* if there's no downstream port, we're done */ if (!(dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT)) return connector_status_connected; /* If we're HPD-aware, SINK_COUNT changes dynamically */ hpd = !!(intel_dp->downstream_ports[0] & DP_DS_PORT_HPD); - if (hpd && (intel_dp->link_configuration[0] & DP_SINK_COUNT_MASK)) - return connector_status_connected; + if (hpd) { + uint8_t sink_count; + if (!intel_dp_aux_native_read_retry(intel_dp, DP_SINK_COUNT, + &sink_count, 1)) + return connector_status_unknown; + sink_count &= DP_SINK_COUNT_MASK; + return sink_count ? connector_status_connected + : connector_status_disconnected; + } /* If no HPD, poke DDC gently */ if (drm_probe_ddc(&intel_dp->adapter))