USB difficulties with an iMX6ULL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Everyone, Hi Peter

I'm currently facing two USB problems with our Colibri iMX6ULL CoM. I'm
asking here on the mailinglist if anyone else has seen similar problems
and if anyone have any idea how I could solve this.

On our iMX7 based CoM the Colibri iMX7 everything is working fine and
from what I can tell it has the same Chipidea IP as the iMX6ULL which
makes it strange to me that one is working but not the other one.


1st problem - RNDIS
We try to use RNDIS on one of the USB ports the Colibri iMX6ULL has. For
this purpose I'm using the usb_f_rndis.ko kernel module and setting
dr_mode of &usbotg1 to "peripheral"
This works fine on iMX7 but does not on iMX6ULL. On the ULL board I can
see a "ci_hdrc.0" in /sys/class/udc after boot. If I add now an USB GPIO
extcon to usbotg this changes to "ci_hdrc.1" and everything works fine
after boot, but not after unplugging USB and replugging.
To setup RNDIS I use the commands [1] I put at the end of this email for
reference.

2nd problem - constant resetting
When I compile a plain mainline kernel with "imx_v6_v7_defconfig" and
boot the iMX6ULL with it I see that the USB is constantly resetting the
hub that is present on the Colibri Evaluation carrier board.

[   49.654621] usb 1-1: reset high-speed USB device number 2 using
ci_hdrc
[   52.180781] usb 1-1: reset high-speed USB device number 2 using
ci_hdrc
[   54.699678] usb 1-1: reset high-speed USB device number 2 using
ci_hdrc


This looks to me like something is still not quite right for the use-
case of ULL. I doubt that our hardware is the problem as we never have
seen those problems downstream.

@Peter: Stefan Agner suggested to include you too in this mail as you
have in depth knowledge of differencies of the Chipidea IP of iMX7 and
iMX6ULL. I hope you can point me to a direction where I can pick up
again and solve those issues :-).

For any suggestions or confirmations of those problems I would be very
grateful.

Best Regards,
Philippe Schenker



[1]

CONFIGFS="/sys/kernel/config/usb_gadget/grndis"

echo "Testscript for RNDIS, setting up RNDIS stuff in ${CONFIGFS}"

mkdir $CONFIGFS
echo 7015 > "${CONFIGFS}/idVendor"
echo 16412 > "${CONFIGFS}/idProduct"

mkdir "${CONFIGFS}/strings/0x409"
echo "Toradex" > ${CONFIGFS}/strings/0x409/manufacturer
echo "Test-Module" > ${CONFIGFS}/strings/0x409/product
echo "12345678" > ${CONFIGFS}/strings/0x409/serialnumber

mkdir -p "${CONFIGFS}/configs/c.1/strings/0x409/"
echo 1 > ${CONFIGFS}/configs/c.1/MaxPower
echo 192 > ${CONFIGFS}/configs/c.1/bmAttributes

mkdir -p "${CONFIGFS}/functions/rndis.usb0"
echo "02" > "${CONFIGFS}/functions/rndis.usb0/class"
echo "00:14:2d:ff:ff:ff" > "${CONFIGFS}/functions/rndis.usb0/dev_addr"
echo "00:14:2d:ff:ff:fe" > "${CONFIGFS}/functions/rndis.usb0/host_addr"
echo "00" > "${CONFIGFS}/functions/rndis.usb0/protocol"
echo 5 > "${CONFIGFS}/functions/rndis.usb0/qmult"
echo "06" > "${CONFIGFS}/functions/rndis.usb0/subclass"

ln -s "${CONFIGFS}/functions/rndis.usb0"
"${CONFIGFS}/configs/c.1/rndis.usb0"

echo "ci_hdrc.0" > "${CONFIGFS}/UDC"




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux