/* SPDX-License-Identifier: MIT */ /* * Copyright © 2022 Intel Corporation */ #ifndef _XE_UC_FW_TYPES_H_ #define _XE_UC_FW_TYPES_H_ #include <linux/types.h> struct xe_bo; /* * +------------+---------------------------------------------------+ * | PHASE | FIRMWARE STATUS TRANSITIONS | * +============+===================================================+ * | | UNINITIALIZED | * +------------+- / | \ -+ * | | DISABLED <--/ | \--> NOT_SUPPORTED | * | init_early | V | * | | SELECTED | * +------------+- / | \ -+ * | | MISSING <--/ | \--> ERROR | * | fetch | V | * | | AVAILABLE | * +------------+- | \ -+ * | | | \--> INIT FAIL | * | init | V | * | | /------> LOADABLE <----<-----------\ | * +------------+- \ / \ \ \ -+ * | | LOAD FAIL <--< \--> TRANSFERRED \ | * | upload | \ / \ / | * | | \---------/ \--> RUNNING | * +------------+---------------------------------------------------+ */ /* * FIXME: Ported from the i915 and this is state machine is way too complicated. * Circle back and simplify this. */ enum xe_uc_fw_status { … }; enum xe_uc_fw_type { … }; /** * struct xe_uc_fw_version - Version for XE micro controller firmware */ struct xe_uc_fw_version { … }; enum xe_uc_fw_version_types { … }; /** * struct xe_uc_fw - XE micro controller firmware */ struct xe_uc_fw { … }; #endif