Any Known Issues With Suspend/Resume and VLPS With KL26

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

Any Known Issues With Suspend/Resume and VLPS With KL26

729 Views
chuckhorkin
Contributor I

Hello,

I have code that puts my device to VLPS when the SLEEP bit is set (due to a suspend) on the USB bus.  I'm using the Freescale USB Stack v4.1.1.  I monitor USB_USBTRC0_USBRESMEN_MASK to see if I can enter VLPS and then I do.


This works in most cases, but I'm finding on some platforms with some corner cases it does not.  I've more or less

proven that I get stuck in the VLPS state instead of asynchronously resuming.

When I get stuck I'm seeing that my Clear Feature Remote Wakeup is getting Stalled as Well.

Is there any known issues with this or known limitations with certain systems?

Is there a suggested approach for power management with the USB stack?

Thanks.

Labels (2)
Tags (4)
0 Kudos
3 Replies

469 Views
chuckhorkin
Contributor I

I think the Remote Wakeup is just an indication that the device is not responding (it is still in VLPS).

Can you confirm what the recommended way to put the device in VLPS in regards to USB Suspend is?  I think I am missing an asynchronous resume and I get stuck in VLPS.

Update: Looks like it may be a bug with the other interrupts I'm using to come out of VLPS.

0 Kudos

469 Views
jeremyzhou
NXP Employee
NXP Employee

Hi Chunks,

Please find below the explanation and some attachments to get the USB stack to work with low power modes.
The USB module has two different interrupts for a USB resume event. One asynchronous to be able to wake from a low power mode, which is triggered by change in the state of the USB lines. The other is synchronous and is triggered only after 2.5us of detecting a K state (D+ = 0, D- = 1, for Full Speed). The application is responsible to transition to the low power mode whenever it requires it, and for this purpose it must check the device state as reported by the USB stack. When a suspend condition is detected in the bus, the SLEEP interrupt triggers and the stack changes its state to suspend; then the application will transition to the low power mode. When this SLEEP interrupt occurs, the asynchronous wake interrupt is enabled, and is disabled when it is triggered (this is required by the module to clear the interrupt). In normal conditions, the synchronous resume interrupt or the reset interrupt will be triggered afterwards, causing the stack to transition its state to other than suspend.

Hope it helps.


Have a great day,
Ping

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

0 Kudos

469 Views
jeremyzhou
NXP Employee
NXP Employee

Hi Chunks,

After had a look through the statement, I'm still a little bit confused with your issue.

So I was wondering if you can clarify the USB remote wakeup event.

I'm looking forward to your reply.
Have a great day,
Ping

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

0 Kudos