diff options
Diffstat (limited to 'drivers/platform/x86/intel/ifs/ifs.h')
| -rw-r--r-- | drivers/platform/x86/intel/ifs/ifs.h | 64 | 
1 files changed, 58 insertions, 6 deletions
| diff --git a/drivers/platform/x86/intel/ifs/ifs.h b/drivers/platform/x86/intel/ifs/ifs.h index 93191855890f..56b9f3e3cf76 100644 --- a/drivers/platform/x86/intel/ifs/ifs.h +++ b/drivers/platform/x86/intel/ifs/ifs.h @@ -137,6 +137,10 @@  #define MSR_CHUNKS_AUTHENTICATION_STATUS	0x000002c5  #define MSR_ACTIVATE_SCAN			0x000002c6  #define MSR_SCAN_STATUS				0x000002c7 +#define MSR_ARRAY_TRIGGER			0x000002d6 +#define MSR_ARRAY_STATUS			0x000002d7 +#define MSR_SAF_CTRL				0x000004f0 +  #define SCAN_NOT_TESTED				0  #define SCAN_TEST_PASS				1  #define SCAN_TEST_FAIL				2 @@ -144,6 +148,9 @@  #define IFS_TYPE_SAF			0  #define IFS_TYPE_ARRAY_BIST		1 +#define ARRAY_GEN0			0 +#define ARRAY_GEN1			1 +  /* MSR_SCAN_HASHES_STATUS bit fields */  union ifs_scan_hashes_status {  	u64	data; @@ -158,6 +165,19 @@ union ifs_scan_hashes_status {  	};  }; +union ifs_scan_hashes_status_gen2 { +	u64	data; +	struct { +		u16	chunk_size; +		u16	num_chunks; +		u32	error_code		:8; +		u32	chunks_in_stride	:9; +		u32	rsvd			:2; +		u32	max_core_limit		:12; +		u32	valid			:1; +	}; +}; +  /* MSR_CHUNKS_AUTH_STATUS bit fields */  union ifs_chunks_auth_status {  	u64	data; @@ -170,13 +190,31 @@ union ifs_chunks_auth_status {  	};  }; +union ifs_chunks_auth_status_gen2 { +	u64	data; +	struct { +		u16	valid_chunks; +		u16	total_chunks; +		u32	error_code	:8; +		u32	rsvd2		:24; +	}; +}; +  /* MSR_ACTIVATE_SCAN bit fields */  union ifs_scan {  	u64	data;  	struct { -		u32	start	:8; -		u32	stop	:8; -		u32	rsvd	:16; +		union { +			struct { +				u8	start; +				u8	stop; +				u16	rsvd; +			} gen0; +			struct { +				u16	start; +				u16	stop; +			} gen2; +		};  		u32	delay	:31;  		u32	sigmce	:1;  	}; @@ -186,9 +224,17 @@ union ifs_scan {  union ifs_status {  	u64	data;  	struct { -		u32	chunk_num		:8; -		u32	chunk_stop_index	:8; -		u32	rsvd1			:16; +		union { +			struct { +				u8	chunk_num; +				u8	chunk_stop_index; +				u16	rsvd1; +			} gen0; +			struct { +				u16	chunk_num; +				u16	chunk_stop_index; +			} gen2; +		};  		u32	error_code		:8;  		u32	rsvd2			:22;  		u32	control_error		:1; @@ -229,6 +275,9 @@ struct ifs_test_caps {   * @status: it holds simple status pass/fail/untested   * @scan_details: opaque scan status code from h/w   * @cur_batch: number indicating the currently loaded test file + * @generation: IFS test generation enumerated by hardware + * @chunk_size: size of a test chunk + * @array_gen: test generation of array test   */  struct ifs_data {  	int	loaded_version; @@ -238,6 +287,9 @@ struct ifs_data {  	int	status;  	u64	scan_details;  	u32	cur_batch; +	u32	generation; +	u32	chunk_size; +	u32	array_gen;  };  struct ifs_work { |