• Stephane Viau's avatar
    drm/msm/mdp5: make SMP module dynamically configurable · bfcdfb0e
    Stephane Viau authored
    The Shared Memory Pool (SMP) has its own limitation, features and
    state. Some examples are:
     - the number of Memory Macro Block (MMB) and their size
     - the number of lines that can be fetched
     - the state of MMB currently allocated
     - the computation of number of blocks required per plane
     - client IDs ...
    
    In order to avoid private data to be overwritten by other modules,
    let's make these private to the SMP module.
    
    Some of these depend on the hardware configuration, let's add them
    to the mdp5_config struct.
    
    In some hw configurations, some MMBs are statically tied to RGB
    pipes and cannot be re-allocated dynamically. This change
    introduces the concept of MMB static usage and makes sure that
    dynamic MMB requests are dimensioned accordingly.
    
    A note on passing a pipe pointer, instead of client IDs:
    Client IDs are SMP-related information. Passing PIPE information
    to SMP lets SMP module to find out which SMP client(s) are used.
    This allows the SMP module to access the PIPE pointer, which can
    be used for FIFO watermark configuration.
    By the way, even though REG_MDP5_PIPE_REQPRIO_FIFO_WM_* registers
    are part of the PIPE registers, their functionality is to reflect
    the behavior of the SMP block. These registers access is now
    restricted to the SMP module.
    Signed-off-by: default avatarStephane Viau <sviau@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    bfcdfb0e
mdp5_smp.h 1.43 KB