From: George Zhang <george.zhang@amd.com>
To: stevester.codes@gmail.com, amd-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
"Harry Wentland" <harry.wentland@amd.com>,
"Leo Li" <sunpeng.li@amd.com>,
"Rodrigo Siqueira" <siqueira@igalia.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Tomasz Pakuła" <tomasz.pakula.oficjalny@gmail.com>,
Mark.Broadworth@amd.com
Subject: Re: [PATCH RFC 1/3] drm/amd/display: quirk malformed CH7218 PCON topology
Date: Mon, 29 Jun 2026 12:57:23 -0400 [thread overview]
Message-ID: <3d303f39-433c-4ccb-aa99-9b832cefe435@amd.com> (raw)
In-Reply-To: <b9256d5f-ac08-46cd-ab84-3fc0e6e52b61@amd.com>
On 6/25/26 4:39 PM, George Zhang <george.zhang@amd.com> wrote:
>
>
> On 6/20/26 12:06, Stephen via B4 Relay wrote:
> > From: Stephen <stevester.codes@gmail.com>
> >
> > Some Chrontel CH7218 DP-to-HDMI 2.1 adapters expose a branch
> > device ID of 0x2b02f0 and branch name CH7218, but report no
> > downstream port at DPCD 0x005 and report the detailed downstream
> > port at 0x080 as DP.
> >
> > This leaves AMDGPU treating the link as non-HDMI and bypasses the
> > PCON capability path.
> >
> > When this malformed runtime state is detected, classify the link as a
> > DP-HDMI converter and restore the documented converter ceilings needed
> > by the existing PCON path: 12 bpc, 48 Gbps FRL, and YCbCr passthrough
> > capability. This does not program the PCON or synthesize source-control
> > FRL state.
> >
> > Signed-off-by: Stephen <stevester.codes@gmail.com>
>
> Hi Stephen, thank you for the patch.
>
> What dongle you are observing this issue on? We are interested in
> reproducing the observed bug.
>
> Thanks,
> George
>
Hi Stephen,
We observed a hang/reboot due to these patches on DCN42 while testing
DP2 Link Layer Compliance:
- 4.3.1.23 - Successful Link Training to a Lower Bandwidth. When
CDS_INTERLANE_ALIGN_DONE bit not set during CDS phase
- 4.3.1.24 - UHBR Fallback rate table validation
Tested on DCN42 with M42d compliance box via USB4
Thanks,
George
CC: Mark.Broadworth@amd.com
> > ---
> > .../display/dc/link/protocols/link_dp_capability.c | 47 ++++++++++++
> > ++++++++--
> > .../drm/amd/display/include/ddc_service_types.h | 1 +
> > 2 files changed, 45 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/
> > link_dp_capability.c b/drivers/gpu/drm/amd/display/dc/link/protocols/
> > link_dp_capability.c
> > index 47abb4066709..c2b48abfe7e6 100644
> > ---
a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
> > +++
b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
> > @@ -1158,6 +1158,31 @@ static void
read_and_intersect_post_frl_lt_status(
> > }
> > }
> > +static bool is_ch7218_pcon(const struct dc_link *link)
> > +{
> > + return link->dpcd_caps.branch_dev_id ==
> > DP_BRANCH_DEVICE_ID_2B02F0 &&
> > + !memcmp(link->dpcd_caps.branch_dev_name, "CH7218",
> > + sizeof(link->dpcd_caps.branch_dev_name));
> > +}
> > +
> > +static void apply_ch7218_pcon_caps_quirk(struct dc_link *link)
> > +{
> > + if (!link->dc->caps.dp_hdmi21_pcon_support)
> > + return;
> > +
> > + /*
> > + * Some CH7218 firmware reports no downstream port, or reports the
> > + * detailed downstream port as DP, while the device identity and
> > EDID
> > + * describe a DP-to-HDMI 2.1 PCON. Restore only the documented
> > converter
> > + * capability ceilings here; do not touch the PCON link state.
> > + */
> > + link->dpcd_caps.dongle_caps.dp_hdmi_max_bpc = 12;
> > + link->dpcd_caps.dongle_caps.dp_hdmi_frl_max_link_bw_in_kbps =
> > 48000000;
> > + link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr422_pass_through =
true;
> > + link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr420_pass_through =
true;
> > + link->dpcd_caps.dongle_caps.extendedCapValid = true;
> > +}
> > +
> > static void get_active_converter_info(
> > uint8_t data, struct dc_link *link)
> > {
> > @@ -1166,10 +1191,19 @@ static void get_active_converter_info(
> > /* decode converter info*/
> > if (!ds_port.fields.PORT_PRESENT) {
> > - link->dpcd_caps.dongle_type = DISPLAY_DONGLE_NONE;
> > + if (is_ch7218_pcon(link)) {
> > + link->dpcd_caps.is_branch_dev = true;
> > + link->dpcd_caps.dongle_type =
> > + DISPLAY_DONGLE_DP_HDMI_CONVERTER;
> > + link->dpcd_caps.dongle_caps.dongle_type =
> > + link->dpcd_caps.dongle_type;
> > + apply_ch7218_pcon_caps_quirk(link);
> > + } else {
> > + link->dpcd_caps.dongle_type = DISPLAY_DONGLE_NONE;
> > + link->dpcd_caps.is_branch_dev = false;
> > + }
> > set_dongle_type(link->ddc,
> > link->dpcd_caps.dongle_type);
> > - link->dpcd_caps.is_branch_dev = false;
> > return;
> > }
> > @@ -1200,7 +1234,14 @@ static void get_active_converter_info(
> > switch (port_caps->bits.DWN_STRM_PORTX_TYPE) {
> > /*Handle DP case as DONGLE_NONE*/
> > case DOWN_STREAM_DETAILED_DP:
> > - link->dpcd_caps.dongle_type = DISPLAY_DONGLE_NONE;
> > + link->dpcd_caps.dongle_type = is_ch7218_pcon(link) ?
> > + DISPLAY_DONGLE_DP_HDMI_CONVERTER :
> > + DISPLAY_DONGLE_NONE;
> > + link->dpcd_caps.dongle_caps.dongle_type =
> > + link->dpcd_caps.dongle_type;
> > + if (link->dpcd_caps.dongle_type ==
> > + DISPLAY_DONGLE_DP_HDMI_CONVERTER)
> > + apply_ch7218_pcon_caps_quirk(link);
> > break;
> > case DOWN_STREAM_DETAILED_VGA:
> > link->dpcd_caps.dongle_type =
> > diff --git a/drivers/gpu/drm/amd/display/include/ddc_service_types.h
> > b/drivers/gpu/drm/amd/display/include/ddc_service_types.h
> > index 53210e3aa0e0..4164f8a5ae56 100644
> > --- a/drivers/gpu/drm/amd/display/include/ddc_service_types.h
> > +++ b/drivers/gpu/drm/amd/display/include/ddc_service_types.h
> > @@ -37,6 +37,7 @@
> > #define DP_BRANCH_DEVICE_ID_001CF8 0x001CF8
> > #define DP_BRANCH_DEVICE_ID_0060AD 0x0060AD
> > #define DP_BRANCH_DEVICE_ID_001FF2 0x001FF2
> > +#define DP_BRANCH_DEVICE_ID_2B02F0 0x2B02F0
> > #define DP_BRANCH_HW_REV_10 0x10
> > #define DP_BRANCH_HW_REV_20 0x20
> >
>
>
prev parent reply other threads:[~2026-06-29 16:56 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-20 16:06 Stephen via B4 Relay
2026-06-20 16:06 ` [PATCH RFC 2/3] drm/amd/display: quirk CH7218 DP DSC support bit Stephen via B4 Relay
2026-06-20 16:06 ` [PATCH RFC 3/3] drm/amd/display: use HDMI RGB deep color for PCONs Stephen via B4 Relay
2026-06-25 20:39 ` [PATCH RFC 1/3] drm/amd/display: quirk malformed CH7218 PCON topology George Zhang
2026-06-29 16:57 ` George Zhang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3d303f39-433c-4ccb-aa99-9b832cefe435@amd.com \
--to=george.zhang@amd.com \
--cc=Mark.Broadworth@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=siqueira@igalia.com \
--cc=stevester.codes@gmail.com \
--cc=sunpeng.li@amd.com \
--cc=tomasz.pakula.oficjalny@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®