blob: 70afcc618b9cc8ba1f677d6bdc3e098e2d87f3c0 [file] [log] [blame]
Angel Pons8a3453f2020-04-02 23:48:19 +02001/* SPDX-License-Identifier: GPL-2.0-only */
2/* This file is part of the coreboot project. */
Kyösti Mälkki0e01c482017-07-27 06:15:02 +03003
Kyösti Mälkki28c4d2f2016-11-25 11:21:02 +02004#include <northbridge/amd/agesa/state_machine.h>
Kyösti Mälkki0e01c482017-07-27 06:15:02 +03005#include <northbridge/amd/agesa/agesa_helper.h>
6
Elyes HAOUAS19f5ba82018-10-14 14:52:06 +02007#include <AGESA.h>
Kyösti Mälkki0e01c482017-07-27 06:15:02 +03008
9/* Fields were removed from the structure and we cannot add them back
10 * without new builds of the binaryPI blobs.
11 */
Julius Wernercd49cce2019-03-05 16:53:33 -080012#if !CONFIG(CPU_AMD_AGESA_BINARY_PI) || \
13 CONFIG(NORTHBRIDGE_AMD_PI_00630F01) || \
14 CONFIG(NORTHBRIDGE_AMD_PI_00730F01)
Kyösti Mälkki0e01c482017-07-27 06:15:02 +030015
Elyes HAOUAS0d8f1da2018-05-28 15:48:04 +020016#define HAS_ACPI_SRAT TRUE
17#define HAS_ACPI_SLIT TRUE
Kyösti Mälkki0e01c482017-07-27 06:15:02 +030018#else
Elyes HAOUAS0d8f1da2018-05-28 15:48:04 +020019#define HAS_ACPI_SRAT FALSE
20#define HAS_ACPI_SLIT FALSE
Kyösti Mälkki0e01c482017-07-27 06:15:02 +030021#endif
22
23/* We will reference AmdLateParams later to copy ACPI tables. */
24static AMD_LATE_PARAMS *AmdLateParams;
25
26void agesawrapper_setlateinitptr(void *Late)
27{
28 AmdLateParams = Late;
29}
30
Kyösti Mälkki28c4d2f2016-11-25 11:21:02 +020031void completion_InitLate(struct sysinfo *cb, AMD_LATE_PARAMS *Late)
32{
33 AmdLateParams = Late;
34}
35
Kyösti Mälkki0e01c482017-07-27 06:15:02 +030036void *agesawrapper_getlateinitptr(int pick)
37{
38 ASSERT(AmdLateParams != NULL);
39
40 switch (pick) {
41 case PICK_DMI:
42 return AmdLateParams->DmiTable;
43 case PICK_PSTATE:
44 return AmdLateParams->AcpiPState;
45#if HAS_ACPI_SRAT
46 case PICK_SRAT:
47 return AmdLateParams->AcpiSrat;
48#endif
49#if HAS_ACPI_SLIT
50 case PICK_SLIT:
51 return AmdLateParams->AcpiSlit;
52#endif
53 case PICK_WHEA_MCE:
54 return AmdLateParams->AcpiWheaMce;
55 case PICK_WHEA_CMC:
56 return AmdLateParams->AcpiWheaCmc;
57 case PICK_ALIB:
58 return AmdLateParams->AcpiAlib;
59 case PICK_IVRS:
60 return AmdLateParams->AcpiIvrs;
61 case PICK_CRAT:
62 return AmdLateParams->AcpiCrat;
63 case PICK_CDIT:
64 return AmdLateParams->AcpiCdit;
65 default:
66 return NULL;
67 }
68 return NULL;
69}