[PATCH] arm64: dts: qcom: qrb2210-arduino-imola: describe DSI / DP bridge

Dmitry Baryshkov posted 1 patch 2 months ago
There is a newer version of this series
arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts | 112 +++++++++++++++++++++
1 file changed, 112 insertions(+)
[PATCH] arm64: dts: qcom: qrb2210-arduino-imola: describe DSI / DP bridge
Posted by Dmitry Baryshkov 2 months ago
Aruino Uno-Q uses Analogix ANX7625 DSI-to-DP bridge to convert DSI
signals to the connected USB-C DisplayPort dongles. Decribe the chip,
USB-C connector and routing of USB and display signals.

Co-developed-by: Martino Facchin <m.facchin@arduino.cc>
Signed-off-by: Martino Facchin <m.facchin@arduino.cc>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
Note, to function correctly this patch depends on several patch series,
fixing the ANX7625 driver:

- https://lore.kernel.org/r/20251218151307.95491-1-loic.poulain@oss.qualcomm.com/
  (part of 7.0-rc1)

- https://lore.kernel.org/r/20260121-anx7625-typec-v2-0-d14f31256a17@oss.qualcomm.com/
  (part of drm-misc-next, to be landed in 7.1)

- https://lore.kernel.org/r/20260211-anx7625-fix-pd-v1-1-1dd31451b06f@oss.qualcomm.com/
  (recently submitted, hopefully to land in 7.1)
---
 arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts | 112 +++++++++++++++++++++
 1 file changed, 112 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
index 197ab6eb1666..ba3f0c74e814 100644
--- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
+++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
@@ -6,6 +6,7 @@
 /dts-v1/;
 
 #include <dt-bindings/leds/common.h>
+#include <dt-bindings/usb/pd.h>
 #include "agatti.dtsi"
 #include "pm4125.dtsi"
 
@@ -109,6 +110,16 @@ multi-led {
 		leds = <&ledr>, <&ledg>, <&ledb>;
 	};
 
