• Douglas Anderson's avatar
    usb: dwc2: host: Properly set the HFIR · 9ed04d97
    Douglas Anderson authored
    According to the most up to date version of the dwc2 databook, the FRINT
    field of the HFIR register should be programmed to:
    * 125 us * (PHY clock freq for HS) - 1
    * 1000 us * (PHY clock freq for FS/LS) - 1
    
    This is opposed to older versions of the doc that claimed it should be:
    * 125 us * (PHY clock freq for HS)
    * 1000 us * (PHY clock freq for FS/LS)
    
    In case you didn't spot it, the difference is the "- 1".
    
    Let's add the "- 1" to match the newest user manual.  It's presumed that
    the "- 1" should have always been there and that this was always a
    documentation error.  If some hardware needs the "- 1" and other
    hardware doesn't, we'll have to add a configuration parameter for it in
    the future.
    
    I checked things before and after this patch on rk3288 using a Total
    Phase Beagle 5000 analyzer.
    
    Before this patch, a low speed mouse shows constant Frame Timing Jitter
    errors.  After this patch errors have gone away.
    
    Before this patch SOF packets move forward about 1 us per 4 ms.  After
    this patch the SOF packets move backward about 1 us per 255 ms.  Some
    specific SOF timestamps from the analyzer are below.
    
    Before:
      6.603.790
      6.603.916
      6.604.041
      6.604.166
      ...
      6.607.541
      6.607.667
      6.607.792
      6.607.917
      ...
      6.611.417
      6.611.543
      6.611.668
      6.611.793
    
    After:
      6.215.159
      6.215.284
      6.215.408
      6.215.533
      6.215.658
      ...
      6.470.658
      6.470.783
      6.470.907
      ...
      6.726.032
      6.726.157
      6.725.281
      6.725.406
    Acked-by: default avatarJohn Youn <johnyoun@synopsys.com>
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
    Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
    9ed04d97
core.c 99.6 KB