From nobody Sun Dec 14 13:53:06 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 4FBF4201270 for ; Mon, 3 Feb 2025 10:58:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738580305; cv=none; b=rOgFtdIcFrXkhoZoCVFD0cGq2BEk6lRRrbrMvn+bc4KnE8aFSxN4VuLYQpSXAfYu6PWRpfLNKiIU7jA32ucktvRrT07xqauC3K/8GGr3GNMj1XquPlLnDAqP/+UC5Q0u9YhiacralCls5vlbOXOqgcmwNmVk1yjgoEHLzMgu8wU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738580305; c=relaxed/simple; bh=GWDPLjsD/LaP+fD+1LfYD/7l93rcVcvESuGQSIuupYA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SuTLPNwiUbNsONTewhxrc1XyCj44dV55hLgoPqBLWpXGigpz3b4oHKWQlQKnhLR4U3CfBrCD4QONEFr6ekpmoB7RojDDvd6EfPO+3kqnTAEAWWu1cBUYy1Lw63C2nBnXIrskJvlFTVVQWcKpunoE1GfNLUJ0AKI+xkIanacNvNU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=haz9mpsj; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="haz9mpsj" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4361f796586so48871155e9.3 for ; Mon, 03 Feb 2025 02:58:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738580301; x=1739185101; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=S2PDrSggs/qvWJ0wmbl57SFwliqss9oSkkJg/zY+uKY=; b=haz9mpsjY6zn2KC+36gXFNwgVw7L2jQ5LfcKMxK1YM2kfOYdQM1mivK6vTsfxUSPZ5 DHwYpDySNsj8VZYakSFK0FM0IsgZRGR1jMUy6CtH2dxgdr5IFSyNfViP0D0oU0L0SXHw krd5Rq1ndOPCh3UlK1BlexgWEK32mIfAsmLXdpqFV7+jIn8lvswwGJh3I1dVnK0lxzyI 4K1Ofao2fbDXQr+B4RbhJ76mX8NmwF122663zl5A6t7nZB5kP1G4XcZGHbC4YIDOPjv/ FSgMKvrG0FY1C+CKqitJsVRbfaDeETjnXv4dkeK/FYqa6+BPMrW9kcJwpKRLHniGDplV pm0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738580301; x=1739185101; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S2PDrSggs/qvWJ0wmbl57SFwliqss9oSkkJg/zY+uKY=; b=Az9tAdn6MphUWHORqEy312FITGcanLysXpKTrODILUSBiHjJ6UgOguCaCbzZCPisCH z4j5oe6JBXzwL/1WVrU0AIr46qn8I921K2Ml2HDUqUSumdnECRhsOQvlFu2yFbW5Mg6K 1ZUY56hOyaO0aNwAqH2FPJ9MLI4D+cI3O4pRdYec5Xbk/VutDEfGzA9vJvo0uvh4O9Zg w2Drr0KKwT7kjotnytc+v+Z0m1RC7j1rlbkmPg8O7Gn1SdTqDLRZe2vX+dJcCf35fCbr 8IpTMiX+7685n2pkdcqBpAWqpjMTiJqn0jtGChRH9f+Am7zbCHUv2sE+n0QzT1Cq12lm 9JGQ== X-Forwarded-Encrypted: i=1; AJvYcCX9u3btkGdDVJ2KPvppbiKXzfr2HwiaQuaNRsflc2+LmhQRcz/l/l08xyvq4RW2lLSTBG7c84UzhsHzUns=@vger.kernel.org X-Gm-Message-State: AOJu0YzAQ8TJR+jGraSkjd/XtBkL81pe9MtPx10yWYfOazYNLWnbP/Mr H4nSOTyHlNk1swbdU1QDMhDaSCpzRR9a/V0sM7IWQ6ExWcKHRUOYhgBf4hw7pvA= X-Gm-Gg: ASbGncvAevZ45hgms7U8SdwOzkGPJFY5UxRd/FT6AECcRK7ADvqhPWZI6J/TAoBatp0 XWHkA0iTliEZ8EsF1GPxyxiU+X+AdPv48n2O44V28ZRV6ffYf9SoSr4HsMGk31VPJ1PuVf4PWnO fUa5+rwCOj/Yh0B/pzGOE0KJHP7LvVI4UjX2OlhhvuTbQYc+ZmhKr1OyOMcPNLYOH8YK4/KlRet aScaFnoNxpc1mTsWLyIVrhIZrHeccwNxMKrvUWPysWGjFUjWuEhpwdo9ynDPH7iB8ABYTwHxD8v HBl4jYuTTOX5nTo= X-Google-Smtp-Source: AGHT+IGN36phU2HT7tCupyKJD12EwPvmQAUkoCX3ifHXulTtaxt/EYCFNMaPrYCZ0Vr2bnElK/dpDg== X-Received: by 2002:a05:600c:4753:b0:434:f817:4492 with SMTP id 5b1f17b1804b1-438dc435842mr215585115e9.31.1738580301516; Mon, 03 Feb 2025 02:58:21 -0800 (PST) Received: from [127.0.1.1] ([86.123.96.125]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c13a0efsm12555083f8f.60.2025.02.03.02.58.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 02:58:21 -0800 (PST) From: Abel Vesa Date: Mon, 03 Feb 2025 12:57:56 +0200 Subject: [PATCH v5 1/4] drm/dp: Add helper to set LTTPRs in transparent mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-1-c865d0e56d6e@linaro.org> References: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-0-c865d0e56d6e@linaro.org> In-Reply-To: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-0-c865d0e56d6e@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Karol Herbst , Lyude Paul , Danilo Krummrich , Jani Nikula , Rodrigo Vivi , Joonas Lahtinen , Tvrtko Ursulin , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten Cc: Bjorn Andersson , Konrad Dybcio , Johan Hovold , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Abel Vesa , Johan Hovold X-Mailer: b4 0.15-dev-dedf8 X-Developer-Signature: v=1; a=openpgp-sha256; l=4430; i=abel.vesa@linaro.org; h=from:subject:message-id; bh=GWDPLjsD/LaP+fD+1LfYD/7l93rcVcvESuGQSIuupYA=; b=owEBbQKS/ZANAwAKARtfRMkAlRVWAcsmYgBnoKFE89QOXDiWSJro65eII8Rv3UxY8Qc4UyUUI 531ArtGoZaJAjMEAAEKAB0WIQRO8+4RTnqPKsqn0bgbX0TJAJUVVgUCZ6ChRAAKCRAbX0TJAJUV VgtjD/43YCJn+kR3wQvW34kEv7ddETk/bpBbvc+gF6M7mOlHTfHynaAffq939L1AgY2sKs0Ehem W3Ql9tbPbR5GPSxwLs+TK6wRt6Gqia8dwDdS+GRPBl8JtMFEI3Hf1Rzs9akUdToFV5BFIaqm1a+ zZgwAdSycOWeyoVwotoojTFVBH5l9iHVl7xJkcCIMYP+LRke8XLepAW23jcYrjpo0Af3uk2UxZv PNigdxWHhIMyubZI1QzE8RoaJFLVEvwiIymaaICaU51PXN4p+651Jgyz5v2Wd/zWAelnH89HFV3 jhVfTpHgVEx/2ELpV2HjnWApWKO2y3UxalTfbG4z4twC6sR8bj4zoR3e6A4H+tp3ZM/IL++quo6 toJJwamCFUy0XUFSQm7HY4z1jVrWNvtns4yBm6c+iAXAIIKtoDfgI/XWCrEo514Qyeoba45IovW VfyWGZpYEEIKw1TOCGMMdEqUCikLbg9UtID5UCtqGU4oQelo06HWIJCYrvH3cblppwNc5gRacyb v2MIbm8qQ4wPv8iltN0OK+XRbanbtcC9N5PbB5x+eX3pswEUz51It3L3cSRY1HGLKuB3w0vDchB Kt6XEsCoDVip8OJAOhfAc79z2yz0Xvjz1chZCqg/vNqm06bjUOuQWUYVQRlEh+hX7WVf/Grria5 86nPpHdX0g3xNrQ== X-Developer-Key: i=abel.vesa@linaro.org; a=openpgp; fpr=6AFF162D57F4223A8770EF5AF7BF214136F41FAE According to the DisplayPort standard, LTTPRs have two operating modes: - non-transparent - it replies to DPCD LTTPR field specific AUX requests, while passes through all other AUX requests - transparent - it passes through all AUX requests. Switching between this two modes is done by the DPTX by issuing an AUX write to the DPCD PHY_REPEATER_MODE register. Add a generic helper that allows switching between these modes. Also add a generic wrapper for the helper that handles the explicit disabling of non-transparent mode and its disable->enable sequence mentioned in the DP Standard v2.0 section 3.6.6.1. Do this in order to move this handling out of the vendor specific driver implementation into the generic framework. Tested-by: Johan Hovold Reviewed-by: Dmitry Baryshkov Reviewed-by: Johan Hovold Reviewed-by: Abhinav Kumar Signed-off-by: Abel Vesa Acked-by: Jani Nikula Acked-by: Lyude Paul --- drivers/gpu/drm/display/drm_dp_helper.c | 61 +++++++++++++++++++++++++++++= ++++ include/drm/display/drm_dp_helper.h | 2 ++ 2 files changed, 63 insertions(+) diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/disp= lay/drm_dp_helper.c index da3c8521a7fa7d3c9761377363cdd4b44ab1106e..ea3ad0fe51c4ce13961f2918cd6= 51ab2d23b4edd 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -2817,6 +2817,67 @@ int drm_dp_lttpr_max_link_rate(const u8 caps[DP_LTTP= R_COMMON_CAP_SIZE]) } EXPORT_SYMBOL(drm_dp_lttpr_max_link_rate); =20 +/** + * drm_dp_lttpr_set_transparent_mode() - set the LTTPR in transparent mode + * @aux: DisplayPort AUX channel + * @enable: Enable or disable transparent mode + * + * Returns: 0 on success or a negative error code on failure. + */ +int drm_dp_lttpr_set_transparent_mode(struct drm_dp_aux *aux, bool enable) +{ + u8 val =3D enable ? DP_PHY_REPEATER_MODE_TRANSPARENT : + DP_PHY_REPEATER_MODE_NON_TRANSPARENT; + int ret =3D drm_dp_dpcd_writeb(aux, DP_PHY_REPEATER_MODE, val); + + if (ret < 0) + return ret; + + return (ret =3D=3D 1) ? 0 : -EIO; +} +EXPORT_SYMBOL(drm_dp_lttpr_set_transparent_mode); + +/** + * drm_dp_lttpr_init() - init LTTPR transparency mode according to DP stan= dard + * @aux: DisplayPort AUX channel + * @lttpr_count: Number of LTTPRs. Between 0 and 8, according to DP standa= rd. + * Negative error code for any non-valid number. + * See drm_dp_lttpr_count(). + * + * Returns: 0 on success or a negative error code on failure. + */ +int drm_dp_lttpr_init(struct drm_dp_aux *aux, int lttpr_count) +{ + int ret; + + if (!lttpr_count) + return 0; + + /* + * See DP Standard v2.0 3.6.6.1 about the explicit disabling of + * non-transparent mode and the disable->enable non-transparent mode + * sequence. + */ + ret =3D drm_dp_lttpr_set_transparent_mode(aux, true); + if (ret) + return ret; + + if (lttpr_count < 0) + return -ENODEV; + + if (drm_dp_lttpr_set_transparent_mode(aux, false)) { + /* + * Roll-back to transparent mode if setting non-transparent + * mode has failed + */ + drm_dp_lttpr_set_transparent_mode(aux, true); + return -EINVAL; + } + + return 0; +} +EXPORT_SYMBOL(drm_dp_lttpr_init); + /** * drm_dp_lttpr_max_lane_count - get the maximum lane count supported by a= ll LTTPRs * @caps: LTTPR common capabilities diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_= dp_helper.h index 8f4054a560396a43750570a8c2e95624039ab8ad..3311df3b58255cf0620391d0948= ccf6b569a8a34 100644 --- a/include/drm/display/drm_dp_helper.h +++ b/include/drm/display/drm_dp_helper.h @@ -630,6 +630,8 @@ int drm_dp_read_lttpr_phy_caps(struct drm_dp_aux *aux, u8 caps[DP_LTTPR_PHY_CAP_SIZE]); int drm_dp_lttpr_count(const u8 cap[DP_LTTPR_COMMON_CAP_SIZE]); int drm_dp_lttpr_max_link_rate(const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]); +int drm_dp_lttpr_set_transparent_mode(struct drm_dp_aux *aux, bool enable); +int drm_dp_lttpr_init(struct drm_dp_aux *aux, int lttpr_count); int drm_dp_lttpr_max_lane_count(const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]); bool drm_dp_lttpr_voltage_swing_level_3_supported(const u8 caps[DP_LTTPR_P= HY_CAP_SIZE]); bool drm_dp_lttpr_pre_emphasis_level_3_supported(const u8 caps[DP_LTTPR_PH= Y_CAP_SIZE]); --=20 2.34.1 From nobody Sun Dec 14 13:53:06 2025 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 36FBB202C2F for ; Mon, 3 Feb 2025 10:58:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738580306; cv=none; b=VPau596y/fZnWUHOigsU58xHg1CGEpUCk0hgIexhDXsAx6naoFKWoTevVFbo2AXNrI/rPcTbvjgIjhHhAxbqL/WXm83F9yugF1JUIbXxgaf5QMaM49+pJsw66A/z08TTzj0+a0VdTaYy0M/y8sw61FjwuLn2vnE/QdboOpuPXPM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738580306; c=relaxed/simple; bh=zSpYhtCfdoGV8lx5sZ6QJCKOEoZaxgqNtvMuGie1uZU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MuXmE8/Ws39GmrKHR4MNMaQBPKwP8XJL0QYHud9Wek1SqcC65xIqYM0Nekl9phetaHKNxVjelsOWoGpOqWWIn31vpg8I34gc73ogmYe+XzKOLBrwX4ZVizKUf5KDjl2VKAhnhTkEwG8p8SNFyUAATZrd8IM0C+dNMOlMLPciYyM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=oFn0AqyD; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="oFn0AqyD" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-436a03197b2so28627465e9.2 for ; Mon, 03 Feb 2025 02:58:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738580303; x=1739185103; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=8ja7AsPHVhh/ztffyEqltS3S3NOI8MWwC75cFS3zUfQ=; b=oFn0AqyDQKlemBaVDjTX4pJs5/VGamluSVuQgt32LxS1ovbXgxDSu16gKXM7fN/vui ABtZE4yAe9pY9ZqAuhj60FnKwqc42AsgJrB2ZqQwWxpOzN/HMmi8OaeAJT0BaU5wbLsS IPc6mR5ih+3xvMZwyykO7BFxfavkr2B3ZfZ/fpKCEOHZqFbmpokwF9iMtRSS38n+oqRT KaO6nZ0P7k1IR9gj7Pj+taMmYtO6SA3ERx6P07jEJmdtjjLPOIaCCu/JlmoWTViixt6c Iz0erCaBFqE4ezY59YVSXSMzQTGReO3PtSBMKO61gmcniFWlQJsdARzX/kXsmMC1y7WE hN2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738580303; x=1739185103; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8ja7AsPHVhh/ztffyEqltS3S3NOI8MWwC75cFS3zUfQ=; b=hEAiL8biA07XBIkDWH0vM0SGo1qrzu0EeU7WHqjiX2UaIlEvR6xfTPoM1A4TsR8h9u O/VskDqnjVrlBliPegtXXM/wn2WNqb6HKTf5+MZRYnKmoXVrVfX0dIzsfHHXoEvhZqIt qQHzrXwmKjneL8Fjd2mdjCrHimv4H4jEJuBGa3fgKk7L+syXYm++rQyY9qTkEuY7gAlL c4SM4B7gSYvxwtVi7gBw131D0B7x4IX4022/H5n1/pXhXVV2/sCePwNWW8EmM9e62aT1 4z9maV4ewthhrLk3Mnz7bG81hy/v5UD1ag0r2IHdhX6T4DVO2XqfI5AsHCHBJgv/aRj7 axqA== X-Forwarded-Encrypted: i=1; AJvYcCWV05QZr2L5xSNr5WM/Pxn14G+mgrynjWOmV3j5XPLCZ8xsjzqMdt+Gi9sWumQXBGherWd9owOAWbyYpf4=@vger.kernel.org X-Gm-Message-State: AOJu0YywkBDzB+HSshyjGySDlNa8/m7eU1M6mTId+rtEXKkYTy+DvXdR Ki6p0jjLnkX29dpgt4nZUyiY5wqda5V1dOIcytg1j6+VUEo6+jNeySdo2nLoCAg= X-Gm-Gg: ASbGncuGGreObuoNW5Atj8PPrRWQbzdUy5DBKWpVOK/tocUWQcHW/0in5mBI3zLgu70 MMJ/NWwdyRBUhHdCaL97RoVimMAxFCStiZImYe4XghFKuwWzztVTI9js8dNdYvxrAOnzEgoXhyo 6VoCXyYl4NOhNsXEIwYC+xYzjk1fb5zKY8SUXLxP6vABCQceItx/F1+LLwtu7fy2SkHfPzK2bBS NXu8IQBaQwr7gX40mjbY7d18ixgZi7bzH3asPkgOa9qjtpciYQq+yLUbQDmkeJuqiw+WGzq3kJJ 1rQqgbAclvL0ZtY= X-Google-Smtp-Source: AGHT+IFthNBbLjS02kgsZVYwGukRDHyL+VpzJLps1CtcKLr/74/ZMFJ692muUaKO63TfDrMyjpuBEw== X-Received: by 2002:a05:600c:a44:b0:436:488f:50a with SMTP id 5b1f17b1804b1-438dc3c877cmr187531275e9.17.1738580303507; Mon, 03 Feb 2025 02:58:23 -0800 (PST) Received: from [127.0.1.1] ([86.123.96.125]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c13a0efsm12555083f8f.60.2025.02.03.02.58.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 02:58:23 -0800 (PST) From: Abel Vesa Date: Mon, 03 Feb 2025 12:57:57 +0200 Subject: [PATCH v5 2/4] drm/nouveau/dp: Use the generic helper to control LTTPR transparent mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-2-c865d0e56d6e@linaro.org> References: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-0-c865d0e56d6e@linaro.org> In-Reply-To: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-0-c865d0e56d6e@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Karol Herbst , Lyude Paul , Danilo Krummrich , Jani Nikula , Rodrigo Vivi , Joonas Lahtinen , Tvrtko Ursulin , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten Cc: Bjorn Andersson , Konrad Dybcio , Johan Hovold , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Abel Vesa X-Mailer: b4 0.15-dev-dedf8 X-Developer-Signature: v=1; a=openpgp-sha256; l=1634; i=abel.vesa@linaro.org; h=from:subject:message-id; bh=zSpYhtCfdoGV8lx5sZ6QJCKOEoZaxgqNtvMuGie1uZU=; b=owEBbQKS/ZANAwAKARtfRMkAlRVWAcsmYgBnoKFFwp0Q3Pa0vilB+WV1NstXg3L+NhCg1dZF4 9nljGvt4aaJAjMEAAEKAB0WIQRO8+4RTnqPKsqn0bgbX0TJAJUVVgUCZ6ChRQAKCRAbX0TJAJUV VrpLD/9KZyQu8jIhJYXTVneqLeoUWkoZlTZO4UcXbLROqhAXzJHfoudtKqN6Uo7EBphzOjbqXkw L8V+j/CO9idN63ZqcHf5mQVmuMbjNWkvIeCsMq42M6ZZUmACXguioar1CbFgHQ8E5OB3ianHEyo ZEHBtewoLDvvkXGlx3Dhb/8MfMTiYeF5sCXozl5qdc2wrPhXO76+U+tpsexdEQxTUK/9iVE89x8 sQlehJqfxHeZsz1PaavyvnQPc+KVvbdFdkwFfGWPYbSFn/TWOSkjIF64HS8q0tjcDLBDaXEr4yJ 3hG+Wvz8DC9sXLujBQLUZXZIhqAdcPWUfiBvW5BZUB6B6Awfu0UwoRjExTQfKwqCOYPWJIXMRWq XbMkXFpQno5vlWWimF249S1Y9vIUWhyJro/PosAXnBrUzNzjS79NpAqD0GuP+vmBod/t5Ls/p10 9M+KuiUzWArjDa4v0ZnRNhI4u+OUeTTrlDC9KGoKvArCLJwhmhkPaFQ5Kh0Za84DPk+SIcH3t8A u6SJ5QH/UTUb0MV3fg93+zQPTV4ZrYguUN4qyIgiulEbIPa1hYwBNs+96lfizy3+QAUO58clj/D PjEX7lpaZSm1/2PAINaciL/swbWOOjlUQMlUEe7fDoN+tTtc4cdp5Gcig7ewkuC47gVY46TdH1d raWn+ZZSSCri46A== X-Developer-Key: i=abel.vesa@linaro.org; a=openpgp; fpr=6AFF162D57F4223A8770EF5AF7BF214136F41FAE LTTPRs operating modes are defined by the DisplayPort standard and the generic framework now provides a helper to switch between them, which is handling the explicit disabling of non-transparent mode and its disable->enable sequence mentioned in the DP Standard v2.0 section 3.6.6.1. So use the new drm generic helper instead as it makes the code a bit cleaner. Reviewed-by: Lyude Paul Signed-off-by: Abel Vesa Acked-by: Jani Nikula Acked-by: Lyude Paul --- drivers/gpu/drm/nouveau/nouveau_dp.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dp.c b/drivers/gpu/drm/nouveau= /nouveau_dp.c index bcda0105160f1450df855281e0d932606a5095dd..55691ec44abaa53c84e73358e33= df1949bb1e35c 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dp.c +++ b/drivers/gpu/drm/nouveau/nouveau_dp.c @@ -79,21 +79,8 @@ nouveau_dp_probe_dpcd(struct nouveau_connector *nv_conne= ctor, !drm_dp_read_lttpr_common_caps(aux, dpcd, outp->dp.lttpr.caps)) { int nr =3D drm_dp_lttpr_count(outp->dp.lttpr.caps); =20 - if (nr) { - drm_dp_dpcd_writeb(aux, DP_PHY_REPEATER_MODE, - DP_PHY_REPEATER_MODE_TRANSPARENT); - - if (nr > 0) { - ret =3D drm_dp_dpcd_writeb(aux, DP_PHY_REPEATER_MODE, - DP_PHY_REPEATER_MODE_NON_TRANSPARENT); - if (ret !=3D 1) { - drm_dp_dpcd_writeb(aux, DP_PHY_REPEATER_MODE, - DP_PHY_REPEATER_MODE_TRANSPARENT); - } else { - outp->dp.lttpr.nr =3D nr; - } - } - } + if (!drm_dp_lttpr_init(aux, nr)) + outp->dp.lttpr.nr =3D nr; } =20 ret =3D drm_dp_read_dpcd_caps(aux, dpcd); --=20 2.34.1 From nobody Sun Dec 14 13:53:06 2025 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 56AF0202F70 for ; Mon, 3 Feb 2025 10:58:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738580309; cv=none; b=tlwwuf/SkofCHlrq9JaR1UO8/Oqd5ftKw6286rMry9Yt4JNbpSE5n8+s6oQBtaq8ldiEVB6gFZQ/Gq1CdhWLIJ3t5xJyTBzl5kYZzszpJajACzcowCZmyBK0hMRTg0DdXTQU3VX5tzDjtcyTW2+wirug+lVGmwV6/ZTsIVRViLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738580309; c=relaxed/simple; bh=i0gLL9cKFwnwAUFAvwIYOq+eSp8wWGGPgQgjnTN3PKE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fAfMeYnHGJoHtQGBMatt9/7nUb+RtK6pfmx4n02J3l4pmF5EqSeAJQswEdjETJJmLkPynphpiF/6hNe1xLC/LX+zWhZf/sjZYGJpcBr6p40aa9z2lYh6+Z+NcMXJajsDpAmKQEZorHH3X9lZjQMvoWR4pf+wvTRgukmKYUCDiXU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=KBLvF040; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="KBLvF040" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-38a34e8410bso2076421f8f.2 for ; Mon, 03 Feb 2025 02:58:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738580305; x=1739185105; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9rGR892CsW48bbjquxFjsrZJbQNkPKwTMgb7XwAF2pQ=; b=KBLvF040pM9184uMDMM/fMU8IvS4ZAuGbecuZ3Nh8AIosPsJQIwy6qVxUz10DdFWje WDyw9cgl5jNWdtmEpTk8T0cWP1rKMhfoQ+egB/kNf81I535ttJikq/gcbc4zam+fni8V +QiLYrxD5cs0CPvFjuuLq8IEI52bFQUqGDEhb8QrYwZFiJ0rSVaaoly8aHb/fzZq1CZG rgDY2scNnkVwIgNpesQJeaAG/TkrIJJ06gJydLVuhZPQvmOdMmXMCcGPDMdfkWr+cQCC zhX47MHXu+yhmVwhu1/d6nM+/EOZ5/nH4grnR6FXdxiw9RBaZ4X60XdrSOD+nI4xmqtL GEAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738580305; x=1739185105; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9rGR892CsW48bbjquxFjsrZJbQNkPKwTMgb7XwAF2pQ=; b=FlEGXNUHX940qK7wCq7W0jei6kbkK9CPVYT6eWeAQzU67yi874263/BfAuyc4iWnwR mA1mQATRWcIIEXyfy58wH9xxSdC8ZRiIYb69P6//s/mYFH2rzNx6pSxANS8UemsGDyDf J9ZvmrDFUcLViVXrzbV/Inbkw3psVLx4mwfiOY/SkSoQC7ISk7fXNxDFT84X1dI8lNYV KXeGVBzeHhDduP91qypil4gCmKN8dTjesATeFNoV+z9QsNsKqyUkUBJr8WAVyFjpWjxl +ordQmsIbyCLQF3gXi4Dom40s+kIMQISvL2Ceqva+zIso+yVFQJ4u0F2rNRdCPyovxc2 pU4w== X-Forwarded-Encrypted: i=1; AJvYcCU5dvnycusbiaK4Zd59G9ePSMyEPT4FxK5Bp3PiE762YPFbQt/ZlYWyjSiOr+ooB6wE7wisf3RO0pf6kzw=@vger.kernel.org X-Gm-Message-State: AOJu0YwoA2wqwt0x0R6ujbJx5uzlY8Zf2k1ZfQK73i97DeIxo0p0YBLK J7RufFi4LlHBuA9+SnO1EPcyHzv3Fo6M1+9RDXXnuOMXUl/J/emwTleuRGG2uQ8= X-Gm-Gg: ASbGncsqDZpd6OQLqlS1wyXO8p/g6CsVq8uxJb3yDwdJOqtR8xm+jFiPPJ0V8rH1ccL MD8T8rOApDeyeMf0WRigLo9O9lUl3Tz5akCPbWt5Jno//tIrDu2tsY1iHFEGQAEat/jahinPbru qi0+0Xt3WRd6H764NIcLSEo/xRlgGN+/UvnD15t3B6AnD4YuM27PuPFdASYinOeq+B1QzIPpF+Z /oqBHTMidhTPbhz/+SUGKHwENxvrEySxWZJibyXIiGBFoaeyLO1wgyF327J1r5xd1cazmzZ65Dk Unbgq6GmsN2AgfU= X-Google-Smtp-Source: AGHT+IFSasDqEOzfX51Cb+efM0QKQ3elXk+hBHYXZYdwzgdqIdkhz/Op8fasjqvlbzslKL+ssHNviA== X-Received: by 2002:a5d:6d0c:0:b0:38a:6929:ff9e with SMTP id ffacd0b85a97d-38c51946af3mr15013169f8f.7.1738580305547; Mon, 03 Feb 2025 02:58:25 -0800 (PST) Received: from [127.0.1.1] ([86.123.96.125]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c13a0efsm12555083f8f.60.2025.02.03.02.58.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 02:58:25 -0800 (PST) From: Abel Vesa Date: Mon, 03 Feb 2025 12:57:58 +0200 Subject: [PATCH v5 3/4] drm/i915/dp: Use the generic helper to control LTTPR transparent mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-3-c865d0e56d6e@linaro.org> References: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-0-c865d0e56d6e@linaro.org> In-Reply-To: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-0-c865d0e56d6e@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Karol Herbst , Lyude Paul , Danilo Krummrich , Jani Nikula , Rodrigo Vivi , Joonas Lahtinen , Tvrtko Ursulin , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten Cc: Bjorn Andersson , Konrad Dybcio , Johan Hovold , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Abel Vesa , Imre Deak X-Mailer: b4 0.15-dev-dedf8 X-Developer-Signature: v=1; a=openpgp-sha256; l=3093; i=abel.vesa@linaro.org; h=from:subject:message-id; bh=i0gLL9cKFwnwAUFAvwIYOq+eSp8wWGGPgQgjnTN3PKE=; b=owEBbQKS/ZANAwAKARtfRMkAlRVWAcsmYgBnoKFHEE1x6guj2+EFNZpgvNKSLMm0sxnSo8XDB ultsrbwiS6JAjMEAAEKAB0WIQRO8+4RTnqPKsqn0bgbX0TJAJUVVgUCZ6ChRwAKCRAbX0TJAJUV VrQMD/9ZbpIZU+o65MtFjC7Lzb0Aw68FMO4/mI5BTwjbk/4A9V72TEg3Npiq8ArwZ1e9Fyb198d RlPUg5v1NRguCXwPgx5Im1wTWKo5ntOzsQC+nbzFuWO2alKkcnCBW2+n3Usud9raVxTj2NBpEF8 b6LICKL7tcGZhhhYewU10Ta1pScIoYnrjGsoxl3IaK322mXuf8sQNGF486p60IVHeEfwY9h040/ /f/I+wt3ADnPQtjxGwMjQxCqi+Fjk259rhIpwn5Dwid3++ZMX1mjk1DxyBU7i/6NKM/38oAyoS0 /iubtZbC6+ssuxcFdu0TN2ideAZLCIB+bGzDdlyTqXvZAmrNfvnerEo4Dpom9Tg65ql71KMXMw0 9xbPF1r2shnWKqNDR7ZCzSeTdJnn+ManTv/kZUwWxEW1dW6SUqXrrbuGhmkb1L3rgxPKQFyCqcG H1LLJdtpczf/yH8tmyWmlpAbBp9jE5sTdj601fsf2E71Q8twQmlEVM3MTjypO0bcdZy8f81lAa6 fPR7nWGWLeOCNpJK/9rSxzxRIc/d8UVY7YVw/PQq0M6HiDHH4khXZvTz/7IkAzDfZmeuPD1NDPq RKPceFqsfbHAKpJVzM+S5SQZ5sw9tn+VtmquzckpoJuocNO0LK6mGnOZFpVCLQITKBVS65LEn/v za3N8+9CZVBz7Rg== X-Developer-Key: i=abel.vesa@linaro.org; a=openpgp; fpr=6AFF162D57F4223A8770EF5AF7BF214136F41FAE LTTPRs operating modes are defined by the DisplayPort standard and the generic framework now provides a helper to switch between them, which is handling the explicit disabling of non-transparent mode and its disable->enable sequence mentioned in the DP Standard v2.0 section 3.6.6.1. So use the new drm generic helper instead as it makes the code a bit cleaner. Since the driver specific implementation holds the lttrp_common_caps, if the call to the drm generic helper fails, the lttrp_common_caps need to be updated as the helper has already rolled back to transparent mode. Acked-by: Imre Deak Signed-off-by: Abel Vesa Acked-by: Jani Nikula Acked-by: Lyude Paul Reviewed-by: Suraj Kandpal --- .../gpu/drm/i915/display/intel_dp_link_training.c | 24 +++++-------------= ---- 1 file changed, 5 insertions(+), 19 deletions(-) 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 8b1977cfec503c70f07af716ee2c00e7605c6adf..c5bad311edf7b9a5cebb633b9e9= 692bae397f9ed 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c @@ -119,9 +119,6 @@ intel_dp_set_lttpr_transparent_mode(struct intel_dp *in= tel_dp, bool enable) u8 val =3D enable ? DP_PHY_REPEATER_MODE_TRANSPARENT : DP_PHY_REPEATER_MODE_NON_TRANSPARENT; =20 - if (drm_dp_dpcd_write(&intel_dp->aux, DP_PHY_REPEATER_MODE, &val, 1) !=3D= 1) - return false; - intel_dp->lttpr_common_caps[DP_PHY_REPEATER_MODE - DP_LT_TUNABLE_PHY_REPEATER_FIELD_DATA_STRUCTURE_REV] =3D val; =20 @@ -146,6 +143,7 @@ static bool intel_dp_lttpr_transparent_mode_enabled(str= uct intel_dp *intel_dp) static int intel_dp_init_lttpr_phys(struct intel_dp *intel_dp, const u8 dp= cd[DP_RECEIVER_CAP_SIZE]) { int lttpr_count; + int ret; =20 if (!intel_dp_read_lttpr_common_caps(intel_dp, dpcd)) return 0; @@ -172,22 +170,8 @@ static int intel_dp_init_lttpr_phys(struct intel_dp *i= ntel_dp, const u8 dpcd[DP_ return lttpr_count; } =20 - /* - * See DP Standard v2.0 3.6.6.1. about the explicit disabling of - * non-transparent mode and the disable->enable non-transparent mode - * sequence. - */ - intel_dp_set_lttpr_transparent_mode(intel_dp, true); - - /* - * In case of unsupported number of LTTPRs or failing to switch to - * non-transparent mode fall-back to transparent link training mode, - * still taking into account any LTTPR common lane- rate/count limits. - */ - if (lttpr_count < 0) - goto out_reset_lttpr_count; - - if (!intel_dp_set_lttpr_transparent_mode(intel_dp, false)) { + ret =3D drm_dp_lttpr_init(&intel_dp->aux, lttpr_count); + if (ret) { lt_dbg(intel_dp, DP_PHY_DPRX, "Switching to LTTPR non-transparent LT mode failed, fall-back to = transparent mode\n"); =20 @@ -196,6 +180,8 @@ static int intel_dp_init_lttpr_phys(struct intel_dp *in= tel_dp, const u8 dpcd[DP_ goto out_reset_lttpr_count; } =20 + intel_dp_set_lttpr_transparent_mode(intel_dp, false); + return lttpr_count; =20 out_reset_lttpr_count: --=20 2.34.1 From nobody Sun Dec 14 13:53:06 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 6EE762036E1 for ; Mon, 3 Feb 2025 10:58:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738580311; cv=none; b=TQtDAHLOwd5IL5y5JKYFCO30qCTGipowo+Y+Gqf/rVnq3pamKoKT53VdENRIgISjaK26Vkwi9wTsgTmGnj95UpD8tW0EbRG/XSGwZxHxc4B6augewr76jF0v4B0TLaa2etkx8MM3cLwtUpsF4jP1r+AHqUmAEjwrl7citYX5fOw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738580311; c=relaxed/simple; bh=Jh+EL4p/6JSMFadATMQ/dMawzZEL4l2MOkq/1iyumns=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pd2aWmfzIA23jy07wZHKtKl9stFLsh/PFD4cz0kTElugtIw7/ghQ2FsFju0r9awo0LiNMz7SQOm2ToQ/IGUnn7F2+QmFw6yB6IeO1n0nr89bhMfvT/t2t4R1evrKLCV9OEnxtVjouweG4dz4AQteBNvtjvbnMRDs1QDnQAyONOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=sDyDYXVN; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="sDyDYXVN" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-436202dd7f6so49961005e9.0 for ; Mon, 03 Feb 2025 02:58:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738580308; x=1739185108; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=YU2toixtghG/UIHIgDfi+TrJAb+KbxkNuLjUS/jgDXM=; b=sDyDYXVNFP+iewVdmnRCOTGbB8y1zrIccusyVzUPSBbgkIsQB7aC0cfik+PBycS4Am J+TwWKqOqbdXe1UgHVTSwOl4LM8Ey4NRML6gfy4YXr1gZFLyQzqt7tpA30BeLx+aTP5G 8+vtiNJtmtQV+wzh/u7f4CWan+VhimqYarzI974NqFmvKOMuVNcdKRXwuhLSX/VXdhOm tE+YNG1fMr0Sh7d6wMCGGfA4YiIpFNjjc4E6r7VSb/0B4IP8ufzC3DtYVAFiX22R289n +LB2hE03iFXO56yimOiujIdS+SJXsgbdweOshpYRFeWQfaAB+TVUsct+xsH5KOKxXpXl 01QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738580308; x=1739185108; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YU2toixtghG/UIHIgDfi+TrJAb+KbxkNuLjUS/jgDXM=; b=iqTR+i3PEZv5aFyQPdVLT1QzmVloA4TaT7WhT89/OBkn9vOE5nyBijQiBBrfu4FEnE BK6+RyZNB50+vnj6PA1NbMKMTCzQmwzYXWjvxS+NGea4/9jcE7Gd7qTBTJoaCv0+scDi Gh42UmoE7rCJQ6TI0o91H1c9tSAv4f+tyf+aWIFQC3W8BUCgy3lqiFBEjuUaFVZf1Wi0 BYCAMo6LhzoZjnMfZI7C6oRu+5GX2SdWBrg7RG+tvxDMb7lf0VzguRmmtTiJ0+WauaEt W71RJxk69drM6BfAVNdsdYbYMHas+FB1fkzROGlvnyxFlInedqoxWl3Vjw7eoEOx3M7F gsKA== X-Forwarded-Encrypted: i=1; AJvYcCXkba54GeYhpQMRAcJwBurBkXyF9NC1onj6IQWll7FBiSct8Sm90ASVz7EqTO5oYXRyqA7ccvJExm33G2Y=@vger.kernel.org X-Gm-Message-State: AOJu0YzC5KVXmU3U71nh/2T+ye67Pw/UmmQrxRPPNdvLCkmq0O2/g2nG g09tIK9ebHxb06dRwW1UgyIxJJXi8fp2rOHgFy1oluR0mKWdIMtI7hbClXJ2ikk= X-Gm-Gg: ASbGncsf/qV7DRrhBn7IKHD1E9Ztfa/YrgNM5fAfCM41t7r57T+lXG9ZpKPhaJMCNZ3 SK+0Zr3sfUVndS2n6WY7RUCqQ78K7qYhIukTqS9bXZYe51vL4eZMi+344xEzRX16XHt18yGM2NF tszjYa+ezMP91G5bCvMiNxYAcanDKwdPFMoR4dyUcFnV3IEsr+vWPA5v0MQrsTgYxrUzErIvdAq FbnvT4wh/CWRJBG7vMiQ/cdZaQfkogXGX9PrVwNGGDy/JMVg83gcPkPfDdcY+hU1TdfQyyvfHN3 uOTG32r+ZwPf1Js= X-Google-Smtp-Source: AGHT+IG3sxZoF1BxKwDs6D8yKh85vjYaq2CGCwZLuA4JBiE6X/IAqNanFP9ag+j0VZ8Qqg5mgek9bg== X-Received: by 2002:a05:600c:35d1:b0:436:1971:2a4 with SMTP id 5b1f17b1804b1-438dc3cc9f1mr185238805e9.17.1738580307609; Mon, 03 Feb 2025 02:58:27 -0800 (PST) Received: from [127.0.1.1] ([86.123.96.125]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c13a0efsm12555083f8f.60.2025.02.03.02.58.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 02:58:27 -0800 (PST) From: Abel Vesa Date: Mon, 03 Feb 2025 12:57:59 +0200 Subject: [PATCH v5 4/4] drm/msm/dp: Add support for LTTPR handling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-4-c865d0e56d6e@linaro.org> References: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-0-c865d0e56d6e@linaro.org> In-Reply-To: <20250203-drm-dp-msm-add-lttpr-transparent-mode-set-v5-0-c865d0e56d6e@linaro.org> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Karol Herbst , Lyude Paul , Danilo Krummrich , Jani Nikula , Rodrigo Vivi , Joonas Lahtinen , Tvrtko Ursulin , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten Cc: Bjorn Andersson , Konrad Dybcio , Johan Hovold , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Abel Vesa , Johan Hovold X-Mailer: b4 0.15-dev-dedf8 X-Developer-Signature: v=1; a=openpgp-sha256; l=3226; i=abel.vesa@linaro.org; h=from:subject:message-id; bh=Jh+EL4p/6JSMFadATMQ/dMawzZEL4l2MOkq/1iyumns=; b=owEBbQKS/ZANAwAKARtfRMkAlRVWAcsmYgBnoKFIouFywSlDaZiCw4jErWqSRIqEpI3epr4AW pUfu6e93kKJAjMEAAEKAB0WIQRO8+4RTnqPKsqn0bgbX0TJAJUVVgUCZ6ChSAAKCRAbX0TJAJUV VkinEADM92QE1zN3OdqwoLmwOoyxpCMwh545d6+dM1Jydy6p2+/Kc4BB1xjuxNF1HNo5rtoqH07 ym9dN4Q2Qq7XF1KIk/3CrsDT4I6xsQyH+dZXcInkRjCUYzr92gP/vw1kR3ZEqKR0MhGKoby+vee AMNZ73KL9sbyxqDOSvYlfU64YT+4M3Y0RjyunUFlc8d0B77KoL9D1lf+9S/cf/VIG5xt10eHvCI Y/7TVphY3czZAV8pnzwIf8rvKl8ovXxM1wuxLd5rbHSICbG9xkbeuPm9Gk0ayUP21CpdlnMwnrO ZgiMbd646uADECWUTsnLP+vy/yGmYdZk+wxCNssoiv8Uwdn5ZBIDrTreTRLOTRfs0yrkWKw+2Rr nvsWS9eg48JbmcR2ZEUHO9TK8fTbA7zOnb/X1M9Xm6dTObpCTrH/1WvFKyJHOT+F8lkUhOhWYM5 FHml27aV+44Peh/GLto6Qzz4d2+f92sCsBH9ywrCKadg7S/0e9kxiYCsVG5CPv74tlxnI1MJTIk 38joR4PETewNrhxKk1ppq87XoZJCSGrVxk/IZsbYHALamKacJUTrn6kJ91yS/mNIU23LtyOTkdh M2PhJ+2wRSHuQtQv19TyrWt+d38PCVc5NM4iGWqb0J4QbPzEgPwhp1xeCLwRcvp1mk/vM6udNFY hRWMZsNaZcQlw7w== X-Developer-Key: i=abel.vesa@linaro.org; a=openpgp; fpr=6AFF162D57F4223A8770EF5AF7BF214136F41FAE Link Training Tunable PHY Repeaters (LTTPRs) are defined in DisplayPort 1.4a specification. As the name suggests, these PHY repeaters are capable of adjusting their output for link training purposes. According to the DisplayPort standard, LTTPRs have two operating modes: - non-transparent - it replies to DPCD LTTPR field specific AUX requests, while passes through all other AUX requests - transparent - it passes through all AUX requests. Switching between these two modes is done by the DPTX by issuing an AUX write to the DPCD PHY_REPEATER_MODE register. The msm DP driver is currently lacking any handling of LTTPRs. This means that if at least one LTTPR is found between DPTX and DPRX, the link training would fail if that LTTPR was not already configured in transparent mode. The section 3.6.6.1 from the DisplayPort v2.0 specification mandates that before link training with the LTTPR is started, the DPTX may place the LTTPR in non-transparent mode by first switching to transparent mode and then to non-transparent mode. This operation seems to be needed only on first link training and doesn't need to be done again until device is unplugged. It has been observed on a few X Elite-based platforms which have such LTTPRs in their board design that the DPTX needs to follow the procedure described above in order for the link training to be successful. So add support for reading the LTTPR DPCD caps to figure out the number of such LTTPRs first. Then, for platforms (or Type-C dongles) that have at least one such an LTTPR, set its operation mode to transparent mode first and then to non-transparent, just like the mentioned section of the specification mandates. Tested-by: Johan Hovold Reviewed-by: Dmitry Baryshkov Reviewed-by: Johan Hovold Signed-off-by: Abel Vesa Acked-by: Jani Nikula Acked-by: Lyude Paul Reviewed-by: Abhinav Kumar --- drivers/gpu/drm/msm/dp/dp_display.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 24dd37f1682bf5016bb0efbeb44489061deff060..1dd8f94e27475ae5b5b25d80f75= 8968e6818f6cc 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -367,6 +367,19 @@ static int msm_dp_display_send_hpd_notification(struct= msm_dp_display_private *d return 0; } =20 +static void msm_dp_display_lttpr_init(struct msm_dp_display_private *dp) +{ + u8 lttpr_caps[DP_LTTPR_COMMON_CAP_SIZE]; + int rc; + + if (drm_dp_read_lttpr_common_caps(dp->aux, dp->panel->dpcd, lttpr_caps)) + return; + + rc =3D drm_dp_lttpr_init(dp->aux, drm_dp_lttpr_count(lttpr_caps)); + if (rc) + DRM_ERROR("failed to set LTTPRs transparency mode, rc=3D%d\n", rc); +} + static int msm_dp_display_process_hpd_high(struct msm_dp_display_private *= dp) { struct drm_connector *connector =3D dp->msm_dp_display.connector; @@ -377,6 +390,8 @@ static int msm_dp_display_process_hpd_high(struct msm_d= p_display_private *dp) if (rc) goto end; =20 + msm_dp_display_lttpr_init(dp); + msm_dp_link_process_request(dp->link); =20 if (!dp->msm_dp_display.is_edp) --=20 2.34.1