• Tony Lindgren's avatar
    usb: musb: Fix session based PM for first invalid VBUS · 2b9a8c40
    Tony Lindgren authored
    With the session bit based PM runtime working on musb, we've
    implemented few quirks to attempt to detect the current state of
    the hardware. One of the quirks is for invalid VBUS as peripheral,
    but it is not working in all cases.
    
    If we start musb on dm3730 as a peripheral with no cable connected,
    we will get the devctl 91 state once and will never idle as there
    are not further interrupts from musb. So we need to ignore the first
    devctl 91 state as there will be more interrupts if we're connected.
    
    The invalid VBUS state also can happen always when connected to
    certain USB hubs. Looks like musb on dm3730 can claim invalid VBUS
    with some hubs while 3717-evm and BeagleBone don't. This causes
    session as peripheral to fail for dm3730 with some hubs.
    
    This too is fixed by ignoring only the first invalid VBUS. When
    connected, we can just look at the session bit as that will clear
    automatically when the session ends.
    
    Fixes: 467d5c98 ("usb: musb: Implement session bit based runtime PM for musb-core")
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarBin Liu <b-liu@ti.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2b9a8c40
musb_core.c 73.1 KB