+	vreg_anx_30: regulator-anx-30 {
+		/* ANX7625 VDD3 */
+		compatible = "regulator-fixed";
+		regulator-name = "anx30";
+		regulator-min-microvolt = <3000000>;
+		regulator-max-microvolt = <3000000>;
+		regulator-always-on;
+		regulator-boot-on;
+	};
+
 	/* PM4125 charger out, supplied by VBAT */
 	vph_pwr: regulator-vph-pwr {
 		compatible = "regulator-fixed";
@@ -142,6 +153,83 @@ &i2c1 {
 	clock-frequency = <100000>;
 
 	status = "okay";
+
+	anx7625: encoder@58 {
+		compatible = "analogix,anx7625";
+		reg = <0x58>;
+		interrupts-extended = <&tlmm 81 IRQ_TYPE_EDGE_FALLING>;
+		vdd10-supply = <&pm4125_l11>;
+		vdd18-supply = <&pm4125_l15>;
+		vdd33-supply = <&vreg_anx_30>;
+		analogix,audio-enable;
+		analogix,lane0-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
+		analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
+
+		pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>;
+
+		connector {
+			compatible = "usb-c-connector";
+			power-role = "sink";
+			data-role = "dual";
+			try-power-role = "sink";
+
+			pd-revision = /bits/ 8 <0x03 0x00 0x00 0x00>;
+			op-sink-microwatt = <15000000>;
+			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+				     PDO_VAR(5000, 20000, 3000)>;
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port@0 {
+					reg = <0>;
+					anx_hs_in: endpoint {
+						remote-endpoint = <&usb_dwc3_hs>;
+					};
+				};
+
+				port@1 {
+					reg = <1>;
+					anx_ss_in: endpoint {
+						remote-endpoint = <&usb_qmpphy_out>;
+					};
+				};
+			};
+		};
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+				anx_dsi0_in: endpoint {
+					remote-endpoint = <&mdss_dsi0_out>;
+					data-lanes = <0 1 2 3>;
+				};
+			};
+		};
+	};
+};
+
+&mdss {
+	status = "okay";
+};
+
+&mdss_dsi0 {
+	vdda-supply = <&pm4125_l5>;
+
+	status = "okay";
+};
+
+&mdss_dsi0_out {
+	remote-endpoint = <&anx_dsi0_in>;
+	data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+	status = "okay";
 };
 
 &pm4125_vbus {
@@ -361,6 +449,22 @@ key_vold_n: key-vold-n-state {
 		output-disable;
 	};
 
+	anx7625_cable_det_pin: anx7625-cable-det-pins-state {
+		pins = "gpio46";
+		function = "gpio";
+		drive-strength = <16>;
+		output-disable;
+		bias-pull-up;
+	};
+
+	anx7625_int_pin: anx7625-int-pins-state {
+		pins = "gpio81";
+		function = "gpio";
+		drive-strength = <16>;
+		output-disable;
+		bias-pull-up;
+	};
+
 	key_volp_n: key-volp-n-state {
 		pins = "gpio96";
 		function = "gpio";
@@ -428,6 +532,10 @@ &usb {
 	status = "okay";
 };
 
+&usb_dwc3_hs {
+	remote-endpoint = <&anx_hs_in>;
+};
+
 &usb_hsphy {
 	vdd-supply = <&pm4125_l12>;
 	vdda-pll-supply = <&pm4125_l13>;
@@ -443,6 +551,10 @@ &usb_qmpphy {
 	status = "okay";
 };
 
+&usb_qmpphy_out {
+	remote-endpoint = <&anx_ss_in>;
+};
+
 &wifi {
 	vdd-0.8-cx-mx-supply = <&pm4125_l7>;
 	vdd-1.8-xo-supply = <&pm4125_l13>;

---
base-commit: 9845cf73f7db6094c0d8419d6adb848028f4a921
change-id: 20260211-uno-q-anx7625-26f8fa8360ca

Best regards,
-- 
With best wishes
Dmitry
Re: [PATCH] arm64: dts: qcom: qrb2210-arduino-imola: describe DSI / DP bridge
Posted by Konrad Dybcio 2 months ago
On 2/11/26 10:28 AM, Dmitry Baryshkov wrote:
> Aruino Uno-Q uses Analogix ANX7625 DSI-to-DP bridge to convert DSI
> signals to the connected USB-C DisplayPort dongles. Decribe the chip,
> USB-C connector and routing of USB and display signals.
> 
> Co-developed-by: Martino Facchin <m.facchin@arduino.cc>
> Signed-off-by: Martino Facchin <m.facchin@arduino.cc>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---

[...]

>  #include <dt-bindings/leds/common.h>
> +#include <dt-bindings/usb/pd.h>
>  #include "agatti.dtsi"
>  #include "pm4125.dtsi"
>  
> @@ -109,6 +110,16 @@ multi-led {
>  		leds = <&ledr>, <&ledg>, <&ledb>;
>  	};
>  
> +	vreg_anx_30: regulator-anx-30 {
> +		/* ANX7625 VDD3 */

This comment is only mildly useful given the anx7625 node consumes it
via a reference in "vdd33-supply"

[...]

> +	anx7625: encoder@58 {
> +		compatible = "analogix,anx7625";
> +		reg = <0x58>;
> +		interrupts-extended = <&tlmm 81 IRQ_TYPE_EDGE_FALLING>;
> +		vdd10-supply = <&pm4125_l11>;
> +		vdd18-supply = <&pm4125_l15>;
> +		vdd33-supply = <&vreg_anx_30>;
> +		analogix,audio-enable;
> +		analogix,lane0-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
> +		analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
> +
> +		pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>;

no mode-orientation/switch?


> +
> +		connector {
> +			compatible = "usb-c-connector";
> +			power-role = "sink";
> +			data-role = "dual";
> +			try-power-role = "sink";
> +
> +			pd-revision = /bits/ 8 <0x03 0x00 0x00 0x00>;
> +			op-sink-microwatt = <15000000>;
> +			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
> +				     PDO_VAR(5000, 20000, 3000)>;

nice!

> +
> +			ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				port@0 {
> +					reg = <0>;

Please add a \n between the last prop and the following subnodes

lg otherwise

Konrad
Re: [PATCH] arm64: dts: qcom: qrb2210-arduino-imola: describe DSI / DP bridge
Posted by Dmitry Baryshkov 2 months ago
On Thu, Feb 12, 2026 at 10:40:41AM +0100, Konrad Dybcio wrote:
> On 2/11/26 10:28 AM, Dmitry Baryshkov wrote:
> > Aruino Uno-Q uses Analogix ANX7625 DSI-to-DP bridge to convert DSI
> > signals to the connected USB-C DisplayPort dongles. Decribe the chip,
> > USB-C connector and routing of USB and display signals.
> > 
> > Co-developed-by: Martino Facchin <m.facchin@arduino.cc>
> > Signed-off-by: Martino Facchin <m.facchin@arduino.cc>
> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> > ---
> 
> [...]
> 
> >  #include <dt-bindings/leds/common.h>
> > +#include <dt-bindings/usb/pd.h>
> >  #include "agatti.dtsi"
> >  #include "pm4125.dtsi"
> >  
> > @@ -109,6 +110,16 @@ multi-led {
> >  		leds = <&ledr>, <&ledg>, <&ledb>;
> >  	};
> >  
> > +	vreg_anx_30: regulator-anx-30 {
> > +		/* ANX7625 VDD3 */
> 
> This comment is only mildly useful given the anx7625 node consumes it
> via a reference in "vdd33-supply"
> 
> [...]
> 
> > +	anx7625: encoder@58 {
> > +		compatible = "analogix,anx7625";
> > +		reg = <0x58>;
> > +		interrupts-extended = <&tlmm 81 IRQ_TYPE_EDGE_FALLING>;
> > +		vdd10-supply = <&pm4125_l11>;
> > +		vdd18-supply = <&pm4125_l15>;
> > +		vdd33-supply = <&vreg_anx_30>;
> > +		analogix,audio-enable;
> > +		analogix,lane0-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
> > +		analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
> > +
> > +		pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>;
> 
> no mode-orientation/switch?

No, why? ANX handles everything internally.

> 
> 
> > +
> > +		connector {
> > +			compatible = "usb-c-connector";
> > +			power-role = "sink";
> > +			data-role = "dual";
> > +			try-power-role = "sink";
> > +
> > +			pd-revision = /bits/ 8 <0x03 0x00 0x00 0x00>;
> > +			op-sink-microwatt = <15000000>;
> > +			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
> > +				     PDO_VAR(5000, 20000, 3000)>;
> 
> nice!
> 
> > +
> > +			ports {
> > +				#address-cells = <1>;
> > +				#size-cells = <0>;
> > +
> > +				port@0 {
> > +					reg = <0>;
> 
> Please add a \n between the last prop and the following subnodes
> 
> lg otherwise
> 
> Konrad

-- 
With best wishes
Dmitry
Re: [PATCH] arm64: dts: qcom: qrb2210-arduino-imola: describe DSI / DP bridge
Posted by Loic Poulain 2 months ago
On Wed, Feb 11, 2026 at 10:28 AM Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> Aruino Uno-Q uses Analogix ANX7625 DSI-to-DP bridge to convert DSI
> signals to the connected USB-C DisplayPort dongles. Decribe the chip,
> USB-C connector and routing of USB and display signals.
>
> Co-developed-by: Martino Facchin <m.facchin@arduino.cc>
> Signed-off-by: Martino Facchin <m.facchin@arduino.cc>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

Tested-by: Loic Poulain <loic.poulain@oss.qualcomm.com>


> ---
> Note, to function correctly this patch depends on several patch series,
> fixing the ANX7625 driver:
>
> - https://lore.kernel.org/r/20251218151307.95491-1-loic.poulain@oss.qualcomm.com/
>   (part of 7.0-rc1)
>
> - https://lore.kernel.org/r/20260121-anx7625-typec-v2-0-d14f31256a17@oss.qualcomm.com/
>   (part of drm-misc-next, to be landed in 7.1)
>
> - https://lore.kernel.org/r/20260211-anx7625-fix-pd-v1-1-1dd31451b06f@oss.qualcomm.com/
>   (recently submitted, hopefully to land in 7.1)
> ---
>  arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts | 112 +++++++++++++++++++++
>  1 file changed, 112 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
> index 197ab6eb1666..ba3f0c74e814 100644
> --- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
> +++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
> @@ -6,6 +6,7 @@
>  /dts-v1/;
>
>  #include <dt-bindings/leds/common.h>
> +#include <dt-bindings/usb/pd.h>
>  #include "agatti.dtsi"
>  #include "pm4125.dtsi"
>
> @@ -109,6 +110,16 @@ multi-led {
>                 leds = <&ledr>, <&ledg>, <&ledb>;
>         };
>
> +       vreg_anx_30: regulator-anx-30 {
> +               /* ANX7625 VDD3 */
> +               compatible = "regulator-fixed";
> +               regulator-name = "anx30";
> +               regulator-min-microvolt = <3000000>;
> +               regulator-max-microvolt = <3000000>;
> +               regulator-always-on;
> +               regulator-boot-on;
> +       };
> +
>         /* PM4125 charger out, supplied by VBAT */
>         vph_pwr: regulator-vph-pwr {
>                 compatible = "regulator-fixed";
> @@ -142,6 +153,83 @@ &i2c1 {
>         clock-frequency = <100000>;
>
>         status = "okay";
> +
> +       anx7625: encoder@58 {
> +               compatible = "analogix,anx7625";
> +               reg = <0x58>;
> +               interrupts-extended = <&tlmm 81 IRQ_TYPE_EDGE_FALLING>;
> +               vdd10-supply = <&pm4125_l11>;
> +               vdd18-supply = <&pm4125_l15>;
> +               vdd33-supply = <&vreg_anx_30>;
> +               analogix,audio-enable;
> +               analogix,lane0-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
> +               analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;
> +
> +               pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>;
> +
> +               connector {
> +                       compatible = "usb-c-connector";
> +                       power-role = "sink";
> +                       data-role = "dual";
> +                       try-power-role = "sink";
> +
> +                       pd-revision = /bits/ 8 <0x03 0x00 0x00 0x00>;
> +                       op-sink-microwatt = <15000000>;
> +                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
> +                                    PDO_VAR(5000, 20000, 3000)>;
> +
> +                       ports {
> +                               #address-cells = <1>;
> +                               #size-cells = <0>;
> +
> +                               port@0 {
> +                                       reg = <0>;
> +                                       anx_hs_in: endpoint {
> +                                               remote-endpoint = <&usb_dwc3_hs>;
> +                                       };
> +                               };
> +
> +                               port@1 {
> +                                       reg = <1>;
> +                                       anx_ss_in: endpoint {
> +                                               remote-endpoint = <&usb_qmpphy_out>;
> +                                       };
> +                               };
> +                       };
> +               };
> +
> +               ports {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       port@0 {
> +                               reg = <0>;
> +                               anx_dsi0_in: endpoint {
> +                                       remote-endpoint = <&mdss_dsi0_out>;
> +                                       data-lanes = <0 1 2 3>;
> +                               };
> +                       };
> +               };
> +       };
> +};
> +
> +&mdss {
> +       status = "okay";
> +};
> +
> +&mdss_dsi0 {
> +       vdda-supply = <&pm4125_l5>;
> +
> +       status = "okay";
> +};
> +
> +&mdss_dsi0_out {
> +       remote-endpoint = <&anx_dsi0_in>;
> +       data-lanes = <0 1 2 3>;
> +};
> +
> +&mdss_dsi0_phy {
> +       status = "okay";
>  };
>
>  &pm4125_vbus {
> @@ -361,6 +449,22 @@ key_vold_n: key-vold-n-state {
>                 output-disable;
>         };
>
> +       anx7625_cable_det_pin: anx7625-cable-det-pins-state {
> +               pins = "gpio46";
> +               function = "gpio";
> +               drive-strength = <16>;
> +               output-disable;
> +               bias-pull-up;
> +       };
> +
> +       anx7625_int_pin: anx7625-int-pins-state {
> +               pins = "gpio81";
> +               function = "gpio";
> +               drive-strength = <16>;
> +               output-disable;
> +               bias-pull-up;
> +       };
> +
>         key_volp_n: key-volp-n-state {
>                 pins = "gpio96";
>                 function = "gpio";
> @@ -428,6 +532,10 @@ &usb {
>         status = "okay";
>  };
>
> +&usb_dwc3_hs {
> +       remote-endpoint = <&anx_hs_in>;
> +};
> +
>  &usb_hsphy {
>         vdd-supply = <&pm4125_l12>;
>         vdda-pll-supply = <&pm4125_l13>;
> @@ -443,6 +551,10 @@ &usb_qmpphy {
>         status = "okay";
>  };
>
> +&usb_qmpphy_out {
> +       remote-endpoint = <&anx_ss_in>;
> +};
> +
>  &wifi {
>         vdd-0.8-cx-mx-supply = <&pm4125_l7>;
>         vdd-1.8-xo-supply = <&pm4125_l13>;
>
> ---
> base-commit: 9845cf73f7db6094c0d8419d6adb848028f4a921
> change-id: 20260211-uno-q-anx7625-26f8fa8360ca
>
> Best regards,
> --
> With best wishes
> Dmitry
>
>