This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM4378: USB memory LPM issue

Part Number: AM4378

Hi,

Let me talk about USB of AM437x.

We use Processor SDK RTLinux latest of v04.02.00.09.

We connect USB memory.
But It does not work with USB memory supported LPM.
We found same thread. It seems same probrem

e2e.ti.com/.../1860658

I think RTLinux latest of v04.02.00.09 does not support USB memory LPM.
This understanding is correct ??

We can not find same solutions on v04.02.00.09 as discuss in thread.

=========
root@am437x-evm:~# echo 0 > /sys/bus/usb/devices/1-1/power/usb2_hardware_lpm
root@am437x-evm:~# cat /sys/bus/usb/devices/1-1/power/usb2_hardware_lpm
disabled
=========

Please let me know about this soulution, if you know ?

Best Regards
Hiroyasu

  • The USB experts have been notified. They will respond here.
  • In general, this type of issues is due to the USB devices and the USB host do not agree on the LPM parameters which causes the LPM transactions failed.

    Please check if the patch in the following link solves the issue for you. The patch disables the LPM support on the USB host side.

  • Hi, Bin Liu

    Thank you for your reply.

    Latest SDK seems to include patch you told me.

    ======================

    static void hub_set_initial_usb2_lpm_policy(struct usb_device *udev)

    {

                 struct usb_hub *hub = usb_hub_to_struct_hub(udev->parent);

                 int connect_type = USB_PORT_CONNECT_TYPE_UNKNOWN;

                 if (!udev->usb2_hw_lpm_capable || !udev->bos)

                               return;

    ======================

    But It still has get issue.

    It means AM437x can not access to USB memory LPM enable when AM437x is Host...

    Best Regards

    Hiroyasu

  • It seems you misunderstood the patch. it removes the line crossed below.

    Hiroyasu Tazawa4 said:

    ======================
    static void hub_set_initial_usb2_lpm_policy(struct usb_device *udev)

    {
                struct usb_hub *hub = usb_hub_to_struct_hub(udev->parent);
                int connect_type = USB_PORT_CONNECT_TYPE_UNKNOWN;
                if (!udev->usb2_hw_lpm_capable || !udev->bos)
                              return;
    ======================

  • Hi, Bin Liu

    Thank you for your reply.

    It was working !

    Best Regards

    Hiroyasu

  • Glad the issue is solved. Thanks for the update.