• Serge Semin's avatar
    usb: dwc3: ulpi: Fix USB2.0 HS/FS/LS PHY suspend regression · e5f4ca3f
    Serge Semin authored
    First of all the commit e0082698 ("usb: dwc3: ulpi: conditionally
    resume ULPI PHY") introduced the Suspend USB2.0 HS/FS/LS PHY regression,
    as by design of the fix any attempt to read/write from/to the PHY control
    registers will completely disable the PHY suspension, which consequently
    will increase the USB bus power consumption. Secondly the fix won't work
    well for the very first attempt of the ULPI PHY control registers IO,
    because after disabling the USB2.0 PHY suspension functionality it will
    still take some time for the bus to resume from the sleep state if one has
    been reached before it. So the very first PHY register read/write
    operation will take more time than the busy-loop provides and the IO
    timeout error might be returned anyway.
    
    Here we suggest to fix the denoted problems in the following way. First of
    all let's not disable the Suspend USB2.0 HS/FS/LS PHY functionality so to
    make the controller and the USB2.0 bus more power efficient. Secondly
    instead of that we'll extend the PHY IO op wait procedure with 1 - 1.2 ms
    sleep if the PHY suspension is enabled (1ms should be enough as by LPM
    specification it is at most how long it takes for the USB2.0 bus to resume
    from L1 (Sleep) state). Finally in case if the USB2.0 PHY suspension
    functionality has been disabled on the DWC USB3 controller setup procedure
    we'll compensate the USB bus resume process latency by extending the
    busy-loop attempts counter.
    
    Fixes: e0082698 ("usb: dwc3: ulpi: conditionally resume ULPI PHY")
    Acked-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: default avatarSerge Semin <Sergey.Semin@baikalelectronics.ru>
    Link: https://lore.kernel.org/r/20201210085008.13264-4-Sergey.Semin@baikalelectronics.ru
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e5f4ca3f
ulpi.c 2.28 KB