Bypass the USB Type-C on the iMX8M Mini EVK

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Bypass the USB Type-C on the iMX8M Mini EVK

21,192 Views
shai_b
Senior Contributor II

Hello Team,

My customer is trying to connect a camera (USBv2) directly into the USB port2 which is the USB Type-C on the development kit.

once the customer connects his USB camera into the Type C USB (of the development kit) the camera works but while the customer tries to bypass the Type C USB connector and connect the USB camera directly into the USB port 2 PINS of the developed kit (and bypass the Type C components) the camera does not work.

smallpic_usb2_phys.png

Could you please advise the correct way to bypass the Type-C connector and use it as a standard USB2?

Thanks in advance

Kind regards,

Shai

Labels (1)
Tags (1)
0 Kudos
Reply
43 Replies

342 Views
tiborgajdár
Contributor I

Hi All,

We have similar problem with the CORAL SOM, based on NXP i.MX8MQ. We are using USB1 and the USB camera module is not detected. We red Weidong_sun comments on this link: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8MM-i-MX8MQ-USB2-0-Design-Without-US...

We would like to implement USB HOST Type-A on USB1. Is it sufficient to pull down USB1_ID to DGND (USB1_OTG_ID is not implemented by Google) or we can not do it only on USB2 ? Can we make this implementation without MIC2026 or we need it? According to Weidong_sun's contribution we won't needed at all. Please clarify.

Thanks and best regards

Tibor

0 Kudos
Reply

6,719 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hi, @shai_b ,

 

If running lsusb command on board,  Can linux find USB camera device? 

USB2 & USB1, test both port, please!

 

Regards,

weidong

0 Kudos
Reply

6,711 Views
shai_b
Senior Contributor II

@weidong_sun ,

While using the USB type-c port the LSUSB finds the camera, but once they connect the camera directly to the imx8m pins (and change the device tree as you guide them) the LSUSB command did not find the USB camera.

KR,

Shai

0 Kudos
Reply

6,681 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello @shai_b ,

 

Would you please send customer's full schematic to me?

 

Regards,

weidong

0 Kudos
Reply

6,642 Views
shai_b
Senior Contributor II

Hi @weidong_sun,

Please find the relevant schematic attached.

As said once they connect the USB camera as below by Test point directly to the IMX8.

The IMX8 does not detect the USB connection in this way, when they connected the camera via the type C connector the USB Camera is detected.

shai_b_0-1636100738684.png

Thanks in advance,

Shai

0 Kudos
Reply

6,610 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello @shai_b ,

 

I checked your schematic diagram. Your usb1 / USB2 circuit is exactly the same as i.mx8mm-evk BB board. This is not quite consistent with your previous description.

Your customer's DTS can support the use of USB camera on usb1 without any modification. If your camera is a USB tpye-a interface, you need a USB type-C to USB type-af cable for conversion.

 

Have a good day!

Regards,

weidong

0 Kudos
Reply

6,547 Views
shai_b
Senior Contributor II

Hi @weidong_sun ,

Maybe I wasn't clear in my previous email,
The customer has built his circuit based on the EVK but he added tests points for the USB port directly into the imx8m pins in order to test the camera without the type-c connector and the PD/CC logic components.

When they connect the USB camera directly into the "Tests point" of the USB pins of the IMX8, the camera does not detect by the imx8m,

But when they connected the camera via the type C connector the USB Camera is detected.

What could be the issue? Waiting for your kind assistance. 

Thanks a lot

KR,

Shai 

0 Kudos
Reply

6,540 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello @shai_b ,

If customer is using USB1 as a HOST,  GPIO1_IO10(USB1_OTG_ID) should be pulled down to LOW via a resistor, such as 2.2K

If customer is using USB2 as a HOST,  GPIO1_IO11(USB2_OTG_ID) should be pulled down to LOW via a resistor, such as 2.2K

Then in dts, GPIO1_IO10 & GPIO1_IO11 should be multiplexed as USB1_OTG_ID / USB2_OTG_ID. 

In addition, in usb node, PTN5110 member should be commented at the same time.

 

About circuit and configuration in dts I gave you , I validated them, which is no problem.

 

 

