From patchwork Wed Mar 26 05:34:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hermes Wu X-Patchwork-Id: 14029728 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7E0B8C36008 for ; Wed, 26 Mar 2025 05:33:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2132610E2AD; Wed, 26 Mar 2025 05:33:50 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="X/AFtXU/"; dkim-atps=neutral Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by gabe.freedesktop.org (Postfix) with ESMTPS id EC12D10E62F for ; Wed, 26 Mar 2025 05:33:44 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 7C26461141; Wed, 26 Mar 2025 05:33:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPS id 78D91C4CEF6; Wed, 26 Mar 2025 05:33:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742967220; bh=Wy7WE6LuZZ6xBpl3FIbcxjqEGw2E3rBrzulxGhYwh9Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=X/AFtXU/fEdwZ3SAz85QW5q5KbM4UKU13WwZJgjr2WcCzAtCBXB6eIBLoQwFjDPkb pF/jV/K5Phx++Rwmy+q5IrumHFP3UybFVO3OOgX6ropkKHppx16okhzm+4XnRu00Wh Vnyl3HG4QM+1KW+Q/yU6H/0z6wy/Rm+2gCs6B6LERqdCOipyEc2OQbooteQMBXty8Q ERFko5SdwX/XM6Rjj1AHv8rb/YIN6UqxbkgPhPCQ8hOMhmafZ9xBeWzC7enLbUKsU4 sWhrKQpaCNKV4vIs6hhda222V03B3bfnNkxBQvulwFoZ/6h0QfNt3UVODmK1RIAh83 OoQAKyRbRlxYA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D812C3600D; Wed, 26 Mar 2025 05:33:40 +0000 (UTC) Date: Wed, 26 Mar 2025 13:34:17 +0800 Subject: [PATCH v2 5/5] drm/bridge: it6505: skip auto training when previous try fail MIME-Version: 1.0 Message-Id: <20250326-fix-link-training-v2-5-756c8306f500@ite.com.tw> References: <20250326-fix-link-training-v2-0-756c8306f500@ite.com.tw> In-Reply-To: <20250326-fix-link-training-v2-0-756c8306f500@ite.com.tw> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Pet.Weng@ite.com.tw, Kenneth.Hung@ite.com.tw, treapking@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Hermes Wu X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1742967277; l=2513; i=Hermes.wu@ite.com.tw; s=20241230; h=from:subject:message-id; bh=tiJ4RlbfopmJYWvIu2IM5fgKRrXTP6oin1aKAqqcppQ=; b=lCmQZ7iuZxv2BHsc/G9uHxkeG4Ex0zbCFP4cowt8AFQz9da00JgtJQPZbg6UilJ4erYIjhDtM jw25gSKiTxGBWX+I+9Cx0pHXc/+7y2VimoE+KSEaZMjbE9K2oeZbwxj X-Developer-Key: i=Hermes.wu@ite.com.tw; a=ed25519; pk=qho5Dawp2WWj9CGyjtJ6/Y10xH8odjRdS6SXDaDAerU= X-Endpoint-Received: by B4 Relay for Hermes.wu@ite.com.tw/20241230 with auth_id=310 X-Original-From: Hermes Wu X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Hermes.wu@ite.com.tw Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Hermes Wu From: Hermes Wu When connect to device which can only training done by step training, skip auto training when link training restart, usually happen when display resolution is changed. Signed-off-by: Hermes Wu --- drivers/gpu/drm/bridge/ite-it6505.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c index 2bbe787ccb1b57906f2a31a011dd92f327019b08..47f8134df8b6f5c2172c6cfdbc91da8063993a05 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -467,6 +467,7 @@ struct it6505 { struct delayed_work hdcp_work; struct work_struct hdcp_wait_ksv_list; struct completion extcon_completion; + u8 step_train_only; bool hdcp_desired; bool is_repeater; u8 hdcp_down_stream_count; @@ -2457,11 +2458,13 @@ static void it6505_link_step_train_process(struct it6505 *it6505) ret ? "pass" : "failed", i + 1); if (ret) { it6505_link_train_ok(it6505); + it6505->step_train_only = true; return; } } DRM_DEV_DEBUG_DRIVER(dev, "training fail"); + it6505->step_train_only = false; it6505->link_state = LINK_IDLE; it6505_video_reset(it6505); } @@ -2477,18 +2480,19 @@ static void it6505_link_training_work(struct work_struct *work) if (!it6505_get_sink_hpd_status(it6505)) return; - - for (retry = AUTO_TRAIN_RETRY; retry > 0; retry--) { - it6505_link_training_setup(it6505); - it6505_reset_hdcp(it6505); - it6505_aux_reset(it6505); - - ret = it6505_link_start_auto_train(it6505); - DRM_DEV_DEBUG_DRIVER(dev, "auto train %s,", - ret ? "pass" : "failed"); - if (ret) { - it6505_link_train_ok(it6505); - return; + if (!it6505->step_train_only) { + for (retry = AUTO_TRAIN_RETRY; retry > 0; retry--) { + it6505_link_training_setup(it6505); + it6505_reset_hdcp(it6505); + it6505_aux_reset(it6505); + + ret = it6505_link_start_auto_train(it6505); + DRM_DEV_DEBUG_DRIVER(dev, "auto train %s,", + ret ? "pass" : "failed"); + if (ret) { + it6505_link_train_ok(it6505); + return; + } } } @@ -2599,6 +2603,7 @@ static void it6505_irq_hpd(struct it6505 *it6505) it6505_variable_config(it6505); it6505_parse_link_capabilities(it6505); } + it6505->step_train_only = false; it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, DP_SET_POWER_D0);