• Douglas Anderson's avatar
    usb: dwc2: host: Fix remote wakeup when not in DWC2_L2 · 1fb7f12d
    Douglas Anderson authored
    In commit 734643df ("usb: dwc2: host: add flag to reflect bus
    state") we changed dwc2_port_suspend() not to set the lx_state
    anymore (instead it sets the new bus_suspended variable).  This
    introduced a bug where we would fail to detect device insertions if:
    
    1. Plug empty hub into dwc2
    2. Plug USB flash drive into the empty hub.
    3. Wait a few seconds
    4. Unplug USB flash drive
    5. Less than 2 seconds after step 4, plug the USB flash drive in again.
    
    The dwc2_hcd_rem_wakeup() function should have been changed to look at
    the new bus_suspended variable.
    
    Let's fix it.  Since commit b46146d5 ("usb: dwc2: host: resume root
    hub on remote wakeup") talks about needing the root hub resumed if the
    bus was suspended, we'll include it in our test.
    
    It appears that the "port_l1_change" should only be set to 1 if we were
    in DWC2_L1 (the driver currently never sets this), so we'll update the
    former "else" case based on this test.
    
    Fixes: 734643df ("usb: dwc2: host: add flag to reflect bus state")
    Acked-by: default avatarJohn Youn <johnyoun@synopsys.com>
    Tested-by: default avatarGregory Herrero <gregory.herrero@intel.com>
    Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    1fb7f12d
hcd.c 88.8 KB