Thread (19 messages) 19 messages, 6 authors, 2025-08-06

Re: [PATCH v3 0/5] Add Type-C DP support for RK3399 EVB IND board

From: Dmitry Baryshkov <hidden>
Date: 2025-08-02 09:56:12
Also in: dri-devel, linux-devicetree, linux-phy, linux-rockchip, lkml

On Thu, Jul 31, 2025 at 10:19:49AM +0800, Chaoyi Chen wrote:
Hi Dmitry,

On 7/31/2025 3:13 AM, Dmitry Baryshkov wrote:
quoted
On Tue, Jul 29, 2025 at 05:00:27PM +0800, Chaoyi Chen wrote:
quoted
From: Chaoyi Chen <redacted>

This series focuses on adding Type-C DP support for USBDP PHY and DP
driver. The USBDP PHY and DP will perceive the changes in cable status
based on the USB PD and Type-C state machines provided by TCPM. Before
this, the USBDP PHY and DP controller of RK3399 sensed cable state
changes through extcon, and devices such as the RK3399 Gru-Chromebook
rely on them. This series should not break them.
[....]
quoted
====
2. DP HPD event notify

The RK3399 has two USB/DP combo PHY and one CDN-DP controller. And
the CDN-DP can be switched to output to one of the PHYs.

USB/DP PHY0 ---+
                | <----> CDN-DP controller
USB/DP PHY1 ---+
Could you please clarify this, can you switch DP stream between two
USB-C outputs? What happens if user plugs in DP dongles in both USB-C
ports?
Currently, the software simply selects the first available port. So if user
plugs in DP dongles in both USB-C ports, the DP driver will select the first
port. This process is implemented in cdn_dp_connected_port() .
I think Stephen Boyd has been looking on similar issues for Chromebooks,
which were sharing DP controller between several USB-C ports. I don't
remember what was his last status. I think there it was easier since the
bifurcation point was the EC.

I think, CDN-DP needs to register up to two encoders and up to two
connectors, having a separate drm_bridge chain for each of the DP
signals paths (in the end, you can not guarantee that both branches will
have the same simple CDN-DP -> PHY -> USB-C configuration: there can be
different retimers, etc).

Both encoders should list the same CRTC in possible_crtcs, etc. Of
course, it should not be possible to enable both of them.

This way if the user plugs in two DP dongles, it would be possible to
select, which output actually gets a signal.
quoted
quoted
BTW, one of the important things to do is to implement extcon-like
notifications. I found include/drm/bridge/aux-bridge.h , but if the
aux-bridge is used, the bridge chain would look like this:

PHY0 aux-bridge ---+
                    | ----> CDN-DP bridge
PHY1 aux-bridge ---+

Oh, CDN-DP bridge has two previous aux-bridge!

Now, I try to use drm_connector_oob_hotplug_event() to notify HPD
state between PHY and CDN-DP controller.
Does it actually work? The OOB HPD event will be repoted for the usb-c
connector's fwnode, but the DP controller isn't connected to that node
anyhow. If I'm not mistaken, the HPD signal will not reach DP driver in
this case.
Yes.  What you mentioned is the case in
drivers/usb/typec/altmodes/displayport.c . I have also added a new OOB event
notify in the PHY driver in Patch 3, where the expected fwnode is used in
the PHY. So now we have two OOB HPD events, one from altmodes/displayport.c
and the other from PHY. Only the HPD from PHY is eventually passed to the DP
driver.
This way you will loose IRQ_HPD pulse events from the DP. They are used
by DPRX (aka DP Sink) to signal to DPTX (DP Source) that there was a
change on the DPRX side and the DPTX should reread link params and maybe
retrain the link.
quoted
quoted
Patch1 add new Type-C mode switch for RK3399 USBDP phy binding.
Patch2 add typec_mux and typec_switch for RK3399 USBDP PHY.
Patch3 drops CDN-DP's extcon dependency when Type-C is present.
Patch4 add missing dp_out port for RK3399 CDN-DP.
Patch5 add Type-C DP support for RK3399 EVB IND board.
-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
-- 
With best wishes
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help