aboutsummaryrefslogtreecommitdiff
path: root/hdata/spira.h
diff options
context:
space:
mode:
Diffstat (limited to 'hdata/spira.h')
-rw-r--r--hdata/spira.h87
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.