The QMP USB3/DP Combo PHY hosts an USB3 phy and a DP PHY on top
of a combo glue to route either lanes to the 4 shared physical lanes.
The routing of the lanes can be:
- 2 DP + 2 USB3
- 4 DP
- 2 USB3
And the layout of the lanes can be swpped depending of an
eventual USB-C connector orientation.
Nevertheless those QMP Comby PHY can be statically used to
drive a DisplayPort connector, DP->HDMI bridge, USB3 A Connector...
But if a 4lanes DP->HDMI bridge is directly connected to the
QMP Comby PHY lanes, in the default routing 2 or the 4 lanes would
probbaly be USB3, making the DP->HDMI bridge non functional.
Add a property to hint in which layout mode the QMP Comby PHY
should be as startup.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
.../bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
index c8bc512df08b5694c8599f475de78679a4438449..129475a1d9527733e43ded5a38aad766f9810fe7 100644
--- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
@@ -76,6 +76,19 @@ properties:
mode-switch: true
orientation-switch: true
+ qcom,combo-initial-mode:
+ description:
+ Describe the initial mode of the Combo PHY configuration.
+ The Combo PHY is a wrapper on top of a DP PHY and an USB3 PHY,
+ sharing the same SuperSpeed lanes with either DisplayPort over
+ the 4 lanes (dp), USB3 on a pair of lanes (usb3) or both
+ technologies in a 2+2 configuration (usb3+dp) as default.
+ default: usb3+dp
+ enum:
+ - usb3+dp
+ - usb3
+ - dp
+
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
--
2.34.1
On Thu, Aug 21, 2025 at 03:53:26PM +0200, Neil Armstrong wrote: > The QMP USB3/DP Combo PHY hosts an USB3 phy and a DP PHY on top > of a combo glue to route either lanes to the 4 shared physical lanes. > > The routing of the lanes can be: > - 2 DP + 2 USB3 > - 4 DP > - 2 USB3 > > And the layout of the lanes can be swpped depending of an > eventual USB-C connector orientation. > > Nevertheless those QMP Comby PHY can be statically used to > drive a DisplayPort connector, DP->HDMI bridge, USB3 A Connector... > > But if a 4lanes DP->HDMI bridge is directly connected to the > QMP Comby PHY lanes, in the default routing 2 or the 4 lanes would > probbaly be USB3, making the DP->HDMI bridge non functional. > > Add a property to hint in which layout mode the QMP Comby PHY > should be as startup. > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > --- > .../bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml > index c8bc512df08b5694c8599f475de78679a4438449..129475a1d9527733e43ded5a38aad766f9810fe7 100644 > --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml > +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml > @@ -76,6 +76,19 @@ properties: > mode-switch: true > orientation-switch: true > > + qcom,combo-initial-mode: > + description: > + Describe the initial mode of the Combo PHY configuration. > + The Combo PHY is a wrapper on top of a DP PHY and an USB3 PHY, > + sharing the same SuperSpeed lanes with either DisplayPort over > + the 4 lanes (dp), USB3 on a pair of lanes (usb3) or both > + technologies in a 2+2 configuration (usb3+dp) as default. SPecifying this as an initial mode means that it can be switched later. Should we generalize this and desribe it as bus-type (from video-interfaces.yaml) and allow it to be present only if there is no mode-switch property? > + default: usb3+dp > + enum: > + - usb3+dp > + - usb3 > + - dp > + > ports: > $ref: /schemas/graph.yaml#/properties/ports > properties: > > -- > 2.34.1 > -- With best wishes Dmitry
On 22/08/2025 12:57, Dmitry Baryshkov wrote: > On Thu, Aug 21, 2025 at 03:53:26PM +0200, Neil Armstrong wrote: >> The QMP USB3/DP Combo PHY hosts an USB3 phy and a DP PHY on top >> of a combo glue to route either lanes to the 4 shared physical lanes. >> >> The routing of the lanes can be: >> - 2 DP + 2 USB3 >> - 4 DP >> - 2 USB3 >> >> And the layout of the lanes can be swpped depending of an >> eventual USB-C connector orientation. >> >> Nevertheless those QMP Comby PHY can be statically used to >> drive a DisplayPort connector, DP->HDMI bridge, USB3 A Connector... >> >> But if a 4lanes DP->HDMI bridge is directly connected to the >> QMP Comby PHY lanes, in the default routing 2 or the 4 lanes would >> probbaly be USB3, making the DP->HDMI bridge non functional. >> >> Add a property to hint in which layout mode the QMP Comby PHY >> should be as startup. >> >> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> >> --- >> .../bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml >> index c8bc512df08b5694c8599f475de78679a4438449..129475a1d9527733e43ded5a38aad766f9810fe7 100644 >> --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml >> +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml >> @@ -76,6 +76,19 @@ properties: >> mode-switch: true >> orientation-switch: true >> >> + qcom,combo-initial-mode: >> + description: >> + Describe the initial mode of the Combo PHY configuration. >> + The Combo PHY is a wrapper on top of a DP PHY and an USB3 PHY, >> + sharing the same SuperSpeed lanes with either DisplayPort over >> + the 4 lanes (dp), USB3 on a pair of lanes (usb3) or both >> + technologies in a 2+2 configuration (usb3+dp) as default. > > SPecifying this as an initial mode means that it can be switched later. > Should we generalize this and desribe it as bus-type (from > video-interfaces.yaml) and allow it to be present only if there is no > mode-switch property? I was not sure about that, and yes we should do that instead but I'm not sure about how. bus-type sounds great, but the numbering doesn't match so I was thinking instead something like phy-type with a string or use the numbers from include/dt-bindings/phy/phy.h The thing is, do we want to keep the dual dp+usb3 as static ? I think it's very possible a board would connect the combo phy to an USB3 A connector and a 2lanes DisplayPort connector. Neil > > >> + default: usb3+dp >> + enum: >> + - usb3+dp >> + - usb3 >> + - dp >> + >> ports: >> $ref: /schemas/graph.yaml#/properties/ports >> properties: >> >> -- >> 2.34.1 >> >
On 2025/8/22 19:02:21, Neil Armstrong wrote: > On 22/08/2025 12:57, Dmitry Baryshkov wrote: >> On Thu, Aug 21, 2025 at 03:53:26PM +0200, Neil Armstrong wrote: >>> The QMP USB3/DP Combo PHY hosts an USB3 phy and a DP PHY on top >>> of a combo glue to route either lanes to the 4 shared physical lanes. >>> >>> The routing of the lanes can be: >>> - 2 DP + 2 USB3 >>> - 4 DP >>> - 2 USB3 >>> >>> And the layout of the lanes can be swpped depending of an >>> eventual USB-C connector orientation. >>> >>> Nevertheless those QMP Comby PHY can be statically used to >>> drive a DisplayPort connector, DP->HDMI bridge, USB3 A Connector... >>> >>> But if a 4lanes DP->HDMI bridge is directly connected to the >>> QMP Comby PHY lanes, in the default routing 2 or the 4 lanes would >>> probbaly be USB3, making the DP->HDMI bridge non functional. >>> >>> Add a property to hint in which layout mode the QMP Comby PHY >>> should be as startup. >>> >>> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> >>> --- >>> .../bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 13 ++ >>> +++++++++++ >>> 1 file changed, 13 insertions(+) >>> >>> diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp- >>> usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/ >>> qcom,sc8280xp-qmp-usb43dp-phy.yaml >>> index >>> c8bc512df08b5694c8599f475de78679a4438449..129475a1d9527733e43ded5a38aad766f9810fe7 100644 >>> --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp- >>> usb43dp-phy.yaml >>> +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp- >>> usb43dp-phy.yaml >>> @@ -76,6 +76,19 @@ properties: >>> mode-switch: true >>> orientation-switch: true >>> + qcom,combo-initial-mode: >>> + description: >>> + Describe the initial mode of the Combo PHY configuration. >>> + The Combo PHY is a wrapper on top of a DP PHY and an USB3 PHY, >>> + sharing the same SuperSpeed lanes with either DisplayPort over >>> + the 4 lanes (dp), USB3 on a pair of lanes (usb3) or both >>> + technologies in a 2+2 configuration (usb3+dp) as default. >> >> SPecifying this as an initial mode means that it can be switched later. >> Should we generalize this and desribe it as bus-type (from >> video-interfaces.yaml) and allow it to be present only if there is no >> mode-switch property? > > I was not sure about that, and yes we should do that instead but I'm not > sure about how. > > bus-type sounds great, but the numbering doesn't match so I was thinking > instead > something like phy-type with a string or use the numbers from include/ > dt-bindings/phy/phy.h > > The thing is, do we want to keep the dual dp+usb3 as static ? I think > it's very possible > a board would connect the combo phy to an USB3 A connector and a 2lanes > DisplayPort connector. Yes, our board (Radxa Dragon Q6A) is using such design, but with usb3 and dp lanes swapped. [1] I think this patch series could be extended to handle such configuration. Currently I just change the default orientation to reverse in qmp_combo_probe. [2] It works flawlessly. But of course, it's not an upstreamable solution :) FWIW, Rockchip usbdp phy binding [3] has a property called `rockchip,dp-lane-mux` to support such configuration. [1] https://dl.radxa.com/q6a/hw/RADXA%20Dragon%20Q6A%20V1.20%20Schematic%2020250621.pdf [2] https://github.com/strongtz/linux-next/commit/928cd166ce81aca7f8e051c72eccbd84ad896d98 [3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/Documentation/devicetree/bindings/phy/phy-rockchip-usbdp.yaml#n53 > > Neil > >> >> >>> + default: usb3+dp >>> + enum: >>> + - usb3+dp >>> + - usb3 >>> + - dp >>> + >>> ports: >>> $ref: /schemas/graph.yaml#/properties/ports >>> properties: >>> >>> -- >>> 2.34.1 >>> >> > -- Best regards, Xilin Wu <sophon@radxa.com>
On Sat, Aug 23, 2025 at 02:22:56PM +0800, Xilin Wu wrote: > On 2025/8/22 19:02:21, Neil Armstrong wrote: > > On 22/08/2025 12:57, Dmitry Baryshkov wrote: > > > On Thu, Aug 21, 2025 at 03:53:26PM +0200, Neil Armstrong wrote: > > > > The QMP USB3/DP Combo PHY hosts an USB3 phy and a DP PHY on top > > > > of a combo glue to route either lanes to the 4 shared physical lanes. > > > > > > > > The routing of the lanes can be: > > > > - 2 DP + 2 USB3 > > > > - 4 DP > > > > - 2 USB3 > > > > > > > > And the layout of the lanes can be swpped depending of an > > > > eventual USB-C connector orientation. > > > > > > > > Nevertheless those QMP Comby PHY can be statically used to > > > > drive a DisplayPort connector, DP->HDMI bridge, USB3 A Connector... > > > > > > > > But if a 4lanes DP->HDMI bridge is directly connected to the > > > > QMP Comby PHY lanes, in the default routing 2 or the 4 lanes would > > > > probbaly be USB3, making the DP->HDMI bridge non functional. > > > > > > > > Add a property to hint in which layout mode the QMP Comby PHY > > > > should be as startup. > > > > > > > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > > > > --- > > > > .../bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | > > > > 13 ++ +++++++++++ > > > > 1 file changed, 13 insertions(+) > > > > > > > > diff --git > > > > a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp- > > > > usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/ > > > > qcom,sc8280xp-qmp-usb43dp-phy.yaml > > > > index c8bc512df08b5694c8599f475de78679a4438449..129475a1d9527733e43ded5a38aad766f9810fe7 > > > > 100644 > > > > --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp- > > > > usb43dp-phy.yaml > > > > +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp- > > > > usb43dp-phy.yaml > > > > @@ -76,6 +76,19 @@ properties: > > > > mode-switch: true > > > > orientation-switch: true > > > > + qcom,combo-initial-mode: > > > > + description: > > > > + Describe the initial mode of the Combo PHY configuration. > > > > + The Combo PHY is a wrapper on top of a DP PHY and an USB3 PHY, > > > > + sharing the same SuperSpeed lanes with either DisplayPort over > > > > + the 4 lanes (dp), USB3 on a pair of lanes (usb3) or both > > > > + technologies in a 2+2 configuration (usb3+dp) as default. > > > > > > SPecifying this as an initial mode means that it can be switched later. > > > Should we generalize this and desribe it as bus-type (from > > > video-interfaces.yaml) and allow it to be present only if there is no > > > mode-switch property? > > > > I was not sure about that, and yes we should do that instead but I'm not > > sure about how. > > > > bus-type sounds great, but the numbering doesn't match so I was thinking > > instead > > something like phy-type with a string or use the numbers from include/ > > dt-bindings/phy/phy.h > > > > The thing is, do we want to keep the dual dp+usb3 as static ? I think > > it's very possible > > a board would connect the combo phy to an USB3 A connector and a 2lanes > > DisplayPort connector. > > Yes, our board (Radxa Dragon Q6A) is using such design, but with usb3 and dp > lanes swapped. [1] I think this patch series could be extended to handle > such configuration. > > Currently I just change the default orientation to reverse in > qmp_combo_probe. [2] It works flawlessly. But of course, it's not an > upstreamable solution :) I thought about using data-lanes in the QMP PHY, but then I realised that there is no way to use that property to correctly describe all these variants. So, I think it should be the bus-type of some kind. > > FWIW, Rockchip usbdp phy binding [3] has a property called > `rockchip,dp-lane-mux` to support such configuration. > > [1] https://dl.radxa.com/q6a/hw/RADXA%20Dragon%20Q6A%20V1.20%20Schematic%2020250621.pdf > > [2] https://github.com/strongtz/linux-next/commit/928cd166ce81aca7f8e051c72eccbd84ad896d98 > > [3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/Documentation/devicetree/bindings/phy/phy-rockchip-usbdp.yaml#n53 > > > > > Neil > > > > > > > > > > > > + default: usb3+dp > > > > + enum: > > > > + - usb3+dp > > > > + - usb3 > > > > + - dp > > > > + > > > > ports: > > > > $ref: /schemas/graph.yaml#/properties/ports > > > > properties: > > > > > > > > -- > > > > 2.34.1 > > > > > > > > > > > > -- > Best regards, > Xilin Wu <sophon@radxa.com> -- With best wishes Dmitry
On Fri, Aug 22, 2025 at 01:02:21PM +0200, Neil Armstrong wrote: > On 22/08/2025 12:57, Dmitry Baryshkov wrote: > > On Thu, Aug 21, 2025 at 03:53:26PM +0200, Neil Armstrong wrote: > > > The QMP USB3/DP Combo PHY hosts an USB3 phy and a DP PHY on top > > > of a combo glue to route either lanes to the 4 shared physical lanes. > > > > > > The routing of the lanes can be: > > > - 2 DP + 2 USB3 > > > - 4 DP > > > - 2 USB3 > > > > > > And the layout of the lanes can be swpped depending of an > > > eventual USB-C connector orientation. > > > > > > Nevertheless those QMP Comby PHY can be statically used to > > > drive a DisplayPort connector, DP->HDMI bridge, USB3 A Connector... > > > > > > But if a 4lanes DP->HDMI bridge is directly connected to the > > > QMP Comby PHY lanes, in the default routing 2 or the 4 lanes would > > > probbaly be USB3, making the DP->HDMI bridge non functional. > > > > > > Add a property to hint in which layout mode the QMP Comby PHY > > > should be as startup. > > > > > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > > > --- > > > .../bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 13 +++++++++++++ > > > 1 file changed, 13 insertions(+) > > > > > > diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml > > > index c8bc512df08b5694c8599f475de78679a4438449..129475a1d9527733e43ded5a38aad766f9810fe7 100644 > > > --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml > > > +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml > > > @@ -76,6 +76,19 @@ properties: > > > mode-switch: true > > > orientation-switch: true > > > + qcom,combo-initial-mode: > > > + description: > > > + Describe the initial mode of the Combo PHY configuration. > > > + The Combo PHY is a wrapper on top of a DP PHY and an USB3 PHY, > > > + sharing the same SuperSpeed lanes with either DisplayPort over > > > + the 4 lanes (dp), USB3 on a pair of lanes (usb3) or both > > > + technologies in a 2+2 configuration (usb3+dp) as default. > > > > SPecifying this as an initial mode means that it can be switched later. > > Should we generalize this and desribe it as bus-type (from > > video-interfaces.yaml) and allow it to be present only if there is no > > mode-switch property? > > I was not sure about that, and yes we should do that instead but I'm not > sure about how. > > bus-type sounds great, but the numbering doesn't match so I was thinking instead > something like phy-type with a string or use the numbers from include/dt-bindings/phy/phy.h Well... we can add more entries there and map them in the driver. > > The thing is, do we want to keep the dual dp+usb3 as static ? I think it's very possible > a board would connect the combo phy to an USB3 A connector and a 2lanes DisplayPort connector. I'm not sure I follow the question. Could you please explain what you've meant here? -- With best wishes Dmitry
© 2016 - 2025 Red Hat, Inc.