83405a1241
The hp/abm board is used in network/server applications. Notes: - The hp/abm board is headless and therefore does not define CONFIG_GFXUMA, and does not require a video bios. - The micro USB connector on the board edge is connected to COM4 (i.e. I/O=2E8h). Coreboot needs to be configured to use Index=3. - If you are using SeaBIOS it would also need to be configured to use the UART at I/O=2E8h. - This board has been tested with headless installed versions of Ubuntu 12.10 and Fedora 19. Change-Id: I60bde98411c40a184c8d053199bac8d04df8ab07 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/6116 Tested-by: build bot (Jenkins) Reviewed-by: Dave Frodin <dave.frodin@se-eng.com>
83 lines
2.9 KiB
C
83 lines
2.9 KiB
C
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* Copyright (C) 2012 Advanced Micro Devices, Inc.
|
|
* Copyright (C) 2014 Sage Electronic Engineering, LLC
|
|
*
|
|
* 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.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#include "AGESA.h"
|
|
#include "amdlib.h"
|
|
#include <northbridge/amd/agesa/BiosCallOuts.h>
|
|
#include "Ids.h"
|
|
#include "OptionsIds.h"
|
|
#include "heapManager.h"
|
|
#include "FchPlatform.h"
|
|
#include "cbfs.h"
|
|
#include <stdlib.h>
|
|
|
|
static AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
|
|
|
|
const BIOS_CALLOUT_STRUCT BiosCallouts[] =
|
|
{
|
|
{AGESA_ALLOCATE_BUFFER, agesa_AllocateBuffer },
|
|
{AGESA_DEALLOCATE_BUFFER, agesa_DeallocateBuffer },
|
|
{AGESA_LOCATE_BUFFER, agesa_LocateBuffer },
|
|
{AGESA_DO_RESET, agesa_Reset },
|
|
{AGESA_READ_SPD, agesa_ReadSpd },
|
|
{AGESA_READ_SPD_RECOVERY, agesa_NoopUnsupported },
|
|
{AGESA_RUNFUNC_ONAP, agesa_RunFuncOnAp },
|
|
{AGESA_GET_IDS_INIT_DATA, agesa_EmptyIdsInitData },
|
|
{AGESA_HOOKBEFORE_DQS_TRAINING, agesa_NoopSuccess },
|
|
{AGESA_HOOKBEFORE_EXIT_SELF_REF, agesa_NoopSuccess },
|
|
{AGESA_FCH_OEM_CALLOUT, Fch_Oem_config },
|
|
{AGESA_GNB_GFX_GET_VBIOS_IMAGE, agesa_GfxGetVbiosImage }
|
|
};
|
|
const int BiosCalloutsLen = ARRAY_SIZE(BiosCallouts);
|
|
|
|
/**
|
|
* Fch Oem setting callback
|
|
*
|
|
* Configure platform specific Hudson device,
|
|
* such Azalia, SATA, IMC etc.
|
|
*/
|
|
static AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr)
|
|
{
|
|
AMD_CONFIG_PARAMS *StdHeader = ConfigPtr;
|
|
|
|
if (StdHeader->Func == AMD_INIT_RESET) {
|
|
FCH_RESET_DATA_BLOCK *FchParams_reset = (FCH_RESET_DATA_BLOCK *)FchData;
|
|
printk(BIOS_DEBUG, "Fch OEM config in INIT RESET ");
|
|
//FchParams_reset->EcChannel0 = TRUE; /* logical devicd 3 */
|
|
FchParams_reset->FchReset.Xhci0Enable = IS_ENABLED(CONFIG_HUDSON_XHCI_ENABLE);
|
|
FchParams_reset->FchReset.Xhci1Enable = FALSE;
|
|
} else if (StdHeader->Func == AMD_INIT_ENV) {
|
|
FCH_DATA_BLOCK *FchParams_env = (FCH_DATA_BLOCK *)FchData;
|
|
printk(BIOS_DEBUG, "Fch OEM config in INIT ENV ");
|
|
|
|
/* Azalia Controller Front Panel OEM Table Pointer */
|
|
|
|
/* Fan Control */
|
|
|
|
/* XHCI configuration */
|
|
FchParams_env->Usb.Xhci0Enable = IS_ENABLED(CONFIG_HUDSON_XHCI_ENABLE);
|
|
FchParams_env->Usb.Xhci1Enable = FALSE;
|
|
|
|
/* sata configuration */
|
|
}
|
|
printk(BIOS_DEBUG, "Done\n");
|
|
|
|
return AGESA_SUCCESS;
|
|
}
|