imx6 HSIC usb2 probe hang

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

imx6 HSIC usb2 probe hang

Jump to solution
3,444 Views
andreacollamati
Contributor II

Hi All,

we are porting the imx_3.14.28_1.0.0_ga kernel on a  custom board based on a imx6dl processor.

On our board we connected the USB2 HSIC port to a microchip USB3503 HSIC HUB.

We attached our device tree.

 

The kernel hangs during the probe of usbhc2 inside the ci_hdrc_imx_probe.

Using kgdb we found  that the exact point is the call of device_add:

 

ci_hdrc_imx_probe -> ci_hdrc_imx_probe -> ci_hdrc_add_device   -> platform_device_add -> device_add

 

 

Do you have any suggestions?

Best Regards

            Andrea

Original Attachment has been moved to: devicetree.dts.zip

Labels (2)
1 Solution
1,766 Views
sagar_jariwala
Contributor I

Hello Andrea,

I have had the similar problem described by you. I was able to fix this issue with following changes.

Please review your changes against patch mentioned here. Re: imx6: usbhc2/3 and HSIC — ARM, OMAP, Xscale Linux Kernel

Changes in /drivers/usb/chipidea/usbmisc_imx.c are important to fix this hang issue.

It helped me resolve my hang issue. I hope it helps you as well.

Thanks,
Sagar

View solution in original post

3 Replies
1,767 Views
sagar_jariwala
Contributor I

Hello Andrea,

I have had the similar problem described by you. I was able to fix this issue with following changes.

Please review your changes against patch mentioned here. Re: imx6: usbhc2/3 and HSIC — ARM, OMAP, Xscale Linux Kernel

Changes in /drivers/usb/chipidea/usbmisc_imx.c are important to fix this hang issue.

It helped me resolve my hang issue. I hope it helps you as well.

Thanks,
Sagar

1,766 Views
andreacollamati
Contributor II

Thank you very much Sagar.

It worked!

You are right the most important part is the patch inside /drivers/usb/chipidea/usbmisc_imx.c

+ if (usbdev->index == 2 || usbdev->index == 3) {

     + writel(0x00003000, usbmisc->base + usbdev->index * 4);

     + writel(0x80001842, usbmisc->base + 0x8 + usbdev->index * 4);

+ }

that enables the HSIC clock and HW and write also in reserved control bits...

Thank you again.

0 Kudos
Reply
1,766 Views
CarlosCasillas
NXP Employee
NXP Employee

Hi Andrea,

HSIC is supported in i.MX6 BSPs; please refer to attached i.MX6 Linux Reference Manual

Chapter 34 "ARC USB Driver" and <usb_hsic_xcvr.c> “HSIC featured phy's interface”.

Additionally, please take a look at the following thread which has related information:

HSIC under linux (imx6d)


Hope this will be useful for you.
Best regards!
/Carlos

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------