From nobody Tue Dec 16 07:20:39 2025 Received: from mail-io1-f74.google.com (mail-io1-f74.google.com [209.85.166.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F1A8B1917ED for ; Tue, 14 Jan 2025 19:06:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736881566; cv=none; b=Kgh+aEHkjUVjM3IBxM5ha/2B9PosQBSOh1InBAHyEymNJ2Pe16E4rAeYZe5bsWtP7aAdTKxtynBFfs+WXbPpcAVeByx6NrhVkaCtdmLpfeFpAO1OiSjaoQ7phc3sWRWOW55oAQ7TPCvokFxw13u6iL7hIJ5hdXToII8H6oJGn3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736881566; c=relaxed/simple; bh=S1nW/wv8XIrKVZr0ybBJX26RLNTTI6rSLZ6ETVBXGdw=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=faIBdJqVnDUXFplrhCTBxwuD5weEWcHHmmSJ/b0qsyBEzeJlrapfglTRhwF/BdH3Mz2DHM6HYPhQc2uUkI+WHZTymcDdLl9CntOPyNipz0JZaLp4D9oatEKTuUXYenhAaWDjFenuLAwGU1IBC5TqWpcrei+8aGeli1OqyhRaXC4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jdenose.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=2Y52tQaW; arc=none smtp.client-ip=209.85.166.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jdenose.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="2Y52tQaW" Received: by mail-io1-f74.google.com with SMTP id ca18e2360f4ac-847500c9b9aso890324439f.1 for ; Tue, 14 Jan 2025 11:06:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736881562; x=1737486362; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=HkXEGKaHS4Wap2DZ8mnEQl68mT1GrP1ybYkz9IG2DCI=; b=2Y52tQaWvHAZL8JsUaIhCfvthxG/8RoyUQlowC0kY1Cbl47L61vRs1iV2xCvDbdSBK cpH6o/cqCIFenwymBW5jqXt4ObEupTwDTp25vvJHLStVd6ybxzDLQMH2T7aedLlzp5Uw Z+fmMZDmmcUSq49qGNGQDb5a770jt3bCVCOwYwKLBXtO6Z+Jnn21bdl0GbWVS3lSq8f2 3FSimHOcNrNbpUKwXYPyrMdJl/040tceH26IWj5SEX1ATEtEtul9b/mP6F4W1qoeA9JH erajDnJKA9RZapg5fOO3yPklLz5QokNIRd+dfAJ5ztEPdZjqO0iUmJuTxIZ7Odhyh6qQ R85Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736881562; x=1737486362; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=HkXEGKaHS4Wap2DZ8mnEQl68mT1GrP1ybYkz9IG2DCI=; b=snyOLJ/GIgA8cG8eqgY7Mx5bxXus1LqJ7WMVOHzb1cOLJL9E5L9d3ibhqDVz/6pAM+ sGnJmiAYm3Gq+nfINalZFqo+f/AeLAd63hLHFd3jXb/KRs2WlxFFVjgah5H4tJmiBaJw R6ezN0Uryl1R5VOhUGW3/PSQSWi26UWJEOedTbkDMobTxOVynZIdyiVx0YHqIdwVyn9X b0QtE4CI7TPIg/MFHQEYnU1OJtuMIM5vVZGCJB/kp22j1EC1E7yBcaeC5M1SjZGnM2Z0 r7g+MZMdrQ65KyCndfIeynt43xoNwRyiMgE2Q8IhZrN3tbkw7izFVW73IqMemFEY1edK NcYg== X-Forwarded-Encrypted: i=1; AJvYcCWpH35LTADjQNIARp/IUKegW7BLixwoTk5G4SZMNPkvUqXlTgaMcasUMzq93/XYGKGs7F/2bEF0ayMxUuo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzv+H1R7dUSUzhdWv/41XYMur73vH9ZMbxs+KxGPAgE77DBFYT2 ALKq+rwIAPVFBHzV/r9w+2MDJyBXXx++Fj01nJD4F7qjyMCHTpAXn1BwTbQ04PjsvfN4iNNWwuY SjMlZ4Q== X-Google-Smtp-Source: AGHT+IGsJrvqYTmQtcrvuuvJ/hwbkz3SgyMuWS0FYMxwQMuh4GEdylWBFKZU6jZSnevp4MEMxg8IfOTNclDW X-Received: from ior15.prod.google.com ([2002:a05:6602:a00f:b0:83b:744f:7224]) (user=jdenose job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6602:3a09:b0:83a:b500:3513 with SMTP id ca18e2360f4ac-84ce00a3e64mr2584711439f.8.1736881562194; Tue, 14 Jan 2025 11:06:02 -0800 (PST) Date: Tue, 14 Jan 2025 19:05:55 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.48.0.rc2.279.g1de40edade-goog Message-ID: <20250114190554.1.Ia17111747d0450169dbe902e5d7ef25912a9338e@changeid> Subject: [PATCH] drm/i915/display: Add skip link check quirk From: Jonathan Denose To: LKML Cc: intel-gfx@lists.freedesktop.org, jani.nikula@linux.intel.com, rodrigo.vivi@intel.com, Jonathan Denose , David Airlie , Joonas Lahtinen , Simona Vetter , Tvrtko Ursulin , dri-devel@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The display on the Advantech UTC124G3PWWW0E-ES worked fine until commit "drm/i915/dp: Recheck link state after modeset" was introduced. After this commit the display flickers intermittently as the driver code initiates the delayed link recheck in an infinite loop. To resolve this issue for the Advantech device, add a quirk to skip over the delayed link recheck. Signed-off-by: Jonathan Denose --- drivers/gpu/drm/i915/display/intel_dp_link_training.c | 4 +++- drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++ drivers/gpu/drm/i915/display/intel_quirks.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/driver= s/gpu/drm/i915/display/intel_dp_link_training.c index 397cc4ebae526..7804ad38b00cd 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c @@ -32,6 +32,7 @@ #include "intel_encoder.h" #include "intel_hotplug.h" #include "intel_panel.h" +#include "intel_quirks.h" =20 #define LT_MSG_PREFIX "[CONNECTOR:%d:%s][ENCODER:%d:%s][%s] " #define LT_MSG_ARGS(_intel_dp, _dp_phy) (_intel_dp)->attached_connector->b= ase.base.id, \ @@ -1622,7 +1623,8 @@ void intel_dp_start_link_train(struct intel_atomic_st= ate *state, lt_dbg(intel_dp, DP_PHY_DPRX, "Forcing link training failure\n"); } else if (passed) { intel_dp->link.seq_train_failures =3D 0; - intel_encoder_link_check_queue_work(encoder, 2000); + if (!intel_has_quirk(display, QUIRK_SKIP_LINK_CHECK)) + intel_encoder_link_check_queue_work(encoder, 2000); return; } =20 diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/= i915/display/intel_quirks.c index 28f497ae785bb..d472a5f21f8b9 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.c +++ b/drivers/gpu/drm/i915/display/intel_quirks.c @@ -78,6 +78,12 @@ static void quirk_fw_sync_len(struct intel_dp *intel_dp) drm_info(display->drm, "Applying Fast Wake sync pulse count quirk\n"); } =20 +static void quirk_skip_link_check(struct intel_display *display) +{ + intel_set_quirk(display, QUIRK_SKIP_LINK_CHECK); + drm_info(display->drm, "Applying skip link check quirk\n"); +} + struct intel_quirk { int device; int subsystem_vendor; @@ -229,6 +235,8 @@ static struct intel_quirk intel_quirks[] =3D { { 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time }, /* HP Notebook - 14-r206nv */ { 0x0f31, 0x103c, 0x220f, quirk_invert_brightness }, + /* Advantech UTC124G3PWWW0E-ES */ + {0x5a85, 0x8086, 0x2212, quirk_skip_link_check}, }; =20 static const struct intel_dpcd_quirk intel_dpcd_quirks[] =3D { diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/= i915/display/intel_quirks.h index cafdebda75354..9e8f2816a4fba 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.h +++ b/drivers/gpu/drm/i915/display/intel_quirks.h @@ -20,6 +20,7 @@ enum intel_quirk_id { QUIRK_LVDS_SSC_DISABLE, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK, QUIRK_FW_SYNC_LEN, + QUIRK_SKIP_LINK_CHECK, }; =20 void intel_init_quirks(struct intel_display *display); --=20 2.48.0.rc2.279.g1de40edade-goog