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.

Dependency Surface

Detected Declarations

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

Implementation Notes