summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hdata/cpu-common.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/hdata/cpu-common.c b/hdata/cpu-common.c
index f40d08b3..01228f3d 100644
--- a/hdata/cpu-common.c
+++ b/hdata/cpu-common.c
@@ -53,6 +53,17 @@ struct dt_node * add_core_common(struct dt_node *cpus,
0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 48 .. 55 */
0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, /* 56 .. 63 */
};
+ const uint8_t pa_features_p9n_dd20[] = {
+ 64, 0,
+ 0xf6, 0x3f, 0xc7, 0xc0, 0x80, 0xd0, 0x80, 0x00, /* 0 .. 7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 8 .. 15 */
+ 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, /* 16 .. 23 */
+ 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, /* 24 .. 31 */
+ 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, /* 32 .. 39 */
+ 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 40 .. 47 */
+ 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 48 .. 55 */
+ 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 56 .. 63 */
+ };
const uint8_t pa_features_p9[] = {
64, 0,
0xf6, 0x3f, 0xc7, 0xc0, 0x80, 0xd0, 0x80, 0x00, /* 0 .. 7 */
@@ -99,9 +110,17 @@ struct dt_node * add_core_common(struct dt_node *cpus,
break;
case PVR_TYPE_P9:
name = "PowerPC,POWER9";
- if ((PVR_VERS_MAJ(version) == 1) && is_power9n(version)) {
+ if (is_power9n(version) &&
+ (PVR_VERS_MAJ(version) == 1)) {
+ /* P9N DD1 */
pa_features = pa_features_p9n_dd1;
pa_features_size = sizeof(pa_features_p9n_dd1);
+ } else if (is_power9n(version) &&
+ (PVR_VERS_MAJ(version) == 2) &&
+ (PVR_VERS_MIN(version) == 0)) {
+ /* P9N DD2.0 */
+ pa_features = pa_features_p9n_dd20;
+ pa_features_size = sizeof(pa_features_p9n_dd20);
} else {
pa_features = pa_features_p9;
pa_features_size = sizeof(pa_features_p9);
OpenPOWER on IntegriCloud