[coreboot-gerrit] New patch to review for coreboot: c72123a hp/abm: Add new mainboard (incrementally)

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Thu Jun 26 08:24:47 CEST 2014


Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6116

-gerrit

commit c72123a6fa5f4511959c330c06066ee63fb25054
Author: Dave Frodin <dave.frodin at se-eng.com>
Date:   Thu Jun 5 11:49:04 2014 -0600

    hp/abm: Add new mainboard (incrementally)
    
    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 at gmail.com>
---
 src/mainboard/hp/abm/BiosCallOuts.c           | 261 +-------------------------
 src/mainboard/hp/abm/BiosCallOuts.h           |   1 +
 src/mainboard/hp/abm/Kconfig                  |  33 +---
 src/mainboard/hp/abm/Makefile.inc             |   1 +
 src/mainboard/hp/abm/OptionsIds.h             |   5 +-
 src/mainboard/hp/abm/PlatformGnbPcie.c        |   9 +-
 src/mainboard/hp/abm/PlatformGnbPcieComplex.h |   1 +
 src/mainboard/hp/abm/acpi/AmdImc.asl          |   1 +
 src/mainboard/hp/abm/acpi/gpe.asl             |   2 +-
 src/mainboard/hp/abm/acpi/mainboard.asl       |   7 +-
 src/mainboard/hp/abm/acpi/routing.asl         |   2 +-
 src/mainboard/hp/abm/acpi/sata.asl            |   1 +
 src/mainboard/hp/abm/acpi/si.asl              |   2 +-
 src/mainboard/hp/abm/acpi/sleep.asl           |   2 +-
 src/mainboard/hp/abm/acpi/superio.asl         |   2 +-
 src/mainboard/hp/abm/acpi/thermal.asl         |   2 +-
 src/mainboard/hp/abm/acpi/usb_oc.asl          |   4 +-
 src/mainboard/hp/abm/acpi_tables.c            |   3 +-
 src/mainboard/hp/abm/agesawrapper.c           |  40 +---
 src/mainboard/hp/abm/agesawrapper.h           |  34 +---
 src/mainboard/hp/abm/buildOpts.c              |  28 ++-
 src/mainboard/hp/abm/cmos.layout              |   3 +-
 src/mainboard/hp/abm/devicetree.cb            |  82 +++-----
 src/mainboard/hp/abm/dsdt.asl                 |   4 +-
 src/mainboard/hp/abm/get_bus_conf.c           |  15 +-
 src/mainboard/hp/abm/irq_tables.c             |   5 +-
 src/mainboard/hp/abm/mainboard.c              |  93 ++++++++-
 src/mainboard/hp/abm/mptable.c                |   3 +-
 src/mainboard/hp/abm/romstage.c               |  53 +++---
 29 files changed, 227 insertions(+), 472 deletions(-)

diff --git a/src/mainboard/hp/abm/BiosCallOuts.c b/src/mainboard/hp/abm/BiosCallOuts.c
index 9b1d489..9bede8c 100644
--- a/src/mainboard/hp/abm/BiosCallOuts.c
+++ b/src/mainboard/hp/abm/BiosCallOuts.c
@@ -2,6 +2,7 @@
  * 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
@@ -17,7 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include <device/azalia.h>
 #include "agesawrapper.h"
 #include "amdlib.h"
 #include "BiosCallOuts.h"
@@ -26,6 +26,9 @@
 #include "heapManager.h"
 #include "FchPlatform.h"
 #include "cbfs.h"
+#if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
+#include "imc.h"
+#endif
 #include <stdlib.h>
 
 const BIOS_CALLOUT_STRUCT BiosCallouts[] =
