Message ID | 20240923151417.1665431-5-michal.vokac@ysoft.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add support for new IMX8MP based board | expand |
On 24-09-23, Michal Vokáč wrote: > From: Petr Benes <petr.benes@ysoft.com> > > Enable the USB Type-C port with the Diodes PI5USB30213A port controller. > The port supports dual role data but can operate only in source power role > and PD is not supported. > > Signed-off-by: Petr Benes <petr.benes@ysoft.com> > Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com> > --- > v3: > - none > v2: > - Use typec instead of tcpc. > - Drop unneeded status. > > .../boot/dts/freescale/imx8mp-iota2-lumpy.dts | 94 +++++++++++++++++++ > 1 file changed, 94 insertions(+) > > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts b/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts > index 120e6b87a000..bfed410339a4 100644 > --- a/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts > +++ b/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts > @@ -32,6 +32,17 @@ button-reset { > }; > }; > > + reg_typec: regulator-typec { > + compatible = "regulator-fixed"; > + enable-active-high; > + gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; Can you please put the enable-active-high and gpio property below the regualtor-* properties? > + pinctrl-0 = <&pinctrl_usbc_vbus>; > + pinctrl-names = "default"; > + regulator-max-microvolt = <5000000>; > + regulator-min-microvolt = <5000000>; > + regulator-name = "typec"; > + }; > + > reg_usb_host: regulator-usb-host { > compatible = "regulator-fixed"; > enable-active-high; > @@ -218,6 +229,46 @@ &i2c2 { > pinctrl-names = "default"; > status = "okay"; > > + typec@d { > + compatible = "diodes,pi5usb30213a"; > + reg = <0xd>; > + interrupts-extended = <&gpio1 5 IRQ_TYPE_LEVEL_LOW>; > + pinctrl-0 = <&pinctrl_typec>; > + pinctrl-names = "default"; > + > + connector { > + compatible = "usb-c-connector"; > + data-role = "dual"; > + label = "USB-C"; > + pd-disable; > + power-role = "source"; > + self-powered; > + typec-power-opmode = "default"; > + vbus-supply = <®_typec>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + usb_con_hs: endpoint { > + remote-endpoint = <&typec_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + usb_con_ss: endpoint { > + remote-endpoint = <&typec_ss>; > + }; > + }; > + }; > + }; > + }; > + > rtc: rtc@68 { > compatible = "dallas,ds1341"; > reg = <0x68>; > @@ -309,6 +360,12 @@ MX8MP_IOMUXC_SAI3_MCLK__PWM4_OUT 0x102 > >; > }; > > + pinctrl_typec: typecgrp { > + fsl,pins = < > + MX8MP_IOMUXC_GPIO1_IO05__GPIO1_IO05 0x1c0 > + >; > + }; > + > pinctrl_uart2: uart2grp { > fsl,pins = < > MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX 0x0 > @@ -322,6 +379,11 @@ MX8MP_IOMUXC_GPIO1_IO14__USB2_OTG_PWR 0x0 > >; > }; > > + pinctrl_usbc_vbus: usbcgrp { > + fsl,pins = <MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12 0x0 > + >; > + }; > + > pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp { > fsl,pins = < > MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK 0x194 > @@ -389,15 +451,47 @@ &uart2 { > status = "okay"; > }; > > +&usb3_0 { > + status = "okay"; > +}; > + > &usb3_1 { > status = "okay"; > }; > > +&usb3_phy0 { > + status = "okay"; > +}; > + > &usb3_phy1 { > vbus-supply = <®_usb_host>; > status = "okay"; > }; > > +&usb_dwc3_0 { > + #address-cells = <1>; > + #size-cells = <0>; > + dr_mode = "otg"; > + usb-role-switch; > + status = "okay"; > + ports { #address-cells = <1>; #size-cells = <0>; > + port@0 { > + reg = <0>; > + > + typec_hs: endpoint { > + remote-endpoint = <&usb_con_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + typec_ss: endpoint { > + remote-endpoint = <&usb_con_ss>; > + }; > + }; } like you did for the connector node. > +}; > + > &usb_dwc3_1 { > dr_mode = "host"; > status = "okay"; > -- > 2.43.0 > > >
On 24. 09. 24 9:23, Marco Felsch wrote: > On 24-09-23, Michal Vokáč wrote: >> From: Petr Benes <petr.benes@ysoft.com> >> >> Enable the USB Type-C port with the Diodes PI5USB30213A port controller. >> The port supports dual role data but can operate only in source power role >> and PD is not supported. >> >> Signed-off-by: Petr Benes <petr.benes@ysoft.com> >> Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com> >> --- >> v3: >> - none >> v2: >> - Use typec instead of tcpc. >> - Drop unneeded status. >> >> .../boot/dts/freescale/imx8mp-iota2-lumpy.dts | 94 +++++++++++++++++++ >> 1 file changed, 94 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts b/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts >> index 120e6b87a000..bfed410339a4 100644 >> --- a/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts >> +++ b/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts >> @@ -32,6 +32,17 @@ button-reset { >> }; >> }; >> >> + reg_typec: regulator-typec { >> + compatible = "regulator-fixed"; >> + enable-active-high; >> + gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; > > Can you please put the enable-active-high and gpio property below the > regualtor-* properties? Sure. >> + pinctrl-0 = <&pinctrl_usbc_vbus>; >> + pinctrl-names = "default"; >> + regulator-max-microvolt = <5000000>; >> + regulator-min-microvolt = <5000000>; >> + regulator-name = "typec"; >> + }; >> + >> reg_usb_host: regulator-usb-host { >> compatible = "regulator-fixed"; >> enable-active-high; >> @@ -389,15 +451,47 @@ &uart2 { >> status = "okay"; >> }; >> >> +&usb3_0 { >> + status = "okay"; >> +}; >> + >> &usb3_1 { >> status = "okay"; >> }; >> >> +&usb3_phy0 { >> + status = "okay"; >> +}; >> + >> &usb3_phy1 { >> vbus-supply = <®_usb_host>; >> status = "okay"; >> }; >> >> +&usb_dwc3_0 { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + dr_mode = "otg"; >> + usb-role-switch; >> + status = "okay"; >> + > > ports { > #address-cells = <1>; > #size-cells = <0>; OK. >> + port@0 { >> + reg = <0>; >> + >> + typec_hs: endpoint { >> + remote-endpoint = <&usb_con_hs>; >> + }; >> + }; >> + >> + port@1 { >> + reg = <1>; >> + >> + typec_ss: endpoint { >> + remote-endpoint = <&usb_con_ss>; >> + }; >> + }; > > } > > like you did for the connector node. OK, I will do so. Thank you for the review, Michal
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts b/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts index 120e6b87a000..bfed410339a4 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts +++ b/arch/arm64/boot/dts/freescale/imx8mp-iota2-lumpy.dts @@ -32,6 +32,17 @@ button-reset { }; }; + reg_typec: regulator-typec { + compatible = "regulator-fixed"; + enable-active-high; + gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&pinctrl_usbc_vbus>; + pinctrl-names = "default"; + regulator-max-microvolt = <5000000>; + regulator-min-microvolt = <5000000>; + regulator-name = "typec"; + }; + reg_usb_host: regulator-usb-host { compatible = "regulator-fixed"; enable-active-high; @@ -218,6 +229,46 @@ &i2c2 { pinctrl-names = "default"; status = "okay"; + typec@d { + compatible = "diodes,pi5usb30213a"; + reg = <0xd>; + interrupts-extended = <&gpio1 5 IRQ_TYPE_LEVEL_LOW>; + pinctrl-0 = <&pinctrl_typec>; + pinctrl-names = "default"; + + connector { + compatible = "usb-c-connector"; + data-role = "dual"; + label = "USB-C"; + pd-disable; + power-role = "source"; + self-powered; + typec-power-opmode = "default"; + vbus-supply = <®_typec>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + usb_con_hs: endpoint { + remote-endpoint = <&typec_hs>; + }; + }; + + port@1 { + reg = <1>; + + usb_con_ss: endpoint { + remote-endpoint = <&typec_ss>; + }; + }; + }; + }; + }; + rtc: rtc@68 { compatible = "dallas,ds1341"; reg = <0x68>; @@ -309,6 +360,12 @@ MX8MP_IOMUXC_SAI3_MCLK__PWM4_OUT 0x102 >; }; + pinctrl_typec: typecgrp { + fsl,pins = < + MX8MP_IOMUXC_GPIO1_IO05__GPIO1_IO05 0x1c0 + >; + }; + pinctrl_uart2: uart2grp { fsl,pins = < MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX 0x0 @@ -322,6 +379,11 @@ MX8MP_IOMUXC_GPIO1_IO14__USB2_OTG_PWR 0x0 >; }; + pinctrl_usbc_vbus: usbcgrp { + fsl,pins = <MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12 0x0 + >; + }; + pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp { fsl,pins = < MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK 0x194 @@ -389,15 +451,47 @@ &uart2 { status = "okay"; }; +&usb3_0 { + status = "okay"; +}; + &usb3_1 { status = "okay"; }; +&usb3_phy0 { + status = "okay"; +}; + &usb3_phy1 { vbus-supply = <®_usb_host>; status = "okay"; }; +&usb_dwc3_0 { + #address-cells = <1>; + #size-cells = <0>; + dr_mode = "otg"; + usb-role-switch; + status = "okay"; + + port@0 { + reg = <0>; + + typec_hs: endpoint { + remote-endpoint = <&usb_con_hs>; + }; + }; + + port@1 { + reg = <1>; + + typec_ss: endpoint { + remote-endpoint = <&usb_con_ss>; + }; + }; +}; + &usb_dwc3_1 { dr_mode = "host"; status = "okay";