1864c0da9SLawrence Tang #ifndef CPER_SECTION_CCIX_PER_H
2864c0da9SLawrence Tang #define CPER_SECTION_CCIX_PER_H
3864c0da9SLawrence Tang 
45202bbb4SLawrence Tang #include <json.h>
5864c0da9SLawrence Tang #include "../edk/Cper.h"
6864c0da9SLawrence Tang 
7*f8fc7052SJohn Chung #define CCIX_PER_ERROR_VALID_BITFIELD_NAMES                                    \
8*f8fc7052SJohn Chung 	(const char *[])                                                       \
9*f8fc7052SJohn Chung 	{                                                                      \
10*f8fc7052SJohn Chung 		"ccixSourceIDValid", "ccixPortIDValid", "ccixPERLogValid"      \
11*f8fc7052SJohn Chung 	}
12864c0da9SLawrence Tang 
13864c0da9SLawrence Tang ///
14864c0da9SLawrence Tang /// CCIX PER Log Error Section
15864c0da9SLawrence Tang ///
16864c0da9SLawrence Tang typedef struct {
17864c0da9SLawrence Tang 	UINT32 Length;
18864c0da9SLawrence Tang 	UINT64 ValidBits;
19864c0da9SLawrence Tang 	UINT8 CcixSourceId;
20864c0da9SLawrence Tang 	UINT8 CcixPortId;
21864c0da9SLawrence Tang 	UINT16 Reserved;
220a4b3f2dSLawrence Tang } __attribute__((packed, aligned(1))) EFI_CCIX_PER_LOG_DATA;
23864c0da9SLawrence Tang 
24*f8fc7052SJohn Chung json_object *cper_section_ccix_per_to_ir(void *section);
25205dd1d7SLawrence Tang void ir_section_ccix_per_to_cper(json_object *section, FILE *out);
26864c0da9SLawrence Tang 
27864c0da9SLawrence Tang #endif
28