I am trying to get my BF548 device to enter hibernate on USB suspend, and then wakeup from hibernate on a USB resume without Re-enumeration. Has anybody successfully done this or have any ideas how to do it?
Currently, the hibernation, and wakeup on USB resume all work correctly, but the host always peforms a USB reset and re-enumerates, resulting in a Set Config callback. I am manipulating the CSR_HBR and CSR_RSTD bits in the USB_APHY_CNTRL2 register, and this part is working, as if it were not, there would be a disconnect event at the host when hibernate is entered. I suspect it has something to do with the way the USB registers are saved before entering hibernate and then restored after hibernate. At the moment, am I pretty much just saving and restoring the all the USB registers blindly. I suspect there is some special ordering/operations to be performed to do this correctly. One thing that is not restored is the HS_MODE bit in the USB_POWER register. I am not sure if this state can be restored when in high speed mode.