From patchwork Fri Mar 10 04:32:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 9614815 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D46D060415 for ; Fri, 10 Mar 2017 04:53:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C5A8D286D1 for ; Fri, 10 Mar 2017 04:53:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BA243286EF; Fri, 10 Mar 2017 04:53:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 5D3A5286D1 for ; Fri, 10 Mar 2017 04:53:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=di0kVYPn9KYGLgzQU65AfqRDDMOqAAqWMP/kSQl9auc=; b=KGa+2vesiM0wVRTLwuE6k4mAeZ HxMNiW+sfQQkZJ0uaGIpSCXdoFm7JexwQTw5QlcLx4jDVD3cwD82cNMBceZmfMdO51y8+4bN5NO9q 8buvjRHc2haHaZBJNs3TOsn69NYVSXDXzkSg1RPSeT7UAF7Uxe0WySNryfpxoLRxRNLLNshq8HHv3 r/blJlIBMtJ4cYI6HV8+Qpy2CdgHfNajwexSj7ECRb9NBGtcc5NO7qlCv2c/I9pkz9uHpUjglAi9B j5Tct+rfkWvhgrm08V0K+CIbY2DRj+RpywbdYnOSphzvLvaatdzC4FAiJ8tK7/3jDIJY1Uh6E1/Lp 30HB9aMg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cmCYe-0001pD-QU; Fri, 10 Mar 2017 04:53:40 +0000 Received: from casper.infradead.org ([2001:770:15f::2]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cmCY9-0001Pe-AN for linux-rockchip@bombadil.infradead.org; Fri, 10 Mar 2017 04:53:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=X/KUxES2QcUpY6/gR8yUoh0jrkOFiwjIh7jtf+HAB/Y=; b=ABJbrpEMMXSWkoFNmf9rmSLc+ LIcnxKxPKXiAezU4Wi6Say7K44JQ2WyY9hcI+nDpxDb0r4m7q+NaxLsloXWW9tnyLL7Cv2zdbsqKs JCuAvK2j7ieh4fA0T/i99cnzHqeJ9oUiAbWMLGOd0VNMr6GX5xsqX+s970HLEdOcZ/fKsoQkfUXLp YpqrkUEO06o3JAgG2BlVSMrD8AkbgcmMSi5OAv4a0w4Qe9B19Y99yFcFtRi88zgdvU2dMlSTEkK9u kVveMHcarQVC+1hg8nV99nm21s5dI3tdBppsqhEnFE4PW6+YTbpjVWnYSQ7Fx3+VlhDZHFpTfB4W8 NHlHpRm0A==; Received: from mail-qk0-x22b.google.com ([2607:f8b0:400d:c09::22b]) by casper.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cmCMj-0001vO-TJ for linux-rockchip@lists.infradead.org; Fri, 10 Mar 2017 04:41:24 +0000 Received: by mail-qk0-x22b.google.com with SMTP id p64so152350756qke.1 for ; Thu, 09 Mar 2017 20:41:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=X/KUxES2QcUpY6/gR8yUoh0jrkOFiwjIh7jtf+HAB/Y=; b=NK8i+IIgz5Cw/gHBtdZvUQCE3poIhUo/fo+eDBp6pF0sK8shgkXGgTRG3XoL1/tqls eC5ucfIE77gZGWRSdQyDnC6cwy1NkQpl2EHQdYeIbR3dfRAhDIzdmw4yYgE0G9hIj74C 6GambdJw49pqhIvTJKklkhCEgwuPxS2S9PYgs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=X/KUxES2QcUpY6/gR8yUoh0jrkOFiwjIh7jtf+HAB/Y=; b=DLU30Dnfj2KGzh8VR+RRH7mjy+t9AqVEdUr6zjK5sV9t9L40+BZYrPM9ROk7xvokwt 4AdDoLOmYfCZBv3srqLrtc+EEqPbIwRO3wJnBJ84zDyq4xYJ6oYiaaZub/yJBZqNE8pM jjVpXc27Hk2nvKEg0ZyvqKsnlJLjC8QKPom5sSuiCsTbCUFp6QsjSh9Yst2hCu8EhyAs OtaikxfON/3DkaWwjLioCFMceALLlxceVkZXf6tzTeM18Zr6OUuqTTQW4MqATk2DMgYt BT8+qnEndmEJCdoa64pb2T7ECIp3fIb8+J34ERw0vnQ3KQ7xI5I0cBbHbGB68f9f8GkT edRQ== X-Gm-Message-State: AFeK/H3kLk1+RLViPCsdqqbJOsN9dj6v/4YTAFxzXjPD1S1KcCWGNVrQBKuMdhO+vvpG/6+5 X-Received: by 10.55.16.157 with SMTP id 29mr16391686qkq.247.1489120860460; Thu, 09 Mar 2017 20:41:00 -0800 (PST) Received: from boxwood.roam.corp.google.com (cpe-75-189-128-87.nc.res.rr.com. [75.189.128.87]) by smtp.gmail.com with ESMTPSA id n19sm5697731qtn.35.2017.03.09.20.40.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 09 Mar 2017 20:40:59 -0800 (PST) From: Sean Paul To: linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org Subject: [PATCH 31/41] drm/bridge: analogix_dp: Move fast link training detect to set_bridge Date: Thu, 9 Mar 2017 23:32:46 -0500 Message-Id: <20170310043305.17216-32-seanpaul@chromium.org> X-Mailer: git-send-email 2.12.0.246.ga2ecc84866-goog In-Reply-To: <20170310043305.17216-1-seanpaul@chromium.org> References: <20170310043305.17216-1-seanpaul@chromium.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170310_044122_051057_AA909D50 X-CRM114-Status: GOOD ( 15.49 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Archit Taneja , zain wang , Lin Huang , Tomeu Vizoso , David Airlie , Douglas Anderson , Tomasz Figa , Sean Paul , Yakir Yang MIME-Version: 1.0 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: zain wang It's too early to detect fast link training, if other step after it failed, we will set fast_link flag to 1, and retry set_bridge again. In this case we will power down and power up panel power supply, and we will do fast link training since we have set fast_link flag to 1. In fact, we should do full link training now, not the fast link training. So we should move the fast link detection at the end of set_bridge. Cc: Tomasz Figa Signed-off-by: zain wang Signed-off-by: Douglas Anderson Signed-off-by: Sean Paul Reviewed-by: Andrzej Hajda --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 42 +++++++++++++--------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 4ebbf3053639..65af5ef8ec12 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -599,7 +599,7 @@ static int analogix_dp_process_equalizer_training(struct analogix_dp_device *dp) { int lane, lane_count, retval; u32 reg; - u8 link_align, link_status[2], adjust_request[2], spread; + u8 link_align, link_status[2], adjust_request[2]; usleep_range(400, 401); @@ -643,20 +643,6 @@ static int analogix_dp_process_equalizer_training(struct analogix_dp_device *dp) dev_dbg(dp->dev, "final lane count = %.2x\n", dp->link_train.lane_count); - retval = drm_dp_dpcd_readb(&dp->aux, DP_MAX_DOWNSPREAD, - &spread); - if (retval != 1) { - dev_err(dp->dev, "failed to read downspread %d\n", - retval); - dp->fast_train_enable = false; - } else { - dp->fast_train_enable = - (spread & DP_NO_AUX_HANDSHAKE_LINK_TRAINING) ? - true : false; - } - dev_dbg(dp->dev, "fast link training %s\n", - dp->fast_train_enable ? "supported" : "unsupported"); - dp->link_train.lt_state = FINISHED; return 0; @@ -994,6 +980,22 @@ static irqreturn_t analogix_dp_irq_thread(int irq, void *arg) return IRQ_HANDLED; } +static int analogix_dp_fast_link_train_detection(struct analogix_dp_device *dp) +{ + int ret; + u8 spread; + + ret = drm_dp_dpcd_readb(&dp->aux, DP_MAX_DOWNSPREAD, &spread); + if (ret != 1) { + dev_err(dp->dev, "failed to read downspread %d\n", ret); + return ret; + } + dp->fast_train_enable = !!(spread & DP_NO_AUX_HANDSHAKE_LINK_TRAINING); + dev_dbg(dp->dev, "fast link training %s\n", + dp->fast_train_enable ? "supported" : "unsupported"); + return 0; +} + static int analogix_dp_commit(struct analogix_dp_device *dp) { int ret; @@ -1036,8 +1038,16 @@ static int analogix_dp_commit(struct analogix_dp_device *dp) if (ret) return ret; - if (dp->psr_enable) + if (dp->psr_enable) { ret = analogix_dp_enable_sink_psr(dp); + if (ret) + return ret; + } + + /* Check whether panel supports fast training */ + ret = analogix_dp_fast_link_train_detection(dp); + if (ret) + dp->psr_enable = false; return ret; }