drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h
Extension
.h
Size
11784 bytes
Lines
378
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 mod_hdcp_displayport {
	uint8_t rev;
	uint8_t assr_enabled;
	uint8_t mst_enabled;
	uint8_t dp2_enabled;
	uint8_t usb4_enabled;
};

struct mod_hdcp_hdmi {
	uint8_t frl_enabled;
	uint8_t reserved;
};
enum mod_hdcp_operation_mode {
	MOD_HDCP_MODE_OFF,
	MOD_HDCP_MODE_DEFAULT,
	MOD_HDCP_MODE_DP
};

enum mod_hdcp_display_state {
	MOD_HDCP_DISPLAY_INACTIVE = 0,
	MOD_HDCP_DISPLAY_ACTIVE,
	MOD_HDCP_DISPLAY_ENCRYPTION_ENABLED
};

struct mod_hdcp_psp_caps {
	uint8_t dtm_v3_supported;
};

enum mod_hdcp_display_disable_option {
	MOD_HDCP_DISPLAY_NOT_DISABLE = 0,
	MOD_HDCP_DISPLAY_DISABLE_AUTHENTICATION,
	MOD_HDCP_DISPLAY_DISABLE_ENCRYPTION,
};

struct mod_hdcp_atomic_op_i2c {
	uint8_t address;
	uint8_t offset;
	uint8_t *data;
	uint32_t size;
};

struct mod_hdcp_atomic_op_aux {
	uint32_t address;
	uint8_t *data;
	uint32_t size;
};

struct mod_hdcp_ddc {
	void *handle;
	struct mod_hdcp_ddc_funcs {
		bool (*read_i2c)(void *handle,
				uint32_t address,
				uint8_t offset,
				uint8_t *data,
				uint32_t size);
		bool (*write_i2c)(void *handle,
				uint32_t address,
				const uint8_t *data,
				uint32_t size);
		bool (*read_dpcd)(void *handle,
				uint32_t address,
				uint8_t *data,
				uint32_t size);
		bool (*write_dpcd)(void *handle,
				uint32_t address,
				const uint8_t *data,
				uint32_t size);
		bool (*atomic_write_poll_read_i2c)(
				void *handle,
				const struct mod_hdcp_atomic_op_i2c *write,
				const struct mod_hdcp_atomic_op_i2c *poll,
				struct mod_hdcp_atomic_op_i2c *read,
				uint32_t poll_timeout_us,
				uint8_t poll_mask_msb
		);
		bool (*atomic_write_poll_read_aux)(
				void *handle,
				const struct mod_hdcp_atomic_op_aux *write,
				const struct mod_hdcp_atomic_op_aux *poll,
				struct mod_hdcp_atomic_op_aux *read,
				uint32_t poll_timeout_us,
				uint8_t poll_mask_msb
		);
	} funcs;
};

struct mod_hdcp_psp {
	void *handle;
	void *funcs;
	struct mod_hdcp_psp_caps caps;

Annotation

Implementation Notes