lkml.org 
[lkml]   [2020]   [May]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.6 165/194] usb: gadget: tegra-xudc: Fix idle suspend/resume
    Date
    From: Thierry Reding <treding@nvidia.com>

    commit 0534d40160cb9505073b0ecf5e7210daee319a66 upstream.

    When the XUDC device is idle (i.e. powergated), care must be taken not
    to access any registers because that would lead to a crash.

    Move the call to tegra_xudc_device_mode_off() into the same conditional
    as the tegra_xudc_powergate() call to make sure we only force device
    mode off if the XUDC is actually powered up.

    Fixes: 49db427232fe ("usb: gadget: Add UDC driver for tegra XUSB device mode controller")
    Acked-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/usb/gadget/udc/tegra-xudc.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    --- a/drivers/usb/gadget/udc/tegra-xudc.c
    +++ b/drivers/usb/gadget/udc/tegra-xudc.c
    @@ -3740,11 +3740,11 @@ static int __maybe_unused tegra_xudc_sus

    flush_work(&xudc->usb_role_sw_work);

    - /* Forcibly disconnect before powergating. */
    - tegra_xudc_device_mode_off(xudc);
    -
    - if (!pm_runtime_status_suspended(dev))
    + if (!pm_runtime_status_suspended(dev)) {
    + /* Forcibly disconnect before powergating. */
    + tegra_xudc_device_mode_off(xudc);
    tegra_xudc_powergate(xudc);
    + }

    pm_runtime_disable(dev);


    \
     
     \ /
      Last update: 2020-05-18 20:08    [W:4.218 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site