Hi,
I am trying to get a microchip usb4604 hub working with a custom imx6sx board over HSIC, I have added the device tree and the pin control as below to get to enumerate the hub. The usb4604 has a I2C driver that resets the hub and sends a message to confirm that the hub is in 'hub mode'. Although I have included the hub driver, the I2C pins are not connected to the controller since I am using the driver only to reset the hub. The downstream USB ports are hard connected to other devices on board.
in the boot sequence I see the below errors from the hub driver. I wanted to check if the device tree configuration is correct and the IMX6SX USB controller will be configured correctly to use the HSIC interface, does the device tree config need any other parameters that I am missing? I am using linux-rel_imx_4.9.x1.0.0_ga kernel.
Thanks for the help!
Arun
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 1 port detected
usb 3-1: new high-speed USB device number 2 using ci_hdrc
usb 3-1: device no response, device descriptor read/64, error -71
usb 3-1: device no response, device descriptor read/64, error -71
usb 3-1: new high-speed USB device number 3 using ci_hdrc
usb 3-1: device no response, device descriptor read/64, error -71
usb 3-1: device no response, device descriptor read/64, error -71
usb 3-1: new high-speed USB device number 4 using ci_hdrc
usb 3-1: device not accepting address 4, error -71
usb 3-1: new high-speed USB device number 5 using ci_hdrc
usb 3-1: device not accepting address 5, error -71
usb usb3-port1: unable to enumerate USB device
&usbh {
pinctrl-names = "idle", "active";
pinctrl-0 = <&pinctrl_usbh_1>;
pinctrl-1 = <&pinctrl_usbh_2>;
osc-clkgate-delay = <0x3>;
status = "okay";
};
.
.
.
.
.
pinctrl_usbh_1: usbhgrp-1 {
fsl,pins = <
MX6SX_PAD_USB_H_DATA__USB_H_DATA 0x00083030
MX6SX_PAD_USB_H_STROBE__USB_H_STROBE 0x00083030
>;
};
pinctrl_usbh_2: usbhgrp-2 {
fsl,pins = <
MX6SX_PAD_USB_H_STROBE__USB_H_STROBE 0x00083030
>;
};
The enumeration issue got resolved after adding the "pad-supply" parameter as below.
I did not get any documentation regarding why we would need this parameter, but the example in imx6sx-14x14-arm2.dts has this set.
can any expert on imx please comment on this parameter?
Thanks
Arun
&usbh {
pinctrl-names = "idle", "active";
pinctrl-0 = <&pinctrl_usbh_1>;
pinctrl-1 = <&pinctrl_usbh_2>;
osc-clkgate-delay = <0x3>;
pad-supply = <&vgen1_reg>;
status = "okay";
};
Hi Arun
one can check suggestions provided on
Need proper initialization for USB Host2 (HSIC) in i.MX6x
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor,
Thanks for the response, it looks like the link you shared is to get the HSIC interface working in Uboot.
I am looking for changes needed in the device tree in linux kernel, also the mux configuration.
I set the Data and strobe pin configuration by generating them on Pin tool. I see that it generated the PAD control, but where do I need to set the MUX register as shown below?
Table 5. i.MX 6SoloX HSIC I/O settings
HSIC signal IOMUX register Mode for HSIC Register Address
USB_H_DATA IOMUXC_SW_MUX_CTL_PAD_USB_H_DATA Alt 0 0000 0000h 020E 02A4h
USB_H_STROBE IOMUXC_SW_MUX_CTL_PAD_USB_H_STROBE Alt 0 0000 0000h 020E 02A8h
— I/O pad settings — — —
USB_H_DATA IOMUXC_SW_PAD_CTL_PAD_USB_H_DATA LPDDR2-CMOS 0008 3030h 020E 05ECh
USB_H_STROBE IOMUXC_SW_PAD_CTL_PAD_USB_H_STROBE LPDDR2-CMOS 0008 3030h 020E 05F0h
Hi Arun
so it is working in uboot in your case ? It is easier to start with uboot.
~igor