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.

TUSB4041I: Suspending a downstream port

Part Number: TUSB4041I

Hello,

I my application I have one port which is always connected to another on-board device, so the removable bit will be cleared for that port.

That device cannot be put to sleep unless the attached USB port is in the suspended state.  That device does have a VBUS detect input, but I don't want to remove the 5V on that signal to put the device to sleep because then the port will enter the detached state and will cause re-enumeration when the 5V is re-applied.

Question:  Can I cause this port to suspend and resume by manipulating the used bit ?  Do I even need to do that, or will the port automatically enter the suspend state if no downstream data is sent to it ?

Thanks.

--ken

  • Hi Ken,

    The removable bit won't impact the suspend state on the port.  The hub will only suspend / resume the port if the host either suspends / resumes the entire USB or if the host sends a suspend / resume command to that particular port.  The behavior is dictated by the host, not the hub itself.

    Regards,

    JMMN

  • JMMN,

    What is the effect of clearing the used bit?

    Also, so what I think you are telling me is that it is possible for the host to direct suspend / resume commands to a specific port on the hub.  Is that correct?

    --ken

  • Hi Ken,

    Setting a USED or REMOVABLE bit in the hub will only change how the hub reports its configuration in its device descriptors.  So if only 3 USED bits were set, then it would report as a 3 port hub, not 4 port.   It doesn't really change the hub's operation.  USB hubs are essentially slave devices that are controlled by commands from the USB host and they cannot independently suspend ports.  Per the USB spec, a USB host can send a command to independently suspend / resume a single port but  most generic host / hub drivers do not support this and suspend and resume the entire bus.

    Regards,

    JMMN

  • JMMN,

    Thanks for those answers.

    So, one more question: In order to implement the USB suspend and resume states external to the hub device, can I simply switch in 1.5K pull-up / pull-down resistors on the D+ / D- signals of one of the downstream ports for suspend, and switch them back out when I want the port to resume?

  • Hi Ken,

    You can't force enable the DP pullup on a device to enter suspend mode.  A HS device will only drop to FS mode and enable its DP pullup to enter suspend mode after 3ms of inactivity on the bus (no SOFs or other traffic from the host).  If you try to swap in a 1.5K pullup on the line, the HS device will still have its HS terminations enabled (45 ohms) and you'll just create an offset /corruption which will likely result in a bus reset from the host.  USB is a host controlled bus so there is no clean way to force a suspend from a hub or device.  

    Regards,

    JMMN