• Daniel Mack's avatar
    usb: musb: do not sleep in atomic context · 73926db3
    Daniel Mack authored
    musb_port_reset() is called from musb_hub_control() which in turn holds
    a spinlock, so musb_port_reset() is not allowed to call msleep().
    
    With the asynchronous work helpers in place, this is fortunately easy to
    fix by rescheduling the reset deassertion function to after the time
    when the wait period is finished.
    
    Note, however, that the MUSB_POWER_RESUME bit is only set on AM33xx
    processors under rare conditions such as when to another driver
    reporting an error during suspend. Hence, this didn't hit me yet in
    normal operation.
    Signed-off-by: default avatarDaniel Mack <zonque@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    73926db3
musb_core.c 64.2 KB