From: Chaoyi Chen <chaoyi.chen@rock-chips.com>
The RK3399 SoC integrates two USB/DP combo PHYs, each of which
supports software-configurable pin mapping and DisplayPort lane
assignment. These capabilities enable the PHY itself to handle both
mode switching and orientation switching, based on the Type-C plug
orientation and USB PD negotiation results.
While an external Type-C controller is still required to detect cable
attachment and report USB PD events, the actual mode and orientation
switching is performed internally by the PHY through software
configuration. This allows the PHY to act as a Type-C multiplexer for
both data role and DP altmode configuration.
To reflect this hardware design, this patch introduces a new
"mode-switch" property for the dp-port node in the device tree bindings.
This property indicates that the connected PHY is capable of handling
Type-C mode switching itself.
Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
Changes in v4:
- Remove "|" in description.
Changes in v3:
- Add more descriptions to clarify the role of the PHY in switching.
Changes in v2:
- Reuse dp-port/usb3-port in rk3399-typec-phy binding.
.../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml
index 91c011f68cd0..83ebcde096ea 100644
--- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml
@@ -51,6 +51,12 @@ properties:
'#phy-cells':
const: 0
+ mode-switch:
+ description:
+ Indicates the PHY can handle altmode switching. In this case,
+ requires an external USB Type-C controller to report USB PD message.
+ type: boolean
+
port:
$ref: /schemas/graph.yaml#/properties/port
description: Connection to USB Type-C connector
--
2.49.0
On Mon, Sep 22, 2025 at 09:20:34AM +0800, Chaoyi Chen wrote: > From: Chaoyi Chen <chaoyi.chen@rock-chips.com> > > The RK3399 SoC integrates two USB/DP combo PHYs, each of which > supports software-configurable pin mapping and DisplayPort lane > assignment. These capabilities enable the PHY itself to handle both > mode switching and orientation switching, based on the Type-C plug > orientation and USB PD negotiation results. > > While an external Type-C controller is still required to detect cable > attachment and report USB PD events, the actual mode and orientation > switching is performed internally by the PHY through software > configuration. This allows the PHY to act as a Type-C multiplexer for > both data role and DP altmode configuration. > > To reflect this hardware design, this patch introduces a new > "mode-switch" property for the dp-port node in the device tree bindings. > This property indicates that the connected PHY is capable of handling > Type-C mode switching itself. > > Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com> > > Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > --- > > Changes in v4: > - Remove "|" in description. > > Changes in v3: > - Add more descriptions to clarify the role of the PHY in switching. > > Changes in v2: > - Reuse dp-port/usb3-port in rk3399-typec-phy binding. > > .../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > index 91c011f68cd0..83ebcde096ea 100644 > --- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > +++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > @@ -51,6 +51,12 @@ properties: > '#phy-cells': > const: 0 > > + mode-switch: Having the mode-switch here is a bit strange. I think the whole PHY device should be an orientation-switch and mode-switch. Otherwise it feels weird to me. > + description: > + Indicates the PHY can handle altmode switching. In this case, > + requires an external USB Type-C controller to report USB PD message. > + type: boolean > + > port: > $ref: /schemas/graph.yaml#/properties/port > description: Connection to USB Type-C connector > -- > 2.49.0 > -- With best wishes Dmitry
Hi Dmitry, On 9/23/2025 9:12 AM, Dmitry Baryshkov wrote: > On Mon, Sep 22, 2025 at 09:20:34AM +0800, Chaoyi Chen wrote: >> From: Chaoyi Chen <chaoyi.chen@rock-chips.com> >> >> The RK3399 SoC integrates two USB/DP combo PHYs, each of which >> supports software-configurable pin mapping and DisplayPort lane >> assignment. These capabilities enable the PHY itself to handle both >> mode switching and orientation switching, based on the Type-C plug >> orientation and USB PD negotiation results. >> >> While an external Type-C controller is still required to detect cable >> attachment and report USB PD events, the actual mode and orientation >> switching is performed internally by the PHY through software >> configuration. This allows the PHY to act as a Type-C multiplexer for >> both data role and DP altmode configuration. >> >> To reflect this hardware design, this patch introduces a new >> "mode-switch" property for the dp-port node in the device tree bindings. >> This property indicates that the connected PHY is capable of handling >> Type-C mode switching itself. >> >> Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com> >> >> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> >> --- >> >> Changes in v4: >> - Remove "|" in description. >> >> Changes in v3: >> - Add more descriptions to clarify the role of the PHY in switching. >> >> Changes in v2: >> - Reuse dp-port/usb3-port in rk3399-typec-phy binding. >> >> .../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >> index 91c011f68cd0..83ebcde096ea 100644 >> --- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >> +++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >> @@ -51,6 +51,12 @@ properties: >> '#phy-cells': >> const: 0 >> >> + mode-switch: > Having the mode-switch here is a bit strange. I think the whole PHY > device should be an orientation-switch and mode-switch. Otherwise it > feels weird to me. I think this is a difference in practice. In the previous binding, there was already an orientation-switch under the usb-port. I trying to add both an orientation-switch and a mode-switch to the top-level device in v2. And Krzysztof reminded me that adding a mode-switch under the dp-port would be better, so I changed it to the current form :) > >> + description: >> + Indicates the PHY can handle altmode switching. In this case, >> + requires an external USB Type-C controller to report USB PD message. >> + type: boolean >> + >> port: >> $ref: /schemas/graph.yaml#/properties/port >> description: Connection to USB Type-C connector >> -- >> 2.49.0 >> -- Best, Chaoyi
On Tue, Sep 23, 2025 at 09:53:06AM +0800, Chaoyi Chen wrote: > Hi Dmitry, > > On 9/23/2025 9:12 AM, Dmitry Baryshkov wrote: > > On Mon, Sep 22, 2025 at 09:20:34AM +0800, Chaoyi Chen wrote: > > > From: Chaoyi Chen <chaoyi.chen@rock-chips.com> > > > > > > The RK3399 SoC integrates two USB/DP combo PHYs, each of which > > > supports software-configurable pin mapping and DisplayPort lane > > > assignment. These capabilities enable the PHY itself to handle both > > > mode switching and orientation switching, based on the Type-C plug > > > orientation and USB PD negotiation results. > > > > > > While an external Type-C controller is still required to detect cable > > > attachment and report USB PD events, the actual mode and orientation > > > switching is performed internally by the PHY through software > > > configuration. This allows the PHY to act as a Type-C multiplexer for > > > both data role and DP altmode configuration. > > > > > > To reflect this hardware design, this patch introduces a new > > > "mode-switch" property for the dp-port node in the device tree bindings. > > > This property indicates that the connected PHY is capable of handling > > > Type-C mode switching itself. > > > > > > Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com> > > > > > > Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > > > --- > > > > > > Changes in v4: > > > - Remove "|" in description. > > > > > > Changes in v3: > > > - Add more descriptions to clarify the role of the PHY in switching. > > > > > > Changes in v2: > > > - Reuse dp-port/usb3-port in rk3399-typec-phy binding. > > > > > > .../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++ > > > 1 file changed, 6 insertions(+) > > > > > > diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > index 91c011f68cd0..83ebcde096ea 100644 > > > --- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > +++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > @@ -51,6 +51,12 @@ properties: > > > '#phy-cells': > > > const: 0 > > > + mode-switch: > > Having the mode-switch here is a bit strange. I think the whole PHY > > device should be an orientation-switch and mode-switch. Otherwise it > > feels weird to me. > > I think this is a difference in practice. In the previous binding, there was already an orientation-switch under the usb-port. I trying to add both an orientation-switch and a mode-switch to the top-level device in v2. And Krzysztof reminded me that adding a mode-switch under the dp-port would be better, so I changed it to the current form :) I couldn't find the comment on lore. Could you please point it out? > > > > > > > > + description: > > > + Indicates the PHY can handle altmode switching. In this case, > > > + requires an external USB Type-C controller to report USB PD message. > > > + type: boolean > > > + > > > port: > > > $ref: /schemas/graph.yaml#/properties/port > > > description: Connection to USB Type-C connector > > > -- > > > 2.49.0 > > > > -- > Best, > Chaoyi > -- With best wishes Dmitry
On 9/23/2025 11:17 AM, Dmitry Baryshkov wrote: > On Tue, Sep 23, 2025 at 09:53:06AM +0800, Chaoyi Chen wrote: >> Hi Dmitry, >> >> On 9/23/2025 9:12 AM, Dmitry Baryshkov wrote: >>> On Mon, Sep 22, 2025 at 09:20:34AM +0800, Chaoyi Chen wrote: >>>> From: Chaoyi Chen <chaoyi.chen@rock-chips.com> >>>> >>>> The RK3399 SoC integrates two USB/DP combo PHYs, each of which >>>> supports software-configurable pin mapping and DisplayPort lane >>>> assignment. These capabilities enable the PHY itself to handle both >>>> mode switching and orientation switching, based on the Type-C plug >>>> orientation and USB PD negotiation results. >>>> >>>> While an external Type-C controller is still required to detect cable >>>> attachment and report USB PD events, the actual mode and orientation >>>> switching is performed internally by the PHY through software >>>> configuration. This allows the PHY to act as a Type-C multiplexer for >>>> both data role and DP altmode configuration. >>>> >>>> To reflect this hardware design, this patch introduces a new >>>> "mode-switch" property for the dp-port node in the device tree bindings. >>>> This property indicates that the connected PHY is capable of handling >>>> Type-C mode switching itself. >>>> >>>> Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com> >>>> >>>> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> >>>> --- >>>> >>>> Changes in v4: >>>> - Remove "|" in description. >>>> >>>> Changes in v3: >>>> - Add more descriptions to clarify the role of the PHY in switching. >>>> >>>> Changes in v2: >>>> - Reuse dp-port/usb3-port in rk3399-typec-phy binding. >>>> >>>> .../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++ >>>> 1 file changed, 6 insertions(+) >>>> >>>> diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>> index 91c011f68cd0..83ebcde096ea 100644 >>>> --- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>> +++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>> @@ -51,6 +51,12 @@ properties: >>>> '#phy-cells': >>>> const: 0 >>>> + mode-switch: >>> Having the mode-switch here is a bit strange. I think the whole PHY >>> device should be an orientation-switch and mode-switch. Otherwise it >>> feels weird to me. >> I think this is a difference in practice. In the previous binding, there was already an orientation-switch under the usb-port. I trying to add both an orientation-switch and a mode-switch to the top-level device in v2. And Krzysztof reminded me that adding a mode-switch under the dp-port would be better, so I changed it to the current form :) > I couldn't find the comment on lore. Could you please point it out? Sorry, it is v1. I added an orientation-switch and a mode-switch in the top-level PHY [0]. Comment is here: [1] [0] https://lore.kernel.org/all/20250715112456.101-4-kernel@airkyi.com/ [1] https://lore.kernel.org/all/4dfed94c-665d-4e04-b527-ddd34fd3db8f@kernel.org/ >> >> >>>> + description: >>>> + Indicates the PHY can handle altmode switching. In this case, >>>> + requires an external USB Type-C controller to report USB PD message. >>>> + type: boolean >>>> + >>>> port: >>>> $ref: /schemas/graph.yaml#/properties/port >>>> description: Connection to USB Type-C connector >>>> -- >>>> 2.49.0 >>>> >> -- >> Best, >> Chaoyi >> -- Best, Chaoyi
On Tue, Sep 23, 2025 at 11:40:33AM +0800, Chaoyi Chen wrote: > On 9/23/2025 11:17 AM, Dmitry Baryshkov wrote: > > > On Tue, Sep 23, 2025 at 09:53:06AM +0800, Chaoyi Chen wrote: > > > Hi Dmitry, > > > > > > On 9/23/2025 9:12 AM, Dmitry Baryshkov wrote: > > > > On Mon, Sep 22, 2025 at 09:20:34AM +0800, Chaoyi Chen wrote: > > > > > From: Chaoyi Chen <chaoyi.chen@rock-chips.com> > > > > > > > > > > The RK3399 SoC integrates two USB/DP combo PHYs, each of which > > > > > supports software-configurable pin mapping and DisplayPort lane > > > > > assignment. These capabilities enable the PHY itself to handle both > > > > > mode switching and orientation switching, based on the Type-C plug > > > > > orientation and USB PD negotiation results. > > > > > > > > > > While an external Type-C controller is still required to detect cable > > > > > attachment and report USB PD events, the actual mode and orientation > > > > > switching is performed internally by the PHY through software > > > > > configuration. This allows the PHY to act as a Type-C multiplexer for > > > > > both data role and DP altmode configuration. > > > > > > > > > > To reflect this hardware design, this patch introduces a new > > > > > "mode-switch" property for the dp-port node in the device tree bindings. > > > > > This property indicates that the connected PHY is capable of handling > > > > > Type-C mode switching itself. > > > > > > > > > > Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com> > > > > > > > > > > Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > > > > > --- > > > > > > > > > > Changes in v4: > > > > > - Remove "|" in description. > > > > > > > > > > Changes in v3: > > > > > - Add more descriptions to clarify the role of the PHY in switching. > > > > > > > > > > Changes in v2: > > > > > - Reuse dp-port/usb3-port in rk3399-typec-phy binding. > > > > > > > > > > .../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++ > > > > > 1 file changed, 6 insertions(+) > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > > > index 91c011f68cd0..83ebcde096ea 100644 > > > > > --- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > > > +++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > > > @@ -51,6 +51,12 @@ properties: > > > > > '#phy-cells': > > > > > const: 0 > > > > > + mode-switch: > > > > Having the mode-switch here is a bit strange. I think the whole PHY > > > > device should be an orientation-switch and mode-switch. Otherwise it > > > > feels weird to me. > > > I think this is a difference in practice. In the previous binding, there was already an orientation-switch under the usb-port. I trying to add both an orientation-switch and a mode-switch to the top-level device in v2. And Krzysztof reminded me that adding a mode-switch under the dp-port would be better, so I changed it to the current form :) > > I couldn't find the comment on lore. Could you please point it out? > > Sorry, it is v1. I added an orientation-switch and a mode-switch in the top-level PHY [0]. Comment is here: [1] My interpretation of [1] doesn't quite match yours. It doesn't say anything about moving mode-switch to dp-port. It basically pointed out that you already have two ports. Also, I'm not sure how the current construction works: you register switch and mux for the dev_fwnode(tcphy->dev), however the lookfup functions should be looking for a device corresponding to the port OF node (which doesn't exist). > > > [0] https://lore.kernel.org/all/20250715112456.101-4-kernel@airkyi.com/ > > [1] https://lore.kernel.org/all/4dfed94c-665d-4e04-b527-ddd34fd3db8f@kernel.org/ > > > > > > > > > > > > > > + description: > > > > > + Indicates the PHY can handle altmode switching. In this case, > > > > > + requires an external USB Type-C controller to report USB PD message. > > > > > + type: boolean > > > > > + > > > > > port: > > > > > $ref: /schemas/graph.yaml#/properties/port > > > > > description: Connection to USB Type-C connector > > > > > -- > > > > > 2.49.0 > > > > > > > > -- > > > Best, > > > Chaoyi > > > > -- > Best, > Chaoyi > > > -- > linux-phy mailing list > linux-phy@lists.infradead.org > https://lists.infradead.org/mailman/listinfo/linux-phy -- With best wishes Dmitry
On 9/23/2025 12:51 PM, Dmitry Baryshkov wrote: > On Tue, Sep 23, 2025 at 11:40:33AM +0800, Chaoyi Chen wrote: >> On 9/23/2025 11:17 AM, Dmitry Baryshkov wrote: >> >>> On Tue, Sep 23, 2025 at 09:53:06AM +0800, Chaoyi Chen wrote: >>>> Hi Dmitry, >>>> >>>> On 9/23/2025 9:12 AM, Dmitry Baryshkov wrote: >>>>> On Mon, Sep 22, 2025 at 09:20:34AM +0800, Chaoyi Chen wrote: >>>>>> From: Chaoyi Chen <chaoyi.chen@rock-chips.com> >>>>>> >>>>>> The RK3399 SoC integrates two USB/DP combo PHYs, each of which >>>>>> supports software-configurable pin mapping and DisplayPort lane >>>>>> assignment. These capabilities enable the PHY itself to handle both >>>>>> mode switching and orientation switching, based on the Type-C plug >>>>>> orientation and USB PD negotiation results. >>>>>> >>>>>> While an external Type-C controller is still required to detect cable >>>>>> attachment and report USB PD events, the actual mode and orientation >>>>>> switching is performed internally by the PHY through software >>>>>> configuration. This allows the PHY to act as a Type-C multiplexer for >>>>>> both data role and DP altmode configuration. >>>>>> >>>>>> To reflect this hardware design, this patch introduces a new >>>>>> "mode-switch" property for the dp-port node in the device tree bindings. >>>>>> This property indicates that the connected PHY is capable of handling >>>>>> Type-C mode switching itself. >>>>>> >>>>>> Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com> >>>>>> >>>>>> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> >>>>>> --- >>>>>> >>>>>> Changes in v4: >>>>>> - Remove "|" in description. >>>>>> >>>>>> Changes in v3: >>>>>> - Add more descriptions to clarify the role of the PHY in switching. >>>>>> >>>>>> Changes in v2: >>>>>> - Reuse dp-port/usb3-port in rk3399-typec-phy binding. >>>>>> >>>>>> .../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++ >>>>>> 1 file changed, 6 insertions(+) >>>>>> >>>>>> diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>>>> index 91c011f68cd0..83ebcde096ea 100644 >>>>>> --- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>>>> +++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>>>> @@ -51,6 +51,12 @@ properties: >>>>>> '#phy-cells': >>>>>> const: 0 >>>>>> + mode-switch: >>>>> Having the mode-switch here is a bit strange. I think the whole PHY >>>>> device should be an orientation-switch and mode-switch. Otherwise it >>>>> feels weird to me. >>>> I think this is a difference in practice. In the previous binding, there was already an orientation-switch under the usb-port. I trying to add both an orientation-switch and a mode-switch to the top-level device in v2. And Krzysztof reminded me that adding a mode-switch under the dp-port would be better, so I changed it to the current form :) >>> I couldn't find the comment on lore. Could you please point it out? >> Sorry, it is v1. I added an orientation-switch and a mode-switch in the top-level PHY [0]. Comment is here: [1] > My interpretation of [1] doesn't quite match yours. It doesn't say > anything about moving mode-switch to dp-port. It basically pointed out > that you already have two ports. Yes, I think this can be easily changed, as long as the issue you mentioned below is resolved. > > Also, I'm not sure how the current construction works: you register > switch and mux for the dev_fwnode(tcphy->dev), however the lookfup > functions should be looking for a device corresponding to the port OF > node (which doesn't exist). In v1, that is fwnode = dev_fwnode(tcphy->dev) . And dt like is: &tcphy { port { tcphy0_orientation_switch: endpoint@0 { ... }; tcphy_dp_altmode_switch: endpoint@1 { ... }; }; }; Since the binding already includes a "usb3-port" and a "dp-port", it can not add another new port. So after v1, that is fwnode = device_get_named_child_node(tcphy->dev, "usb3-port") . And dt like this: &tcphy0_dp { port { ... }; }; &tcphy0_usb3 { port { ... }; }; Sorry, this looks a bit hacky. Do you have a better idea? Thank you. > >> >> [0] https://lore.kernel.org/all/20250715112456.101-4-kernel@airkyi.com/ >> >> [1] https://lore.kernel.org/all/4dfed94c-665d-4e04-b527-ddd34fd3db8f@kernel.org/ >> >> >> >>>> >>>>>> + description: >>>>>> + Indicates the PHY can handle altmode switching. In this case, >>>>>> + requires an external USB Type-C controller to report USB PD message. >>>>>> + type: boolean >>>>>> + >>>>>> port: >>>>>> $ref: /schemas/graph.yaml#/properties/port >>>>>> description: Connection to USB Type-C connector >>>>>> -- >>>>>> 2.49.0 >>>>>> >>>> -- >>>> Best, >>>> Chaoyi >>>> >> -- >> Best, >> Chaoyi >> >> >> -- >> linux-phy mailing list >> linux-phy@lists.infradead.org >> https://lists.infradead.org/mailman/listinfo/linux-phy -- Best, Chaoyi
On Tue, Sep 23, 2025 at 03:17:20PM +0800, Chaoyi Chen wrote: > On 9/23/2025 12:51 PM, Dmitry Baryshkov wrote: > > > On Tue, Sep 23, 2025 at 11:40:33AM +0800, Chaoyi Chen wrote: > > > On 9/23/2025 11:17 AM, Dmitry Baryshkov wrote: > > > > > > > On Tue, Sep 23, 2025 at 09:53:06AM +0800, Chaoyi Chen wrote: > > > > > Hi Dmitry, > > > > > > > > > > On 9/23/2025 9:12 AM, Dmitry Baryshkov wrote: > > > > > > On Mon, Sep 22, 2025 at 09:20:34AM +0800, Chaoyi Chen wrote: > > > > > > > From: Chaoyi Chen <chaoyi.chen@rock-chips.com> > > > > > > > > > > > > > > The RK3399 SoC integrates two USB/DP combo PHYs, each of which > > > > > > > supports software-configurable pin mapping and DisplayPort lane > > > > > > > assignment. These capabilities enable the PHY itself to handle both > > > > > > > mode switching and orientation switching, based on the Type-C plug > > > > > > > orientation and USB PD negotiation results. > > > > > > > > > > > > > > While an external Type-C controller is still required to detect cable > > > > > > > attachment and report USB PD events, the actual mode and orientation > > > > > > > switching is performed internally by the PHY through software > > > > > > > configuration. This allows the PHY to act as a Type-C multiplexer for > > > > > > > both data role and DP altmode configuration. > > > > > > > > > > > > > > To reflect this hardware design, this patch introduces a new > > > > > > > "mode-switch" property for the dp-port node in the device tree bindings. > > > > > > > This property indicates that the connected PHY is capable of handling > > > > > > > Type-C mode switching itself. > > > > > > > > > > > > > > Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com> > > > > > > > > > > > > > > Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > > > > > > > --- > > > > > > > > > > > > > > Changes in v4: > > > > > > > - Remove "|" in description. > > > > > > > > > > > > > > Changes in v3: > > > > > > > - Add more descriptions to clarify the role of the PHY in switching. > > > > > > > > > > > > > > Changes in v2: > > > > > > > - Reuse dp-port/usb3-port in rk3399-typec-phy binding. > > > > > > > > > > > > > > .../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++ > > > > > > > 1 file changed, 6 insertions(+) > > > > > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > > > > > index 91c011f68cd0..83ebcde096ea 100644 > > > > > > > --- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > > > > > +++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml > > > > > > > @@ -51,6 +51,12 @@ properties: > > > > > > > '#phy-cells': > > > > > > > const: 0 > > > > > > > + mode-switch: > > > > > > Having the mode-switch here is a bit strange. I think the whole PHY > > > > > > device should be an orientation-switch and mode-switch. Otherwise it > > > > > > feels weird to me. > > > > > I think this is a difference in practice. In the previous binding, there was already an orientation-switch under the usb-port. I trying to add both an orientation-switch and a mode-switch to the top-level device in v2. And Krzysztof reminded me that adding a mode-switch under the dp-port would be better, so I changed it to the current form :) > > > > I couldn't find the comment on lore. Could you please point it out? > > > Sorry, it is v1. I added an orientation-switch and a mode-switch in the top-level PHY [0]. Comment is here: [1] > > My interpretation of [1] doesn't quite match yours. It doesn't say > > anything about moving mode-switch to dp-port. It basically pointed out > > that you already have two ports. > > Yes, I think this can be easily changed, as long as the issue you mentioned below is resolved. > > > > > > Also, I'm not sure how the current construction works: you register > > switch and mux for the dev_fwnode(tcphy->dev), however the lookfup > > functions should be looking for a device corresponding to the port OF > > node (which doesn't exist). > > In v1, that is fwnode = dev_fwnode(tcphy->dev) . And dt like is: > > > &tcphy { > port { > tcphy0_orientation_switch: endpoint@0 { ... }; > tcphy_dp_altmode_switch: endpoint@1 { ... }; > }; > }; > > > Since the binding already includes a "usb3-port" and a "dp-port", it can not add another new port. > > So after v1, that is fwnode = device_get_named_child_node(tcphy->dev, "usb3-port") . And dt like this: I see it now, I was probably looking at the different revision, sorry about it. > > > &tcphy0_dp { > port { ... }; > }; > > &tcphy0_usb3 { > port { ... }; > }; > > > Sorry, this looks a bit hacky. Do you have a better idea? Thank you. No, it's fine from my POV now. > > > > > > > > > > [0] https://lore.kernel.org/all/20250715112456.101-4-kernel@airkyi.com/ > > > > > > [1] https://lore.kernel.org/all/4dfed94c-665d-4e04-b527-ddd34fd3db8f@kernel.org/ > > > > > > > > > > > > > > > > > > > > > + description: > > > > > > > + Indicates the PHY can handle altmode switching. In this case, > > > > > > > + requires an external USB Type-C controller to report USB PD message. > > > > > > > + type: boolean > > > > > > > + > > > > > > > port: > > > > > > > $ref: /schemas/graph.yaml#/properties/port > > > > > > > description: Connection to USB Type-C connector > > > > > > > -- > > > > > > > 2.49.0 > > > > > > > > > > > > -- > > > > > Best, > > > > > Chaoyi > > > > > > > > -- > > > Best, > > > Chaoyi > > > > > > > > > -- > > > linux-phy mailing list > > > linux-phy@lists.infradead.org > > > https://lists.infradead.org/mailman/listinfo/linux-phy > > -- > Best, > Chaoyi > -- With best wishes Dmitry
On 9/23/2025 11:17 AM, Dmitry Baryshkov wrote: > On Tue, Sep 23, 2025 at 09:53:06AM +0800, Chaoyi Chen wrote: >> Hi Dmitry, >> >> On 9/23/2025 9:12 AM, Dmitry Baryshkov wrote: >>> On Mon, Sep 22, 2025 at 09:20:34AM +0800, Chaoyi Chen wrote: >>>> From: Chaoyi Chen <chaoyi.chen@rock-chips.com> >>>> >>>> The RK3399 SoC integrates two USB/DP combo PHYs, each of which >>>> supports software-configurable pin mapping and DisplayPort lane >>>> assignment. These capabilities enable the PHY itself to handle both >>>> mode switching and orientation switching, based on the Type-C plug >>>> orientation and USB PD negotiation results. >>>> >>>> While an external Type-C controller is still required to detect cable >>>> attachment and report USB PD events, the actual mode and orientation >>>> switching is performed internally by the PHY through software >>>> configuration. This allows the PHY to act as a Type-C multiplexer for >>>> both data role and DP altmode configuration. >>>> >>>> To reflect this hardware design, this patch introduces a new >>>> "mode-switch" property for the dp-port node in the device tree bindings. >>>> This property indicates that the connected PHY is capable of handling >>>> Type-C mode switching itself. >>>> >>>> Signed-off-by: Chaoyi Chen <chaoyi.chen@rock-chips.com> >>>> >>>> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> >>>> --- >>>> >>>> Changes in v4: >>>> - Remove "|" in description. >>>> >>>> Changes in v3: >>>> - Add more descriptions to clarify the role of the PHY in switching. >>>> >>>> Changes in v2: >>>> - Reuse dp-port/usb3-port in rk3399-typec-phy binding. >>>> >>>> .../devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml | 6 ++++++ >>>> 1 file changed, 6 insertions(+) >>>> >>>> diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>> index 91c011f68cd0..83ebcde096ea 100644 >>>> --- a/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>> +++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml >>>> @@ -51,6 +51,12 @@ properties: >>>> '#phy-cells': >>>> const: 0 >>>> + mode-switch: >>> Having the mode-switch here is a bit strange. I think the whole PHY >>> device should be an orientation-switch and mode-switch. Otherwise it >>> feels weird to me. >> I think this is a difference in practice. In the previous binding, there was already an orientation-switch under the usb-port. I trying to add both an orientation-switch and a mode-switch to the top-level device in v2. And Krzysztof reminded me that adding a mode-switch under the dp-port would be better, so I changed it to the current form :) > I couldn't find the comment on lore. Could you please point it out? Sorry, it is v1. I added an orientation-switch and a mode-switch in the top-level PHY [0]. Comment is here: [1] [0] https://lore.kernel.org/all/20250715112456.101-4-kernel@airkyi.com/ [1] https://lore.kernel.org/all/4dfed94c-665d-4e04-b527-ddd34fd3db8f@kernel.org/ >> >> >>>> + description: >>>> + Indicates the PHY can handle altmode switching. In this case, >>>> + requires an external USB Type-C controller to report USB PD message. >>>> + type: boolean >>>> + >>>> port: >>>> $ref: /schemas/graph.yaml#/properties/port >>>> description: Connection to USB Type-C connector >>>> -- >>>> 2.49.0 >>>> >> -- >> Best, >> Chaoyi >> -- Best, Chaoyi
© 2016 - 2025 Red Hat, Inc.