• Imre Deak's avatar
    drm/dp: Add helpers to calculate the link BW overhead · c1d6a22b
    Imre Deak authored
    Add helpers drivers can use to calculate the BW allocation overhead -
    due to SSC, FEC, DSC and data alignment on symbol cycles - and the
    channel coding efficiency - due to the 8b/10b, 128b/132b encoding. On
    128b/132b links the FEC overhead is part of the coding efficiency, so
    not accounted for in the BW allocation overhead.
    
    The drivers can use these functions to calculate a ratio, controlling
    the stream symbol insertion rate of the source device in each SST TU
    or MST MTP frame. Drivers can calculate this
    
    m/n = (pixel_data_rate * drm_dp_bw_overhead()) /
          (link_data_rate * drm_dp_bw_channel_coding_efficiency())
    
    ratio for a given link and pixel stream and with that the
    
    slots_per_mtp = CEIL(64 * m / n)
    
    allocated slots per MTP for the stream in a link frame and with
    that the
    
    pbn = slots_per_mtp * drm_mst_get_pbn_divider()
    
    allocated PBNs for the stream on the MST link path.
    
    Take drm_dp_bw_overhead() into use in drm_dp_calc_pbn_mode(), for
    drivers calculating the PBN value directly.
    
    v2:
    - Add dockbook description to drm_dp_bw_channel_coding_efficiency().
      (LKP).
    - Clarify the way m/n ratio is calculated in the commit log.
    v3:
    - Fix compile breakage for !CONFIG_BACKLIGHT_CLASS_DEVICE. (LKP)
    - Account for FEC_PM overhead (+ 0.0015625 %), add comment
      with the formula to calculate the total FEC overhead. (Ville)
    v4:
    - Rename DRM_DP_OVERHEAD_SSC to DRM_DP_OVERHEAD_SSC_REF_CLK. (Ville)
    v5:
    - Clarify in the commit log what MTP means.
    - Simplify the commit log's formula to calculate PBN.
    
    Cc: Lyude Paul <lyude@redhat.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: kernel test robot <lkp@intel.com>
    Cc: dri-devel@lists.freedesktop.org
    Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> (v2)
    Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
    Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231107001505.3370108-1-imre.deak@intel.com
    c1d6a22b
drm_dp_helper.h 27.5 KB