drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.h
Extension
.h
Size
3459 bytes
Lines
104
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 amdgpu_mmhub_ras {
	struct amdgpu_ras_block_object ras_block;
};

struct amdgpu_mmhub_funcs {
	u64 (*get_fb_location)(struct amdgpu_device *adev);
	u64 (*get_mc_fb_offset)(struct amdgpu_device *adev);
	void (*init)(struct amdgpu_device *adev);
	int (*gart_enable)(struct amdgpu_device *adev);
	void (*set_fault_enable_default)(struct amdgpu_device *adev,
			bool value);
	void (*gart_disable)(struct amdgpu_device *adev);
	int (*set_clockgating)(struct amdgpu_device *adev,
			       enum amd_clockgating_state state);
	void (*get_clockgating)(struct amdgpu_device *adev, u64 *flags);
	void (*setup_vm_pt_regs)(struct amdgpu_device *adev, uint32_t vmid,
				uint64_t page_table_base);
	void (*update_power_gating)(struct amdgpu_device *adev,
                                bool enable);
	int (*get_xgmi_info)(struct amdgpu_device *adev);
};

struct amdgpu_mmhub_client_ids {
	const char * const (*names)[2];
	unsigned int size;
};

struct amdgpu_mmhub {
	struct ras_common_if *ras_if;
	const struct amdgpu_mmhub_funcs *funcs;
	struct amdgpu_mmhub_ras  *ras;
	struct amdgpu_mmhub_client_ids client_ids;
};

static inline void
amdgpu_mmhub_init_client_info(struct amdgpu_mmhub *mmhub,
			      const char * const (*names)[2],
			      unsigned int size)
{
	mmhub->client_ids.names = names;
	mmhub->client_ids.size = size;
}

static inline const char *
amdgpu_mmhub_client_name(struct amdgpu_mmhub *mmhub,
			  u32 cid, bool is_write)
{
	if (cid < mmhub->client_ids.size)
		return mmhub->client_ids.names[cid][is_write];

	return NULL;
}

int amdgpu_mmhub_ras_sw_init(struct amdgpu_device *adev);

#endif

Annotation

Implementation Notes