diff mbox series

[v2,2/3] arm64: dts: imx8mp-evk: add typec node

Message ID 20240801064907.3818939-2-xu.yang_2@nxp.com (mailing list archive)
State New, archived
Headers show
Series [v2,1/3] dt-bindings: usb: gpio-sbu-mux: Add an entry for PTN36043 | expand

Commit Message

Xu Yang Aug. 1, 2024, 6:49 a.m. UTC
The first port of USB with type-C connector, which has dual data
role and dual power role.

Signed-off-by: Xu Yang <xu.yang_2@nxp.com>

---
Changes in v2:
 - modify endpoint label
 - fix usb phy tunning property dtbinding warning
---
 arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 104 +++++++++++++++++++
 1 file changed, 104 insertions(+)

Comments

Dmitry Baryshkov Aug. 1, 2024, 11:51 a.m. UTC | #1
On Thu, Aug 01, 2024 at 02:49:06PM GMT, Xu Yang wrote:
> The first port of USB with type-C connector, which has dual data
> role and dual power role.
> 
> Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
> 
> ---
> Changes in v2:
>  - modify endpoint label
>  - fix usb phy tunning property dtbinding warning
> ---
>  arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 104 +++++++++++++++++++
>  1 file changed, 104 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> index 938347704136..ef9b821a0ae2 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> @@ -6,6 +6,7 @@
>  /dts-v1/;
>  
>  #include <dt-bindings/phy/phy-imx8-pcie.h>
> +#include <dt-bindings/usb/pd.h>
>  #include "imx8mp.dtsi"
>  
>  / {
> @@ -26,6 +27,20 @@ backlight_lvds: backlight-lvds {
>  		status = "disabled";
>  	};
>  
> +	cbdtu02043: typec-mux {
> +		compatible = "nxp,cbdtu02043", "gpio-sbu-mux";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_typec_mux>;
> +		select-gpios =<&gpio4 20 GPIO_ACTIVE_HIGH>;
> +		orientation-switch;
> +
> +		port {
> +			usb3_data_ss: endpoint {
> +				remote-endpoint = <&typec_con_ss>;

Where do SS lines go after the cbdtu02043?
Also could you please point out the datasheet for the chip.

> +			};
> +		};
> +	};
> +
>  	hdmi-connector {
>  		compatible = "hdmi-connector";
>  		label = "hdmi";
> @@ -535,6 +550,49 @@ adv7535_out: endpoint {
>  
>  		};
>  	};
> +
> +	ptn5110: tcpc@50 {
> +		compatible = "nxp,ptn5110", "tcpci";
> +		reg = <0x50>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_typec>;
> +		interrupt-parent = <&gpio4>;
> +		interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
> +
> +		usb_con: connector {
> +			compatible = "usb-c-connector";
> +			label = "USB-C";
> +			power-role = "dual";
> +			data-role = "dual";
> +			try-power-role = "sink";
> +			source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
> +			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
> +				     PDO_VAR(5000, 20000, 3000)>;
> +			op-sink-microwatt = <15000000>;
> +			self-powered;
> +
> +			ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				port@0 {
> +					reg = <0>;
> +
> +					typec_con_hs: endpoint {
> +						remote-endpoint = <&usb3_data_hs>;
> +					};
> +				};
> +
> +				port@1 {
> +					reg = <1>;
> +
> +					typec_con_ss: endpoint {
> +						remote-endpoint = <&usb3_data_ss>;
> +					};
> +				};

SBU lines are not connected?

> +			};
> +		};
> +	};
>  };
>  
>  &i2c3 {
> @@ -704,7 +762,41 @@ &uart2 {
>  	status = "okay";
>  };
>
Xu Yang Aug. 1, 2024, 2:08 p.m. UTC | #2
On Thu, Aug 01, 2024 at 02:51:06PM +0300, Dmitry Baryshkov wrote:
> On Thu, Aug 01, 2024 at 02:49:06PM GMT, Xu Yang wrote:
> > The first port of USB with type-C connector, which has dual data
> > role and dual power role.
> > 
> > Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
> > 
> > ---
> > Changes in v2:
> >  - modify endpoint label
> >  - fix usb phy tunning property dtbinding warning
> > ---
> >  arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 104 +++++++++++++++++++
> >  1 file changed, 104 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> > index 938347704136..ef9b821a0ae2 100644
> > --- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> > +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> > @@ -6,6 +6,7 @@
> >  /dts-v1/;
> >  
> >  #include <dt-bindings/phy/phy-imx8-pcie.h>
> > +#include <dt-bindings/usb/pd.h>
> >  #include "imx8mp.dtsi"
> >  
> >  / {
> > @@ -26,6 +27,20 @@ backlight_lvds: backlight-lvds {
> >  		status = "disabled";
> >  	};
> >  
> > +	cbdtu02043: typec-mux {
> > +		compatible = "nxp,cbdtu02043", "gpio-sbu-mux";
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_typec_mux>;
> > +		select-gpios =<&gpio4 20 GPIO_ACTIVE_HIGH>;
> > +		orientation-switch;
> > +
> > +		port {
> > +			usb3_data_ss: endpoint {
> > +				remote-endpoint = <&typec_con_ss>;
> 
> Where do SS lines go after the cbdtu02043?

I got your point. I should represent the signal route on dts even though
the driver doesn't use this information.

> Also could you please point out the datasheet for the chip.

https://www.nxp.com/docs/en/data-sheet/CBTU02043.pdf

> 
> > +			};
> > +		};
> > +	};
> > +
> >  	hdmi-connector {
> >  		compatible = "hdmi-connector";
> >  		label = "hdmi";
> > @@ -535,6 +550,49 @@ adv7535_out: endpoint {
> >  
> >  		};
> >  	};
> > +
> > +	ptn5110: tcpc@50 {
> > +		compatible = "nxp,ptn5110", "tcpci";
> > +		reg = <0x50>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_typec>;
> > +		interrupt-parent = <&gpio4>;
> > +		interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
> > +
> > +		usb_con: connector {
> > +			compatible = "usb-c-connector";
> > +			label = "USB-C";
> > +			power-role = "dual";
> > +			data-role = "dual";
> > +			try-power-role = "sink";
> > +			source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
> > +			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
> > +				     PDO_VAR(5000, 20000, 3000)>;
> > +			op-sink-microwatt = <15000000>;
> > +			self-powered;
> > +
> > +			ports {
> > +				#address-cells = <1>;
> > +				#size-cells = <0>;
> > +
> > +				port@0 {
> > +					reg = <0>;
> > +
> > +					typec_con_hs: endpoint {
> > +						remote-endpoint = <&usb3_data_hs>;
> > +					};
> > +				};
> > +
> > +				port@1 {
> > +					reg = <1>;
> > +
> > +					typec_con_ss: endpoint {
> > +						remote-endpoint = <&usb3_data_ss>;
> > +					};
> > +				};
> 
> SBU lines are not connected?

Not use SBU signal.

Thanks,
Xu Yang

> 
> > +			};
> > +		};
> > +	};
> >  };
> >  
> >  &i2c3 {
> > @@ -704,7 +762,41 @@ &uart2 {
> >  	status = "okay";
> >  };
> >  
> 
> -- 
> With best wishes
> Dmitry
Dmitry Baryshkov Aug. 1, 2024, 7:30 p.m. UTC | #3
On Thu, Aug 01, 2024 at 10:08:56PM GMT, Xu Yang wrote:
> On Thu, Aug 01, 2024 at 02:51:06PM +0300, Dmitry Baryshkov wrote:
> > On Thu, Aug 01, 2024 at 02:49:06PM GMT, Xu Yang wrote:
> > > The first port of USB with type-C connector, which has dual data
> > > role and dual power role.
> > > 
> > > Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
> > > 
> > > ---
> > > Changes in v2:
> > >  - modify endpoint label
> > >  - fix usb phy tunning property dtbinding warning
> > > ---
> > >  arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 104 +++++++++++++++++++
> > >  1 file changed, 104 insertions(+)
> > > 
> > > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> > > index 938347704136..ef9b821a0ae2 100644
> > > --- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> > > +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> > > @@ -6,6 +6,7 @@
> > >  /dts-v1/;
> > >  
> > >  #include <dt-bindings/phy/phy-imx8-pcie.h>
> > > +#include <dt-bindings/usb/pd.h>
> > >  #include "imx8mp.dtsi"
> > >  
> > >  / {
> > > @@ -26,6 +27,20 @@ backlight_lvds: backlight-lvds {
> > >  		status = "disabled";
> > >  	};
> > >  
> > > +	cbdtu02043: typec-mux {
> > > +		compatible = "nxp,cbdtu02043", "gpio-sbu-mux";
> > > +		pinctrl-names = "default";
> > > +		pinctrl-0 = <&pinctrl_typec_mux>;
> > > +		select-gpios =<&gpio4 20 GPIO_ACTIVE_HIGH>;
> > > +		orientation-switch;
> > > +
> > > +		port {
> > > +			usb3_data_ss: endpoint {
> > > +				remote-endpoint = <&typec_con_ss>;
> > 
> > Where do SS lines go after the cbdtu02043?
> 
> I got your point. I should represent the signal route on dts even though
> the driver doesn't use this information.

Yes, please. Bindings / DTS describe the hardware, not the driver's view
on it.

> 
> > Also could you please point out the datasheet for the chip.
> 
> https://www.nxp.com/docs/en/data-sheet/CBTU02043.pdf

Thanks!

> 
> > 
> > > +			};
> > > +		};
> > > +	};
> > > +
> > >  	hdmi-connector {
> > >  		compatible = "hdmi-connector";
> > >  		label = "hdmi";
> > > @@ -535,6 +550,49 @@ adv7535_out: endpoint {
> > >  
> > >  		};
> > >  	};
> > > +
> > > +	ptn5110: tcpc@50 {
> > > +		compatible = "nxp,ptn5110", "tcpci";
> > > +		reg = <0x50>;
> > > +		pinctrl-names = "default";
> > > +		pinctrl-0 = <&pinctrl_typec>;
> > > +		interrupt-parent = <&gpio4>;
> > > +		interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
> > > +
> > > +		usb_con: connector {
> > > +			compatible = "usb-c-connector";
> > > +			label = "USB-C";
> > > +			power-role = "dual";
> > > +			data-role = "dual";
> > > +			try-power-role = "sink";
> > > +			source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
> > > +			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
> > > +				     PDO_VAR(5000, 20000, 3000)>;
> > > +			op-sink-microwatt = <15000000>;
> > > +			self-powered;
> > > +
> > > +			ports {
> > > +				#address-cells = <1>;
> > > +				#size-cells = <0>;
> > > +
> > > +				port@0 {
> > > +					reg = <0>;
> > > +
> > > +					typec_con_hs: endpoint {
> > > +						remote-endpoint = <&usb3_data_hs>;
> > > +					};
> > > +				};
> > > +
> > > +				port@1 {
> > > +					reg = <1>;
> > > +
> > > +					typec_con_ss: endpoint {
> > > +						remote-endpoint = <&usb3_data_ss>;
> > > +					};
> > > +				};
> > 
> > SBU lines are not connected?
> 
> Not use SBU signal.
> 
> Thanks,
> Xu Yang
> 
> > 
> > > +			};
> > > +		};
> > > +	};
> > >  };
> > >  
> > >  &i2c3 {
> > > @@ -704,7 +762,41 @@ &uart2 {
> > >  	status = "okay";
> > >  };
> > >  
> > 
> > -- 
> > With best wishes
> > Dmitry
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
index 938347704136..ef9b821a0ae2 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
@@ -6,6 +6,7 @@ 
 /dts-v1/;
 
 #include <dt-bindings/phy/phy-imx8-pcie.h>
+#include <dt-bindings/usb/pd.h>
 #include "imx8mp.dtsi"
 
 / {
@@ -26,6 +27,20 @@  backlight_lvds: backlight-lvds {
 		status = "disabled";
 	};
 
+	cbdtu02043: typec-mux {
+		compatible = "nxp,cbdtu02043", "gpio-sbu-mux";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_typec_mux>;
+		select-gpios =<&gpio4 20 GPIO_ACTIVE_HIGH>;
+		orientation-switch;
+
+		port {
+			usb3_data_ss: endpoint {
+				remote-endpoint = <&typec_con_ss>;
+			};
+		};
+	};
+
 	hdmi-connector {
 		compatible = "hdmi-connector";
 		label = "hdmi";
@@ -535,6 +550,49 @@  adv7535_out: endpoint {
 
 		};
 	};
+
+	ptn5110: tcpc@50 {
+		compatible = "nxp,ptn5110", "tcpci";
+		reg = <0x50>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_typec>;
+		interrupt-parent = <&gpio4>;
+		interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
+
+		usb_con: connector {
+			compatible = "usb-c-connector";
+			label = "USB-C";
+			power-role = "dual";
+			data-role = "dual";
+			try-power-role = "sink";
+			source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+				     PDO_VAR(5000, 20000, 3000)>;
+			op-sink-microwatt = <15000000>;
+			self-powered;
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port@0 {
+					reg = <0>;
+
+					typec_con_hs: endpoint {
+						remote-endpoint = <&usb3_data_hs>;
+					};
+				};
+
+				port@1 {
+					reg = <1>;
+
+					typec_con_ss: endpoint {
+						remote-endpoint = <&usb3_data_ss>;
+					};
+				};
+			};
+		};
+	};
 };
 
 &i2c3 {
@@ -704,7 +762,41 @@  &uart2 {
 	status = "okay";
 };
 
+&usb3_phy0 {
+	fsl,phy-tx-vref-tune-percent = <122>;
+	fsl,phy-tx-preemp-amp-tune-microamp = <1800>;
+	fsl,phy-tx-vboost-level-microvolt = <1120>;
+	fsl,phy-comp-dis-tune-percent = <115>;
+	fsl,phy-pcs-tx-deemph-3p5db-attenuation-db = <33>;
+	fsl,phy-pcs-tx-swing-full-percent = <100>;
+	status = "okay";
+};
+
+&usb3_0 {
+	status = "okay";
+};
+
+&usb_dwc3_0 {
+	dr_mode = "otg";
+	hnp-disable;
+	srp-disable;
+	adp-disable;
+	usb-role-switch;
+	role-switch-default-mode = "peripheral";
+	snps,dis-u1-entry-quirk;
+	snps,dis-u2-entry-quirk;
+	status = "okay";
+
+	port {
+		usb3_data_hs: endpoint {
+			remote-endpoint = <&typec_con_hs>;
+		};
+	};
+};
+
 &usb3_phy1 {
+	fsl,phy-tx-preemp-amp-tune-microamp = <1800>;
+	fsl,phy-tx-vref-tune-percent = <116>;
 	status = "okay";
 };
 
@@ -986,6 +1078,18 @@  MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX	0x140
 		>;
 	};
 
+	pinctrl_typec: typecgrp {
+		fsl,pins = <
+			MX8MP_IOMUXC_SAI1_TXD7__GPIO4_IO19	0x1c4
+		>;
+	};
+
+	pinctrl_typec_mux: typecmuxgrp {
+		fsl,pins = <
+			MX8MP_IOMUXC_SAI1_MCLK__GPIO4_IO20      0x16
+		>;
+	};
+
 	pinctrl_usb1_vbus: usb1grp {
 		fsl,pins = <
 			MX8MP_IOMUXC_GPIO1_IO14__USB2_OTG_PWR	0x10