• Harry Wentland's avatar
    drm/amd/display: Add DCN reg offsets to DC · e5028e9f
    Harry Wentland authored
    [Why&How]
    Add a field to store the DCN IP offset for use with runtime offset
    calculation
    
    This offset is indexed using reg*_BASE_IDX for the corresponding
    group of registers. For example, address of DIG_BE_CNTL instance 0 is
    calculated like: dcn_reg_offsets[regDIG0_DIG_BE_CNTL_BASE_IDX] +
    regDIG0_DIG_BE_CNTL.
    
    {dcn,nbio}_reg_offsets are used only for the ASICs for which runtime
    initializaion of offsets are enabled through the modified SR* macros
    that contain an additional REG_STRUCT element in the macro definition.
    
    DCN3.5+ will fail dc_create() if {dcn,nbio}_reg_offsets are null. They
    are applicable starting with DCN32/321 and are not used for ASICs
    upstreamed before them. ASICs before DCN32/321 will not contain any
    computation that involves {dcn,nbio}_reg_offsets. For them, the
    address/offset computation is done during compile time.
    
    This is evident from the BASE_INNER definition for compile time vs run
    time initialization:
    
    Compile time init: #define BASE_INNER(seg) DCN_BASE__INST0_SEG ## seg
    Run time init:     #define BASE_INNER(seg) ctx->dcn_reg_offsets[seg]
    
    BASE_INNER macro is local to each dcnxx_resource.c and hence different
    ASICs can have either runtime or compile time initialization of offsets.
    
    The computation of offset is done for registers all at once during
    driver load and hence it does not introduce any performance overhead
    during normal operation.
    Reviewed-by: default avatarRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Acked-by: default avatarSolomon Chiu <solomon.chiu@amd.com>
    Signed-off-by: default avatarHarry Wentland <harry.wentland@amd.com>
    Signed-off-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
    Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    e5028e9f
amdgpu_dm.c 348 KB