drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c- Extension
.c- Size
- 110150 bytes
- Lines
- 3648
- 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.hdc.hdc_bios_types.hcore_types.hcore_status.hresource.hdm_helpers.hdce110_hwseq.hdce110/dce110_timing_generator.hdce/dce_hwseq.hdce100/dce100_hwseq.hgpio_service_interface.hdce110/dce110_compressor.hbios/bios_parser_helper.htiming_generator.hmem_input.hopp.hipp.htransform.hstream_encoder.hlink_encoder.hlink_enc_cfg.hlink_hwss.hlink_service.hdccg.hclock_source.hclk_mgr.habm.haudio.hreg_helper.hpanel_cntl.hdc_state_priv.h
Detected Declarations
struct dce110_hw_seq_reg_offsetsfunction dce110_init_ptefunction enable_display_pipe_clock_gatingfunction dce110_enable_display_power_gatingfunction dce110_prescale_paramsfunction dce110_set_input_transfer_funcfunction convert_to_custom_floatfunction dce110_translate_regamma_to_hw_formatfunction dce110_set_output_transfer_funcfunction dce110_update_info_framefunction dce110_external_encoder_controlfunction dce110_prepare_ddcfunction dce110_dac_load_detectfunction dce110_enable_streamfunction link_transmitter_controlfunction dce110_edp_wait_for_hpd_readyfunction dce110_edp_power_controlfunction dce110_edp_wait_for_T12function dce110_edp_backlight_controlfunction dce110_enable_audio_streamfunction dce110_disable_audio_streamfunction dce110_disable_streamfunction dce110_unblank_streamfunction dce110_blank_streamfunction dce110_set_avmutefunction translate_to_dto_sourcefunction populate_audio_dp_link_infofunction floorfunction build_audio_outputfunction program_scalerfunction dce110_enable_stream_timingfunction dce110_apply_single_controller_ctx_to_hwfunction power_down_encodersfunction power_down_controllersfunction power_down_clock_sourcesfunction power_down_all_hw_blocksfunction disable_vga_and_power_gate_all_controllersfunction get_edp_streamsfunction get_edp_links_with_sinkfunction clean_up_dsc_blocksfunction dc_hwss_enable_otg_pwafunction dce110_enable_accelerated_modefunction compute_pstate_blackout_durationfunction dce110_set_displaymarksfunction dce110_set_safe_displaymarksfunction set_drrfunction get_positionfunction set_static_screen_control
Annotated Snippet
struct dce110_hw_seq_reg_offsets {
uint32_t crtc;
};
static const struct dce110_hw_seq_reg_offsets reg_offsets[] = {
{
.crtc = (mmCRTC0_CRTC_GSL_CONTROL - mmCRTC_GSL_CONTROL),
},
{
.crtc = (mmCRTC1_CRTC_GSL_CONTROL - mmCRTC_GSL_CONTROL),
},
{
.crtc = (mmCRTC2_CRTC_GSL_CONTROL - mmCRTC_GSL_CONTROL),
},
{
.crtc = (mmCRTCV_GSL_CONTROL - mmCRTC_GSL_CONTROL),
}
};
#define HW_REG_BLND(reg, id)\
(reg + reg_offsets[id].blnd)
#define HW_REG_CRTC(reg, id)\
(reg + reg_offsets[id].crtc)
#define MAX_WATERMARK 0xFFFF
#define SAFE_NBP_MARK 0x7FFF
/*******************************************************************************
* Private definitions
******************************************************************************/
/***************************PIPE_CONTROL***********************************/
static void dce110_init_pte(struct dc_context *ctx)
{
uint32_t addr;
uint32_t value = 0;
uint32_t chunk_int = 0;
uint32_t chunk_mul = 0;
addr = mmUNP_DVMM_PTE_CONTROL;
value = dm_read_reg(ctx, addr);
set_reg_field_value(
value,
0,
DVMM_PTE_CONTROL,
DVMM_USE_SINGLE_PTE);
set_reg_field_value(
value,
1,
DVMM_PTE_CONTROL,
DVMM_PTE_BUFFER_MODE0);
set_reg_field_value(
value,
1,
DVMM_PTE_CONTROL,
DVMM_PTE_BUFFER_MODE1);
dm_write_reg(ctx, addr, value);
addr = mmDVMM_PTE_REQ;
value = dm_read_reg(ctx, addr);
chunk_int = get_reg_field_value(
value,
DVMM_PTE_REQ,
HFLIP_PTEREQ_PER_CHUNK_INT);
chunk_mul = get_reg_field_value(
value,
DVMM_PTE_REQ,
HFLIP_PTEREQ_PER_CHUNK_MULTIPLIER);
if (chunk_int != 0x4 || chunk_mul != 0x4) {
set_reg_field_value(
value,
255,
DVMM_PTE_REQ,
MAX_PTEREQ_TO_ISSUE);
set_reg_field_value(
value,
4,
DVMM_PTE_REQ,
HFLIP_PTEREQ_PER_CHUNK_INT);
set_reg_field_value(
Annotation
- Immediate include surface: `dm_services.h`, `dc.h`, `dc_bios_types.h`, `core_types.h`, `core_status.h`, `resource.h`, `dm_helpers.h`, `dce110_hwseq.h`.
- Detected declarations: `struct dce110_hw_seq_reg_offsets`, `function dce110_init_pte`, `function enable_display_pipe_clock_gating`, `function dce110_enable_display_power_gating`, `function dce110_prescale_params`, `function dce110_set_input_transfer_func`, `function convert_to_custom_float`, `function dce110_translate_regamma_to_hw_format`, `function dce110_set_output_transfer_func`, `function dce110_update_info_frame`.
- 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.