drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/amd/display/dc/inc/hw/link_encoder.h- Extension
.h- Size
- 13294 bytes
- Lines
- 473
- 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
grph_object_defs.hsignal_types.hdc_types.h
Detected Declarations
struct dc_contextstruct encoder_set_dp_phy_pattern_paramstruct link_mst_stream_allocation_tablestruct dc_link_settingsstruct link_training_settingsstruct pipe_ctxstruct encoder_init_datastruct encoder_feature_supportstruct link_encoderstruct link_enc_statestruct frl_txffestruct link_encoder_funcsstruct link_enc_assignmentstruct hpo_frl_link_encoderstruct hpo_frl_link_enc_statestruct hpo_frl_link_encoder_funcsstruct hpo_dp_link_enc_statestruct hpo_dp_link_encoderstruct hpo_dp_link_encoder_funcsenum phy_source_selectenum encoder_type_selectenum link_enc_cfg_modeenum dp2_link_modeenum dp2_phy_tp_selectenum dp2_phy_tp_prbs
Annotated Snippet
struct encoder_init_data {
enum channel_id channel;
struct graphics_object_id connector;
struct gpio *hpd_gpio;
enum hpd_source_id hpd_source;
/* TODO: in DAL2, here was pointer to EventManagerInterface */
struct graphics_object_id encoder;
struct graphics_object_id analog_encoder;
enum engine_id analog_engine;
struct dc_context *ctx;
enum transmitter transmitter;
};
struct encoder_feature_support {
union {
struct {
uint32_t IS_HBR2_CAPABLE:1;
uint32_t IS_HBR3_CAPABLE:1;
uint32_t IS_TPS3_CAPABLE:1;
uint32_t IS_TPS4_CAPABLE:1;
uint32_t HDMI_6GB_EN:1;
uint32_t IS_DP2_CAPABLE:1;
uint32_t IS_UHBR10_CAPABLE:1;
uint32_t IS_UHBR13_5_CAPABLE:1;
uint32_t IS_UHBR20_CAPABLE:1;
uint32_t DP_IS_USB_C:1;
uint32_t IS_HDMI_FRL_CAPABLE:1;
uint32_t IS_FRL_8G_CAPABLE:1;
uint32_t IS_FRL_10G_CAPABLE:1;
uint32_t IS_FRL_12G_CAPABLE:1;
uint32_t IS_FRL_16G_CAPABLE:1;
uint32_t IS_FRL_20G_CAPABLE:1;
uint32_t IS_FRL_24G_CAPABLE:1;
} bits;
uint32_t raw;
} flags;
enum dc_color_depth max_hdmi_deep_color;
unsigned int max_hdmi_pixel_clock;
bool hdmi_ycbcr420_supported;
bool dp_ycbcr420_supported;
bool fec_supported;
};
enum phy_source_select {
PHY_SOURCE_DIG,
PHY_SOURCE_HPO
};
struct link_encoder {
const struct link_encoder_funcs *funcs;
int32_t aux_channel_offset;
struct dc_context *ctx;
struct graphics_object_id id;
struct graphics_object_id analog_id;
struct graphics_object_id connector;
uint32_t output_signals;
enum engine_id preferred_engine;
enum engine_id analog_engine;
struct encoder_feature_support features;
enum transmitter transmitter;
struct gpio *hpd_gpio;
enum hpd_source_id hpd_source;
bool usbc_combo_phy;
uint8_t txffe_state;
};
struct link_enc_state {
uint32_t dphy_fec_en;
uint32_t dphy_fec_ready_shadow;
uint32_t dphy_fec_active_status;
uint32_t dp_link_training_complete;
};
struct frl_txffe {
uint32_t amplitude[4];
uint32_t pre_emphasis[4];
uint32_t post_emphasis[4];
};
enum encoder_type_select {
ENCODER_TYPE_DIG = 0,
ENCODER_TYPE_HDMI_FRL = 1,
ENCODER_TYPE_DP_128B132B = 2
};
struct link_encoder_funcs {
void (*read_state)(
Annotation
- Immediate include surface: `grph_object_defs.h`, `signal_types.h`, `dc_types.h`.
- Detected declarations: `struct dc_context`, `struct encoder_set_dp_phy_pattern_param`, `struct link_mst_stream_allocation_table`, `struct dc_link_settings`, `struct link_training_settings`, `struct pipe_ctx`, `struct encoder_init_data`, `struct encoder_feature_support`, `struct link_encoder`, `struct link_enc_state`.
- 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.