acpi: Add cb support to publish CRAT ACPI object

Add cb support to publish CRAT ACPI object in native coreboot.

BUG=b:155307433
BRANCH=Zork

Change-Id: I5fb7c15b11414f6d807645921c0ff1ab927e6e0f
Signed-off-by: Jason Glenesk <jason.glenesk@amd.corp-partner.google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/48532
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h
index f6eb772..1c364a0 100644
--- a/src/include/acpi/acpi.h
+++ b/src/include/acpi/acpi.h
@@ -73,7 +73,7 @@
 	BERT, DBG2, DMAR, DSDT, FACS, FADT, HEST, HPET, IVRS, MADT, MCFG,
 	RSDP, RSDT, SLIT, SRAT, SSDT, TCPA, TPM2, XSDT, ECDT,
 	/* Additional proprietary tables used by coreboot */
-	VFCT, NHLT, SPMI
+	VFCT, NHLT, SPMI, CRAT
 };
 
 /* RSDP (Root System Description Pointer) */
@@ -307,6 +307,14 @@
 	struct acpi_ivrs_ivhd ivhd;
 } __packed acpi_ivrs_t;
 
+/* CRAT (Component Resource Affinity Table Structure) */
+struct acpi_crat_header {
+	acpi_header_t header;
+	uint32_t total_entries;
+	uint16_t num_nodes;
+	uint8_t reserved[6];
+} __packed;
+
 /* IVHD Type 11h IOMMU Attributes */
 typedef struct ivhd11_iommu_attr {
 	uint32_t reserved1 : 13;
@@ -964,6 +972,10 @@
 		      unsigned long (*acpi_fill_ivrs)(acpi_ivrs_t *ivrs_struct,
 		      unsigned long current));
 
+void acpi_create_crat(struct acpi_crat_header *crat,
+		      unsigned long (*acpi_fill_crat)(struct acpi_crat_header *crat_struct,
+		      unsigned long current));
+
 void acpi_create_hpet(acpi_hpet_t *hpet);
 unsigned long acpi_write_hpet(const struct device *device, unsigned long start,
 			      acpi_rsdp_t *rsdp);