drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c- Extension
.c- Size
- 45425 bytes
- Lines
- 1339
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
dm_services.hdm_helpers.hcore_types.hresource.hdcn30_hwseq.hdccg.hdce/dce_hwseq.hdcn30/dcn30_mpc.hdcn30/dcn30_dpp.hdcn10/dcn10_cm_common.hdcn30/dcn30_cm_common.hreg_helper.hdcn10/dcn10_hubbub.habm.hclk_mgr.hhubp.hdchubbub.htiming_generator.hopp.hipp.hmpc.hmcif_wb.hdc_dmub_srv.hlink_hwss.hdpcd_defs.hdcn20/dcn20_hwseq.hdcn30/dcn30_resource.hlink_service.hdc_state_priv.hdio/dcn10/dcn10_dio.h
Detected Declarations
function filesfunction dcn30_set_blend_lutfunction dcn30_set_mpc_shaper_3dlutfunction dcn30_set_input_transfer_funcfunction dcn30_program_gamut_remapfunction dcn30_set_output_transfer_funcfunction dcn30_set_writebackfunction dcn30_update_writebackfunction dcn30_mmhubbub_warmupfunction dcn30_enable_writebackfunction dcn30_disable_writebackfunction dcn30_program_all_writeback_pipes_in_treefunction dcn30_init_hwfunction dcn30_set_avmutefunction dcn30_update_info_framefunction dcn30_program_dmdata_enginefunction dcn30_setup_hdmi_frl_linkfunction dcn30_apply_idle_power_optimizationsfunction dcn30_does_plane_fit_in_mallfunction dcn30_hardware_releasefunction dcn30_set_disp_pattern_generatorfunction dcn30_prepare_bandwidthfunction dcn30_wait_for_all_pending_updatesfunction dcn30_get_underflow_debug_data
Annotated Snippet
if (dpp->funcs->dpp_get_gamut_remap) {
dpp->funcs->dpp_get_gamut_remap(dpp, &s.gamut_remap);
is_gamut_remap_available = true;
}
if (!s.is_enabled)
continue;
DTN_INFO("[%2d]: %7x %13s %8s %11s %10s %15s %10s %9s",
dpp->inst,
s.pre_dgam_mode,
(s.pre_dgam_select == 0) ? "sRGB" :
((s.pre_dgam_select == 1) ? "Gamma 2.2" :
((s.pre_dgam_select == 2) ? "Gamma 2.4" :
((s.pre_dgam_select == 3) ? "Gamma 2.6" :
((s.pre_dgam_select == 4) ? "BT.709" :
((s.pre_dgam_select == 5) ? "PQ" :
((s.pre_dgam_select == 6) ? "HLG" :
"Unknown")))))),
(s.gamcor_mode == 0) ? "Bypass" :
((s.gamcor_mode == 1) ? "RAM A" :
"RAM B"),
(s.shaper_lut_mode == 1) ? "RAM A" :
((s.shaper_lut_mode == 2) ? "RAM B" :
"Bypass"),
(s.lut3d_mode == 1) ? "RAM A" :
((s.lut3d_mode == 2) ? "RAM B" :
"Bypass"),
(s.lut3d_bit_depth <= 0) ? "12-bit" : "10-bit",
(s.lut3d_size == 0) ? "17x17x17" : "9x9x9",
(s.rgam_lut_mode == 0) ? "Bypass" :
((s.rgam_lut_mode == 1) ? "RAM A" :
"RAM B"));
if (is_gamut_remap_available) {
DTN_INFO(" %12s "
"%010lld %010lld %010lld %010lld "
"%010lld %010lld %010lld %010lld "
"%010lld %010lld %010lld %010lld",
(s.gamut_remap.gamut_adjust_type == 0) ? "Bypass" :
((s.gamut_remap.gamut_adjust_type == 1) ? "HW" :
"SW"),
s.gamut_remap.temperature_matrix[0].value,
s.gamut_remap.temperature_matrix[1].value,
s.gamut_remap.temperature_matrix[2].value,
s.gamut_remap.temperature_matrix[3].value,
s.gamut_remap.temperature_matrix[4].value,
s.gamut_remap.temperature_matrix[5].value,
s.gamut_remap.temperature_matrix[6].value,
s.gamut_remap.temperature_matrix[7].value,
s.gamut_remap.temperature_matrix[8].value,
s.gamut_remap.temperature_matrix[9].value,
s.gamut_remap.temperature_matrix[10].value,
s.gamut_remap.temperature_matrix[11].value);
}
DTN_INFO("\n");
}
DTN_INFO("\n");
DTN_INFO("DPP Color Caps: input_lut_shared:%d icsc:%d"
" dgam_ram:%d dgam_rom: srgb:%d,bt2020:%d,gamma2_2:%d,pq:%d,hlg:%d"
" post_csc:%d gamcor:%d dgam_rom_for_yuv:%d 3d_lut:%d"
" blnd_lut:%d oscs:%d\n\n",
dc->caps.color.dpp.input_lut_shared,
dc->caps.color.dpp.icsc,
dc->caps.color.dpp.dgam_ram,
dc->caps.color.dpp.dgam_rom_caps.srgb,
dc->caps.color.dpp.dgam_rom_caps.bt2020,
dc->caps.color.dpp.dgam_rom_caps.gamma2_2,
dc->caps.color.dpp.dgam_rom_caps.pq,
dc->caps.color.dpp.dgam_rom_caps.hlg,
dc->caps.color.dpp.post_csc,
dc->caps.color.dpp.gamma_corr,
dc->caps.color.dpp.dgam_rom_for_yuv,
dc->caps.color.dpp.hw_3d_lut,
dc->caps.color.dpp.ogam_ram,
dc->caps.color.dpp.ocsc);
DTN_INFO("MPCC: OPP DPP MPCCBOT MODE ALPHA_MODE PREMULT OVERLAP_ONLY IDLE"
" SHAPER mode 3DLUT mode 3DLUT bit-depth 3DLUT size OGAM mode OGAM LUT"
" GAMUT adjust "
"C11 C12 C13 C14 "
"C21 C22 C23 C24 "
"C31 C32 C33 C34 \n");
for (i = 0; i < pool->mpcc_count; i++) {
struct mpcc_state s = {0};
pool->mpc->funcs->read_mpcc_state(pool->mpc, i, &s);
Annotation
- Immediate include surface: `dm_services.h`, `dm_helpers.h`, `core_types.h`, `resource.h`, `dcn30_hwseq.h`, `dccg.h`, `dce/dce_hwseq.h`, `dcn30/dcn30_mpc.h`.
- Detected declarations: `function files`, `function dcn30_set_blend_lut`, `function dcn30_set_mpc_shaper_3dlut`, `function dcn30_set_input_transfer_func`, `function dcn30_program_gamut_remap`, `function dcn30_set_output_transfer_func`, `function dcn30_set_writeback`, `function dcn30_update_writeback`, `function dcn30_mmhubbub_warmup`, `function dcn30_enable_writeback`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.