• Shashank Sharma's avatar
    drm/amdgpu/OLAND: clip the ref divider max value · 7301757e
    Shashank Sharma authored
    This patch limits the ref_div_max value to 100, during the
    calculation of PLL feedback reference divider. With current
    value (128), the produced fb_ref_div value generates unstable
    output at particular frequencies. Radeon driver limits this
    value at 100.
    
    On Oland, when we try to setup mode 2048x1280@60 (a bit weird,
    I know), it demands a clock of 221270 Khz. It's been observed
    that the PLL calculations using values 128 and 100 are vastly
    different, and look like this:
    
    +------------------------------------------+
    |Parameter    |AMDGPU        |Radeon       |
    |             |              |             |
    +-------------+----------------------------+
    |Clock feedback              |             |
    |divider max  |  128         |   100       |
    |cap value    |              |             |
    |             |              |             |
    |             |              |             |
    +------------------------------------------+
    |ref_div_max  |              |             |
    |             |  42          |  20         |
    |             |              |             |
    |             |              |             |
    +------------------------------------------+
    |ref_div      |  42          |  20         |
    |             |              |             |
    +------------------------------------------+
    |fb_div       |  10326       |  8195       |
    +------------------------------------------+
    |fb_div       |  1024        |  163        |
    +------------------------------------------+
    |fb_dev_p     |  4           |  9          |
    |frac fb_de^_p|              |             |
    +----------------------------+-------------+
    
    With ref_div_max value clipped at 100, AMDGPU driver can also
    drive videmode 2048x1280@60 (221Mhz) and produce proper output
    without any blanking and distortion on the screen.
    
    PS: This value was changed from 128 to 100 in Radeon driver also, here:
    https://github.com/freedesktop/drm-tip/commit/4b21ce1b4b5d262e7d4656b8ececc891fc3cb806
    
    V1:
    Got acks from:
    Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Acked-by: default avatarChristian König <christian.koenig@amd.com>
    
    V2:
    - Restricting the changes only for OLAND, just to avoid any regression
      for other cards.
    - Changed unsigned -> unsigned int to make checkpatch quiet.
    
    V3: Apply the change on SI family (not only oland) (Christian)
    
    Cc: Alex Deucher <Alexander.Deucher@amd.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Eddy Qin <Eddy.Qin@amd.com>
    Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
    Signed-off-by: default avatarShashank Sharma <shashank.sharma@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    7301757e
amdgpu_pll.c 10.7 KB