[Skiboot] [PATCH] hdata: Add BMC device-tree node for P9 OpenPOWER systems

Ananth N Mavinakayanahalli ananth at linux.vnet.ibm.com
Fri Mar 3 22:48:18 AEDT 2017


On P8 Hostboot creates the node. On P9, OPAL needs to create the node. BMC
information available in HDAT's SPINFO section.

Signed-off-by: Ananth N Mavinakayanahalli <ananth at linux.vnet.ibm.com>
---
 hdata/fsp.c   |   17 ++++++++++++++++-
 hdata/spira.h |    1 +
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/hdata/fsp.c b/hdata/fsp.c
index f44f6a9..3896dc4 100644
--- a/hdata/fsp.c
+++ b/hdata/fsp.c
@@ -279,11 +279,26 @@ static void add_uart(const struct spss_iopath *iopath, struct dt_node *lpc)
 
 static void bmc_create_node(const struct HDIF_common_hdr *sp)
 {
+	struct dt_node *bmc_node;
 	u32 fw_bar, io_bar, mem_bar, internal_bar;
 	const struct spss_iopath *iopath;
+	const struct spss_sp_impl *sp_impl;
 	struct dt_node *lpcm, *lpc, *n;
 	u64 lpcm_base, lpcm_end;
-	int chip_id;
+	int chip_id, size;
+
+	bmc_node = dt_new(dt_root, "bmc");
+	assert(bmc_node);
+
+	dt_add_property_cells(bmc_node, "#address-cells", 1);
+	dt_add_property_cells(bmc_node, "#size-cells", 0);
+
+	/* TODO: add sensor info under /bmc */
+	sp_impl = HDIF_get_idata(sp, SPSS_IDATA_SP_IMPL, &size);
+	if (CHECK_SPPTR(sp_impl) && (size > 8)) {
+		dt_add_property_strings(bmc_node, "compatible", sp_impl->sp_family);
+		prlog(PR_INFO, "SP Family is %s\n", sp_impl->sp_family);
+	}
 
 	iopath = HDIF_get_iarray_item(sp, SPSS_IDATA_SP_IOPATH, 0, NULL);
 
diff --git a/hdata/spira.h b/hdata/spira.h
index 01ce4cb..a9338ee 100644
--- a/hdata/spira.h
+++ b/hdata/spira.h
@@ -262,6 +262,7 @@ struct spss_sp_impl {
 #define SPSS_SP_IMPL_FLAGS_PRIMARY	0x2000
 	u8	chip_version;
 	u8	reserved;
+	u8	sp_family[64];
 };
 
 /* Idata index 3 is deprecated */



More information about the Skiboot mailing list