Try it, please!

Regards,

weidong

 

0 Kudos
Reply

6,535 Views
shai_b
Senior Contributor II

Hi @weidong_sun,

Thanks for your inputs, But the customer does not plan to use PTN5110 in their final design (they will provide external VBUS).

In such a case there are other consequences that need to be taken into account?

If possible I would like to advance by email to share more classified materials as needed.

my mail: shai.b@telsys.co.il 

Thanks in advance

KR,

Shai

0 Kudos
Reply

6,526 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello @shai_b ,

I don't know what happened on the customer's side.
if customer wants to use common usb2.0 design on i.mx8mm board, she can exactly refer to my experience I shared with her.
Because I designed the same USB function as hers based on i.mx8mm.

 

In addtion, when the customer's design without ptn5110 is done, you please send her schematic to us via saleforce case( create a case on website)

I will help her check USB circuit carefully.

 

Have a good day!

Regards,

weidong

0 Kudos
Reply

6,470 Views
shai_b
Senior Contributor II

Hi @weidong_sun,

Please find below the customer simple schematics of how they test the USB

mj_usb_imx8_simple.png

I think they need to configure the DTS correctly for GPIO1_IO11 since it's should be multiplexed as USB2_OTG_ID. 

Could you please advise the correct device tree and/or there are some issues with the setup above?

Waiting for your kind feedback, Thanks a lot.

KR,

Shai

0 Kudos
Reply

6,462 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello @shai_b 

 

The customer should design is like below:

weidong_sun_0-1637029544228.png

 

Regards,

weidong

0 Kudos
Reply

6,454 Views
shai_b
Senior Contributor II

Hi @weidong_sun,

Thank you for your inputs, regards the DTS there is a need to modify, or the GPIO1_IO11 is multiplexed as USB2_OTG_ID by default?

Waiting for your kind feedback, Thanks a lot.

Shai

0 Kudos
Reply

6,445 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello @shai_b 

>>regards the DTS there is a need to modify, or the GPIO1_IO11 is multiplexed as USB2_OTG_ID by default?

Yes, for dts , refer to what we discussed before in the post.

right, GPIO1_IO11 is multiplexed as USB2_OTG_ID.

 

Regards,

weidong

0 Kudos
Reply

6,421 Views
shai_b
Senior Contributor II

Hello @weidong_sun,

Could you please advise where the following dts are indicating the changes in GPIO1_IO11 to be multiplexed as USB2_OTG_ID?

&usbotg1 {
dr_mode = "otg";
/* hnp-disable;
srp-disable;
adp-disable;
usb-role-switch;
*/
picophy,pre-emp-curr-control = <3>;
picophy,dc-vol-level-adjust = <7>;
status = "okay";
/*
port {
usb1_drd_sw: endpoint {
remote-endpoint = <&typec1_dr_sw>;
};
};
*/
};

&usbotg2 {
vbus-supply = <&reg_usb2_vbus>;
dr_mode = "host";
picophy,pre-emp-curr-control = <3>;
picophy,dc-vol-level-adjust = <7>;
status = "okay";

};

The above dts were provided by you, Thanks in advance.

KR,

Shai

0 Kudos
Reply

6,374 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello @shai_b ,

I checked my dts file, I didn't multiplex USB2_OTG_ID.

Onlye these:

&usbotg2 {
vbus-supply = <&reg_usb2_vbus>;
dr_mode = "host";
picophy,pre-emp-curr-control = <3>;
picophy,dc-vol-level-adjust = <7>;
status = "okay";
};

actually it is default node in linux bsp.

 

Regards,

weidong

0 Kudos
Reply

6,097 Views
shai_b
Senior Contributor II

Hello @weidong_sun ,

Thanks for your support so far, Could you please also add the definition for ‘reg_usb2_vbus’ under ‘regulators’ in the device tree (it doesn’t exist in my device tree)?

When I define vbus-supply = <&reg_usb2_vbus>; as you suggested I must define reg_usb2_vbus in the DTS otherwise the kernel wouldn’t know what it is.

These are the regulators that are currently defined in my DTS, notice that reg_usb2_vbus doesn’t exist:

 

