aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Smith <stewart@linux.vnet.ibm.com>2017-08-10 11:53:45 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-08-10 11:53:45 +1000
commit830fc9a0ed0a4066129cfafd1447dc40a66b8700 (patch)
treedf56747e69e93145c2ead7d3b661e37f1ac8d2d2
parent07937c792d3e028cf2eef68b5957813a5fddcbb9 (diff)
downloadskiboot-830fc9a0ed0a4066129cfafd1447dc40a66b8700.zip
skiboot-830fc9a0ed0a4066129cfafd1447dc40a66b8700.tar.gz
skiboot-830fc9a0ed0a4066129cfafd1447dc40a66b8700.tar.bz2
hdata/spira: POWER9 NX isn't software compatible with P7/P8 NX, don't claim so
Fixes: 2512953c7c6dc3b479d159d9bce8206219951164 Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--hdata/spira.c18
-rw-r--r--hw/nx.c14
2 files changed, 21 insertions, 11 deletions
diff --git a/hdata/spira.c b/hdata/spira.c
index 58afb93..d5e6984 100644
--- a/hdata/spira.c
+++ b/hdata/spira.c
@@ -741,7 +741,6 @@ static bool add_chiptod_new(void)
static void add_nx_node(u32 gcid)
{
struct dt_node *nx;
- const char *cp_str;
u32 addr;
u32 size;
struct dt_node *xscom;
@@ -761,25 +760,28 @@ static void add_nx_node(u32 gcid)
addr = 0x2010000;
size = 0x0004000;
+ nx = dt_new_addr(xscom, "nx", addr);
+ if (!nx)
+ return;
+
switch (proc_gen) {
case proc_gen_p7:
- cp_str = "ibm,power7-nx";
+ dt_add_property_strings(nx, "compatible", "ibm,power-nx",
+ "ibm,power7-nx");
break;
case proc_gen_p8:
- cp_str = "ibm,power8-nx";
+ dt_add_property_strings(nx, "compatible", "ibm,power-nx",
+ "ibm,power8-nx");
break;
case proc_gen_p9:
- cp_str = "ibm,power9-nx";
+ /* POWER9 NX is not software compatible with P7/P8 NX */
+ dt_add_property_strings(nx, "compatible", "ibm,power9-nx");
break;
default:
return;
}
- nx = dt_new_addr(xscom, "nx", addr);
- if (!nx)
- return;
dt_add_property_cells(nx, "reg", addr, size);
- dt_add_property_strings(nx, "compatible", "ibm,power-nx", cp_str);
}
static void add_nx(void)
diff --git a/hw/nx.c b/hw/nx.c
index 18e6be7..64ac793 100644
--- a/hw/nx.c
+++ b/hw/nx.c
@@ -69,6 +69,12 @@ void nx_p9_rng_init(void)
}
}
+static void nx_init_one(struct dt_node *node)
+{
+ nx_create_rng_node(node);
+ nx_create_crypto_node(node);
+ nx_create_compress_node(node);
+}
void nx_init(void)
{
@@ -77,8 +83,10 @@ void nx_init(void)
nx_p9_rng_init();
dt_for_each_compatible(dt_root, node, "ibm,power-nx") {
- nx_create_rng_node(node);
- nx_create_crypto_node(node);
- nx_create_compress_node(node);
+ nx_init_one(node);
+ }
+
+ dt_for_each_compatible(dt_root, node, "ibm,power9-nx") {
+ nx_init_one(node);
}
}