diff options
Diffstat (limited to 'hdata/spira.h')
-rw-r--r-- | hdata/spira.h | 87 |
1 files changed, 81 insertions, 6 deletions
diff --git a/hdata/spira.h b/hdata/spira.h index 064aa86..eabf7f9 100644 --- a/hdata/spira.h +++ b/hdata/spira.h @@ -75,11 +75,86 @@ struct spira { struct HDIF_idata_ptr ntuples_ptr; __be64 pad; struct spira_ntuples ntuples; - u8 reserved[0x4c0]; + /* + * We reserve 0xc0 rather than 0x4c0 so we fit SPIRAH/SPIRAS here + * while preserving compatibility with existing P7/P8 systems. + * + * According to FSP engineers, this is an okay thing to do. + */ + u8 reserved[0xc0]; } __packed __align(0x100); extern struct spira spira; +/* SPIRA-H signature */ +#define SPIRAH_HDIF_SIG "SPIRAH" + +/* First version of the secure boot compliant design. */ +#define SPIRAH_VERSION 0x50 + +/* N-tuples in SPIRAH */ +#define SPIRAH_NTUPLES_COUNT 0x6 + +struct spirah_ntuples { + struct HDIF_array_hdr array_hdr; /* 0x030 */ + struct spira_ntuple hs_data_area; /* 0x040 */ + struct spira_ntuple proc_init; /* 0x060 */ + struct spira_ntuple cpu_ctrl; /* 0x080 */ + struct spira_ntuple mdump_src; /* 0x0a0 */ + struct spira_ntuple mdump_dst; /* 0x0c0 */ + struct spira_ntuple mdump_res; /* 0x0e0 */ +}; + +struct spirah { + struct HDIF_common_hdr hdr; + struct HDIF_idata_ptr ntuples_ptr; + __be64 pad; + struct spirah_ntuples ntuples; + u8 reserved[0x100]; +} __packed __align(0x100); + +extern struct spirah spirah; + +/* SPIRA-S signature */ +#define SPIRAS_HDIF_SIG "SPIRAS" + +/* First version on 810 release */ +#define SPIRAS_VERSION 0x40 + +/* N-tuples in SPIRAS */ +#define SPIRAS_NTUPLES_COUNT 0x10 + +struct spiras_ntuples { + struct HDIF_array_hdr array_hdr; /* 0x030 */ + struct spira_ntuple sp_subsys; /* 0x040 */ + struct spira_ntuple ipl_parms; /* 0x060 */ + struct spira_ntuple nt_enclosure_vpd; /* 0x080 */ + struct spira_ntuple slca; /* 0x0a0 */ + struct spira_ntuple backplane_vpd; /* 0x0c0 */ + struct spira_ntuple system_vpd; /* 0x0e0 */ + struct spira_ntuple clock_vpd; /* 0x100 */ + struct spira_ntuple anchor_vpd; /* 0x120 */ + struct spira_ntuple op_panel_vpd; /* 0x140 */ + struct spira_ntuple misc_cec_fru_vpd; /* 0x160 */ + struct spira_ntuple ms_vpd; /* 0x180 */ + struct spira_ntuple cec_iohub_fru; /* 0x1a0 */ + struct spira_ntuple pcia; /* 0x1c0 */ + struct spira_ntuple proc_chip; /* 0x1e0 */ + struct spira_ntuple hs_data; /* 0x200 */ + struct spira_ntuple ipmi_sensor; /* 0x220 */ +} __packed __align(0x100); + +struct spiras { + struct HDIF_common_hdr hdr; + struct HDIF_idata_ptr ntuples_ptr; + __be64 pad; + struct spiras_ntuples ntuples; + u8 reserved[0x1c0]; +} __packed __align(0x100); + +extern struct spiras *spiras; + + /* This macro can be used to check the validity of a pointer returned * by one of the HDIF API functions. It returns true if the pointer * appears valid. If it's not valid and not NULL, it will print some @@ -400,14 +475,14 @@ struct msvpd_pmover_bsr_synchro { * Note that slots meant for the addition of GX+ adapters that * are currently unpopulated but support hotplug will have a * minimum "placeholder" entry, which will be fully populated - * when the array is rebuild during concurrent maintainance. + * when the array is rebuild during concurrent maintenance. * This "placeholder" is called a "reservation". * - * WARNING: The array rebuild by concurrent maintainance is not + * WARNING: The array rebuild by concurrent maintenance is not * guaranteed to be in the same order as the IPL array, not is - * the order stable between concurrent maintainance operations. + * the order stable between concurrent maintenance operations. * - * There's also a child pointer to daugher card structures but + * There's also a child pointer to daughter card structures but * we aren't going to handle that just yet. */ #define CECHUB_FRU_HDIF_SIG "IO HUB" @@ -584,7 +659,7 @@ struct cpu_ctl_init_data { * child. A child has a pointer to its parent. Siblings are * consecutive entries. * - * Note: If we ever support concurrent maintainance... this is + * Note: If we ever support concurrent maintenance... this is * completely rebuilt, invalidating all indices, though other * structures that may reference SLCA by index will be rebuilt * as well. |