From nobody Wed Jun 17 02:53:05 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (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 A28F735C1B5 for ; Wed, 22 Apr 2026 07:33:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776843240; cv=none; b=cEsc/HxwA+QYiVVMctGj/vVA5XeOwjiaoxxQ3kIvEiJa6JXcezkEzsR7cN5raXYjng/LOquTVQbJaHr2oFbziWjdIPM90dm48FhmM+GxVmWImXDNVddLoGe1hjxqZeAZC3KBV0x3eJrg7mke2/mXe18ypQUVvmVOE0qaSQ7YjW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776843240; c=relaxed/simple; bh=dH5z6kq/tMONGee9cQFQnD5j+4Bo7+FziYBbJTc5350=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=R06mar4vtCvTThf4NVFXkcR8E1kCnMvxywlhS5pbqLH+lEcupg9h9bwQF5pH0v3XpS8PJfqrNxPwDuffoq7AgH/l0nHqEyAbMtXjNLbLT4ITO3/lTmLAkrnF3XjZ9YHr1JBp5AYgp9srmlTaasYLhFwGxS3ZVS8NqoY8q4bW980= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=D8zd0JSp; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=MDByX061; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=D8zd0JSp; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=MDByX061; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="D8zd0JSp"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="MDByX061"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="D8zd0JSp"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="MDByX061" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 4C4955BCF8; Wed, 22 Apr 2026 07:33:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1776843231; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=Z2i92acCwV7lRHLkbzIbG7MkBYcVJ2vf9FUEdie5ERE=; b=D8zd0JSp0MKRgKRDGe7EYaBkM7xJwN/s/ersLmefQkztJFQ/GJ1tWEhqcRs2/4ajRCHZ/+ oNI9OxGV/eMgCjYBhp2i09KMbHoEwDMyCsB7Els13vxkQ07z2uk73+FlqxSv0Qm32yqZlG DlEv9A8HfzL83tS0Vhs62D3+H9bSlHs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1776843231; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=Z2i92acCwV7lRHLkbzIbG7MkBYcVJ2vf9FUEdie5ERE=; b=MDByX061HW/b2Kz+bo4WcTku3HMq+kmr+bn+Q1x91IOSdETkAn84+QoTjbsRbbrlAFprWY 13LInDCyMKenh/Ag== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1776843231; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=Z2i92acCwV7lRHLkbzIbG7MkBYcVJ2vf9FUEdie5ERE=; b=D8zd0JSp0MKRgKRDGe7EYaBkM7xJwN/s/ersLmefQkztJFQ/GJ1tWEhqcRs2/4ajRCHZ/+ oNI9OxGV/eMgCjYBhp2i09KMbHoEwDMyCsB7Els13vxkQ07z2uk73+FlqxSv0Qm32yqZlG DlEv9A8HfzL83tS0Vhs62D3+H9bSlHs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1776843231; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=Z2i92acCwV7lRHLkbzIbG7MkBYcVJ2vf9FUEdie5ERE=; b=MDByX061HW/b2Kz+bo4WcTku3HMq+kmr+bn+Q1x91IOSdETkAn84+QoTjbsRbbrlAFprWY 13LInDCyMKenh/Ag== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id B62ED593AF; Wed, 22 Apr 2026 07:33:50 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 6uwpKt556GmPRQAAD6G6ig (envelope-from ); Wed, 22 Apr 2026 07:33:50 +0000 From: Patrik Jakobsson To: dri-devel@lists.freedesktop.org Cc: Jani Nikula , Rodrigo Vivi , Joonas Lahtinen , Tvrtko Ursulin , David Airlie , Simona Vetter , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Imre Deak , intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/i915/display: Add quirk for interlane align bit on CH7511 Date: Wed, 22 Apr 2026 09:33:38 +0200 Message-ID: <20260422073339.27947-1-pjakobsson@suse.de> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.80 X-Spam-Level: X-Spamd-Result: default: False [-2.80 / 50.00]; BAYES_HAM(-3.00)[100.00%]; NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FREEMAIL_CC(0.00)[linux.intel.com,intel.com,ursulin.net,gmail.com,ffwll.ch,lists.freedesktop.org,vger.kernel.org]; RCPT_COUNT_TWELVE(0.00)[12]; MIME_TRACE(0.00)[0:+]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:mid,suse.de:email,imap1.dmz-prg2.suse.org:helo]; FUZZY_RATELIMITED(0.00)[rspamd.com]; FROM_HAS_DN(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; TO_DN_SOME(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spam-Flag: NO Content-Type: text/plain; charset="utf-8" When disabling pattern training after successful link training the CH7511 bridge incorrectly clears the INTERLANE_ALIGN_DONE bit. This is interpreted as link failure when rechecking the link status and triggers an endless loop of retraining sequences. This patch adds a quirk to pretend the bit is still set and no retraining is needed. Fixes: 3b3be899fc81 ("drm/i915/dp: Recheck link state after modeset") Signed-off-by: Patrik Jakobsson --- drivers/gpu/drm/i915/display/intel_dp.c | 9 +++++++++ drivers/gpu/drm/i915/display/intel_quirks.c | 17 +++++++++++++++++ drivers/gpu/drm/i915/display/intel_quirks.h | 1 + 3 files changed, 27 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915= /display/intel_dp.c index 4955bd8b11d7..27aedb18f761 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -5715,6 +5715,15 @@ intel_dp_needs_link_retrain(struct intel_dp *intel_d= p) if (intel_dp->link.seq_train_failures) return true; =20 + /* + * The CH7511 bridge incorrectly clears the INTERLANE_ALIGN_DONE bit + * when disabling training pattern. + */ + if (intel_has_dpcd_quirk(intel_dp, QUIRK_IGNORE_INTERLANE_ALIGN_BIT)) { + link_status[DP_LANE_ALIGN_STATUS_UPDATED - DP_LANE0_1_STATUS] |=3D + DP_INTERLANE_ALIGN_DONE; + } + /* Retrain if link not ok */ return !intel_dp_link_ok(intel_dp, link_status) && !intel_psr_link_ok(intel_dp); diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/= i915/display/intel_quirks.c index 883f297d4b83..1c305e861c86 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.c +++ b/drivers/gpu/drm/i915/display/intel_quirks.c @@ -94,6 +94,14 @@ static void quirk_disable_edp_panel_replay(struct intel_= dp *intel_dp) drm_info(display->drm, "Applying disable Panel Replay quirk\n"); } =20 +static void quirk_ignore_interlane_align_bit(struct intel_dp *intel_dp) +{ + struct intel_display *display =3D to_intel_display(intel_dp); + + intel_set_dpcd_quirk(intel_dp, QUIRK_IGNORE_INTERLANE_ALIGN_BIT); + drm_info(display->drm, "Applying ignore interlane align bit quirk\n"); +} + struct intel_quirk { int device; int subsystem_vendor; @@ -269,6 +277,15 @@ static const struct intel_dpcd_quirk intel_dpcd_quirks= [] =3D { .sink_oui =3D SINK_OUI(0x00, 0x22, 0xb9), .hook =3D quirk_disable_edp_panel_replay, }, + /* Nodka TPC6000-C152 */ + { + .device =3D 0x0f31, + .subsystem_vendor =3D 0x8086, + .subsystem_device =3D 0x0f31, + .sink_oui =3D SINK_OUI(0x2b, 0x02, 0xf0), + .sink_device_id =3D SINK_DEVICE_ID('C', 'H', '7', '5', '1', '1'), + .hook =3D quirk_ignore_interlane_align_bit, + }, }; =20 void intel_init_quirks(struct intel_display *display) diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/= i915/display/intel_quirks.h index 83214eb94b0c..424462fd4a83 100644 --- a/drivers/gpu/drm/i915/display/intel_quirks.h +++ b/drivers/gpu/drm/i915/display/intel_quirks.h @@ -22,6 +22,7 @@ enum intel_quirk_id { QUIRK_FW_SYNC_LEN, QUIRK_EDP_LIMIT_RATE_HBR2, QUIRK_DISABLE_EDP_PANEL_REPLAY, + QUIRK_IGNORE_INTERLANE_ALIGN_BIT, }; =20 void intel_init_quirks(struct intel_display *display); --=20 2.53.0