* [PATCH RFC 0/3] phy: qcom: qmp-combo: set default qmpphy_mode from DT for Thinkpad HDMI support
@ 2025-08-21 13:53 Neil Armstrong
2025-08-21 13:53 ` [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode Neil Armstrong
` (2 more replies)
0 siblings, 3 replies; 15+ messages in thread
From: Neil Armstrong @ 2025-08-21 13:53 UTC (permalink / raw)
To: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel,
Neil Armstrong
The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
connected to the third QMP Combo PHY 4 lanes.
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.
Support the property set set in which layout mode the QMP Comby PHY
should be as startup.
Finally Add all the data routing in DT, disable mode switching and specify
the QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
the underlying DP phy.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
Neil Armstrong (3):
dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode
phy: qcom: qmp-combo: get default qmpphy_mode from DT
arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes
.../phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 13 +++++++
.../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 20 +++++++++-
3 files changed, 76 insertions(+), 1 deletion(-)
---
base-commit: 7fa4d8dc380fbd81a9d702a855c50690c9c6442c
change-id: 20250821-topic-x1e80100-hdmi-3bd5b5bd2d96
Best regards,
--
Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode
2025-08-21 13:53 [PATCH RFC 0/3] phy: qcom: qmp-combo: set default qmpphy_mode from DT for Thinkpad HDMI support Neil Armstrong
@ 2025-08-21 13:53 ` Neil Armstrong
2025-08-22 10:57 ` Dmitry Baryshkov
2025-08-21 13:53 ` [PATCH RFC 2/3] phy: qcom: qmp-combo: get default qmpphy_mode from DT Neil Armstrong
2025-08-21 13:53 ` [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes Neil Armstrong
2 siblings, 1 reply; 15+ messages in thread
From: Neil Armstrong @ 2025-08-21 13:53 UTC (permalink / raw)
To: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel,
Neil Armstrong
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
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH RFC 2/3] phy: qcom: qmp-combo: get default qmpphy_mode from DT
2025-08-21 13:53 [PATCH RFC 0/3] phy: qcom: qmp-combo: set default qmpphy_mode from DT for Thinkpad HDMI support Neil Armstrong
2025-08-21 13:53 ` [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode Neil Armstrong
@ 2025-08-21 13:53 ` Neil Armstrong
2025-08-21 13:53 ` [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes Neil Armstrong
2 siblings, 0 replies; 15+ messages in thread
From: Neil Armstrong @ 2025-08-21 13:53 UTC (permalink / raw)
To: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel,
Neil Armstrong
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.
Support the property to set in which layout mode the QMP Comby PHY
should be as startup.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
index 7b5af30f1d028c592500e723ecd27b54ed554709..622db8a204d3c7c95f110e59cab96b07eadabade 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c
@@ -4117,13 +4117,19 @@ static struct phy *qmp_combo_phy_xlate(struct device *dev, const struct of_phand
return ERR_PTR(-EINVAL);
}
+static const char * const qmpphy_mode_str[] = {
+ [QMPPHY_MODE_USB3DP] = "usb3+dp",
+ [QMPPHY_MODE_DP_ONLY] = "dp",
+ [QMPPHY_MODE_USB3_ONLY] = "usb3",
+};
+
static int qmp_combo_probe(struct platform_device *pdev)
{
struct qmp_combo *qmp;
struct device *dev = &pdev->dev;
struct device_node *dp_np, *usb_np;
struct phy_provider *phy_provider;
- int ret;
+ int ret, i;
qmp = devm_kzalloc(dev, sizeof(*qmp), GFP_KERNEL);
if (!qmp)
@@ -4195,6 +4201,18 @@ static int qmp_combo_probe(struct platform_device *pdev)
*/
qmp->qmpphy_mode = QMPPHY_MODE_USB3DP;
+ /* Replace with DT provided mode */
+ if (of_find_property(dev->of_node, "qcom,combo-initial-mode", NULL)) {
+ for (i = 0; i < ARRAY_SIZE(qmpphy_mode_str); ++i) {
+ ret = of_property_match_string(dev->of_node, "qcom,combo-initial-mode",
+ qmpphy_mode_str[i]);
+ if (!ret) {
+ qmp->qmpphy_mode = i;
+ break;
+ }
+ }
+ }
+
qmp->usb_phy = devm_phy_create(dev, usb_np, &qmp_combo_usb_phy_ops);
if (IS_ERR(qmp->usb_phy)) {
ret = PTR_ERR(qmp->usb_phy);
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes
2025-08-21 13:53 [PATCH RFC 0/3] phy: qcom: qmp-combo: set default qmpphy_mode from DT for Thinkpad HDMI support Neil Armstrong
2025-08-21 13:53 ` [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode Neil Armstrong
2025-08-21 13:53 ` [PATCH RFC 2/3] phy: qcom: qmp-combo: get default qmpphy_mode from DT Neil Armstrong
@ 2025-08-21 13:53 ` Neil Armstrong
2025-08-22 11:01 ` Dmitry Baryshkov
2 siblings, 1 reply; 15+ messages in thread
From: Neil Armstrong @ 2025-08-21 13:53 UTC (permalink / raw)
To: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio
Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel,
Neil Armstrong
The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
connected to the third QMP Combo PHY 4 lanes.
Add all the data routing, disable mode switching and specify the
QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
the underlying DP phy.
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
.../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
index 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644
--- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
@@ -62,6 +62,20 @@ switch-lid {
};
};
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
+ pinctrl-0 = <&hdmi_hpd_default>;
+ pinctrl-names = "default";
+
+ port {
+ hdmi_con: endpoint {
+ remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+ };
+ };
+ };
+
pmic-glink {
compatible = "qcom,x1e80100-pmic-glink",
"qcom,sm8550-pmic-glink",
@@ -1007,6 +1021,14 @@ &mdss_dp1_out {
link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
};
+&mdss_dp2 {
+ status = "okay";
+};
+
+&mdss_dp2_out {
+ data-lanes = <0 1 2 3>;
+};
+
&mdss_dp3 {
/delete-property/ #sound-dai-cells;
@@ -1263,6 +1285,12 @@ &tlmm {
<72 2>, /* Secure EC I2C connection (?) */
<238 1>; /* UFS Reset */
+ hdmi_hpd_default: hdmi-hpd-default-state {
+ pins = "gpio126";
+ function = "usb2_dp";
+ bias-disable;
+ };
+
eusb3_reset_n: eusb3-reset-n-state {
pins = "gpio6";
function = "gpio";
@@ -1486,6 +1514,22 @@ &usb_1_ss0_qmpphy_out {
remote-endpoint = <&retimer_ss0_ss_in>;
};
+&usb_1_ss2_qmpphy {
+ vdda-phy-supply = <&vreg_l2j_1p2>;
+ vdda-pll-supply = <&vreg_l2d_0p9>;
+
+ qcom,combo-initial-mode = "dp";
+
+ /delete-property/ mode-switch;
+ /delete-property/ orientation-switch;
+
+ status = "okay";
+};
+
+&usb_1_ss2_qmpphy_out {
+ remote-endpoint = <&hdmi_con>;
+};
+
&usb_1_ss1_hsphy {
vdd-supply = <&vreg_l3j_0p8>;
vdda12-supply = <&vreg_l2j_1p2>;
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode
2025-08-21 13:53 ` [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode Neil Armstrong
@ 2025-08-22 10:57 ` Dmitry Baryshkov
2025-08-22 11:02 ` Neil Armstrong
0 siblings, 1 reply; 15+ messages in thread
From: Dmitry Baryshkov @ 2025-08-22 10:57 UTC (permalink / raw)
To: Neil Armstrong
Cc: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
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
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes
2025-08-21 13:53 ` [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes Neil Armstrong
@ 2025-08-22 11:01 ` Dmitry Baryshkov
2025-08-22 11:02 ` Neil Armstrong
2025-08-22 11:45 ` Stephan Gerhold
0 siblings, 2 replies; 15+ messages in thread
From: Dmitry Baryshkov @ 2025-08-22 11:01 UTC (permalink / raw)
To: Neil Armstrong
Cc: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote:
> The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
> connected to the third QMP Combo PHY 4 lanes.
>
> Add all the data routing, disable mode switching and specify the
> QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
> the underlying DP phy.
>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> ---
> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
> 1 file changed, 44 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> index 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644
> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> @@ -62,6 +62,20 @@ switch-lid {
> };
> };
>
> +
> + hdmi-connector {
> + compatible = "hdmi-connector";
> + type = "a";
> + pinctrl-0 = <&hdmi_hpd_default>;
> + pinctrl-names = "default";
If this is a DP HPD signal, it should be a part of the DP device.
> +
> + port {
> + hdmi_con: endpoint {
> + remote-endpoint = <&usb_1_ss2_qmpphy_out>;
Please describe the transparent bridge too. It can be covered by the
simple-bridge.yaml / simple-bridge.c
> + };
> + };
> + };
> +
> pmic-glink {
> compatible = "qcom,x1e80100-pmic-glink",
> "qcom,sm8550-pmic-glink",
> @@ -1007,6 +1021,14 @@ &mdss_dp1_out {
> link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
> };
>
> +&mdss_dp2 {
> + status = "okay";
> +};
> +
> +&mdss_dp2_out {
> + data-lanes = <0 1 2 3>;
> +};
> +
> &mdss_dp3 {
> /delete-property/ #sound-dai-cells;
>
> @@ -1263,6 +1285,12 @@ &tlmm {
> <72 2>, /* Secure EC I2C connection (?) */
> <238 1>; /* UFS Reset */
>
> + hdmi_hpd_default: hdmi-hpd-default-state {
> + pins = "gpio126";
> + function = "usb2_dp";
> + bias-disable;
> + };
> +
> eusb3_reset_n: eusb3-reset-n-state {
> pins = "gpio6";
> function = "gpio";
> @@ -1486,6 +1514,22 @@ &usb_1_ss0_qmpphy_out {
> remote-endpoint = <&retimer_ss0_ss_in>;
> };
>
> +&usb_1_ss2_qmpphy {
> + vdda-phy-supply = <&vreg_l2j_1p2>;
> + vdda-pll-supply = <&vreg_l2d_0p9>;
> +
> + qcom,combo-initial-mode = "dp";
> +
> + /delete-property/ mode-switch;
> + /delete-property/ orientation-switch;
> +
> + status = "okay";
> +};
> +
> +&usb_1_ss2_qmpphy_out {
> + remote-endpoint = <&hdmi_con>;
> +};
> +
> &usb_1_ss1_hsphy {
> vdd-supply = <&vreg_l3j_0p8>;
> vdda12-supply = <&vreg_l2j_1p2>;
>
> --
> 2.34.1
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode
2025-08-22 10:57 ` Dmitry Baryshkov
@ 2025-08-22 11:02 ` Neil Armstrong
2025-08-22 11:39 ` Dmitry Baryshkov
2025-08-23 6:22 ` Xilin Wu
0 siblings, 2 replies; 15+ messages in thread
From: Neil Armstrong @ 2025-08-22 11:02 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
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
>>
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes
2025-08-22 11:01 ` Dmitry Baryshkov
@ 2025-08-22 11:02 ` Neil Armstrong
2025-08-22 11:40 ` Dmitry Baryshkov
2025-08-22 11:45 ` Stephan Gerhold
1 sibling, 1 reply; 15+ messages in thread
From: Neil Armstrong @ 2025-08-22 11:02 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
On 22/08/2025 13:01, Dmitry Baryshkov wrote:
> On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote:
>> The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
>> connected to the third QMP Combo PHY 4 lanes.
>>
>> Add all the data routing, disable mode switching and specify the
>> QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
>> the underlying DP phy.
>>
>> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
>> ---
>> .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
>> 1 file changed, 44 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
>> index 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644
>> --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
>> @@ -62,6 +62,20 @@ switch-lid {
>> };
>> };
>>
>> +
>> + hdmi-connector {
>> + compatible = "hdmi-connector";
>> + type = "a";
>> + pinctrl-0 = <&hdmi_hpd_default>;
>> + pinctrl-names = "default";
>
> If this is a DP HPD signal, it should be a part of the DP device.
>
>> +
>> + port {
>> + hdmi_con: endpoint {
>> + remote-endpoint = <&usb_1_ss2_qmpphy_out>;
>
> Please describe the transparent bridge too. It can be covered by the
> simple-bridge.yaml / simple-bridge.c
Ack, indeed it could take the pinctrl thing.
Neil
>
>
>> + };
>> + };
>> + };
>> +
>> pmic-glink {
>> compatible = "qcom,x1e80100-pmic-glink",
>> "qcom,sm8550-pmic-glink",
>> @@ -1007,6 +1021,14 @@ &mdss_dp1_out {
>> link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
>> };
>>
>> +&mdss_dp2 {
>> + status = "okay";
>> +};
>> +
>> +&mdss_dp2_out {
>> + data-lanes = <0 1 2 3>;
>> +};
>> +
>> &mdss_dp3 {
>> /delete-property/ #sound-dai-cells;
>>
>> @@ -1263,6 +1285,12 @@ &tlmm {
>> <72 2>, /* Secure EC I2C connection (?) */
>> <238 1>; /* UFS Reset */
>>
>> + hdmi_hpd_default: hdmi-hpd-default-state {
>> + pins = "gpio126";
>> + function = "usb2_dp";
>> + bias-disable;
>> + };
>> +
>> eusb3_reset_n: eusb3-reset-n-state {
>> pins = "gpio6";
>> function = "gpio";
>> @@ -1486,6 +1514,22 @@ &usb_1_ss0_qmpphy_out {
>> remote-endpoint = <&retimer_ss0_ss_in>;
>> };
>>
>> +&usb_1_ss2_qmpphy {
>> + vdda-phy-supply = <&vreg_l2j_1p2>;
>> + vdda-pll-supply = <&vreg_l2d_0p9>;
>> +
>> + qcom,combo-initial-mode = "dp";
>> +
>> + /delete-property/ mode-switch;
>> + /delete-property/ orientation-switch;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss2_qmpphy_out {
>> + remote-endpoint = <&hdmi_con>;
>> +};
>> +
>> &usb_1_ss1_hsphy {
>> vdd-supply = <&vreg_l3j_0p8>;
>> vdda12-supply = <&vreg_l2j_1p2>;
>>
>> --
>> 2.34.1
>>
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode
2025-08-22 11:02 ` Neil Armstrong
@ 2025-08-22 11:39 ` Dmitry Baryshkov
2025-08-23 6:22 ` Xilin Wu
1 sibling, 0 replies; 15+ messages in thread
From: Dmitry Baryshkov @ 2025-08-22 11:39 UTC (permalink / raw)
To: Neil Armstrong
Cc: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
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
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes
2025-08-22 11:02 ` Neil Armstrong
@ 2025-08-22 11:40 ` Dmitry Baryshkov
0 siblings, 0 replies; 15+ messages in thread
From: Dmitry Baryshkov @ 2025-08-22 11:40 UTC (permalink / raw)
To: Neil Armstrong
Cc: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
On Fri, Aug 22, 2025 at 01:02:56PM +0200, Neil Armstrong wrote:
> On 22/08/2025 13:01, Dmitry Baryshkov wrote:
> > On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote:
> > > The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
> > > connected to the third QMP Combo PHY 4 lanes.
> > >
> > > Add all the data routing, disable mode switching and specify the
> > > QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
> > > the underlying DP phy.
> > >
> > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> > > ---
> > > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
> > > 1 file changed, 44 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > index 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644
> > > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > @@ -62,6 +62,20 @@ switch-lid {
> > > };
> > > };
> > > +
> > > + hdmi-connector {
> > > + compatible = "hdmi-connector";
> > > + type = "a";
> > > + pinctrl-0 = <&hdmi_hpd_default>;
> > > + pinctrl-names = "default";
> >
> > If this is a DP HPD signal, it should be a part of the DP device.
> >
> > > +
> > > + port {
> > > + hdmi_con: endpoint {
> > > + remote-endpoint = <&usb_1_ss2_qmpphy_out>;
> >
> > Please describe the transparent bridge too. It can be covered by the
> > simple-bridge.yaml / simple-bridge.c
>
> Ack, indeed it could take the pinctrl thing.
Pinctrl, enables, etc.
But from my POV the HPD pin should be a part of the DP controller
itself.
>
> Neil
>
> >
> >
> > > + };
> > > + };
> > > + };
> > > +
> > > pmic-glink {
> > > compatible = "qcom,x1e80100-pmic-glink",
> > > "qcom,sm8550-pmic-glink",
> > > @@ -1007,6 +1021,14 @@ &mdss_dp1_out {
> > > link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
> > > };
> > > +&mdss_dp2 {
> > > + status = "okay";
> > > +};
> > > +
> > > +&mdss_dp2_out {
> > > + data-lanes = <0 1 2 3>;
> > > +};
> > > +
> > > &mdss_dp3 {
> > > /delete-property/ #sound-dai-cells;
> > > @@ -1263,6 +1285,12 @@ &tlmm {
> > > <72 2>, /* Secure EC I2C connection (?) */
> > > <238 1>; /* UFS Reset */
> > > + hdmi_hpd_default: hdmi-hpd-default-state {
> > > + pins = "gpio126";
> > > + function = "usb2_dp";
> > > + bias-disable;
> > > + };
> > > +
> > > eusb3_reset_n: eusb3-reset-n-state {
> > > pins = "gpio6";
> > > function = "gpio";
> > > @@ -1486,6 +1514,22 @@ &usb_1_ss0_qmpphy_out {
> > > remote-endpoint = <&retimer_ss0_ss_in>;
> > > };
> > > +&usb_1_ss2_qmpphy {
> > > + vdda-phy-supply = <&vreg_l2j_1p2>;
> > > + vdda-pll-supply = <&vreg_l2d_0p9>;
> > > +
> > > + qcom,combo-initial-mode = "dp";
> > > +
> > > + /delete-property/ mode-switch;
> > > + /delete-property/ orientation-switch;
> > > +
> > > + status = "okay";
> > > +};
> > > +
> > > +&usb_1_ss2_qmpphy_out {
> > > + remote-endpoint = <&hdmi_con>;
> > > +};
> > > +
> > > &usb_1_ss1_hsphy {
> > > vdd-supply = <&vreg_l3j_0p8>;
> > > vdda12-supply = <&vreg_l2j_1p2>;
> > >
> > > --
> > > 2.34.1
> > >
> >
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes
2025-08-22 11:01 ` Dmitry Baryshkov
2025-08-22 11:02 ` Neil Armstrong
@ 2025-08-22 11:45 ` Stephan Gerhold
2025-08-22 11:57 ` Dmitry Baryshkov
1 sibling, 1 reply; 15+ messages in thread
From: Stephan Gerhold @ 2025-08-22 11:45 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Neil Armstrong, Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
On Fri, Aug 22, 2025 at 02:01:30PM +0300, Dmitry Baryshkov wrote:
> On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote:
> > The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
> > connected to the third QMP Combo PHY 4 lanes.
> >
> > Add all the data routing, disable mode switching and specify the
> > QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
> > the underlying DP phy.
> >
> > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> > ---
> > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
> > 1 file changed, 44 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > index 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644
> > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > @@ -62,6 +62,20 @@ switch-lid {
> > };
> > };
> >
> > +
> > + hdmi-connector {
> > + compatible = "hdmi-connector";
> > + type = "a";
> > + pinctrl-0 = <&hdmi_hpd_default>;
> > + pinctrl-names = "default";
> [...]
> > +
> > + port {
> > + hdmi_con: endpoint {
> > + remote-endpoint = <&usb_1_ss2_qmpphy_out>;
>
> Please describe the transparent bridge too. It can be covered by the
> simple-bridge.yaml / simple-bridge.c
>
I think this isn't the case here(?), but how are we going to handle
devices where we don't know which bridge chip is used? I've seen at
least 3 or 4 different chips already across all X1E laptops and we don't
have schematics for most of them.
Thanks,
Stephan
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes
2025-08-22 11:45 ` Stephan Gerhold
@ 2025-08-22 11:57 ` Dmitry Baryshkov
2025-08-22 12:20 ` Stephan Gerhold
0 siblings, 1 reply; 15+ messages in thread
From: Dmitry Baryshkov @ 2025-08-22 11:57 UTC (permalink / raw)
To: Stephan Gerhold
Cc: Neil Armstrong, Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
On Fri, Aug 22, 2025 at 01:45:38PM +0200, Stephan Gerhold wrote:
> On Fri, Aug 22, 2025 at 02:01:30PM +0300, Dmitry Baryshkov wrote:
> > On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote:
> > > The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
> > > connected to the third QMP Combo PHY 4 lanes.
> > >
> > > Add all the data routing, disable mode switching and specify the
> > > QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
> > > the underlying DP phy.
> > >
> > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> > > ---
> > > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
> > > 1 file changed, 44 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > index 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644
> > > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > @@ -62,6 +62,20 @@ switch-lid {
> > > };
> > > };
> > >
> > > +
> > > + hdmi-connector {
> > > + compatible = "hdmi-connector";
> > > + type = "a";
> > > + pinctrl-0 = <&hdmi_hpd_default>;
> > > + pinctrl-names = "default";
> > [...]
> > > +
> > > + port {
> > > + hdmi_con: endpoint {
> > > + remote-endpoint = <&usb_1_ss2_qmpphy_out>;
> >
> > Please describe the transparent bridge too. It can be covered by the
> > simple-bridge.yaml / simple-bridge.c
> >
>
> I think this isn't the case here(?), but how are we going to handle
> devices where we don't know which bridge chip is used? I've seen at
> least 3 or 4 different chips already across all X1E laptops and we don't
> have schematics for most of them.
Open the case, inspect the board, identify the chip. Everything is as
usual.
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes
2025-08-22 11:57 ` Dmitry Baryshkov
@ 2025-08-22 12:20 ` Stephan Gerhold
0 siblings, 0 replies; 15+ messages in thread
From: Stephan Gerhold @ 2025-08-22 12:20 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Neil Armstrong, Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
On Fri, Aug 22, 2025 at 02:57:24PM +0300, Dmitry Baryshkov wrote:
> On Fri, Aug 22, 2025 at 01:45:38PM +0200, Stephan Gerhold wrote:
> > On Fri, Aug 22, 2025 at 02:01:30PM +0300, Dmitry Baryshkov wrote:
> > > On Thu, Aug 21, 2025 at 03:53:28PM +0200, Neil Armstrong wrote:
> > > > The Thinkpad T14s embeds a transparent 4lanes DP->HDMI transceiver
> > > > connected to the third QMP Combo PHY 4 lanes.
> > > >
> > > > Add all the data routing, disable mode switching and specify the
> > > > QMP Combo PHY should be in DP-Only mode to route the 4 lanes to
> > > > the underlying DP phy.
> > > >
> > > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> > > > ---
> > > > .../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 44 ++++++++++++++++++++++
> > > > 1 file changed, 44 insertions(+)
> > > >
> > > > diff --git a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > > index 4cf61c2a34e31233b1adc93332bcabef22de3f86..5b62b8c3123633360f249e3ecdc8ea23f44e8e09 100644
> > > > --- a/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > > +++ b/arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
> > > > @@ -62,6 +62,20 @@ switch-lid {
> > > > };
> > > > };
> > > >
> > > > +
> > > > + hdmi-connector {
> > > > + compatible = "hdmi-connector";
> > > > + type = "a";
> > > > + pinctrl-0 = <&hdmi_hpd_default>;
> > > > + pinctrl-names = "default";
> > > [...]
> > > > +
> > > > + port {
> > > > + hdmi_con: endpoint {
> > > > + remote-endpoint = <&usb_1_ss2_qmpphy_out>;
> > >
> > > Please describe the transparent bridge too. It can be covered by the
> > > simple-bridge.yaml / simple-bridge.c
> > >
> >
> > I think this isn't the case here(?), but how are we going to handle
> > devices where we don't know which bridge chip is used? I've seen at
> > least 3 or 4 different chips already across all X1E laptops and we don't
> > have schematics for most of them.
>
> Open the case, inspect the board, identify the chip. Everything is as
> usual.
>
The chip might not have any visible identifier. :-) But I guess there is
no point theorizing about such potential issues now. We'll see. I agree
it would be cleaner to have the bridges modelled.
Thanks,
Stephan
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode
2025-08-22 11:02 ` Neil Armstrong
2025-08-22 11:39 ` Dmitry Baryshkov
@ 2025-08-23 6:22 ` Xilin Wu
2025-08-23 14:02 ` Dmitry Baryshkov
1 sibling, 1 reply; 15+ messages in thread
From: Xilin Wu @ 2025-08-23 6:22 UTC (permalink / raw)
To: Neil Armstrong, Dmitry Baryshkov
Cc: Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
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>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode
2025-08-23 6:22 ` Xilin Wu
@ 2025-08-23 14:02 ` Dmitry Baryshkov
0 siblings, 0 replies; 15+ messages in thread
From: Dmitry Baryshkov @ 2025-08-23 14:02 UTC (permalink / raw)
To: Xilin Wu
Cc: Neil Armstrong, Vinod Koul, Kishon Vijay Abraham I, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio,
linux-arm-msm, linux-phy, devicetree, linux-kernel
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
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2025-08-23 14:02 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-21 13:53 [PATCH RFC 0/3] phy: qcom: qmp-combo: set default qmpphy_mode from DT for Thinkpad HDMI support Neil Armstrong
2025-08-21 13:53 ` [PATCH RFC 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document default phy mode Neil Armstrong
2025-08-22 10:57 ` Dmitry Baryshkov
2025-08-22 11:02 ` Neil Armstrong
2025-08-22 11:39 ` Dmitry Baryshkov
2025-08-23 6:22 ` Xilin Wu
2025-08-23 14:02 ` Dmitry Baryshkov
2025-08-21 13:53 ` [PATCH RFC 2/3] phy: qcom: qmp-combo: get default qmpphy_mode from DT Neil Armstrong
2025-08-21 13:53 ` [PATCH RFC 3/3] arm64: dts: qcom: x1e78100-lenovo-thinkpad-t14s: add HDMI nodes Neil Armstrong
2025-08-22 11:01 ` Dmitry Baryshkov
2025-08-22 11:02 ` Neil Armstrong
2025-08-22 11:40 ` Dmitry Baryshkov
2025-08-22 11:45 ` Stephan Gerhold
2025-08-22 11:57 ` Dmitry Baryshkov
2025-08-22 12:20 ` Stephan Gerhold
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).