@@ -46,257 +49,6 @@ const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 const int BiosCalloutsLen = ARRAY_SIZE(BiosCallouts);
 
 /**
- * CODEC Initialization Table for Azalia HD Audio using Realtek ALC662 chip
- */
-static const CODEC_ENTRY Alc662_VerbTbl[] =
-{
-	{ 0x14, /*01014010*/                /* Port D - green headphone jack    */
-			(AZALIA_PINCFG_PORT_JACK << 30)
-			| ((AZALIA_PINCFG_LOCATION_EXTERNAL | AZALIA_PINCFG_LOCATION_REAR) << 24)
-			| (AZALIA_PINCFG_DEVICE_LINEOUT << 20)
-			| (AZALIA_PINCFG_CONN_MINI_HEADPHONE_JACK << 16)
-			| (AZALIA_PINCFG_COLOR_GREEN << 12)
-			| (1 << 4)
-			| (0 << 0)
-	},
-	{ 0x15, /*0x90170120*/              /* Port A - white speaker header    */
-			(AZALIA_PINCFG_PORT_FIXED << 30)
-			| (AZALIA_PINCFG_LOCATION_INTERNAL << 24)
-			| (AZALIA_PINCFG_DEVICE_SPEAKER << 20)
-			| (AZALIA_PINCFG_CONN_OTHER_ANALOG << 16)
-			| (AZALIA_PINCFG_COLOR_WHITE << 12)
-			| (AZALIA_PINCFG_MISC_IGNORE_PRESENCE << 8)
-			| (2 << 4)
-			| (0 << 0)
-	},
-	{ 0x16, 0x411111F0 },               /* Port G - not connected           */
-	{ 0x18, /*0x01A19040*/              /* Port B - pink headphone jack     */
-			(AZALIA_PINCFG_PORT_JACK << 30)
-			| ((AZALIA_PINCFG_LOCATION_EXTERNAL | AZALIA_PINCFG_LOCATION_REAR) << 24)
-			| (AZALIA_PINCFG_DEVICE_MICROPHONE << 20)
-			| (AZALIA_PINCFG_CONN_MINI_HEADPHONE_JACK << 16)
-			| (AZALIA_PINCFG_COLOR_PINK << 12)
-			| (4 << 4)
-			| (0 << 0)
-	},
-	{ 0x19, /*0x02A19050*/              /* Port F - front panel header mic  */
-			(AZALIA_PINCFG_PORT_NC << 30)
-			| ((AZALIA_PINCFG_LOCATION_EXTERNAL | AZALIA_PINCFG_LOCATION_FRONT) << 24)
-			| (AZALIA_PINCFG_DEVICE_MICROPHONE << 20)
-			| (AZALIA_PINCFG_CONN_MINI_HEADPHONE_JACK << 16)
-			| (AZALIA_PINCFG_COLOR_PINK << 12)
-			| (5 << 4)
-			| (0 << 0)
-	},
-	{ 0x1A, /*0x0181304F*/              /* Port C - NL blue headphone jack  */
-			(AZALIA_PINCFG_PORT_NC << 30)
-			| ((AZALIA_PINCFG_LOCATION_EXTERNAL | AZALIA_PINCFG_LOCATION_REAR) << 24)
-			| (AZALIA_PINCFG_DEVICE_LINEIN << 20)
-			| (AZALIA_PINCFG_CONN_MINI_HEADPHONE_JACK << 16)
-			| (AZALIA_PINCFG_COLOR_BLUE << 12)
-			| (4 << 4)
-			| (0xF << 0)
-	},
-	{ 0x1B, /*0x02214030*/              /* Port E - front panel line-out     */
-			(AZALIA_PINCFG_PORT_NC << 30)
-			| ((AZALIA_PINCFG_LOCATION_EXTERNAL | AZALIA_PINCFG_LOCATION_FRONT) << 24)
-			| (AZALIA_PINCFG_DEVICE_HP_OUT << 20)
-			| (AZALIA_PINCFG_CONN_MINI_HEADPHONE_JACK << 16)
-			| (AZALIA_PINCFG_COLOR_GREEN << 12)
-			| (3 << 4)
-			| (0 << 0)
-	},
-	{ 0x1C, 0x411111F0 },               /* CD-in - Not Connected            */
-	{ 0x1D, 0x411111F0 },               /* PC Beep - Not Connected          */
-	{ 0x1E, 0x411111F0 },               /* S/PDIF - Not connected           */
-	{ 0xFF, 0xFFFFFFFF },
-};
-
-static const CODEC_TBL_LIST CodecTableList[] =
-{
-	{0x10ec0662, (CODEC_ENTRY*)Alc662_VerbTbl},
-	{(UINT32)0x0FFFFFFFF, (CODEC_ENTRY*)0x0FFFFFFFFUL}
-};
-
-#define FAN_INPUT_INTERNAL_DIODE	0
-#define FAN_INPUT_TEMP0			1
-#define FAN_INPUT_TEMP1			2
-#define FAN_INPUT_TEMP2			3
-#define FAN_INPUT_TEMP3			4
-#define FAN_INPUT_TEMP0_FILTER		5
-#define FAN_INPUT_ZERO			6
-#define FAN_INPUT_DISABLED		7
-
-#define FAN_AUTOMODE			(1 << 0)
-#define FAN_LINEARMODE			(1 << 1)
-#define FAN_STEPMODE			~(1 << 1)
-#define FAN_POLARITY_HIGH		(1 << 2)
-#define FAN_POLARITY_LOW		~(1 << 2)
-
-/* Normally, 4-wire fan runs at 25KHz and 3-wire fan runs at 100Hz */
-#define FREQ_28KHZ			0x0
-#define FREQ_25KHZ			0x1
-#define FREQ_23KHZ			0x2
-#define FREQ_21KHZ			0x3
-#define FREQ_29KHZ			0x4
-#define FREQ_18KHZ			0x5
-#define FREQ_100HZ			0xF7
-#define FREQ_87HZ			0xF8
-#define FREQ_58HZ			0xF9
-#define FREQ_44HZ			0xFA
-#define FREQ_35HZ			0xFB
-#define FREQ_29HZ			0xFC
-#define FREQ_22HZ			0xFD
-#define FREQ_14HZ			0xFE
-#define FREQ_11HZ			0xFF
-
-/* imb_a180 Hardware Monitor Fan Control
- * Hardware limitation:
- *  HWM failed to read the input temperture vi I2C,
- *  if other software switch the I2C switch by mistake or intention.
- *  We recommend to using IMC to control Fans, instead of HWM.
- */
-#if 0
-static void oem_fan_control(FCH_DATA_BLOCK *FchParams)
-{
-	FCH_HWM_FAN_CTR oem_factl[5] = {
-		/*temperatuer input, fan mode, frequency, low_duty, med_duty, multiplier, lowtemp, medtemp, hightemp, LinearRange, LinearHoldCount */
-		/* imb_a180 FanOUT0 Fan header J32 */
-		{FAN_INPUT_INTERNAL_DIODE, (FAN_STEPMODE | FAN_POLARITY_HIGH), FREQ_100HZ, 40, 60,  0, 40, 65, 85, 0, 0},
-		/* imb_a180 FanOUT1 Fan header J31*/
-		{FAN_INPUT_INTERNAL_DIODE, (FAN_STEPMODE | FAN_POLARITY_HIGH), FREQ_100HZ, 40, 60,  0, 40, 65, 85, 0, 0},
-		{FAN_INPUT_INTERNAL_DIODE, (FAN_STEPMODE | FAN_POLARITY_HIGH), FREQ_100HZ, 40, 60,  0, 40, 65, 85, 0, 0},
-		{FAN_INPUT_INTERNAL_DIODE, (FAN_STEPMODE | FAN_POLARITY_HIGH), FREQ_100HZ, 40, 60,  0, 40, 65, 85, 0, 0},
-		{FAN_INPUT_INTERNAL_DIODE, (FAN_STEPMODE | FAN_POLARITY_HIGH), FREQ_100HZ, 40, 60,  0, 40, 65, 85, 0, 0},
-	};
-	LibAmdMemCopy ((VOID *)(FchParams->Hwm.HwmFanControl), &oem_factl, (sizeof (FCH_HWM_FAN_CTR) * 5), FchParams->StdHeader);
-
-	/* Enable IMC fan control. the recommand way */
-#if defined CONFIG_HUDSON_IMC_FWM && (CONFIG_HUDSON_IMC_FWM == 1)
-	/* HwMonitorEnable = TRUE &&  HwmFchtsiAutoOpll ==FALSE to call FchECfancontrolservice */
-	FchParams->Hwm.HwMonitorEnable = TRUE;
-	FchParams->Hwm.HwmFchtsiAutoPoll = FALSE;/* 0 disable, 1 enable TSI Auto Polling */
-
-	FchParams->Imc.ImcEnable = TRUE;
-	FchParams->Hwm.HwmControl = 1;	/* 1 IMC, 0 HWM */
-	FchParams->Imc.ImcEnableOverWrite = 1; /* 2 disable IMC , 1 enable IMC, 0 following hw strap setting */
-
-	LibAmdMemFill(&(FchParams->Imc.EcStruct), 0, sizeof(FCH_EC), FchParams->StdHeader);
-
-	/* Thermal Zone Parameter */
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg0 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg1 = 0x00;	/* Zone */
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg2 = 0x00; //BIT0 | BIT2 | BIT5;
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg3 = 0x00;//6 | BIT3;
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg4 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg5 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg6 = 0x98;	/* SMBUS Address for SMBUS based temperature sensor such as SB-TSI and ADM1032 */
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg7 = 2;
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg8 = 0;	/* PWM steping rate in unit of PWM level percentage */
-	FchParams->Imc.EcStruct.MsgFun81Zone0MsgReg9 = 0;
-
-	/* IMC Fan Policy temperature thresholds */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg0 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg1 = 0x00;	/* Zone */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg2 = 0;///80;	/*AC0 threshold in Celsius */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg3 = 0;	/*AC1 threshold in Celsius */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg4 = 0;	/*AC2 threshold in Celsius */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg5 = 0;	/*AC3 threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg6 = 0;	/*AC4 threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg7 = 0;	/*AC5 threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg8 = 0;	/*AC6 threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgReg9 = 0;	/*AC7 lowest threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgRegA = 0;	/*critical threshold* in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone0MsgRegB = 0x00;
-
-	/* IMC Fan Policy PWM Settings */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg0 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg1 = 0x00;	/* Zone */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg2 = 0;	/* AL0 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg3 = 0;	/* AL1 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg4 = 0;	/* AL2 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg5 = 0x00;	/* AL3 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg6 = 0x00;	/* AL4 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg7 = 0x00;	/* AL5 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg8 = 0x00;	/* AL6 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone0MsgReg9 = 0x00;	/* AL7 percentage */
-
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg0 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg1 = 0x01;	/* Zone */
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg2 = 0x55;//BIT0 | BIT2 | BIT5;
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg3 = 0x17;
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg4 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg5 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg6 = 0x90;	/* SMBUS Address for SMBUS based temperature sensor such as SB-TSI and ADM1032 */
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg7 = 0;
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg8 = 0;	/* PWM steping rate in unit of PWM level percentage */
-	FchParams->Imc.EcStruct.MsgFun81Zone1MsgReg9 = 0;
-
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg0 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg1 = 0x01;	/* zone */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg2 = 60;	/*AC0 threshold in Celsius */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg3 = 40;	/*AC1 threshold in Celsius */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg4 = 0;	/*AC2 threshold in Celsius */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg5 = 0;	/*AC3 threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg6 = 0;	/*AC4 threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg7 = 0;	/*AC5 threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg8 = 0;	/*AC6 threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgReg9 = 0;	/*AC7 lowest threshold in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgRegA = 0;	/*critical threshold* in Celsius, 0xFF is not define */
-	FchParams->Imc.EcStruct.MsgFun83Zone1MsgRegB = 0x00;
-
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg0 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg1 = 0x01;	/*Zone */
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg2 = 0;	/* AL0 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg3 = 0;	/* AL1 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg4 = 0;	/* AL2 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg5 = 0x00;	/* AL3 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg6 = 0x00;	/* AL4 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg7 = 0x00;	/* AL5 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg8 = 0x00;	/* AL6 percentage */
-	FchParams->Imc.EcStruct.MsgFun85Zone1MsgReg9 = 0x00;	/* AL7 percentage */
-
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg0 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg1 = 0x2;	/* Zone */
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg2 = 0x0;//BIT0 | BIT2 | BIT5;
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg3 = 0x0;
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg4 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg5 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg6 = 0x98;	/* SMBUS Address for SMBUS based temperature sensor such as SB-TSI and ADM1032 */
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg7 = 2;
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg8 = 5;	/* PWM steping rate in unit of PWM level percentage */
-	FchParams->Imc.EcStruct.MsgFun81Zone2MsgReg9 = 0;
-
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg0 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg1 = 0x3;	/* Zone */
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg2 = 0x0;//BIT0 | BIT2 | BIT5;
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg3 = 0x0;
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg4 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg5 = 0x00;
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg6 = 0x0;	/* SMBUS Address for SMBUS based temperature sensor such as SB-TSI and ADM1032 */
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg7 = 0;
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg8 = 0;	/* PWM steping rate in unit of PWM level percentage */
-	FchParams->Imc.EcStruct.MsgFun81Zone3MsgReg9 = 0;
-
-	/* IMC Function */
-	FchParams->Imc.EcStruct.IMCFUNSupportBitMap = 0x333;//BIT0 | BIT4 |BIT8;
-
-	/* NOTE:
-	 * FchInitLateHwm will overwrite the EcStruct with EcDefaultMassege,
-	 * AGESA put EcDefaultMassege as global data in ROM, so we can't overwride it.
-	 * so we remove it from AGESA code. Please Seee FchInitLateHwm.
-	 */
-
-#else /* HWM fan control, the way not recommand */
-	FchParams->Imc.ImcEnable = FALSE;
-	FchParams->Hwm.HwMonitorEnable = TRUE;
-	FchParams->Hwm.HwmFchtsiAutoPoll = TRUE;/* 1 enable, 0 disable TSI Auto Polling */
-
-#endif /* CONFIG_HUDSON_IMC_FWM */
-}
-#endif
-
-/**
  * Fch Oem setting callback
  *
  *  Configure platform specific Hudson device,
@@ -314,15 +66,12 @@ AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr)
 		FCH_DATA_BLOCK *FchParams_env = (FCH_DATA_BLOCK *)FchData;
 		printk(BIOS_DEBUG, "Fch OEM config in INIT ENV ");
 
-		/* Azalia Controller OEM Codec Table Pointer */
-		FchParams_env->Azalia.AzaliaOemCodecTablePtr = (CODEC_TBL_LIST*)CodecTableList;
 		/* Azalia Controller Front Panel OEM Table Pointer */
 
 		/* Fan Control */
