X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=platform-intel.h;h=29c85f121cd1e0d643db418188536fe2c2ac9607;hp=2ead431b08eeda3f7ad94f739ec4a51c9dc37255;hb=ae7d61e35ec2ab6361c3e509a8db00698ef3396f;hpb=7a862a020f04b10f17f6dcae23bf60c52cbe190b diff --git a/platform-intel.h b/platform-intel.h index 2ead431b..29c85f12 100644 --- a/platform-intel.h +++ b/platform-intel.h @@ -99,6 +99,8 @@ struct imsm_orom { #define IMSM_OROM_CAPABILITIES_Rohi (1 << 5) #define IMSM_OROM_CAPABILITIES_ReadPatrol (1 << 6) #define IMSM_OROM_CAPABILITIES_XorHw (1 << 7) + #define IMSM_OROM_CAPABILITIES_SKUMode ((1 << 8)|(1 << 9)) + #define IMSM_OROM_CAPABILITIES_TPV (1 << 10) } __attribute__((packed)); static inline int imsm_orom_has_raid0(const struct imsm_orom *orom) @@ -184,11 +186,17 @@ static inline int imsm_orom_is_nvme(const struct imsm_orom *orom) sizeof(orom->signature)) == 0; } +static inline int imsm_orom_has_tpv_support(const struct imsm_orom *orom) +{ + return !!(orom->driver_features & IMSM_OROM_CAPABILITIES_TPV); +} + enum sys_dev_type { SYS_DEV_UNKNOWN = 0, SYS_DEV_SAS, SYS_DEV_SATA, SYS_DEV_NVME, + SYS_DEV_VMD, SYS_DEV_MAX }; @@ -213,8 +221,12 @@ struct devid_list { struct orom_entry { struct imsm_orom orom; struct devid_list *devid_list; + enum sys_dev_type type; + struct orom_entry *next; }; +extern struct orom_entry *orom_entries; + static inline char *guid_str(char *buf, struct efi_guid guid) { sprintf(buf, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", @@ -226,6 +238,7 @@ static inline char *guid_str(char *buf, struct efi_guid guid) } char *diskfd_to_devpath(int fd); +__u16 devpath_to_vendor(const char *dev_path); struct sys_dev *find_driver_devices(const char *bus, const char *driver); struct sys_dev *find_intel_devices(void); const struct imsm_orom *find_imsm_capability(struct sys_dev *hba); @@ -235,6 +248,8 @@ int devt_attached_to_hba(dev_t dev, const char *hba_path); char *devt_to_devpath(dev_t dev); int path_attached_to_hba(const char *disk_path, const char *hba_path); const char *get_sys_dev_type(enum sys_dev_type); -const struct orom_entry * get_oroms(void); +const struct orom_entry *get_orom_entry_by_device_id(__u16 dev_id); const struct imsm_orom *get_orom_by_device_id(__u16 device_id); struct sys_dev *device_by_id(__u16 device_id); +struct sys_dev *device_by_id_and_path(__u16 device_id, const char *path); +char *vmd_domain_to_controller(struct sys_dev *hba, char *buf);