aboutsummaryrefslogtreecommitdiff
path: root/hdata
diff options
context:
space:
mode:
authorChristophe Lombard <clombard@linux.vnet.ibm.com>2021-10-14 17:56:51 +0200
committerVasant Hegde <hegdevasant@linux.vnet.ibm.com>2021-10-19 12:26:01 +0530
commit768f67e686e5691a6d6d956f625ce455d3b48fb5 (patch)
tree5bd43725c341f3c8014c2e0cf3a88f71f61bfa4b /hdata
parentb10c12c63a4f58fe2c31dafdc5269c65b3a8a613 (diff)
downloadskiboot-768f67e686e5691a6d6d956f625ce455d3b48fb5.zip
skiboot-768f67e686e5691a6d6d956f625ce455d3b48fb5.tar.gz
skiboot-768f67e686e5691a6d6d956f625ce455d3b48fb5.tar.bz2
pau: introduce support
OpenCapi for P10 is included in the P10 chip. This requires OCAPI capable PHYs, Datalink Layer Logic and Transaction Layer Logic to be included. The PHYs are the physical connection to the OCAPI interconnect. The Datalink Layer provides link training. The Transaction Layer executes the cache coherent and data movement commands on the P10 chip. The PAU provides the Transaction Layer functionality for the OCAPI link(s) on the P10 chip. The P10 PAU supports two OCAPI links. Six accelerator units PAUs are instantiated on the P10 chip for a total of twelve OCAPI links. This patch adds PAU opencapi structure for supporting OpenCapi5. hw/pau.c file contains main of PAU management functions. Signed-off-by: Christophe Lombard <clombard@linux.vnet.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Diffstat (limited to 'hdata')
-rw-r--r--hdata/spira.c31
-rw-r--r--hdata/spira.h2
2 files changed, 25 insertions, 8 deletions
diff --git a/hdata/spira.c b/hdata/spira.c
index baa2375..1a35146 100644
--- a/hdata/spira.c
+++ b/hdata/spira.c
@@ -966,21 +966,38 @@ static void add_nx(void)
static void add_nmmu(void)
{
struct dt_node *xscom, *nmmu;
- u32 scom;
+ u32 scom1, scom2;
+ u32 chip_id;
/* Nest MMU only exists on POWER9 or later */
if (proc_gen < proc_gen_p9)
return;
- if (proc_gen == proc_gen_p9)
- scom = 0x5012c40;
- else
- scom = 0x2010c40;
+ if (proc_gen == proc_gen_p10) {
+ scom1 = 0x2010c40;
+ scom2 = 0x3010c40;
+ } else
+ scom1 = 0x5012c40;
dt_for_each_compatible(dt_root, xscom, "ibm,xscom") {
- nmmu = dt_new_addr(xscom, "nmmu", scom);
+ nmmu = dt_new_addr(xscom, "nmmu", scom1);
dt_add_property_strings(nmmu, "compatible", "ibm,power9-nest-mmu");
- dt_add_property_cells(nmmu, "reg", scom, 0x20);
+ dt_add_property_cells(nmmu, "reg", scom1, 0x20);
+
+ /*
+ * P10 has a second nMMU, a.k.a "south" nMMU.
+ * It exists only on P1 and P3
+ */
+ if (proc_gen == proc_gen_p10) {
+
+ chip_id = __dt_get_chip_id(xscom);
+ if (chip_id != 2 && chip_id != 6)
+ continue;
+
+ nmmu = dt_new_addr(xscom, "nmmu", scom2);
+ dt_add_property_strings(nmmu, "compatible", "ibm,power9-nest-mmu");
+ dt_add_property_cells(nmmu, "reg", scom2, 0x20);
+ }
}
}
diff --git a/hdata/spira.h b/hdata/spira.h
index afdc922..8def23b 100644
--- a/hdata/spira.h
+++ b/hdata/spira.h
@@ -1152,7 +1152,7 @@ struct sppcrd_smp_link {
__be16 pci_sideband_slot_idx;
__be16 slca_idx; /* SLCA index of the *external* port */
- __be16 reserved;
+ __be16 opt_id;
/* nvlink/ocapi detection devices */
__be32 i2c_link_cable;