regulators {

                                compatible = "simple-bus";

                                #address-cells = <1>;

                                #size-cells = <0>;

 

                                reg_sd1_vmmc: sd1_regulator {

                                                compatible = "regulator-fixed";

                                                regulator-name = "WLAN_EN";

                                                regulator-min-microvolt = <3300000>;

                                                regulator-max-microvolt = <3300000>;

                                                gpio = <&gpio2 10 GPIO_ACTIVE_HIGH>;

                                                off-on-delay = <20000>;

                                                startup-delay-us = <100>;

                                                enable-active-high;

                                };

 

                                reg_usdhc2_vmmc: regulator-usdhc2 {

                                                compatible = "regulator-fixed";

                                                regulator-name = "VSD_3V3";

                                                regulator-min-microvolt = <3300000>;

                                                regulator-max-microvolt = <3300000>;

                                                gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;

                                                off-on-delay = <20000>;

                                                enable-active-high;

                                };

 

                                reg_audio_board: regulator-audio-board {

                                                compatible = "regulator-fixed";

                                                regulator-name = "EXT_PWREN";

                                                regulator-min-microvolt = <3300000>;

                                                regulator-max-microvolt = <3300000>;

                                                enable-active-high;

                                                startup-delay-us = <300000>;

                                                gpio = <&pca6416 1 GPIO_ACTIVE_HIGH>;

                                };

                };

 

Therefore if I want to use reg_usb2_vbus I must define it under ‘regulators’ FIRST.

Waiting for your kind feedback, Thanks in advance 

KR,

Shai

 

0 Kudos
Reply

6,079 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hi @shai_b ,

attachment is what I used. for your reference.

the linux bsp I am using is L5.4.24_2.1.0

regards,

weidong

6,030 Views
shai_b
Senior Contributor II

Dear @weidong_sun,

I have noticed that in your DTS file you have configured the MX8MM_IOMUXC_GPIO1_IO14_GPIO1_IO14 as hoggrp (see below)

 

reg_usb2_vbus: regulator_usb2 {

                        compatible = "regulator-fixed";

                        regulator-name = "usb2_vbus";

                        regulator-min-microvolt = <5000000>;

                        regulator-max-microvolt = <5000000>;

                        gpio = <&gpio1 14 0>;            

                                    enable-active-high;

            };

 

&iomuxc {

            pinctrl-names = "default";

            pinctrl-0 = <&pinctrl_hog>;

            pinctrl_hog: hoggrp {

                        fsl,pins = <

                                    MX8MM_IOMUXC_SD1_DATA2_GPIO2_IO4                0x19

                                    MX8MM_IOMUXC_GPIO1_IO12_GPIO1_IO12              0x19    

                                    MX8MM_IOMUXC_GPIO1_IO14_GPIO1_IO14              0x19    

                                    MX8MM_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K         0x91

                                               

                                    MX8MM_IOMUXC_NAND_READY_B_GPIO3_IO16                   0x19

                                    MX8MM_IOMUXC_SD1_DATA5_GPIO2_IO7                0x19

                        >;

            };

 

But my customer has DTS a bit differently.

Could you please advise if this PIN GPIO14 is a must to be configured as above since my customer uses a different configuration in the “iomuxc” of the GPIO14 as CSI_RST, CCMSRGRPCMX_CLK1 (different from yours)

Maye this could cause such issues of USB host to fail to detect…

Please find attached your schematic example (.png) and the customer DTS (.zip) and please advise what could do the conflict and if there is a limitation of using a cable longer than 30 cm?

 

In addition, before the customer will give up our iMX8 solutions, could you please send us your working imx8 kit that you managed to make the USB work without the PD chipset for test and see if it is possible to work that way.

My address: 5 Granit Street, Petach Tikva 4951404, Israel

 

Waiting for your kind feedback, Thanks a lot.

BR,

Shai

0 Kudos
Reply

6,018 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello @shai_b ,

 

I only have one board you mentioned, which is my hands on design. I almost use it for WIFI/BT test platform every day, so I am sorry I can't send it to you.

But I can share full schematic with you.

I will send it to you via personal email.

 

Have a good day!

Regards,

weidong

 

0 Kudos
Reply