• John Stultz's avatar
    usb: dwc2: Workaround case where GOTGCTL state is wrong · fc30c4bb
    John Stultz authored
    When removing a USB-A to USB-otg adapter cable, we get a change status
    irq, and then in dwc2_conn_id_status_change, we erroneously see the
    GOTGCTL_CONID_B flag set. This causes us to get stuck in the
    "while (!dwc2_is_device_mode(hsotg))" loop, spitting out "Waiting for
    Peripheral Mode, Mode=Host" warnings until it fails out many seconds
    later.
    
    This patch works around the issue by re-reading the GOTGCTL state to
    check if the GOTGCTL_CONID_B is still set and if not restarting the
    change status logic.
    
    Cc: Wei Xu <xuwei5@hisilicon.com>
    Cc: Guodong Xu <guodong.xu@linaro.org>
    Cc: Amit Pundir <amit.pundir@linaro.org>
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: John Youn <johnyoun@synopsys.com>
    Cc: Douglas Anderson <dianders@chromium.org>
    Cc: Chen Yu <chenyu56@huawei.com>
    Cc: Vardan Mikayelyan <mvardan@synopsys.com>
    Cc: Kishon Vijay Abraham I <kishon@ti.com>
    Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: linux-usb@vger.kernel.org
    Reviewed-by: default avatarVardan Mikayelyan <mvardan@synopsys.com>
    Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
    Signed-off-by: default avatarJohn Youn <johnyoun@synopsys.com>
    Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
    fc30c4bb
hcd.c 149 KB