Hello
I try to make 2nd USB host (HSIC) of imx7ulp-evkb work with EVB-USB4640 (from microchip).
I try device tree and kernel config modification based on this discussions :
Software :
- Base : BSP Linux 5.10.52_2.1.0
- Devicetree modification : add 2nd USB host with both path attached
- Kernel config modification, add : CONFIG_PINCTRL_SINGLE=y
Resuslts :
1) If a hub is connected on 1st USB, I have following error message from kernel :
ci_hdrc ci_hdrc.1: port 1 reset error -110
usb 2-1: device no response, device descriptor read/64, error -71
But both USB host is declared :
lsusb --tree --verbose
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
ID 1d6b:0002 Linux Foundation 2.0 root hub
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
ID 1d6b:0002 Linux Foundation 2.0 root hub
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
ID 2109:2813 VIA Labs, Inc. VL813 Hub
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=ax88179_178a, 480M
ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
2) If nothing is connected on 1st USB, I got a kernel panic :
The origin of kernel panic is in function 'hw_phymode_configure'.
This line : core.c#L297
hw_write(ci, OP_PORTSC, PORTSC_PTS(7) | PORTSC_PTW, portsc);
Any help/idea ?
__
Regards
Hello @guillaume-enlaps ,
>>is it an hardware or a software issue ?
Due to hardware limitation, if enable HSIC, USB OTG1 can't be used. so you will have to enable HSIC after downloading image through USB OTG1 is done. Then you will only have HSIC USB ports for your host application.
Have a good day!
Regards,
weidong
Hello,
Thanks again for your answer.
1) Using your path, I still have some error when booting on USB HSIC :
device no response, device descriptor read/64, error -71
Maybe it's just hardware (HSIC wire) issue...
But no more kernel panic when nothings is plug on 1st USB (no HUB...).
I'm going to continue to do some test.
2) About your response, and to be sure I well understood, you are saying that this king of configuration is not possible :
=> Reading from a device plugged on USB1HOST and writing to a device plugged on USB2HOST at the same time ?
A simple diagram to make sure that my question is clear :
Regards,
__
Guillaume
Hello @guillaume-enlaps ,
We have ever spent much more time in debugging HSIC on i.MX7ULP for a customer from India , who also used HSIC EVK board. we also borrowed HSIC EVK board from microchip for the debugging purpose.
In the end, we found USB OTG1 clock would lose as soon as HSIC(USB OTG2) was enabled, which means USB OTG1 can't be used at the time, so any way, whether it is device or host , it can't work.
So for your application, you had better choose a HSIC HUB with 4 ports, which can ensure USB HOST Ports is enough for your application.
Have a good day!
Regards,
weidong
Hello,
Thank you for the answer and the patch.
I'm trying to make it work (in progress).
Any way, I have some question about what you explained :
* Can I have both USBHOST (1&2) working at the same time ?
If no, is it an hardware or a software issue ?
* Why in the devicetree patch you provide, the 2nd USB (usbh) use the clock of 1st USB ?
clocks = <&clks IMX7ULP_CLK_USB0>;
Thanks again !
Regards,
Guillaume
Hello @guillaume-enlaps
Attachment is a patch that i.mx expert design, which is used for I.MX7ULP HSIC, BUT if enabling USB HSIC, USB OTG1 can't be used. It means USB OTG1 and HSIC can't work at the same time, so you should eable USB HSIC after using USB OTG1.
the patch is for linux 4.14.98 kernel. you can try to add it to the bsp version you are using.
Have a good day!
Regards,
weidong