From patchwork Mon Nov 3 13:00:56 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dariusz Gadomski X-Patchwork-Id: 406185 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 833621400AB; Tue, 4 Nov 2014 00:02:24 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1XlHH0-00033x-Ry; Mon, 03 Nov 2014 13:02:18 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1XlHFx-0002af-4r for kernel-team@lists.ubuntu.com; Mon, 03 Nov 2014 13:01:13 +0000 Received: from 89-76-229-51.dynamic.chello.pl ([89.76.229.51] helo=localhost.localdomain) by youngberry.canonical.com with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1XlHFw-0007IZ-2j for kernel-team@lists.ubuntu.com; Mon, 03 Nov 2014 13:01:12 +0000 From: Dariusz Gadomski To: kernel-team@lists.ubuntu.com Subject: [PATCH 13/18] backport v0.7 mst core fixes Date: Mon, 3 Nov 2014 14:00:56 +0100 Message-Id: <1415019661-19435-14-git-send-email-dariusz.gadomski@canonical.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1415019661-19435-1-git-send-email-dariusz.gadomski@canonical.com> References: <1415019661-19435-1-git-send-email-dariusz.gadomski@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: Dave Airlie BugLink: https://bugs.launchpad.net/bugs/1104230 (cherry picked from commit 8287efc04b130024cc3e25a3ff2f1b9ea1aab0be upstream) Signed-off-by: Dariusz Gadomski --- drivers/gpu/drm/drm_dp_mst_topology.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index 73bc773..df89128 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -1029,6 +1029,7 @@ static void drm_dp_add_port(struct drm_dp_mst_branch *mstb, port->mgr = mstb->mgr; port->aux.name = "DPMST"; port->aux.dev = dev; + port->available_pbn = 0xffff; created = true; } else { old_pdt = port->pdt; @@ -1057,12 +1058,12 @@ static void drm_dp_add_port(struct drm_dp_mst_branch *mstb, if (old_ddps != port->ddps) { if (port->ddps) { drm_dp_check_port_guid(mstb, port); - if (!port->input) + if (!port->input && port->pdt != DP_PEER_DEVICE_MST_BRANCHING) drm_dp_send_enum_path_resources(mstb->mgr, mstb, port); } else { port->guid_valid = false; - port->available_pbn = 0; - } + port->available_pbn = 0xffff; + } } if (old_pdt != port->pdt && !port->input) { @@ -1109,7 +1110,7 @@ static void drm_dp_update_port(struct drm_dp_mst_branch *mstb, dowork = true; } else { port->guid_valid = false; - port->available_pbn = 0; + port->available_pbn = 0xffff; } } if (old_pdt != port->pdt && !port->input) { @@ -1170,8 +1171,9 @@ static void drm_dp_check_and_send_link_address(struct drm_dp_mst_topology_mgr *m if (!port->ddps) continue; - if (!port->available_pbn) - drm_dp_send_enum_path_resources(mgr, mstb, port); + if (port->pdt != DP_PEER_DEVICE_MST_BRANCHING) + if (port->available_pbn == 0xffff) + drm_dp_send_enum_path_resources(mgr, mstb, port); if (port->mstb) drm_dp_check_and_send_link_address(mgr, port->mstb); @@ -2430,7 +2432,7 @@ static void drm_dp_mst_dump_mstb(struct seq_file *m, seq_printf(m, "%smst: %p, %d\n", prefix, mstb, mstb->num_ports); list_for_each_entry(port, &mstb->ports, next) { - seq_printf(m, "%sport: %d: ddps: %d ldps: %d, %p, conn: %p\n", prefix, port->port_num, port->ddps, port->ldps, port, port->connector); + seq_printf(m, "%sport: %d: ddps: %d ldps: %d, pdt: %d dpcd_rev: %x avail: %d\n", prefix, port->port_num, port->ddps, port->ldps, port->pdt, port->dpcd_rev, port->available_pbn); if (port->mstb) drm_dp_mst_dump_mstb(m, port->mstb); }