From nobody Mon Dec 1 22:36:51 2025 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 D34741A08DB for ; Mon, 1 Dec 2025 01:15:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764551760; cv=none; b=K56Yhy68LOHi5x2HddibKE12iEnMjeqwvgEYnqrDP55P/fXztzPMh0QOldjGHGxDeizSWFi78tiVuFoa/nHgN3gcZ0Fux3nIn8dFtgcMSyxQREZ1bDfyROTj3QRD+5CiHs7tVwLjW9D8nu4NGzYwDqLsToYJzLnOeW/sLDjHxjU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764551760; c=relaxed/simple; bh=WpXEEsGtOokvuvQlhuEmKMzc+nHK2ks6LTfaSKXNgvo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=d9l5ZGQiGXQq7V88obBrizylfQPfMqQrow34GEh2pxyas33f4yCszhcaNNmYNxqYNdpaKH36aI52Eh5h5FS8rusyotnBlPmmUCY4U+SXVFRXIJ9RAgv8sAqxpW9Ja71wVdXm7fRb9qQZz32D82mY5SuvVcuMduZR6ujaSM52XD8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FGMkj8DI; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FGMkj8DI" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-477770019e4so29002605e9.3 for ; Sun, 30 Nov 2025 17:15:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764551757; x=1765156557; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=p+Y5hX1CqH3Pzk70YwUH5BikC9q1gOEENG1USkXY4XU=; b=FGMkj8DI3Q83wjp0741Qpe4hVMi+8FjRKWi8jms5YBlALLFDDgpRict9RYl2l0hsOm IvIsjUBOqtU5OXUAnJuByOB3lH3PsCvRhq5f7+tRsNFNHldMYs2CU0/qR2ywCSnaR+Yp b4V53JL/dF08kTEGdCaM4Xs26YDgJtj2t68prHllFdZ1slenQXH13dk9TV3lfcU2rN3h 7GbxY5jOC9BrDayZ6U5e51a+kIfu0VYrV+xl8kQ9B57Ukzc/GW5vRUUo1to5p29NIbBV xlGNf8Xdwvoni9OZgY1e+k0yj7P0TutfFulTQ8G9fbsD0xCkVj2PgLB2YGHJEt5PyLKF Ek0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764551757; x=1765156557; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=p+Y5hX1CqH3Pzk70YwUH5BikC9q1gOEENG1USkXY4XU=; b=BMFh1ZxS8CWPUPbUvYDqtGzw5VT5s6wemtJXLZc6ot8Y26mmJTw6zdUZLrRNNYYJo9 5nWOgWdnPXRE46mGHvPhV+X9u7iPiWIxNfqlFPGr1dScLX5k8OYd6kunINAbhVeesyXW pEej8jpQ6roblOpR0s3OqXQPBu9/gN139MopQSJh+OyIEoNiQFrbv2Odpu1GBIgjThKc ljdYIji5eXRx0wLsVerSZwC2BWensjl8xDjmJqPLY/nf8QPkCE0fa808EIL/2vExEoJC sbkqyho9Oqh1c4wKe+SkShq7FQyqmqEG+diIUrgxhNRrn5Fi1+jU3UElZ3Fw0uCvabQn MEWQ== X-Forwarded-Encrypted: i=1; AJvYcCVkCabNjSKLUtPK3CO9oWsia59I6YAQUFtkpC9MycYD/aWdJYr9WliqNVc+4xq/DG8SckoL0h0WDwgvQKs=@vger.kernel.org X-Gm-Message-State: AOJu0YxiStVyPUAueao4u3wiukN8OOBtqHwXs04JoeSfCEX/KBMEU8xu rszvQ39A9J9umVI0Pk8JrBGA5wiLYIyrPcM9To2pDgoiSQbGKpST/Tut X-Gm-Gg: ASbGncvjacy9Atkfz2naULI89N77uRmfzgTlP5Qu1pqC2del5VAVy73b7wsNCO6PAg1 FK+ZBPSQ2jxIH6O8OS1yMNS8wFzcUa2iYvBjNUYhZPhj/Lxs5MoR49IfV1lTUUP5TH8X45QBUSw /lFF5wDPwq8VTART6kFUgwa9x26Wmy1uMMeXUAK4KKlJGzBL4UGZGO4MaThj+ivQRBmATP4s2cj V5he7DxzLoAHQp6qtSv9uPOgdNZ9OqYmHlgpRQFCag1NMEExaOGYV2iDNHUOYwTx3DC9/rET/wD +8xXl79gCFwHnbCOthux1PAJ0WkxFoGPmaE9WHoTz9AgUubz4YTxHDY/qYDSPUPLoaPUBu42ErV hwiuCRTW5s/WunGiTK37QU5E4fuJmkuJNhb/1bMm+Py7HExoQbVy/ZJ0xj+0LRKyocVcA104c6c mxBjDb/IbH9nhgjkRZ4G8ZTAvfyYA4uKX7AfRhy++CRwdJnQuR7pw13w== X-Google-Smtp-Source: AGHT+IHVL/BEiWldm0y8g1R198i5I9jbvyca4K2bOXMaJ5CPndp+saFe0w/sAbEG0HAV5P3htWvg4A== X-Received: by 2002:a05:600c:3b0a:b0:477:9574:d641 with SMTP id 5b1f17b1804b1-47904b1b2ecmr214675995e9.22.1764551756984; Sun, 30 Nov 2025 17:15:56 -0800 (PST) Received: from alarm (92.40.200.0.threembb.co.uk. [92.40.200.0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-479110b6da9sm216152305e9.0.2025.11.30.17.15.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Nov 2025 17:15:56 -0800 (PST) From: Dale Whinham To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten Cc: =?UTF-8?q?J=C3=A9r=C3=B4me=20de=20Bretagne?= , Dale Whinham , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [PATCH v2 5/8] drm/msm/dp: Add dpcd link_rate quirk for Surface Pro 11 OLED Date: Mon, 1 Dec 2025 01:14:46 +0000 Message-ID: <20251201011457.17422-6-daleyo@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251201011457.17422-1-daleyo@gmail.com> References: <20251201011457.17422-1-daleyo@gmail.com> 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 From: J=C3=A9r=C3=B4me de Bretagne The Samsung ATNA30DW01-1 OLED panel in Microsoft Surface Pro 11 (Denali) reports a max link rate value of 0 in the DPCD register, causing the panel to fail to probe. Add a quirk for this panel during DPCD read to set the max link rate to 8.1Gbps (HBR3), which is the expected value as reported by the "EDPOverrideDPCDCaps" block found in the DSDT (0x1E). Signed-off-by: J=C3=A9r=C3=B4me de Bretagne Tested-by: Dale Whinham --- drivers/gpu/drm/display/drm_dp_helper.c | 2 ++ drivers/gpu/drm/msm/dp/dp_panel.c | 14 ++++++++++++++ include/drm/display/drm_dp_helper.h | 7 +++++++ 3 files changed, 23 insertions(+) diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/disp= lay/drm_dp_helper.c index 4aaeae4fa03c..a533fbb2988d 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -2543,6 +2543,8 @@ static const struct dpcd_quirk dpcd_quirk_list[] =3D { { OUI(0x00, 0x0C, 0xE7), DEVICE_ID_ANY, false, BIT(DP_DPCD_QUIRK_HBLANK_E= XPANSION_REQUIRES_DSC) }, /* Apple MacBookPro 2017 15 inch eDP Retina panel reports too low DP_MAX_= LINK_RATE */ { OUI(0x00, 0x10, 0xfa), DEVICE_ID(101, 68, 21, 101, 98, 97), false, BIT(= DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_3_24_GBPS) }, + /* Samsung ATNA30DW01-1 OLED panel in Microsoft Surface Pro 11 reports a = DP_MAX_LINK_RATE of 0 */ + { OUI(0xBA, 0x41, 0x59), DEVICE_ID_ANY, false, BIT(DP_DPCD_QUIRK_CAN_DO_M= AX_LINK_RATE_8_1_GBPS) }, }; =20 #undef OUI diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c b/drivers/gpu/drm/msm/dp/dp_= panel.c index 15b7f6c7146e..6bcfefd457c4 100644 --- a/drivers/gpu/drm/msm/dp/dp_panel.c +++ b/drivers/gpu/drm/msm/dp/dp_panel.c @@ -91,6 +91,7 @@ static int msm_dp_panel_read_dpcd(struct msm_dp_panel *ms= m_dp_panel) int rc, max_lttpr_lanes, max_lttpr_rate; struct msm_dp_panel_private *panel; struct msm_dp_link_info *link_info; + struct drm_dp_desc desc; u8 *dpcd, major, minor; =20 panel =3D container_of(msm_dp_panel, struct msm_dp_panel_private, msm_dp_= panel); @@ -99,6 +100,19 @@ static int msm_dp_panel_read_dpcd(struct msm_dp_panel *= msm_dp_panel) if (rc) return rc; =20 + rc =3D drm_dp_read_desc(panel->aux, &desc, drm_dp_is_branch(dpcd)); + if (rc) + return rc; + + /* + * for some reason the ATNA30DW01-1 OLED panel in Microsoft Surface Pro 11 + * reports a max link rate of 0 in the DPCD register. Fix this to match t= he + * EDPOverrideDPCDCaps value (0x1E) found in the ACPI DSDT + */ + if (drm_dp_has_quirk(&desc, DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_8_1_GBPS))= { + dpcd[1] =3D DP_LINK_BW_8_1; + } + msm_dp_panel->vsc_sdp_supported =3D drm_dp_vsc_sdp_supported(panel->aux, = dpcd); link_info =3D &msm_dp_panel->link_info; link_info->revision =3D dpcd[DP_DPCD_REV]; diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_= dp_helper.h index 87caa4f1fdb8..737ec5317666 100644 --- a/include/drm/display/drm_dp_helper.h +++ b/include/drm/display/drm_dp_helper.h @@ -820,6 +820,13 @@ enum drm_dp_quirk { * requires enabling DSC. */ DP_DPCD_QUIRK_HBLANK_EXPANSION_REQUIRES_DSC, + /** + * @DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_8_1_GBPS: + * + * The device supports a link rate of 8.1 Gbps / HBR3 (0x1e) despite + * the DP_MAX_LINK_RATE register reporting a lower max multiplier. + */ + DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_8_1_GBPS, }; =20 /** --=20 2.52.0