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.
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
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
Hi, @shai_b ,
If running lsusb command on board, Can linux find USB camera device?
USB2 & USB1, test both port, please!
Regards,
weidong
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
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.
Thanks in advance,
Shai
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
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
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
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
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
Hi @weidong_sun,
Please find below the customer simple schematics of how they test the USB
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
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
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
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 = <®_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
Hello @shai_b ,
I checked my dts file, I didn't multiplex USB2_OTG_ID.
Onlye these:
&usbotg2 {
vbus-supply = <®_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
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 = <®_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
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
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
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