-		//oem_fan_control(FchParams_env);
 
 		/* XHCI configuration */
-#if CONFIG_HUDSON_XHCI_ENABLE
+#if IS_ENABLED(CONFIG_HUDSON_XHCI_ENABLE)
 		FchParams_env->Usb.Xhci0Enable = TRUE;
 #else
 		FchParams_env->Usb.Xhci0Enable = FALSE;
diff --git a/src/mainboard/hp/abm/BiosCallOuts.h b/src/mainboard/hp/abm/BiosCallOuts.h
index 2b8aae2..fb893df 100644
--- a/src/mainboard/hp/abm/BiosCallOuts.h
+++ b/src/mainboard/hp/abm/BiosCallOuts.h
@@ -2,6 +2,7 @@
  * 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
diff --git a/src/mainboard/hp/abm/Kconfig b/src/mainboard/hp/abm/Kconfig
index aa075c8..505beae 100644
--- a/src/mainboard/hp/abm/Kconfig
+++ b/src/mainboard/hp/abm/Kconfig
@@ -1,7 +1,8 @@
 #
 # This file is part of the coreboot project.
 #
-# Copyright (C) 2012 Advanced Micro Devices, Inc.
+# Copyright (C) 2012-2014 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
@@ -14,32 +15,30 @@
 #
 # 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
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 #
 
-if BOARD_ASROCK_IMB_A180
+if BOARD_HP_ABM
 
 config BOARD_SPECIFIC_OPTIONS # dummy
 	def_bool y
 	select CPU_AMD_AGESA_FAMILY16_KB
 	select NORTHBRIDGE_AMD_AGESA_FAMILY16_KB
 	select SOUTHBRIDGE_AMD_AGESA_YANGTZE
-	select SUPERIO_WINBOND_W83627UHG
+	select SUPERIO_NUVOTON_NCT5104D
 	select HAVE_OPTION_TABLE
 	select HAVE_PIRQ_TABLE
 	select HAVE_MP_TABLE
-	select HAVE_ACPI_RESUME
 	select HAVE_ACPI_TABLES
-	select BOARD_ROMSIZE_KB_4096
-	select GFXUMA
+	select BOARD_ROMSIZE_KB_8192
 
 config MAINBOARD_DIR
 	string
-	default asrock/imb-a180
+	default hp/abm
 
 config MAINBOARD_PART_NUMBER
 	string
-	default "IMB-A180"
+	default "ABM"
 
 config HW_MEM_HOLE_SIZEK
 	hex
@@ -73,20 +72,8 @@ config RAMBASE
 	hex
 	default 0x200000
 
-config ONBOARD_VGA_IS_PRIMARY
-	bool
-	default y
-
 config HUDSON_LEGACY_FREE
 	bool
-	default y
-
-# bit 1,0 - pin 0
-# bit 3,2 - pin 1
-# bit 5,4 - pin 2
-# bit 7,6 - pin 3
-config AZ_PIN
-	hex
-	default 0x2
+	default n
 
-endif # BOARD_ASROCK_IMB_A180
+endif # BOARD_HP_ABM
diff --git a/src/mainboard/hp/abm/Makefile.inc b/src/mainboard/hp/abm/Makefile.inc
index a83297a..bd2717f 100644
--- a/src/mainboard/hp/abm/Makefile.inc
+++ b/src/mainboard/hp/abm/Makefile.inc
@@ -2,6 +2,7 @@
 # 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
diff --git a/src/mainboard/hp/abm/OptionsIds.h b/src/mainboard/hp/abm/OptionsIds.h
index 0a1d328..5880030 100644
--- a/src/mainboard/hp/abm/OptionsIds.h
+++ b/src/mainboard/hp/abm/OptionsIds.h
@@ -2,6 +2,7 @@
  * 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
@@ -14,7 +15,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 /**
@@ -64,4 +65,4 @@
 //#define IDSOPT_HOST_HDT       FALSE
 //#define IDS_DEBUG_PORT    0x80
 
-#endif
+#endif /* _OPTION_IDS_H_ */
diff --git a/src/mainboard/hp/abm/PlatformGnbPcie.c b/src/mainboard/hp/abm/PlatformGnbPcie.c
index 24d8381..f2dc287 100644
--- a/src/mainboard/hp/abm/PlatformGnbPcie.c
+++ b/src/mainboard/hp/abm/PlatformGnbPcie.c
@@ -2,6 +2,7 @@
  * 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
@@ -87,16 +88,10 @@ static const PCIe_DDI_DESCRIPTOR DdiList [] = {
 	},
 	/* DP1 to FCH */
 	{
-		0,
+		DESCRIPTOR_TERMINATE_LIST,
 		PCIE_ENGINE_DATA_INITIALIZER (PcieDdiEngine, 12, 15),
 		PCIE_DDI_DATA_INITIALIZER (ConnectorTypeHDMI, Aux2, Hdp2)
 	},
