drivers/gpu/drm/amd/include/umsch_mm_4_0_api_def.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/include/umsch_mm_4_0_api_def.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/include/umsch_mm_4_0_api_def.h
Extension
.h
Size
11579 bytes
Lines
447
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 UMSCH_INSTANCE_DB_OFFSET {
	uint32_t instance_index;
	uint32_t doorbell_offset;
};

struct UMSCH_LOG_CONTEXT_STATE_CHANGE {
	uint64_t h_context;
	enum UMSCH_MS_LOG_CONTEXT_STATE new_context_state;
};

struct UMSCH_LOG_QUEUE_NEW_WORK {
	uint64_t h_queue;
	uint64_t reserved;
};

struct UMSCH_LOG_QUEUE_UNWAIT_SYNC_OBJECT {
	uint64_t h_queue;
	uint64_t h_sync_object;
};

struct UMSCH_LOG_QUEUE_NO_MORE_WORK {
	uint64_t h_queue;
	uint64_t reserved;
};

struct UMSCH_LOG_QUEUE_WAIT_SYNC_OBJECT {
	uint64_t h_queue;
	uint64_t h_sync_object;
};

struct UMSCH_LOG_ENTRY_HEADER {
	uint32_t first_free_entry_index;
	uint32_t wraparound_count;
	uint64_t number_of_entries;
	uint64_t reserved[2];
};

struct UMSCH_LOG_ENTRY_DATA {
	uint64_t gpu_time_stamp;
	uint32_t operation_type; /* operation_type is of UMSCH_LOG_OPERATION type */
	uint32_t reserved_operation_type_bits;
	union {
		struct UMSCH_LOG_CONTEXT_STATE_CHANGE context_state_change;
		struct UMSCH_LOG_QUEUE_NEW_WORK queue_new_work;
		struct UMSCH_LOG_QUEUE_UNWAIT_SYNC_OBJECT queue_unwait_sync_object;
		struct UMSCH_LOG_QUEUE_NO_MORE_WORK queue_no_more_work;
		struct UMSCH_LOG_QUEUE_WAIT_SYNC_OBJECT queue_wait_sync_object;
		uint64_t all[2];
	};
};

struct UMSCH_LOG_BUFFER {
	struct UMSCH_LOG_ENTRY_HEADER header;
	struct UMSCH_LOG_ENTRY_DATA entries[1];
};

enum UMSCH_API_OPCODE {
	UMSCH_API_SET_HW_RSRC = 0x00,
	UMSCH_API_SET_SCHEDULING_CONFIG = 0x1,
	UMSCH_API_ADD_QUEUE = 0x2,
	UMSCH_API_REMOVE_QUEUE = 0x3,
	UMSCH_API_PERFORM_YIELD = 0x4,
	UMSCH_API_SUSPEND = 0x5,
	UMSCH_API_RESUME = 0x6,
	UMSCH_API_RESET = 0x7,
	UMSCH_API_SET_LOG_BUFFER = 0x8,
	UMSCH_API_CHANGE_CONTEXT_PRIORITY = 0x9,
	UMSCH_API_QUERY_SCHEDULER_STATUS = 0xA,
	UMSCH_API_UPDATE_AFFINITY = 0xB,
	UMSCH_API_MAX = 0xFF
};

union UMSCH_API_HEADER {
	struct {
		uint32_t type : 4; /* 0 - Invalid; 1 - Scheduling; 2 - TBD */
		uint32_t opcode : 8;
		uint32_t dwsize : 8;
		uint32_t reserved : 12;
	};

	uint32_t u32All;
};

enum UMSCH_AMD_PRIORITY_LEVEL {
	AMD_PRIORITY_LEVEL_IDLE = 0,
	AMD_PRIORITY_LEVEL_NORMAL = 1,
	AMD_PRIORITY_LEVEL_FOCUS = 2,
	AMD_PRIORITY_LEVEL_REALTIME = 3,
	AMD_PRIORITY_NUM_LEVELS
};

Annotation

Implementation Notes