2017-07-27 05:15:02 +02:00
|
|
|
/*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
|
2016-11-25 10:21:02 +01:00
|
|
|
#include <northbridge/amd/agesa/state_machine.h>
|
2017-07-27 05:15:02 +02:00
|
|
|
#include <northbridge/amd/agesa/agesa_helper.h>
|
|
|
|
|
2018-10-14 14:52:06 +02:00
|
|
|
#include <AGESA.h>
|
2017-07-27 05:15:02 +02:00
|
|
|
|
|
|
|
/* 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)
|
|
|
|
|
2018-05-28 15:48:04 +02:00
|
|
|
#define HAS_ACPI_SRAT TRUE
|
|
|
|
#define HAS_ACPI_SLIT TRUE
|
2017-07-27 05:15:02 +02:00
|
|
|
#else
|
2018-05-28 15:48:04 +02:00
|
|
|
#define HAS_ACPI_SRAT FALSE
|
|
|
|
#define HAS_ACPI_SLIT FALSE
|
2017-07-27 05:15:02 +02:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/* We will reference AmdLateParams later to copy ACPI tables. */
|
|
|
|
static AMD_LATE_PARAMS *AmdLateParams;
|
|
|
|
|
|
|
|
void agesawrapper_setlateinitptr(void *Late)
|
|
|
|
{
|
|
|
|
AmdLateParams = Late;
|
|
|
|
}
|
|
|
|
|
2016-11-25 10:21:02 +01:00
|
|
|
void completion_InitLate(struct sysinfo *cb, AMD_LATE_PARAMS *Late)
|
|
|
|
{
|
|
|
|
AmdLateParams = Late;
|
|
|
|
}
|
|
|
|
|
2017-07-27 05:15:02 +02:00
|
|
|
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;
|
|
|
|
}
|