Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amd/display: Add DML path for FAMS methods

[Why]
DML needs a path for FAMS methods.

[How]
Apply instance of fams2_stream_sub_params_v2 structure with
a FAMS placeholder for DML.

Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
Signed-off-by: Oleh Kuzhylnyi <okuzhyln@amd.com>
Signed-off-by: Wayne Lin <wayne.lin@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Oleh Kuzhylnyi and committed by
Alex Deucher
ed8045a7 35b74ecc

+16 -5
+1 -1
drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c
··· 1758 1758 1759 1759 /* copy stream static sub-state */ 1760 1760 memcpy(&config->stream_v1[i].sub_state, 1761 - &context->bw_ctx.bw.dcn.fams2_stream_sub_params[i], 1761 + &context->bw_ctx.bw.dcn.fams2_stream_sub_params_v2[i], 1762 1762 sizeof(config->stream_v1[i].sub_state)); 1763 1763 } 1764 1764 }
+11 -3
drivers/gpu/drm/amd/display/dc/dml2/dml21/dml21_utils.c
··· 384 384 /* reset fams2 data */ 385 385 memset(&context->bw_ctx.bw.dcn.fams2_stream_base_params, 0, sizeof(union dmub_cmd_fams2_config) * DML2_MAX_PLANES); 386 386 memset(&context->bw_ctx.bw.dcn.fams2_stream_sub_params, 0, sizeof(union dmub_cmd_fams2_config) * DML2_MAX_PLANES); 387 + memset(&context->bw_ctx.bw.dcn.fams2_stream_sub_params_v2, 0, sizeof(union dmub_fams2_stream_static_sub_state_v2) * DML2_MAX_PLANES); 387 388 memset(&context->bw_ctx.bw.dcn.fams2_global_config, 0, sizeof(struct dmub_cmd_fams2_global_config)); 388 389 389 390 if (dml_ctx->v21.mode_programming.programming->fams2_required) { ··· 415 414 memcpy(static_base_state, 416 415 &dml_ctx->v21.mode_programming.programming->stream_programming[dml_stream_idx].fams2_base_params, 417 416 sizeof(union dmub_cmd_fams2_config)); 418 - memcpy(static_sub_state, 419 - &dml_ctx->v21.mode_programming.programming->stream_programming[dml_stream_idx].fams2_sub_params, 420 - sizeof(union dmub_cmd_fams2_config)); 417 + 418 + if (dc->debug.fams_version.major == 3) { 419 + memcpy(&context->bw_ctx.bw.dcn.fams2_stream_sub_params_v2[num_fams2_streams], 420 + &dml_ctx->v21.mode_programming.programming->stream_programming[dml_stream_idx].fams2_sub_params_v2, 421 + sizeof(union dmub_fams2_stream_static_sub_state_v2)); 422 + } else { 423 + memcpy(static_sub_state, 424 + &dml_ctx->v21.mode_programming.programming->stream_programming[dml_stream_idx].fams2_sub_params, 425 + sizeof(union dmub_cmd_fams2_config)); 426 + } 421 427 422 428 switch (dc->debug.fams_version.minor) { 423 429 case 1:
+4 -1
drivers/gpu/drm/amd/display/dc/inc/core_types.h
··· 556 556 struct dml2_mcache_surface_allocation mcache_allocations[DML2_MAX_PLANES]; 557 557 struct dmub_cmd_fams2_global_config fams2_global_config; 558 558 union dmub_cmd_fams2_config fams2_stream_base_params[DML2_MAX_PLANES]; 559 - union dmub_cmd_fams2_config fams2_stream_sub_params[DML2_MAX_PLANES]; 559 + union { 560 + union dmub_cmd_fams2_config fams2_stream_sub_params[DML2_MAX_PLANES]; 561 + union dmub_fams2_stream_static_sub_state_v2 fams2_stream_sub_params_v2[DML2_MAX_PLANES]; 562 + }; 560 563 struct dml2_display_arb_regs arb_regs; 561 564 }; 562 565