drivers/gpu/drm/xe/xe_gsc_types.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xe/xe_gsc_types.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xe/xe_gsc_types.h
Extension
.h
Size
2171 bytes
Lines
77
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 xe_gsc {
	/** @fw: Generic uC firmware management */
	struct xe_uc_fw fw;

	/** @security_version: SVN found in the fetched blob */
	u32 security_version;

	/** @private: Private data for use by the GSC FW */
	struct xe_bo *private;

	/** @q: Default queue used for submissions to GSC FW */
	struct xe_exec_queue *q;

	/** @wq: workqueue to handle jobs for delayed load and proxy handling */
	struct workqueue_struct *wq;

	/** @work: delayed load and proxy handling work */
	struct work_struct work;

	/** @lock: protects access to the work_actions mask */
	spinlock_t lock;

	/** @work_actions: mask of actions to be performed in the work */
	u32 work_actions;
#define GSC_ACTION_FW_LOAD BIT(0)
#define GSC_ACTION_SW_PROXY BIT(1)
#define GSC_ACTION_ER_COMPLETE BIT(2)

	/** @proxy: sub-structure containing the SW proxy-related variables */
	struct {
		/** @proxy.component: struct for communication with mei component */
		struct i915_gsc_proxy_component *component;
		/** @proxy.mutex: protects the component binding and usage */
		struct mutex mutex;
		/** @proxy.component_added: whether the component has been added */
		bool component_added;
		/** @proxy.started: whether the proxy has been started */
		bool started;
		/** @proxy.bo: object to store message to and from the GSC */
		struct xe_bo *bo;
		/** @proxy.to_gsc: map of the memory used to send messages to the GSC */
		struct iosys_map to_gsc;
		/** @proxy.from_gsc: map of the memory used to recv messages from the GSC */
		struct iosys_map from_gsc;
		/** @proxy.to_csme: pointer to the memory used to send messages to CSME */
		void *to_csme;
		/** @proxy.from_csme: pointer to the memory used to recv messages from CSME */
		void *from_csme;
	} proxy;
};

#endif

Annotation

Implementation Notes