drivers/gpu/drm/xe/xe_uc_fw_types.h

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

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xe/xe_uc_fw_types.h
Extension
.h
Size
5305 bytes
Lines
156
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_uc_fw_version {
	/** @branch: branch version of the FW (not always available) */
	u16 branch;
	/** @major: major version of the FW */
	u16 major;
	/** @minor: minor version of the FW */
	u16 minor;
	/** @patch: patch version of the FW */
	u16 patch;
	/** @build: build version of the FW (not always available) */
	u16 build;
};

enum xe_uc_fw_version_types {
	XE_UC_FW_VER_RELEASE,
	XE_UC_FW_VER_COMPATIBILITY,
	XE_UC_FW_VER_TYPE_COUNT
};

/**
 * struct xe_uc_fw - Xe micro controller firmware
 */
struct xe_uc_fw {
	/** @type: type uC firmware */
	enum xe_uc_fw_type type;
	union {
		/** @status: firmware load status */
		const enum xe_uc_fw_status status;
		/**
		 * @__status: private firmware load status - only to be used
		 * by firmware loading code
		 */
		enum xe_uc_fw_status __status;
	};
	/** @path: path to uC firmware */
	const char *path;
	/** @user_overridden: user provided path to uC firmware via modparam */
	bool user_overridden;
	/**
	 * @full_ver_required: driver still under development and not ready
	 * for backward-compatible firmware. To be used only for **new**
	 * platforms, i.e. still under require_force_probe protection and not
	 * supported by i915.
	 */
	bool full_ver_required;
	/** @size: size of uC firmware including css header */
	size_t size;

	/** @bo: Xe BO for uC firmware */
	struct xe_bo *bo;

	/** @has_gsc_headers: whether the FW image starts with GSC headers */
	bool has_gsc_headers;

	/*
	 * The firmware build process will generate a version header file with
	 * major and minor version defined. The versions are built into CSS
	 * header of firmware. The xe kernel driver set the minimal firmware
	 * version required per platform.
	 */

	/** @versions: FW versions wanted and found */
	struct {
		/** @versions.wanted: firmware version wanted by platform */
		struct xe_uc_fw_version wanted;
		/**
		 * @versions.wanted_type: type of firmware version wanted
		 * (release vs compatibility)
		 */
		enum xe_uc_fw_version_types wanted_type;
		/** @versions.found: fw versions found in firmware blob */
		struct xe_uc_fw_version found[XE_UC_FW_VER_TYPE_COUNT];
	} versions;

	/** @rsa_size: RSA size */
	u32 rsa_size;
	/** @ucode_size: micro kernel size */
	u32 ucode_size;
	/** @css_offset: offset within the blob at which the CSS is located */
	u32 css_offset;

	/** @private_data_size: size of private data found in uC css header */
	u32 private_data_size;

	/** @build_type: Firmware build type (see CSS_UKERNEL_INFO_BUILDTYPE for definitions) */
	u32 build_type;
};

#endif

Annotation

Implementation Notes