drm/amd/display: Use region6 size in fw_meta_info
authorJinZe Xu <jinze.xu@amd.com>
Fri, 18 Oct 2024 14:15:57 +0000 (22:15 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 8 Nov 2024 16:45:30 +0000 (11:45 -0500)
[Why]
If driver allocated region6 size is not same as the size in firmware,
dmcub won't enable region6.

[How]
Use region6 size in dmcub_fw_meta instead of a constant value.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: JinZe Xu <jinze.xu@amd.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c

index db16066..a3f3ff5 100644 (file)
@@ -497,6 +497,7 @@ enum dmub_status
        const struct dmub_fw_meta_info *fw_info;
        uint32_t fw_state_size = DMUB_FW_STATE_SIZE;
        uint32_t trace_buffer_size = DMUB_TRACE_BUFFER_SIZE;
+       uint32_t shared_state_size = DMUB_FW_HEADER_SHARED_STATE_SIZE;
        uint32_t window_sizes[DMUB_WINDOW_TOTAL] = { 0 };
 
        if (!dmub->sw_init)
@@ -514,6 +515,7 @@ enum dmub_status
 
                fw_state_size = fw_info->fw_region_size;
                trace_buffer_size = fw_info->trace_buffer_size;
+               shared_state_size = fw_info->shared_state_size;
 
                /**
                 * If DM didn't fill in a version, then fill it in based on
@@ -534,7 +536,7 @@ enum dmub_status
        window_sizes[DMUB_WINDOW_5_TRACEBUFF] = trace_buffer_size;
        window_sizes[DMUB_WINDOW_6_FW_STATE] = fw_state_size;
        window_sizes[DMUB_WINDOW_7_SCRATCH_MEM] = DMUB_SCRATCH_MEM_SIZE;
-       window_sizes[DMUB_WINDOW_SHARED_STATE] = DMUB_FW_HEADER_SHARED_STATE_SIZE;
+       window_sizes[DMUB_WINDOW_SHARED_STATE] = max(DMUB_FW_HEADER_SHARED_STATE_SIZE, shared_state_size);
 
        out->fb_size =
                dmub_srv_calc_regions_for_memory_type(params, out, window_sizes, DMUB_WINDOW_MEMORY_TYPE_FB);