-	/* DP2 to HDMI1/DP */
-	{
-		DESCRIPTOR_TERMINATE_LIST,
-		PCIE_ENGINE_DATA_INITIALIZER (PcieDdiEngine, 16, 19),
-		PCIE_DDI_DATA_INITIALIZER (ConnectorTypeCrt, Aux3, Hdp3)
-	},
 };
 
 static const PCIe_COMPLEX_DESCRIPTOR PcieComplex = {
diff --git a/src/mainboard/hp/abm/PlatformGnbPcieComplex.h b/src/mainboard/hp/abm/PlatformGnbPcieComplex.h
index 1db8b2d..f875e1b 100644
--- a/src/mainboard/hp/abm/PlatformGnbPcieComplex.h
+++ b/src/mainboard/hp/abm/PlatformGnbPcieComplex.h
@@ -2,6 +2,7 @@
  * 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
diff --git a/src/mainboard/hp/abm/acpi/AmdImc.asl b/src/mainboard/hp/abm/acpi/AmdImc.asl
index 074dd7c..f664dc1 100644
--- a/src/mainboard/hp/abm/acpi/AmdImc.asl
+++ b/src/mainboard/hp/abm/acpi/AmdImc.asl
@@ -2,6 +2,7 @@
  * 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
diff --git a/src/mainboard/hp/abm/acpi/gpe.asl b/src/mainboard/hp/abm/acpi/gpe.asl
index 8d4f8a2..338d942 100644
--- a/src/mainboard/hp/abm/acpi/gpe.asl
+++ b/src/mainboard/hp/abm/acpi/gpe.asl
@@ -1,7 +1,7 @@
 /*
  * This file is part of the coreboot project.
  *
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * Copyright (C) 2013-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
diff --git a/src/mainboard/hp/abm/acpi/mainboard.asl b/src/mainboard/hp/abm/acpi/mainboard.asl
index 05523fb..ca3fd6e 100644
--- a/src/mainboard/hp/abm/acpi/mainboard.asl
+++ b/src/mainboard/hp/abm/acpi/mainboard.asl
@@ -1,7 +1,7 @@
 /*
  * This file is part of the coreboot project.
  *
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * Copyright (C) 2013-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
@@ -35,7 +35,4 @@ Name(PMOD, One)	/* Assume APIC */
 
 /* AcpiGpe0Blk */
 OperationRegion(GP0B, SystemMemory, 0xfed80814, 0x04)
-	Field(GP0B, ByteAcc, NoLock, Preserve) {
-	, 11,
-	USBS, 1,
-}
+	Field(GP0B, ByteAcc, NoLock, Preserve) { , 11, USBS, 1, }
diff --git a/src/mainboard/hp/abm/acpi/routing.asl b/src/mainboard/hp/abm/acpi/routing.asl
index 0b924a3..f8b7f96 100644
--- a/src/mainboard/hp/abm/acpi/routing.asl
+++ b/src/mainboard/hp/abm/acpi/routing.asl
@@ -2,7 +2,7 @@
  * This file is part of the coreboot project.
  *
  * Copyright (C) 2013 Advanced Micro Devices, Inc.
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * Copyright (C) 2013-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
diff --git a/src/mainboard/hp/abm/acpi/sata.asl b/src/mainboard/hp/abm/acpi/sata.asl
index 3d19222..db349e1 100644
--- a/src/mainboard/hp/abm/acpi/sata.asl
+++ b/src/mainboard/hp/abm/acpi/sata.asl
@@ -2,6 +2,7 @@
  * This file is part of the coreboot project.
  *
  * Copyright (C) 2012-2013 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
diff --git a/src/mainboard/hp/abm/acpi/si.asl b/src/mainboard/hp/abm/acpi/si.asl
index 3cc2170..ea6e3b1 100644
--- a/src/mainboard/hp/abm/acpi/si.asl
+++ b/src/mainboard/hp/abm/acpi/si.asl
@@ -1,7 +1,7 @@
 /*
  * This file is part of the coreboot project.
  *
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * Copyright (C) 2013-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
diff --git a/src/mainboard/hp/abm/acpi/sleep.asl b/src/mainboard/hp/abm/acpi/sleep.asl
index 2fc2efe..e257537 100644
--- a/src/mainboard/hp/abm/acpi/sleep.asl
+++ b/src/mainboard/hp/abm/acpi/sleep.asl
@@ -1,7 +1,7 @@
 /*
  * This file is part of the coreboot project.
  *
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * Copyright (C) 2013-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
diff --git a/src/mainboard/hp/abm/acpi/superio.asl b/src/mainboard/hp/abm/acpi/superio.asl
old mode 100644
new mode 100755
index ec72e36..60443e2
--- a/src/mainboard/hp/abm/acpi/superio.asl
+++ b/src/mainboard/hp/abm/acpi/superio.asl
@@ -1,7 +1,7 @@
 /*
  * This file is part of the coreboot project.
  *
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * Copyright (C) 2013-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
diff --git a/src/mainboard/hp/abm/acpi/thermal.asl b/src/mainboard/hp/abm/acpi/thermal.asl
old mode 100644
new mode 100755
index 0466a1b..13d6ed1
--- a/src/mainboard/hp/abm/acpi/thermal.asl
+++ b/src/mainboard/hp/abm/acpi/thermal.asl
@@ -1,7 +1,7 @@
 /*
  * This file is part of the coreboot project.
  *
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * Copyright (C) 2013-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
diff --git a/src/mainboard/hp/abm/acpi/usb_oc.asl b/src/mainboard/hp/abm/acpi/usb_oc.asl
index 7b5b1c6..c7b770d 100644
--- a/src/mainboard/hp/abm/acpi/usb_oc.asl
+++ b/src/mainboard/hp/abm/acpi/usb_oc.asl
@@ -2,7 +2,7 @@
  * This file is part of the coreboot project.
  *
  * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * Copyright (C) 2013-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
@@ -41,7 +41,7 @@ Name(UOM9, 6)
 
 /* USB Overcurrent GPEs */
 
-#if 0 /* TODO: Update for imba180 */
+#if 0 /* TODO: Update */
 Method(UCOC, 0) {
 	Sleep(20)
 	Store(0x13,CMTI)
diff --git a/src/mainboard/hp/abm/acpi_tables.c b/src/mainboard/hp/abm/acpi_tables.c
index 1175792..ea3ed5a 100644
--- a/src/mainboard/hp/abm/acpi_tables.c
+++ b/src/mainboard/hp/abm/acpi_tables.c
@@ -2,6 +2,7 @@
  * 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
@@ -59,7 +60,7 @@ unsigned long acpi_fill_madt(unsigned long current)
 	/* 0: mean bus 0--->ISA */
 	/* 0: PIC 0 */
 	/* 2: APIC 2 */
-	/* 5 mean: 0101 --> Edge-triggered, Active high */
+	/* 5 mean: 0101 --> Edige-triggered, Active high */
 
 	/* create all subtables for processors */
 	current += acpi_create_madt_lapic_nmi((acpi_madt_lapic_nmi_t *)current, 0xff, 5, 1);
diff --git a/src/mainboard/hp/abm/agesawrapper.c b/src/mainboard/hp/abm/agesawrapper.c
index 4e9e77b..ec6ce7c 100644
--- a/src/mainboard/hp/abm/agesawrapper.c
+++ b/src/mainboard/hp/abm/agesawrapper.c
@@ -2,6 +2,7 @@
  * 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
@@ -14,12 +15,7 @@
  *
  * 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
- */
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <stdint.h>
@@ -43,18 +39,13 @@
 #include <cpu/amd/agesa/s3_resume.h>
 #include <arch/io.h>
 #include <device/device.h>
-#include "hudson.h"
+#include <southbridge/amd/agesa/hudson/hudson.h>
 
 VOID FchInitS3LateRestore (IN FCH_DATA_BLOCK *FchDataPtr);
 VOID FchInitS3EarlyRestore (IN FCH_DATA_BLOCK *FchDataPtr);
 
 #define FILECODE UNASSIGNED_FILE_FILECODE
 
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
 /* ACPI table pointers returned by AmdInitLate */
 VOID *DmiTable    = NULL;
 VOID *AcpiPstate  = NULL;
@@ -66,25 +57,6 @@ VOID *AcpiWheaCmc = NULL;
 VOID *AcpiAlib    = NULL;
 VOID *AcpiIvrs    = NULL;
 
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U  R E S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------------------
- *                          L O C A L    F U N C T I O N S
- *---------------------------------------------------------------------------------------
- */
 UINT32
 agesawrapper_amdinitcpuio (
 	VOID
@@ -159,6 +131,12 @@ agesawrapper_amdinitmmio (
 	MsrReg = MsrReg | 0x0000400000000000;
 	LibAmdMsrWrite (0xC001001F, &MsrReg, &StdHeader);
 
+	/* The early console init code needs access to LPC SIO at 4E/4F */
+	PciAddress.AddressValue = MAKE_SBDFO (0, 0, 0x14, 0x3, 0x48);
+	LibAmdPciRead(AccessWidth32, PciAddress, &PciData, &StdHeader);
+	PciData |= 0x00000003;
+	LibAmdPciWrite(AccessWidth32, PciAddress, &PciData, &StdHeader);
+
 	/* For serial port */
 	PciData = 0xFF03FFD5;
 	PciAddress.AddressValue = MAKE_SBDFO (0, 0, 0x14, 0x3, 0x44);
diff --git a/src/mainboard/hp/abm/agesawrapper.h b/src/mainboard/hp/abm/agesawrapper.h
index 8589db5..bc91b37 100644
--- a/src/mainboard/hp/abm/agesawrapper.h
+++ b/src/mainboard/hp/abm/agesawrapper.h
@@ -2,6 +2,7 @@
  * 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
@@ -14,12 +15,7 @@
  *
  * 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
- */
-
-/*----------------------------------------------------------------------------------------
- *                             M O D U L E S    U S E D
- *----------------------------------------------------------------------------------------
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #ifndef _AGESAWRAPPER_H_
@@ -29,10 +25,6 @@
 #include "Porting.h"
 #include "AGESA.h"
 
-/*----------------------------------------------------------------------------------------
- *                   D E F I N I T I O N S    A N D    M A C R O S
- *----------------------------------------------------------------------------------------
- */
 /* Define AMD Ontario APPU SSID/SVID */
 #define AMD_APU_SVID    0x1022
 #define AMD_APU_SSID    0x1234
@@ -49,26 +41,6 @@ enum {
 	PICK_IVRS,      /* IOMMU ACPI IVRS(I/O Virtualization Reporting Structure) table */
 };
 
-/*----------------------------------------------------------------------------------------
- *                  T Y P E D E F S     A N D     S T R U C T U  R E S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- *                          E X P O R T E D    F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------------------
- *                          L O C A L    F U N C T I O N S
- *---------------------------------------------------------------------------------------
- */
-
 UINT32 agesawrapper_amdinitreset (void);
 UINT32 agesawrapper_amdinitearly (void);
 UINT32 agesawrapper_amdinitenv (void);
@@ -87,4 +59,4 @@ UINT32 agesawrapper_amds3laterestore (VOID);
 UINT32 agesawrapper_fchs3earlyrestore (VOID);
 UINT32 agesawrapper_fchs3laterestore (VOID);
 
-#endif
+#endif /* _AGESAWRAPPER_H_ */
diff --git a/src/mainboard/hp/abm/buildOpts.c b/src/mainboard/hp/abm/buildOpts.c
index 7c57183..1b875e0 100644
--- a/src/mainboard/hp/abm/buildOpts.c
+++ b/src/mainboard/hp/abm/buildOpts.c
@@ -2,6 +2,7 @@
  * This file is part of the coreboot project.
  *
  * Copyright (C) 2012 Advanced Micro Devices, Inc.
+ * Copyright (C) 2013-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
@@ -76,7 +77,7 @@
 #define BLDOPT_REMOVE_SRAT                     FALSE //TRUE
 #define BLDOPT_REMOVE_SLIT                     FALSE //TRUE
 #define BLDOPT_REMOVE_WHEA                     FALSE //TRUE
-#define	BLDOPT_REMOVE_CRAT			TRUE
+#define BLDOPT_REMOVE_CRAT                     TRUE
 #define BLDOPT_REMOVE_CDIT                     TRUE
 #define BLDOPT_REMOVE_DMI                      TRUE
 //#define BLDOPT_REMOVE_EARLY_SAMPLES            FALSE
@@ -153,7 +154,7 @@
 #define BLDCFG_HEAP_DRAM_ADDRESS                  0xB0000ul
 #define BLDCFG_1GB_ALIGN                          FALSE
 #define BLDCFG_UMA_ALIGNMENT                      UMA_4MB_ALIGNED
-#define BLDCFG_UMA_ALLOCATION_MODE                UMA_AUTO
+#define BLDCFG_UMA_ALLOCATION_MODE                UMA_NONE
 #define BLDCFG_PLATFORM_CSTATE_MODE               CStateModeDisabled
 #define BLDCFG_IOMMU_SUPPORT                      FALSE
 #define OPTION_GFX_INIT_SVIEW                     FALSE
@@ -345,11 +346,20 @@ CONST AP_MTRR_SETTINGS ROMDATA KabiniApMtrrSettingsList[] =
 #define DFLT_FCH_GPP_PORT3_HOTPLUG          FALSE
 //#define BLDCFG_IR_PIN_CONTROL	0x33
 
-GPIO_CONTROL   imba180_gpio[] = {
-	{183, Function1, GpioIn | GpioOutEnB | PullUpB},
+GPIO_CONTROL   hp_abm_gpio[] = {
+	{ 45, Function2, GpioOutEnB | Sticky },                   // Signal input  APU_SD_LED
+	{ 49, Function2, PullUpB | PullDown | Sticky },           // Signal output APU_ABM_LED_UID
+	{ 50, Function2, PullUpB | PullDown | Sticky },           // Signal output APU_ABM_LED_HEALTH
+	{ 51, Function2, GpioOut | PullUpB | PullDown | Sticky }, // Signal output APU_ABM_LED_FAULT
+	{ 57, Function2, GpioOutEnB | Sticky },                   // Signal input  SATA_PRSNT_L
+	{ 58, Function2, GpioOutEnB | Sticky },                   // Signal  i/o   APU_HDMI_CEC
+	{ 64, Function2, GpioOutEnB | Sticky },                   // Signal input  SWC_APU_INT_L
+	{ 68, Function0, GpioOutEnB | Sticky },                   // Signal input  CNTRL1_PRSNT
+	{ 69, Function0, GpioOutEnB | Sticky },                   // Signal input  CNTRL2_PRSNT
+	{ 71, Function0, GpioOut | PullUpB | PullDown | Sticky }, // Signal output APU_PROCHOT_L_R
 	{-1}
 };
-//#define BLDCFG_FCH_GPIO_CONTROL_LIST           (&imba180_gpio[0])
+#define BLDCFG_FCH_GPIO_CONTROL_LIST           (&hp_abm_gpio[0])
 
 // The following definitions specify the default values for various parameters in which there are
 // no clearly defined defaults to be used in the common file.  The values below are based on product
@@ -442,11 +452,11 @@ CONST PSO_ENTRY ROMDATA DefaultPlatformMemoryConfiguration[] = {
 		SEED_A, SEED_A, SEED_A, SEED_A, SEED_A, SEED_A, SEED_A, SEED_A,
 		SEED_A),
 
-  NUMBER_OF_DIMMS_SUPPORTED (ANY_SOCKET, ANY_CHANNEL, 2),
-  NUMBER_OF_CHANNELS_SUPPORTED (ANY_SOCKET, 1),
-  MOTHER_BOARD_LAYERS (LAYERS_4),
+  NUMBER_OF_DIMMS_SUPPORTED (ANY_SOCKET, ANY_CHANNEL, ONE_DIMM),
+  NUMBER_OF_CHANNELS_SUPPORTED (ANY_SOCKET, ONE_DIMM),
+  MOTHER_BOARD_LAYERS (LAYERS_6),
 
-  MEMCLK_DIS_MAP (ANY_SOCKET, ANY_CHANNEL, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00),
+  MEMCLK_DIS_MAP (ANY_SOCKET, ANY_CHANNEL, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
   CKE_TRI_MAP (ANY_SOCKET, ANY_CHANNEL, 0x01, 0x02, 0x04, 0x08), /* TODO: bit2map, bit3map */
   ODT_TRI_MAP (ANY_SOCKET, ANY_CHANNEL, 0x01, 0x02, 0x04, 0x08),
   CS_TRI_MAP (ANY_SOCKET, ANY_CHANNEL, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00),
diff --git a/src/mainboard/hp/abm/cmos.layout b/src/mainboard/hp/abm/cmos.layout
index f6b5806..fa3438b 100644
--- a/src/mainboard/hp/abm/cmos.layout
+++ b/src/mainboard/hp/abm/cmos.layout
@@ -3,6 +3,7 @@
 #  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
@@ -15,7 +16,7 @@
 #
 #  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
+#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 #*****************************************************************************
 
 entries
diff --git a/src/mainboard/hp/abm/devicetree.cb b/src/mainboard/hp/abm/devicetree.cb
index 6d6875d..eb18a05 100644
--- a/src/mainboard/hp/abm/devicetree.cb
+++ b/src/mainboard/hp/abm/devicetree.cb
@@ -2,6 +2,7 @@
 # This file is part of the coreboot project.
 #
 # Copyright (C) 2013 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
@@ -28,76 +29,55 @@ chip northbridge/amd/agesa/family16kb/root_complex
 		chip northbridge/amd/agesa/family16kb # CPU side of HT root complex
 
 			chip northbridge/amd/agesa/family16kb # PCI side of HT root complex
-				device pci 0.0 on  end # Root Complex
-				device pci 1.0 on  end # Internal Graphics P2P bridge 0x9804
-				device pci 1.1 on  end # Internal Multimedia
-				device pci 2.0 on  end # PCIe Host Bridge
-				device pci 2.1 on  end # x4 PCIe slot
-				device pci 2.2 on  end # mPCIe slot
-				device pci 2.3 on  end # Realtek NIC
-				device pci 2.4 on  end # Edge Connector
-				device pci 2.5 on  end # Edge Connector
+				device pci 0.0 on  end  # Root Complex
+				device pci 1.0 on  end  # Internal Graphics P2P bridge 0x9804
+				device pci 1.1 on  end  # Internal Multimedia
+				device pci 2.0 on  end  # PCIe Host Bridge
+				device pci 2.1 off end  # unused
+				device pci 2.2 on  end  # GPP0: NIC
+				device pci 2.3 on  end  # GPP1: NIC
+				device pci 2.4 off end  # GPP2: unused
+				device pci 2.5 off end  # GPP3: unused
 			end	#chip northbridge/amd/agesa/family16kb
 
 			chip southbridge/amd/agesa/hudson # it is under NB/SB Link, but on the same pci bus
-				device pci 10.0 on  end # XHCI HC0
 				device pci 11.0 on  end # SATA
 				device pci 12.0 on  end # USB
 				device pci 12.2 on  end # USB
 				device pci 13.0 on  end # USB
 				device pci 13.2 on  end # USB
 				device pci 14.0 on      # SM
-					chip drivers/generic/generic #dimm 0-0-0
+					chip drivers/generic/generic    #dimm 0-0-0
 						device i2c 50 on end
 					end
-					chip drivers/generic/generic #dimm 0-0-1
-						device i2c 51 on end
-					end
 				end # SM
-				device pci 14.2 on  end # HDA	0x4383
-				device pci 14.3 on
-					chip superio/winbond/w83627uhg
-						device pnp 2e.0 off end    # FDC
-						device pnp 2e.1 off end    # LPT1
-						device pnp 2e.2 on         # COM1
+				device pci 14.2 off end             # HDA 0x4383
+				device pci 14.3 on                  # LPC 0x439d
+					chip superio/nuvoton/nct5104d
+						device pnp 4e.0  off end    # FDC
+						device pnp 4e.2  on         # COM1
 							io 0x60 = 0x3f8
 							irq 0x70 = 4
 						end
-						device pnp 2e.3 on         # COM2
+						device pnp 4e.3  on         # COM2
 							io 0x60 = 0x2f8
 							irq 0x70 = 3
 						end
-						device pnp 2e.5 on         # KEYBRD
-							io 0x60 = 0x60
-							io 0x62 = 0x64
-							irq 0x70 = 1
-							irq 0x72 = 12
-						end
-						device pnp 2e.6 on         # COM3
-							io 0x60 = 0x3e8
-							irq 0x70 = 4
-						end
-						device pnp 2e.7 off end    # GPIO
-						device pnp 2e.8 off end    # WDT
-						device pnp 2e.9 off end    # GPIO
-						device pnp 2e.a off end    # ACPI
-						device pnp 2e.b off end    # HWMON
-						device pnp 2e.c off end    # PECI
-						device pnp 2e.d on         # COM4
+						device pnp 4e.7  off end    # GPIO
+						device pnp 4e.8  off end    # GPIO/WDT
+						device pnp 4e.f  off end    # GPIO
+						device pnp 4e.10 off end    # COM3 used by port 80
+						device pnp 4e.11 on         # COM4
 							io 0x60 = 0x2e8
 							irq 0x70 = 3
 						end
-						device pnp 2e.e on         # COM5
-							io 0x60 = 0x3e0
-							irq 0x70 = 4
-						end
-						device pnp 2e.f on         # COM6
-							io 0x60 = 0x2e0
-							irq 0x70 = 3
-						end
-					end # w83627uhg
-				end # LPC	0x439d
-				device pci 14.7 on  end # SD
+						device pnp 4e.14 off end    # PORT80
+						register "irq_trigger_type" = "0" # 0 edge, 1 level
+					end # nct5104d
+				end #LPC
+				device pci 14.7 off end # SD
+				device pci 16.0 on  end # USB
+				device pci 16.2 on  end # USB
 			end	#chip southbridge/amd/hudson
 
 			device pci 18.0 on  end
@@ -108,10 +88,8 @@ chip northbridge/amd/agesa/family16kb/root_complex
 			device pci 18.5 on  end
 			register "spdAddrLookup" = "
 			{
-				{ {0xA0, 0xA2}, {0x00, 0x00}, }, // socket 0 - Channel 0 & 1 - 8-bit SPD addresses
-				{ {0x00, 0x00}, {0x00, 0x00}, }, // socket 1 - Channel 0 & 1 - 8-bit SPD addresses
+				{ {0xA0, 0x00}, {0x00, 0x00}, }, // socket 0 - Channel 0 - 8-bit SPD addresses
 			}"
-
 		end	#chip northbridge/amd/agesa/family16kb # CPU side of HT root complex
 	end	#domain
 end	#northbridge/amd/agesa/family16kb/root_complex
diff --git a/src/mainboard/hp/abm/dsdt.asl b/src/mainboard/hp/abm/dsdt.asl
index cecaa59..cdfc78f 100644
--- a/src/mainboard/hp/abm/dsdt.asl
+++ b/src/mainboard/hp/abm/dsdt.asl
@@ -2,7 +2,7 @@
  * This file is part of the coreboot project.
  *
  * Copyright (C) 2013 Advanced Micro Devices, Inc.
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ * 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
@@ -15,7 +15,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 /* DefinitionBlock Statement */
diff --git a/src/mainboard/hp/abm/get_bus_conf.c b/src/mainboard/hp/abm/get_bus_conf.c
index a380872..dbd8ef8 100644
--- a/src/mainboard/hp/abm/get_bus_conf.c
+++ b/src/mainboard/hp/abm/get_bus_conf.c
@@ -2,6 +2,7 @@
  * 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
@@ -14,7 +15,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <console/console.h>
@@ -26,6 +27,9 @@
 #include <cpu/amd/amdfam14.h>
 #include "agesawrapper.h"
 
+#define KABINI_INTERNAL_MULTIMEDIA_CONTROL_AND_STATUS 0x60
+#define NO_SNOOP_ENABLE 11
+
 /* Global variables for MB layouts and these will be shared by irqtable mptable
  * and acpi_tables busnum is default.
  */
@@ -94,16 +98,17 @@ void get_bus_conf(void)
 	status = agesawrapper_amdinitlate();
 	if (status)
 		printk(BIOS_DEBUG, "agesawrapper_amdinitlate failed: %x \n", status);
-#endif
+#endif /* CONFIG_HAVE_ACPI_RESUME */
+
 	dev = dev_find_slot(0, PCI_DEVFN(0, 0)); /* clear IoapicSbFeatureEn */
 	pci_write_config32(dev, 0xF8, 0);
 	pci_write_config32(dev, 0xFC, 5); /* TODO: move it to dsdt.asl */
 
 	/* disable No Snoop */
 	dev = dev_find_slot(0, PCI_DEVFN(1, 1));
-	value = pci_read_config32(dev, 0x60);
-	value &= ~(1 << 11);
-	pci_write_config32(dev, 0x60, value);
+	value = pci_read_config32(dev, KABINI_INTERNAL_MULTIMEDIA_CONTROL_AND_STATUS);
+	value &= ~(1 << NO_SNOOP_ENABLE);
+	pci_write_config32(dev, KABINI_INTERNAL_MULTIMEDIA_CONTROL_AND_STATUS, value);
 
 	sbdn_yangtze = 0;
 
diff --git a/src/mainboard/hp/abm/irq_tables.c b/src/mainboard/hp/abm/irq_tables.c
index 8454007..998f00b 100644
--- a/src/mainboard/hp/abm/irq_tables.c
+++ b/src/mainboard/hp/abm/irq_tables.c
@@ -2,6 +2,7 @@
  * 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
@@ -14,7 +15,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <console/console.h>
@@ -63,7 +64,7 @@ unsigned long write_pirq_routing_table(unsigned long addr)
 	addr += 15;
 	addr &= ~15;
 
-	/* This table must be between 0xf0000 & 0x100000 */
+	/* This table must be betweeen 0xf0000 & 0x100000 */
 	printk(BIOS_INFO, "Writing IRQ routing tables to 0x%lx...", addr);
 
 	pirq = (void *)(addr);
diff --git a/src/mainboard/hp/abm/mainboard.c b/src/mainboard/hp/abm/mainboard.c
index 3913898..9f4bbf5 100644
--- a/src/mainboard/hp/abm/mainboard.c
+++ b/src/mainboard/hp/abm/mainboard.c
@@ -2,6 +2,7 @@
  * 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
@@ -21,16 +22,97 @@
 #include <device/device.h>
 #include <device/pci.h>
 #include <arch/io.h>
-#include <cpu/x86/msr.h>
-#include <cpu/amd/mtrr.h>
-#include <device/pci_def.h>
 #include <arch/acpi.h>
 #include "BiosCallOuts.h"
 #include <cpu/amd/agesa/s3_resume.h>
+#include <southbridge/amd/amd_pci_util.h>
+#include <southbridge/amd/agesa/hudson/pci_devs.h>
+#include <northbridge/amd/agesa/family16kb/pci_devs.h>
 #include "agesawrapper.h"
 
+void set_pcie_reset(void);
+void set_pcie_dereset(void);
+
+/***********************************************************
+ * These arrays set up the FCH PCI_INTR registers 0xC00/0xC01.
+ * This table is responsible for physically routing the PIC and
+ * IOAPIC IRQs to the different PCI devices on the system.  It
+ * is read and written via registers 0xC00/0xC01 as an
+ * Index/Data pair.  These values are chipset and mainboard
+ * dependent and should be updated accordingly.
+ *
+ * These values are used by the PCI configuration space,
+ * MP Tables.  TODO: Make ACPI use these values too.
+ */
+static const u8 mainboard_picr_data[FCH_INT_TABLE_SIZE] = {
+	[0x00] = 0x0A,0x0B,0x0A,0x0B,0x0A,0x0B,0x0A,0x0B, /* INTA# - INTH# */
+	[0x08] = 0x00,0xF1,0x00,0x00,0x1F,0x1F,0x1F,0x1F, /* Misc-nil,0,1,2, INT from Serial irq */
+	[0x10] = 0x1F,0x1F,0x1F,0x0A,0x1F,0x1F,0x1F,0x0A, /* SCI, SMBUS0, ASF, HDA, FC, GEC, PerfMon, SD */
+	[0x20] = 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,           /* IMC INT0 - 5 */
+	[0x30] = 0x0A,0x0B,0x0A,0x0B,0x0A,0x0B,0x0A,      /* USB Devs 18/19/20/22 INTA-C */
+	[0x40] = 0x0B,0x0B,                               /* IDE, SATA */
+};
+
+static const u8 mainboard_intr_data[FCH_INT_TABLE_SIZE] = {
+	[0x00] = 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, /* INTA# - INTH# */
+	[0x08] = 0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F, /* Misc-nil,0,1,2, INT from Serial irq */
+	[0x10] = 0x09,0x1F,0x1F,0x10,0x1F,0x12,0x1F,0x10, /* SCI, SMBUS0, ASF, HDA, FC, GEC, PerMon, SD */
+	[0x20] = 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,           /* IMC INT0 - 5 */
+	[0x30] = 0x12,0x11,0x12,0x11,0x12,0x11,0x12,      /* USB Devs 18/19/22/20 INTA-C */
+	[0x40] = 0x11,0x13,                               /* IDE, SATA */
+};
+
+/*
+ * This table defines the index into the picr/intr_data
+ * tables for each device.  Any enabled device and slot
+ * that uses hardware interrupts should have an entry
+ * in this table to define its index into the FCH
+ * PCI_INTR register 0xC00/0xC01.  This index will define
+ * the interrupt that it should use.  Putting PIRQ_A into
+ * the PIN A index for a device will tell that device to
+ * use PIC IRQ 10 if it uses PIN A for its hardware INT.
+ */
+static const struct pirq_struct mainboard_pirq_data[] = {
+	/* {PCI_devfn, {PIN A, PIN B, PIN C, PIN D}}, */
+	{GFX_DEVFN,           {PIRQ_A, PIRQ_B, PIRQ_NC, PIRQ_NC}},      /* VGA:     01.0 */
+	{NB_PCIE_PORT2_DEVFN, {PIRQ_A, PIRQ_B, PIRQ_C, PIRQ_D}},        /* NIC:     02.2 */
+	{NB_PCIE_PORT3_DEVFN, {PIRQ_A, PIRQ_B, PIRQ_C, PIRQ_D}},        /* NIC:     02.3 */
+	{NB_PCIE_PORT4_DEVFN, {PIRQ_A, PIRQ_B, PIRQ_C, PIRQ_D}},        /* NIC:     02.4 */
+	{NB_PCIE_PORT5_DEVFN, {PIRQ_A, PIRQ_B, PIRQ_C, PIRQ_D}},        /* NIC:     02.5 */
+	{SATA_DEVFN,          {PIRQ_SATA, PIRQ_NC, PIRQ_NC, PIRQ_NC}},  /* SATA:    11.0 */
+	{OHCI1_DEVFN,         {PIRQ_OHCI1, PIRQ_NC, PIRQ_NC, PIRQ_NC}}, /* OHCI1:   12.0 */
+	{EHCI1_DEVFN,         {PIRQ_NC, PIRQ_EHCI1, PIRQ_NC, PIRQ_NC}}, /* EHCI1:   12.2 */
+	{OHCI2_DEVFN,         {PIRQ_OHCI2, PIRQ_NC, PIRQ_NC, PIRQ_NC}}, /* OHCI2:   13.0 */
+	{EHCI2_DEVFN,         {PIRQ_NC, PIRQ_EHCI2, PIRQ_NC, PIRQ_NC}}, /* EHCI2:   13.2 */
+	{SMBUS_DEVFN,         {PIRQ_SMBUS, PIRQ_NC, PIRQ_NC, PIRQ_NC}}, /* SMBUS:   14.0 */
+	{HDA_DEVFN,           {PIRQ_HDA, PIRQ_NC, PIRQ_NC, PIRQ_NC}},   /* HDA:     14.2 */
+	{SB_PCI_PORT_DEVFN,   {PIRQ_H, PIRQ_E, PIRQ_F, PIRQ_G}},        /* PCIB:    14.4 */
+	{SD_DEVFN,            {PIRQ_SD, PIRQ_NC, PIRQ_NC, PIRQ_NC}},    /* SD:      14.7 */
+	{OHCI3_DEVFN,         {PIRQ_OHCI3, PIRQ_NC, PIRQ_NC, PIRQ_NC}}, /* OHCI3:   16.0 */
+	{EHCI3_DEVFN,         {PIRQ_NC, PIRQ_EHCI3, PIRQ_NC, PIRQ_NC}}, /* EHCI3:   16.2 */
+};
+
+/* PIRQ Setup */
+static void pirq_setup(void)
+{
+	pirq_data_ptr = mainboard_pirq_data;
+	pirq_data_size = sizeof(mainboard_pirq_data) / sizeof(struct pirq_struct);
+	intr_data_ptr = mainboard_intr_data;
+	picr_data_ptr = mainboard_picr_data;
+}
+
+/* TODO: mainboard specific SB AGESA callback */
+void set_pcie_reset(void)
+{
+}
+
+/* TODO: mainboard specific SB AGESA callback */
+void set_pcie_dereset(void)
+{
+}
+
 /**********************************************
- * enable the dedicated function in mainboard.
+ * Enable the dedicated functions of the board.
  **********************************************/
 static void mainboard_enable(device_t dev)
 {
@@ -44,6 +126,9 @@ static void mainboard_enable(device_t dev)
 	if (acpi_slp_type == 3)
 		agesawrapper_fchs3earlyrestore();
 #endif
+
+	/* Initialize the PIRQ data structures for consumption */
+	pirq_setup();
 }
 
 struct chip_operations mainboard_ops = {
diff --git a/src/mainboard/hp/abm/mptable.c b/src/mainboard/hp/abm/mptable.c
index 3e2b076..5c1a1ff 100644
--- a/src/mainboard/hp/abm/mptable.c
+++ b/src/mainboard/hp/abm/mptable.c
@@ -2,6 +2,7 @@
  * 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
@@ -14,7 +15,7 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <console/console.h>
diff --git a/src/mainboard/hp/abm/romstage.c b/src/mainboard/hp/abm/romstage.c
index 382ad5b..470dd5d 100644
--- a/src/mainboard/hp/abm/romstage.c
+++ b/src/mainboard/hp/abm/romstage.c
@@ -2,6 +2,7 @@
  * 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
@@ -14,14 +15,13 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <stdint.h>
 #include <string.h>
 #include <device/pci_def.h>
 #include <device/pci_ids.h>
-#include <arch/acpi.h>
 #include <arch/io.h>
 #include <arch/stages.h>
 #include <device/pnp_def.h>
@@ -29,18 +29,18 @@
 #include <cpu/x86/lapic.h>
 #include <console/console.h>
 #include <console/loglevel.h>
-#include "cpu/amd/car.h"
+#include <cpu/amd/car.h>
 #include "agesawrapper.h"
-#include "cpu/x86/bist.h"
-#include "cpu/x86/lapic.h"
-#include "southbridge/amd/agesa/hudson/hudson.h"
-#include "cpu/amd/agesa/s3_resume.h"
-#include "cbmem.h"
-#include <superio/winbond/common/winbond.h>
-#include <superio/winbond/w83627uhg/w83627uhg.h>
-
-#define SERIAL_DEV PNP_DEV(0x2e, W83627UHG_SP1)
+#include <cpu/x86/bist.h>
+#include <cpu/x86/lapic.h>
+#include <southbridge/amd/agesa/hudson/hudson.h>
+#include <cpu/amd/agesa/s3_resume.h>
+#include <cbmem.h>
+#include <superio/nuvoton/common/nuvoton.h>
+#include <superio/nuvoton/nct5104d/nct5104d.h>
 
+#define SIO_PORT  0x4E
+#define SERIAL_DEV PNP_DEV(SIO_PORT, NCT5104D_SP4)
 
 void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx)
 {
@@ -50,13 +50,6 @@ void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx)
 	void *resume_backup_memory;
 #endif
 
-	/* In Hudson RRG, PMIOxD2[5:4] is "Drive strength control for
-	 *  LpcClk[1:0]".  To be consistent with Parmer, setting to 4mA
-	 *  even though the register is not documented in the Kabini BKDG.
-	 *  Otherwise the serial output is bad code.
-	 */
-	//outb(0xD2, 0xcd6);
-	//outb(0x00, 0xcd7);
 
 	val = agesawrapper_amdinitmmio();
 
@@ -64,27 +57,28 @@ void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx)
 
 	/* Enable the AcpiMmio space */
 	outb(0x24, 0xcd6);
-	outb(0x1, 0xcd7);
+	outb(0x01, 0xcd7);
 
-	/* Set auxiliary output clock frequency on OSCOUT1 pin to be 48MHz */
+	/* Set auxiliary output clock frequency on OSCOUT1 pin to be 25MHz */
+	/* Set auxiliary output clock frequency on OSCOUT2 pin to be 48MHz */
 	addr32 = (u32 *)0xfed80e28;
 	t32 = *addr32;
-	t32 &= 0xfff8ffff;
+	t32 &= 0xffc0ffff; // Clr bits [21:19] & [18:16]
+	t32 |= 0x00010000; // Set bit 16 for 25MHz
 	*addr32 = t32;
 
-	/* Enable Auxiliary Clock1, disable FCH 14 MHz OscClk */
+	/* Enable Auxiliary OSCOUT1/OSCOUT2 */
 	addr32 = (u32 *)0xfed80e40;
 	t32 = *addr32;
-	t32 &= 0xffffbffb;
+	t32 &= 0xffffff7b; // clear 2, 7
 	*addr32 = t32;
 
 	if (!cpu_init_detectedx && boot_cpu()) {
 		post_code(0x30);
 		post_code(0x31);
 
-		/* w83627uhg has a default clk of 48MHz, p.9 of data-sheet */
-		winbond_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
-
+		nct5104d_enable_uartd(SERIAL_DEV);
+		nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
 		console_init();
 	}
 
@@ -97,11 +91,6 @@ void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx)
 	printk(BIOS_DEBUG, "BSP Family_Model: %08x \n", val);
 	printk(BIOS_DEBUG, "cpu_init_detectedx = %08lx \n", cpu_init_detectedx);
 
-	/* On Larne, after LpcClkDrvSth is set, it needs some time to be stable, because of the buffer ICS551M */
-	int i;
-	for(i = 0; i < 200000; i++)
-		val = inb(0xcd6);
-
 	post_code(0x37);
 	val = agesawrapper_amdinitreset();
 	if(val) {



More information about the coreboot-gerrit mailing list