/* * This file is part of the coreboot project. * * Copyright (C) 2011-2012 Advanced Micro Devices, Inc. * Copyright (C) 2016 Kyösti Mälkki * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include #include #include /* Fields were removed from the structure and we cannot add them back * without new builds of the binaryPI blobs. */ #if !IS_ENABLED(CONFIG_CPU_AMD_AGESA_BINARY_PI) || \ IS_ENABLED(CONFIG_NORTHBRIDGE_AMD_PI_00630F01) || \ IS_ENABLED(CONFIG_NORTHBRIDGE_AMD_PI_00730F01) #define HAS_ACPI_SRAT TRUE #define HAS_ACPI_SLIT TRUE #else #define HAS_ACPI_SRAT FALSE #define HAS_ACPI_SLIT FALSE #endif /* We will reference AmdLateParams later to copy ACPI tables. */ static AMD_LATE_PARAMS *AmdLateParams; void agesawrapper_setlateinitptr(void *Late) { AmdLateParams = Late; } void completion_InitLate(struct sysinfo *cb, AMD_LATE_PARAMS *Late) { AmdLateParams = Late; } void *agesawrapper_getlateinitptr(int pick) { ASSERT(AmdLateParams != NULL); switch (pick) { case PICK_DMI: return AmdLateParams->DmiTable; case PICK_PSTATE: return AmdLateParams->AcpiPState; #if HAS_ACPI_SRAT case PICK_SRAT: return AmdLateParams->AcpiSrat; #endif #if HAS_ACPI_SLIT case PICK_SLIT: return AmdLateParams->AcpiSlit; #endif case PICK_WHEA_MCE: return AmdLateParams->AcpiWheaMce; case PICK_WHEA_CMC: return AmdLateParams->AcpiWheaCmc; case PICK_ALIB: return AmdLateParams->AcpiAlib; case PICK_IVRS: return AmdLateParams->AcpiIvrs; case PICK_CRAT: return AmdLateParams->AcpiCrat; case PICK_CDIT: return AmdLateParams->AcpiCdit; default: return NULL; } return NULL; }