aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/amd
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2018-05-24 09:56:01 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2018-05-24 13:21:32 +0000
commitd644a2788ff2e421d7695e66caad468966602387 (patch)
tree6aee6b83ab50e1bd883fcc5696c833a90929c380 /src/vendorcode/amd
parent87027645e0070e502b87e075a9f86e0ba1947055 (diff)
Remove leftover AMD CIMX RD890 vendorcode
Change-Id: Ic7d80b25c0815f3816ae40646d024e0d9fe61f08 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/26506 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'src/vendorcode/amd')
-rw-r--r--src/vendorcode/amd/cimx/Makefile.inc1
-rw-r--r--src/vendorcode/amd/cimx/rd890/HotplugFirmware.h1397
-rw-r--r--src/vendorcode/amd/cimx/rd890/Makefile.inc108
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdAcpiIvrs.c236
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdAcpiIvrs.h77
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdAcpiLib.c186
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdAcpiLib.h136
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdAcpiMadt.c148
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdAcpiMadt.h66
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdDebugOutLib.c436
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdDebugOutLib.h54
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdSbLib.c216
-rw-r--r--src/vendorcode/amd/cimx/rd890/amdSbLib.h85
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbDef.h532
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbDispatcher.c101
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbEventLog.c106
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbEventLog.h95
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbHtInit.c626
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbHtInit.h126
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbHtInterface.c125
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbInit.c417
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbInit.h107
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbInitializer.c133
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbInitializer.h57
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbInterface.c312
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbIoApic.c194
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbIoApic.h52
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbIommu.c1737
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbIommu.h326
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbLib.c1138
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbLib.h352
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit.c121
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit.h63
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit32.S117
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbMiscInit.c123
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbMiscInit.h57
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbModuleInfo.c70
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcie.h352
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieAspm.c507
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieAspm.h131
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieCplBuffers.c105
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieCplBuffers.h52
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieEarlyHwLib.c475
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieHotplug.c343
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieHotplug.h62
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieInitEarly.c720
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieInitLate.c505
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieLateHwLib.c486
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieLib.c1604
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieLinkWidth.c160
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieLinkWidth.h60
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPciePllControl.c193
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPciePllControl.h63
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPciePortRemap.c182
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPciePortRemap.h52
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieRecovery.c753
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieSb.c195
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieSb.h71
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieWorkarounds.c436
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPcieWorkarounds.h65
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbPowerOnReset.c383
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbRecovery.c192
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbRecovery.h53
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbRecoveryInitializer.c98
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbRegisters.h420
-rw-r--r--src/vendorcode/amd/cimx/rd890/nbType.h1075
66 files changed, 0 insertions, 20026 deletions
diff --git a/src/vendorcode/amd/cimx/Makefile.inc b/src/vendorcode/amd/cimx/Makefile.inc
index 36223127ec..bb9b78c88f 100644
--- a/src/vendorcode/amd/cimx/Makefile.inc
+++ b/src/vendorcode/amd/cimx/Makefile.inc
@@ -1,3 +1,2 @@
subdirs-$(CONFIG_SOUTHBRIDGE_AMD_CIMX_SB800) += sb800
subdirs-$(CONFIG_SOUTHBRIDGE_AMD_CIMX_SB900) += sb900
-subdirs-$(CONFIG_NORTHBRIDGE_AMD_CIMX_RD890) += rd890
diff --git a/src/vendorcode/amd/cimx/rd890/HotplugFirmware.h b/src/vendorcode/amd/cimx/rd890/HotplugFirmware.h
deleted file mode 100644
index a0b416fd68..0000000000
--- a/src/vendorcode/amd/cimx/rd890/HotplugFirmware.h
+++ /dev/null
@@ -1,1397 +0,0 @@
-/**
- * @file
- *
- * SMU firmware.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: GNB
- * @e \$Revision: 18962 \$ @e \$Date: 2009-09-07 20:35:39 -0700 (Mon, 07 Sep 2009) \$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-
-#ifndef _HOTPLUGFIRMWARE_H_
-#define _HOTPLUGFIRMWARE_H_
-
-UINT32 DataBlock0[] = {
- 0xbdff018e,
- 0x16ceee15,
- 0x1cce1807,
- 0xa6082000,
- 0x00a71800,
- 0x8c081808,
- 0xf3256716,
- 0x270000cc,
- 0x601cce0b,
- 0x8308006f,
- 0xf8260100,
- 0x16bd098d,
- 0x02fb2003,
- 0xde1c0206,
- 0x9f343c06,
- 0xbd0fc606,
- 0x06de0004,
- 0xfece016f,
- 0xe702c668,
- 0x69fece00,
- 0x1806de18,
- 0x00e701e6,
- 0xe764fece,
- 0x18c4c600,
- 0x1865fece,
- 0xffc600e7,
- 0x66fece18,
- 0xce00e718,
- 0x00e767fe,
- 0x1806de18,
- 0x1cf701e6,
- 0xf704c600,
- 0x06bd041c,
- 0x06de18e0,
- 0xf701e618,
- 0xfece001c,
- 0xf600e764,
- 0xce18011c,
- 0xe71865fe,
- 0x021cf600,
- 0xe766fece,
- 0x031cf600,
- 0x67fece18,
- 0xf600e718,
- 0xffce4b1c,
- 0xf600e78e,
- 0xffce4a1c,
- 0xbd00e78d,
- 0x00cc2b06,
- 0x7efece01,
- 0x07bd00ed,
- 0x0200ce2b,
- 0x7efece18,
- 0xbd00efcd,
- 0x00ce8407,
- 0xfece1803,
- 0x00efcd7e,
- 0xe674fece,
- 0x2601c100,
- 0x06de181a,
- 0x3701e618,
- 0x081ccc34,
- 0x31480fbd,
- 0x6c06de31,
- 0xc101e601,
- 0xcee62307,
- 0xce180400,
- 0xefcd7efe,
- 0x4b1cf600,
- 0x1cf702ca,
- 0x8effce4b,
- 0xfece00e7,
- 0x2600e675,
- 0x0812bd03,
- 0xfd8009bd,
- 0x1c2a101c,
- 0x180500ce,
- 0xcd7efece,
- 0x01c600ef,
- 0xce540bbd,
- 0xce180600,
- 0xefcd7efe,
- 0xfe200e00,
- 0x0cbd01c6,
- 0xbd01c690,
- 0x00ce9a10,
- 0xfece1807,
- 0x00efcd7e,
- 0x540bbd5f,
- 0x180800ce,
- 0xcd7efece,
- 0xffce00ef,
- 0xe701c68f,
- 0x00ce0e00,
- 0x00efcd09,
- 0x274e1cf6,
- 0x1cf75f29,
- 0x0a00ce4e,
- 0x7efece18,
- 0xc600efcd,
- 0x900cbd01,
- 0x10bd00c6,
- 0x0b00ce9a,
- 0x7efece18,
- 0xce00efcd,
- 0x01c68fff,
- 0xffce00e7,
- 0xf700e687,
- 0x01c54d1c,
- 0x00ce1a27,
- 0xfece180c,
- 0x00efcd7e,
- 0xbd5f1ccc,
- 0x00cefa0a,
- 0xfece180d,
- 0x00efcd7e,
- 0xe675fece,
- 0x18a52600,
- 0x1823f0ce,
- 0x80c400e6,
- 0x00cc9a27,
- 0x7efece10,
- 0x11bd00ed,
- 0xf0ce181c,
- 0x001c1823,
- 0x1100cc80,
- 0xed7efece,
- 0x7c037e00,
- 0x9f3c06de,
- 0x3c08de06,
- 0xd73c0ade,
- 0x3d10ce0b,
- 0xf0c400e6,
- 0x0bd68f18,
- 0x00dd8f18,
- 0x01da8f18,
- 0xdf3800e7,
- 0x08df380a,
- 0x3906df38,
- 0x3c3c06de,
- 0x08de069f,
- 0x3c0ade3c,
- 0x0bee06de,
- 0x1cf70adf,
- 0x06de1800,
- 0x1809ee18,
- 0x1cf700e6,
- 0xf718c607,
- 0xde18061c,
- 0x08e61806,
- 0x7f041cf7,
- 0x007f0900,
- 0xe006bd08,
- 0xfdbe05bd,
- 0x152a101c,
- 0x1cf709d6,
- 0x7f032006,
- 0x06bd061c,
- 0xfa05bde0,
- 0x20101cfc,
- 0x08de1877,
- 0x240a9c18,
- 0x1a06de54,
- 0x081809ee,
- 0xbd01ef1a,
- 0x1cfd0e06,
- 0xdcd82b10,
- 0xffffc30a,
- 0x2708931a,
- 0xf708c638,
- 0x06bd061c,
- 0x06de18e0,
- 0x1801ee18,
- 0x1cf700e6,
- 0xf718c607,
- 0xde18061c,
- 0x08e61806,
- 0xbd041cf7,
- 0x06dee006,
- 0x1801ee1a,
- 0x01ef1a08,
- 0xdf0808de,
- 0x250a9c08,
- 0x1cf75fb6,
- 0xe006bd06,
- 0x1cf712c6,
- 0xe006bd06,
- 0x5ffa05bd,
- 0xbd061cf7,
- 0x5f4fe006,
- 0x380adf38,
- 0x383808df,
- 0xde3906df,
- 0x069f3c06,
- 0xde3c08de,
- 0x0cde3c0a,
- 0xee06de3c,
- 0x180cdf07,
- 0xee1806de,
- 0x0adf1809,
- 0x7f09007f,
- 0x1cf70800,
- 0xf714c600,
- 0xde18061c,
- 0x06e61806,
- 0xbd041cf7,
- 0x05bde006,
- 0x101cfdbe,
- 0x09d6102a,
- 0xbd061cf7,
- 0x05bde006,
- 0x101cfcfa,
- 0xde185f20,
- 0x0a9c1808,
- 0x05bd3d24,
- 0x0cde18e5,
- 0x00df08de,
- 0x00d38f18,
- 0x1cf68f18,
- 0x00e71804,
- 0xffc30adc,
- 0x08931aff,
- 0x04c61d27,
- 0xbd061cf7,
- 0x14c6e006,
- 0xbd061cf7,
- 0xde18e006,
- 0x18081808,
- 0x9c1808df,
- 0x5fc3250a,
- 0xbd061cf7,
- 0x12c6e006,
- 0xbd061cf7,
- 0x528de006,
- 0x061cf75f,
- 0x4fe006bd,
- 0x0cdf385f,
- 0x380adf38,
- 0xdf3808df,
- 0x06de3906,
- 0xbd069f3c,
- 0x1cf67306,
- 0x2702c505,
- 0x205f4f04,
- 0x2708c510,
- 0xffffcc05,
- 0x04c50720,
- 0xffcce527,
- 0x06df38fe,
- 0x3c06de39,
- 0x06bd069f,
- 0x051cf673,
- 0xf62701c4,
- 0xdf385f4f,
- 0x06de3906,
- 0x8d069f3c,
- 0x051cf672,
- 0xf72740c4,
- 0xdf385f4f,
- 0x06de3906,
- 0x8d069f3c,
- 0x061cf65e,
- 0xf72701c5,
- 0x042602c5,
- 0x03205f4f,
- 0x38faffcc,
- 0xde3906df,
- 0x069f3c06,
- 0x001cf75f,
- 0xf7041c7f,
- 0x01c6051c,
- 0x5f061cf7,
- 0xbd071cf7,
- 0x0e8de006,
- 0x5f101cfd,
- 0xbd061cf7,
- 0xdf38e006,
- 0x06de3906,
- 0x8d069f3c,
- 0x051cf616,
- 0x042720c5,
- 0x07205f4f,
- 0xef2710c5,
- 0x38fdffcc,
- 0xde3906df,
- 0x9f3c3c06,
- 0x67fece06,
- 0xfece00e6,
- 0xc400e660,
- 0x831a4f03,
- 0x08270100,
- 0x0200831a,
- 0xe5201a27,
- 0xe668fece,
- 0x041cf700,
- 0xe669fece,
- 0x06de1800,
- 0xce01e718,
- 0x16206afe,
- 0xe66cfece,
- 0x041cf700,
- 0xe66dfece,
- 0x06de1800,
- 0xce01e718,
- 0x00e66efe,
- 0xe602e718,
- 0x071cf700,
- 0x1806de18,
- 0x1cf702e6,
- 0x01e61806,
- 0x38051cf7,
- 0x3906df38,
- 0x9f3c06de,
- 0x001cf606,
- 0xe764fece,
- 0x071cf600,
- 0xe763fece,
- 0x061cf600,
- 0xe762fece,
- 0x051cf600,
- 0xe761fece,
- 0x60fece00,
- 0xe7041cf6,
- 0xc400e600,
- 0xce0b2704,
- 0x00e660fe,
- 0xf72604c4,
- 0xfece0920,
- 0xc400e660,
- 0x38f72704,
- 0xde3906df,
- 0x3c3c3c06,
- 0x06de069f,
- 0x0ec6026f,
- 0x1806de18,
- 0x183d02a6,
- 0x1cc303ed,
- 0x0100ce12,
- 0x1808183c,
- 0x0000ce3c,
- 0x188f183c,
- 0x05bd00e6,
- 0x38383803,
- 0x112600dd,
- 0xee1a06de,
- 0xc38f1803,
- 0x8f181b1c,
- 0xe71801c6,
- 0x06de1800,
- 0x18026c18,
- 0x03c102e6,
- 0x3838b823,
- 0x3906df38,
- 0x3c3c06de,
- 0x069f343c,
- 0x016f06de,
- 0xde180ec6,
- 0x01a61806,
- 0x02ed183d,
- 0x181b1cc3,
- 0x00e6188f,
- 0x712601c1,
- 0x1806de18,
- 0x1cc302ec,
- 0x04ed1812,
- 0x3c0200ce,
- 0xc302ec18,
- 0x3637171c,
- 0x0400ce18,
- 0x06de3c18,
- 0x00e604ee,
- 0xfd2c04bd,
- 0x3838101c,
- 0xce422b38,
- 0x183c0200,
- 0xec1806de,
- 0x131cc302,
- 0xcd3c3637,
- 0x00e604ee,
- 0xfd2c04bd,
- 0x3838101c,
- 0xce222b38,
- 0x183c0200,
- 0xec1806de,
- 0x191cc302,
- 0x00ce3637,
- 0xee183c06,
- 0x00e61804,
- 0xfd2c04bd,
- 0x3838101c,
- 0x6c06de38,
- 0xc101e601,
- 0x7e032203,
- 0x5f4f9007,
- 0x38313838,
- 0xde3906df,
- 0x3c3c3c06,
- 0xde069f3c,
- 0x0ade3c08,
- 0x3c0cde3c,
- 0x01e706de,
- 0x54545454,
- 0x1cc34f54,
- 0x188f1808,
- 0x03e700e6,
- 0x08c502ec,
- 0x087e0326,
- 0x5801e6eb,
- 0x09d710c4,
- 0x585801e6,
- 0xe7585858,
- 0x1880c401,
- 0x1809d68f,
- 0x1800dd8f,
- 0x1801da8f,
- 0xc401e68f,
- 0x1800dd40,
- 0x1801da8f,
- 0xc401e68f,
- 0x1800dd20,
- 0xd701da8f,
- 0xe68f180b,
- 0x03c45403,
- 0x02ec06e7,
- 0xdd01c44f,
- 0xa60ec608,
- 0x0cdd3d06,
- 0x0cd308dc,
- 0x1cc304ed,
- 0xd68f1813,
- 0x00e7180b,
- 0xc38f0cde,
- 0x188f121c,
- 0x180100ce,
- 0x06de183c,
- 0xc304ec18,
- 0x3637131c,
- 0x00c308dc,
- 0x1808dd02,
- 0x3c1808de,
- 0x04bd00e6,
- 0x101cfd2c,
- 0x38383838,
- 0xdf380cdf,
- 0x08df380a,
- 0x38383838,
- 0xde3906df,
- 0x02de3c00,
- 0x3c04de3c,
- 0x9f3c06de,
- 0xf701c606,
- 0xffce4e1c,
- 0x38006f8f,
- 0xdf3806df,
- 0x02df3804,
- 0x3b00df38,
- 0xde3c00de,
- 0x04de3c02,
- 0x3c06de3c,
- 0xb407069f,
- 0x0e06bf00,
- 0x3806df38,
- 0xdf3804df,
- 0x00df3802,
- 0x3c00de3b,
- 0xde3c02de,
- 0x06de3c04,
- 0x38069f3c,
- 0xdf3806df,
- 0x02df3804,
- 0x3b00df38,
- 0xde3c00de,
- 0x04de3c02,
- 0x3c06de3c,
- 0xdf38069f,
- 0x04df3806,
- 0x3802df38,
- 0xde3b00df,
- 0x069f3c06,
- 0x3906df38,
- 0x3c3c06de,
- 0x069f343c,
- 0xde3c08de,
- 0x0cde3c0a,
- 0x6f06de3c,
- 0x0dd75f01,
- 0xdd081ccc,
- 0xde04df02,
- 0x1800e602,
- 0xe71806de,
- 0x04ec1805,
- 0x08c504de,
- 0x0a7e0326,
- 0x05e61836,
- 0x1803c454,
- 0x06de02e7,
- 0x05e68f18,
- 0x8f1801c4,
- 0xdf18054f,
- 0x4f01db00,
- 0xcc8f0fc4,
- 0x15bd0100,
- 0xc60bd7f1,
- 0xa606de0e,
- 0x08dd3d02,
- 0xed1b1cc3,
- 0x00e68f04,
- 0x2d2601c1,
- 0x00df184f,
- 0x08d301d6,
- 0x1806de18,
- 0x1cc304ed,
- 0x01c68f1c,
- 0x06de00e7,
- 0x1804ee1a,
- 0x1e1cc38f,
- 0x01e68f18,
- 0xd600e718,
- 0x270bd50d,
- 0xfbffcc05,
- 0x8f182f20,
- 0x8f180dd6,
- 0x8f0bd68f,
- 0x8f1800df,
- 0x0dd701da,
- 0x04df8f18,
- 0x180802de,
- 0x6c1806de,
- 0x01e61801,
- 0x04de02df,
- 0x032207c1,
- 0x4f9d097e,
- 0x0cdf385f,
- 0x380adf38,
- 0x383808df,
- 0x06df3831,
- 0x3c06de39,
- 0x9f3c3c3c,
- 0xe706de06,
- 0xf7fec404,
- 0xffce4a1c,
- 0xde00e78d,
- 0xc404e606,
- 0xfa585801,
- 0x01ca4b1c,
- 0xce4b1cf7,
- 0x00e78eff,
- 0x1806de18,
- 0xffce026f,
- 0x1800e686,
- 0xe71806de,
- 0x05ec1806,
- 0x052710c5,
- 0xe71801c6,
- 0x06de1802,
- 0x27026d18,
- 0x06e618e1,
- 0xf64c1cf7,
- 0x02c44b1c,
- 0xf704e718,
- 0xf75f4b1c,
- 0xffce4a1c,
- 0x04e6188e,
- 0xffce00e7,
- 0x00e75f8d,
- 0xe686ffce,
- 0x06de1800,
- 0xc403e718,
- 0x18032610,
- 0x06de02e7,
- 0xe826026d,
- 0x1cf703e6,
- 0x385f4f4c,
- 0xdf383838,
- 0x06de3906,
- 0x069f3c3c,
- 0x01c68f18,
- 0x01e706de,
- 0xe686ffce,
- 0x4c1cf700,
- 0xbd00e718,
- 0x1cf62f08,
- 0xf710ca4b,
- 0xffce4b1c,
- 0xce00e78e,
- 0x00e687ff,
- 0x1806de18,
- 0x01c402e7,
- 0xe7180326,
- 0x6d06de01,
- 0xe6e82601,
- 0x4d1cf702,
- 0xc44b1cf6,
- 0x4b1cf702,
- 0xe78effce,
- 0x385f4f00,
- 0x3906df38,
- 0x3c3c06de,
- 0x9f343c3c,
- 0x3c08de06,
- 0x026f06de,
- 0x7e03265d,
- 0xde18ee0b,
- 0x02e61806,
- 0x58585858,
- 0x01e71858,
- 0x10011c18,
- 0xbd01e618,
- 0x06de610a,
- 0x02e6026c,
- 0xde2307c1,
- 0xde18026f,
- 0x02e61806,
- 0x58585858,
- 0x01e71858,
- 0x18011c18,
- 0xbd01e618,
- 0x06de610a,
- 0x02e6026c,
- 0xde2307c1,
- 0xde18026f,
- 0x02e61806,
- 0x58585858,
- 0x1808ca58,
- 0x0abd01e7,
- 0x6c06de61,
- 0xc102e602,
- 0x6fe32307,
- 0x06de1802,
- 0x5802e618,
- 0x58585858,
- 0xbd01e718,
- 0x06de610a,
- 0x02e6026c,
- 0xe52307c1,
- 0xde187620,
- 0x026f1806,
- 0xcd081cce,
- 0xde1805ef,
- 0x05ee1806,
- 0x1800e618,
- 0xe71806de,
- 0x03ec1804,
- 0x402708c5,
- 0x5404e618,
- 0xe71803c4,
- 0x03ec1807,
- 0xdd01c44f,
- 0x0ec68f08,
- 0x9600df8f,
- 0x07e61801,
- 0xc308d33d,
- 0x8f18151c,
- 0x02e606de,
- 0x58585858,
- 0x1801e758,
- 0x01c400e6,
- 0x01e701ea,
- 0xe608011c,
- 0x610abd01,
- 0xcd06de18,
- 0xcd0805ee,
- 0x6c1805ef,
- 0x02e61802,
- 0x962307c1,
- 0x3808df38,
- 0x38313838,
- 0xde3906df,
- 0x069f3c06,
- 0xdd3c08de,
- 0x1a5f4f08,
- 0x09240893,
- 0x0100c301,
- 0x2508931a,
- 0x08df38f7,
- 0x3906df38,
- 0x303c06de,
- 0xefffc38f,
- 0x069f358f,
- 0x05e706de,
- 0x01ed5f4f,
- 0x07e703ed,
- 0x05e608e7,
- 0x0cc60426,
- 0xde1807e7,
- 0x066f1806,
- 0x06de0ec6,
- 0xed3d06a6,
- 0x1b1cc309,
- 0xe6188f18,
- 0x2701c100,
- 0x560e7e03,
- 0x1809ee1a,
- 0x1c1cc38f,
- 0xe6188f18,
- 0x2701c100,
- 0xf60d7e03,
- 0x1809ee1a,
- 0x1d1cc38f,
- 0xe6188f18,
- 0x2701c100,
- 0x940d7e03,
- 0x1cc309ec,
- 0x00ce1812,
- 0xce3c1802,
- 0xd38f0300,
- 0x183c8f06,
- 0x180000ce,
- 0x00e68f3c,
- 0xfd0305bd,
- 0x3838101c,
- 0x7e032a38,
- 0xde18560e,
- 0x03e61806,
- 0xe7180fc4,
- 0x03e7180b,
- 0xc404e618,
- 0x0ce7180f,
- 0xde04e718,
- 0x09ee1a06,
- 0x1cc38f18,
- 0xe68f1815,
- 0x180de70b,
- 0x112600e1,
- 0x1809ee1a,
- 0x161cc38f,
- 0x0ce68f18,
- 0x2700e118,
- 0x06de180d,
- 0xc105e618,
- 0x18032601,
- 0x0ec6076f,
- 0x06a606de,
- 0xc310ed3d,
- 0x188f151c,
- 0xe61806de,
- 0xde00e70d,
- 0x10ee1a06,
- 0x1cc38f18,
- 0xe68f1816,
- 0x530e7e04,
- 0x1806de18,
- 0x1cc309ec,
- 0x0100ce12,
- 0x0806de3c,
- 0x183c0808,
- 0x180000ce,
- 0x00e68f3c,
- 0xfd0305bd,
- 0x3838101c,
- 0x7e032a38,
- 0x06de560e,
- 0x0fc403e6,
- 0xde1803e7,
- 0x09eecd06,
- 0x151cc38f,
- 0x0ee7188f,
- 0x0a2700e1,
- 0xc105e618,
- 0x18032601,
- 0x0ec6076f,
- 0x1806de18,
- 0xc33d06a6,
- 0x8f18151c,
- 0x0ee606de,
- 0xde185d20,
- 0x09ec1806,
- 0xce121cc3,
- 0xde3c0100,
- 0x08080806,
- 0x00ce183c,
- 0x8f3c1801,
- 0x05bd00e6,
- 0x101cfd03,
- 0x2b383838,
- 0xe606de39,
- 0xe70fc403,
- 0x06de1803,
- 0x8f09eecd,
- 0x8f161cc3,
- 0xe10fe718,
- 0x180a2700,
- 0x01c105e6,
- 0x6f180326,
- 0x180ec607,
- 0xa61806de,
- 0x1cc33d06,
- 0xde8f1816,
- 0x180fe606,
- 0xde1800e7,
- 0x066c1806,
- 0xc106e618,
- 0x7e032203,
- 0xe618b80c,
- 0x260cc107,
- 0x1801c607,
- 0x062008e7,
- 0x1806de18,
- 0x06de076c,
- 0x0326086d,
- 0x30b20c7e,
- 0x1100c38f,
- 0xdf38358f,
- 0x06de3906,
- 0x3c3c3c3c,
- 0xde069f3c,
- 0x0ade3c08,
- 0x3c0cde3c,
- 0x08e706de,
- 0x04e7036f,
- 0xcd06de18,
- 0xc38f03ee,
- 0xe68f081c,
- 0x06e71800,
- 0x1803c454,
- 0xe61801e7,
- 0x58585808,
- 0x0bd75858,
- 0x4f05ec18,
- 0x0cdd01c4,
- 0xa6180ec6,
- 0x08dd3d01,
- 0x08d30cdc,
- 0x18151cc3,
- 0x00e6188f,
- 0x02e706de,
- 0x8f1801c4,
- 0x8f180bd6,
- 0x8f1800dd,
- 0x0bd701da,
- 0x0e6d8f18,
- 0x02e62c26,
- 0xc4585858,
- 0x1800dd10,
- 0x1801da8f,
- 0x5802e68f,
- 0x00dd08c4,
- 0x01da8f18,
- 0x02e68f18,
- 0x02c45454,
- 0x8f1800dd,
- 0x0bd701da,
- 0x0bd68f18,
- 0xce610abd,
- 0x00cc7efe,
- 0x3800ed12,
- 0xdf380cdf,
- 0x08df380a,
- 0x38383838,
- 0x3906df38,
- 0x3c3c06de,
- 0xde069f34,
- 0x02dd3c08,
- 0xc44b1cf6,
- 0x06de18fd,
- 0x1801e718,
- 0x188effce,
- 0x06de00e7,
- 0x585809e6,
- 0xfa585858,
- 0x1cf74a1c,
- 0x8dffce4a,
- 0x06de00e7,
- 0x01ca01e6,
- 0x184b1cf7,
- 0x026f00e7,
- 0xe686ffce,
- 0x2710c400,
- 0x1801c608,
- 0xe71806de,
- 0x06de1802,
- 0x27026d18,
- 0xf700e6e7,
- 0xffce4c1c,
- 0xf700e687,
- 0x02de4d1c,
- 0x3a09e618,
- 0xf600e75f,
- 0x02c44c1c,
- 0x09d75858,
- 0x1cf600e7,
- 0x1804c44c,
- 0x1809d68f,
- 0x1800dd8f,
- 0xd701da8f,
- 0xd68f1809,
- 0xf600e709,
- 0x08c44c1c,
- 0x00dd5454,
- 0x01da8f18,
- 0x8f1809d7,
- 0x00e709d6,
- 0xc44d1cf6,
- 0xe709da01,
- 0x1cf75f00,
- 0x4a1cf74b,
- 0xe78effce,
- 0x8dffce00,
- 0xffce00e7,
- 0x1800e686,
- 0xe71806de,
- 0x2610c403,
- 0x02e71803,
- 0x026d06de,
- 0x03e6e826,
- 0x4f4c1cf7,
- 0x08df385f,
- 0xdf383138,
- 0x06de3906,
- 0x343c3c3c,
- 0x06de069f,
- 0x026f01e7,
- 0x1803e75f,
- 0x1a081cce,
- 0x06de04ef,
- 0x1804ee1a,
- 0x08c400e6,
- 0x03e62b27,
- 0xffce2126,
- 0xf700e687,
- 0x01c54d1c,
- 0x06de0f27,
- 0x0abd8f08,
- 0x1801c6fa,
- 0xe71806de,
- 0x6d06de03,
- 0x18df2703,
- 0x6f1806de,
- 0x1a06de03,
- 0x081804ee,
- 0x6c04ef1a,
- 0xc102e602,
- 0x38b72307,
- 0xdf383138,
- 0x06de3906,
- 0x9f3c3c3c,
- 0xe706de06,
- 0xc6026f01,
- 0xa606de0e,
- 0x03ed3d02,
- 0x181b1cc3,
- 0x00e6188f,
- 0x502601c1,
- 0x1803ee1a,
- 0x1c1cc38f,
- 0xe6188f18,
- 0x2601c100,
- 0x03ee1a16,
- 0x1cc38f18,
- 0xe68f181e,
- 0x18343701,
- 0x0ebd00e6,
- 0xde31318e,
- 0x03ee1a06,
- 0x1cc38f18,
- 0x188f181d,
- 0x01c100e6,
- 0xee1a1626,
- 0xc38f1803,
- 0x8f181f1c,
- 0x343701e6,
- 0xbd00e618,
- 0x31318e0e,
- 0x026c06de,
- 0x03c102e6,
- 0x38389123,
- 0x3906df38,
- 0x3c3c06de,
- 0xde069f3c,
- 0x0ade3c08,
- 0x8dffce3c,
- 0xcc01001c,
- 0x36376000,
- 0x3700fecc,
- 0xbdfdc636,
- 0x1cfd5715,
- 0x5b1cff5d,
- 0x378c00cc,
- 0x375f4f36,
- 0x6000cc36,
- 0xfecc3637,
- 0xc6363700,
- 0xf814bdfd,
- 0xfc06de18,
- 0xed18591c,
- 0x571cfc03,
- 0x1801ed18,
- 0x0add03ec,
- 0xdd01ec18,
- 0x840adc08,
- 0x03ed18df,
- 0xed1808dc,
- 0x03eecd01,
- 0x01eecd3c,
- 0x6400cc3c,
- 0xfecc3637,
- 0xc6363700,
- 0xf814bdfd,
- 0xec72fece,
- 0x6f0cbd00,
- 0x3c591cfe,
- 0x3c571cfe,
- 0x376400cc,
- 0x00fecc36,
- 0xfdc63637,
- 0xfef814bd,
- 0xfe3c5d1c,
- 0xcc3c5b1c,
- 0x36376000,
- 0x3700fecc,
- 0xbdfdc636,
- 0xce18f814,
- 0x1d188dff,
- 0xf0ce0100,
- 0xfd00ec0e,
- 0xfe18551c,
- 0xfece551c,
- 0xdd00ec70,
- 0xd38f1800,
- 0xce8f1800,
- 0xef1a16f0,
- 0xc38f3000,
- 0x358f2400,
- 0x380adf38,
- 0x383808df,
- 0x3906df38,
- 0x3c3c06de,
- 0x9f3c3c3c,
- 0x3c08de06,
- 0x183c0ade,
- 0x5f4f06de,
- 0x1803ed18,
- 0xed1801ed,
- 0x05ed1807,
- 0x1c8dffce,
- 0xfece0100,
- 0x2700e676,
- 0xbd137e03,
- 0x374c00cc,
- 0x00fecc36,
- 0xfdc63637,
- 0x185715bd,
- 0xed1806de,
- 0x01efcd03,
- 0xdd03ec18,
- 0x01ec180a,
- 0x0adc08dd,
- 0xca8f08de,
- 0x08df8f02,
- 0xdc03ed18,
- 0x01ed1808,
- 0x3c03eecd,
- 0x3c01eecd,
- 0x374c00cc,
- 0x00fecc36,
- 0xfdc63637,
- 0xccf814bd,
- 0x36378400,
- 0x3700fecc,
- 0xbdfdc636,
- 0xde185715,
- 0x07ed1806,
- 0x1805efcd,
- 0x0add07ec,
- 0xdd05ec18,
- 0xca0adc08,
- 0x07ed1880,
- 0xed1808dc,
- 0x07eecd05,
- 0x05eecd3c,
- 0x8400cc3c,
- 0xfecc3637,
- 0xc6363700,
- 0xf814bdfd,
- 0x3701f0cc,
- 0x375f4f36,
- 0x1800cc36,
- 0xfecc3637,
- 0xc6363700,
- 0xf814bdfd,
- 0x3a20c630,
- 0x77fece35,
- 0x342600e6,
- 0x370100cc,
- 0x375f4f36,
- 0x01f0cc36,
- 0xfccc3637,
- 0xc6363700,
- 0xf814bdfd,
- 0x36375f4f,
- 0x00cc3637,
- 0xcc363718,
- 0x363700fe,
- 0x14bdfdc6,
- 0xc38f30f8,
- 0x358f1000,
- 0x1806de18,
- 0x0add07ec,
- 0xdd05ec18,
- 0xc40adc08,
- 0x07ed187f,
- 0xed1808dc,
- 0x07eecd05,
- 0x05eecd3c,
- 0x8400cc3c,
- 0xfecc3637,
- 0xc6363700,
- 0xf814bdfd,
- 0x1806de18,
- 0x0add03ec,
- 0xdd01ec18,
- 0xde0adc08,
- 0xfdc48f08,
- 0x1808df8f,
- 0x08dc03ed,
- 0xcd01ed18,
- 0xcd3c03ee,
- 0xcc3c01ee,
- 0x36374c00,
- 0x3700fecc,
- 0xbdfdc636,
- 0xde18f814,
- 0x03ec1806,
- 0xec180add,
- 0xdc08dd01,
- 0x18078a0a,
- 0x08dc03ed,
- 0xcd01ed18,
- 0xcd3c03ee,
- 0xcc3c01ee,
- 0x36374c00,
- 0x3700fecc,
- 0xbdfdc636,
- 0x8f30f814,
- 0x8f1800c3,
- 0x6000cc35,
- 0xfecc3637,
- 0xc6363700,
- 0x5715bdfd,
- 0xff5d1cfd,
- 0x00cc5b1c,
- 0x4f36378c,
- 0xcc36375f,
- 0x36376000,
- 0x3700fecc,
- 0xbdfdc636,
- 0x00ccf814,
- 0xcc363764,
- 0x363700fe,
- 0x15bdfdc6,
- 0x591cfd57,
- 0xfe571cff,
- 0xfe3c5d1c,
- 0xcc3c5b1c,
- 0x36376000,
- 0x3700fecc,
- 0xbdfdc636,
- 0xffcef814,
- 0x01001d8d,
- 0x1c24f0ce,
- 0xf0ce0300,
- 0xfd00ec0e,
- 0xfe18551c,
- 0xfece551c,
- 0xdd00ec70,
- 0xd38f1800,
- 0xce8f1800,
- 0xef1a16f0,
- 0x23f0ce00,
- 0x3080001c,
- 0x1800c38f,
- 0xdf38358f,
- 0x08df380a,
- 0x38383838,
- 0x3906df38,
- 0x8a8cffb6,
- 0x267f817f,
- 0x038639f7,
- 0x398cffb7,
- 0xffb70186,
- 0xa618398c,
- 0x81048403,
- 0x86042704,
- 0x8604200f,
- 0xa70020f0,
- 0xce183905,
- 0xe6180038,
- 0x80ffce08,
- 0xec1804e7,
- 0xe703a700,
- 0x02ec1802,
- 0xf8c401a7,
- 0x00e702ca,
- 0x02cccc8d,
- 0xe706a700,
- 0x06ec1807,
- 0x08e709a7,
- 0xa704ec18,
- 0x860ae70b,
- 0x0ba71802,
- 0x988da48d,
- 0x38ce1839,
- 0x08e61800,
- 0xe780ffce,
- 0x00ec1804,
- 0x02e703a7,
- 0xa702ec18,
- 0xcaf8c401,
- 0x8d00e704,
- 0x0002cc8d,
- 0x07e706a7,
- 0xa7180486,
- 0x6c14bd0b,
- 0x395c14bd,
- 0x343c06de,
- 0x08de069f,
- 0x3c0ade3c,
- 0xde3c0cde,
- 0x06de3c0e,
- 0xde1801e7,
- 0x08ec1806,
- 0xec180add,
- 0x1808dd06,
- 0x0edd0cec,
- 0xdd0aec18,
- 0x0838ce0c,
- 0xe701e618,
- 0x0038ce00,
- 0x02ed0adc,
- 0x00ed08dc,
- 0xdc0438ce,
- 0xdc02ed0e,
- 0xbd00ed0c,
- 0xdf388614,
- 0x0cdf380e,
- 0x380adf38,
- 0x383108df,
- 0xde3906df,
- 0x9f343c06,
- 0x3c08de06,
- 0xde3c0ade,
- 0x0ede3c0c,
- 0xe706de3c,
- 0x06de1801,
- 0xdd08ec18,
- 0x06ec180a,
- 0x38ce08dd,
- 0x01e61808,
- 0x38ce00e7,
- 0xed0adc00,
- 0xed08dc02,
- 0xc514bd00,
- 0xdd83ffcc,
- 0xde0edc02,
- 0x00ce180c,
- 0x183c8d08,
- 0xde1804df,
- 0x00ea1802,
- 0x0cdf0edd,
- 0xdf180918,
- 0x1800de00,
- 0xde1802df,
- 0x7fff8c04,
- 0x0cded722,
- 0xdf183818,
- 0x1838180e,
- 0x38180cdf,
- 0x180adf18,
- 0x08df1838,
- 0x18381831,
- 0x183906df,
- 0x1fc44f8f,
- 0x09278f18,
- 0x49598f05,
- 0x2609188f,
- 0x064f39f7,
- 0x10008c39,
- 0x008c0a2c,
- 0x05042700,
- 0x39fc2609,
- 0x0e395f4f,
- 0x00fc203e,
- 0x00ffffc0,
- 0x00000000,
- 0x00000000,
- 0x00000000,
- 0x00007400,
- 0x07070000,
- 0x00010f0f,
- 0x75000000,
- 0x00000000,
- 0x0f0f0707,
- 0x00000000,
- 0x00007600,
- 0x07070000,
- 0x00000f0f,
- 0x77000000,
- 0x00000000,
- 0x0f0f0707,
- 0x00000000,
- 0x00000000,
- 0x01000100,
- 0x00000000,
- 0x00000000,
- 0x00000000,
- 0x00000000
-};
-
-UINT32 DataBlock1[] = {
- 0x41094109,
- 0x41094109,
- 0x41094109,
- 0x41094109,
- 0x41094109,
- 0x41094109,
- 0x41094109,
- 0x41094109,
- 0x41094109,
- 0x41094109,
- 0x41095c09,
- 0x41094109,
- 0xfb084109,
- 0x41092009,
- 0x00020002,
- 0x00020002
-};
-
-SMU_FIRMWARE_BLOCK FmBlockArray[] = {
- {
- 0x200,
- 0x51a,
- &DataBlock0[0]
- },
- {
- 0xffc0,
- 0x10,
- &DataBlock1[0]
- }
-};
-
-SMU_FIRMWARE_HEADER Fm = {
- {
- 0x0, 0x0
- },
- 2,
- &FmBlockArray[0]
-};
-#endif
-
diff --git a/src/vendorcode/amd/cimx/rd890/Makefile.inc b/src/vendorcode/amd/cimx/rd890/Makefile.inc
deleted file mode 100644
index c0e3534047..0000000000
--- a/src/vendorcode/amd/cimx/rd890/Makefile.inc
+++ /dev/null
@@ -1,108 +0,0 @@
-#*****************************************************************************
-#
-# Copyright (C) 2012 Advanced Micro Devices, Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# * Neither the name of Advanced Micro Devices, Inc. nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-#*****************************************************************************
-
-CPPFLAGS_x86_32 += -I$(src)/northbridge/amd/cimx/rd890
-CPPFLAGS_x86_32 += -I$(src)/vendorcode/amd/cimx/rd890
-
-CPPFLAGS_x86_64 += -I$(src)/northbridge/amd/cimx/rd890
-CPPFLAGS_x86_64 += -I$(src)/vendorcode/amd/cimx/rd890
-
-romstage-y += amdAcpiIvrs.c
-romstage-y += amdAcpiLib.c
-romstage-y += amdAcpiMadt.c
-romstage-y += amdDebugOutLib.c
-romstage-y += amdSbLib.c
-#romstage-y += nbDispatcher.c
-romstage-y += nbEventLog.c
-romstage-y += nbHtInit.c
-romstage-y += nbHtInterface.c
-romstage-y += nbInit.c
-romstage-y += nbInitializer.c
-romstage-y += nbInterface.c
-romstage-y += nbIoApic.c
-romstage-y += nbIommu.c
-romstage-y += nbLib.c
-romstage-y += nbMaskedMemoryInit.c
-romstage-y += nbMiscInit.c
-romstage-y += nbModuleInfo.c
-romstage-y += nbPcieAspm.c
-romstage-y += nbPcieCplBuffers.c
-romstage-y += nbPcieEarlyHwLib.c
-romstage-y += nbPcieHotplug.c
-romstage-y += nbPcieInitEarly.c
-romstage-y += nbPcieInitLate.c
-romstage-y += nbPcieLateHwLib.c
-romstage-y += nbPcieLib.c
-romstage-y += nbPcieLinkWidth.c
-romstage-y += nbPciePllControl.c
-romstage-y += nbPciePortRemap.c
-#romstage-y += nbPcieRecovery.c
-romstage-y += nbPcieSb.c
-romstage-y += nbPcieWorkarounds.c
-romstage-y += nbPowerOnReset.c
-#romstage-y += nbRecovery.c
-#romstage-y += nbRecoveryInitializer.c
-romstage-y += nbMaskedMemoryInit32.S
-
-ramstage-y += amdAcpiIvrs.c
-ramstage-y += amdAcpiLib.c
-ramstage-y += amdAcpiMadt.c
-ramstage-y += amdDebugOutLib.c
-ramstage-y += amdSbLib.c
-#ramstage-y += nbDispatcher.c
-ramstage-y += nbEventLog.c
-ramstage-y += nbHtInit.c
-ramstage-y += nbHtInterface.c
-ramstage-y += nbInit.c
-ramstage-y += nbInitializer.c
-ramstage-y += nbInterface.c
-ramstage-y += nbIoApic.c
-ramstage-y += nbIommu.c
-ramstage-y += nbLib.c
-ramstage-y += nbMaskedMemoryInit.c
-ramstage-y += nbMiscInit.c
-ramstage-y += nbModuleInfo.c
-ramstage-y += nbPcieAspm.c
-ramstage-y += nbPcieCplBuffers.c
-ramstage-y += nbPcieEarlyHwLib.c
-ramstage-y += nbPcieHotplug.c
-ramstage-y += nbPcieInitEarly.c
-ramstage-y += nbPcieInitLate.c
-ramstage-y += nbPcieLateHwLib.c
-ramstage-y += nbPcieLib.c
-ramstage-y += nbPcieLinkWidth.c
-ramstage-y += nbPciePllControl.c
-ramstage-y += nbPciePortRemap.c
-#ramstage-y += nbPcieRecovery.c
-ramstage-y += nbPcieSb.c
-ramstage-y += nbPcieWorkarounds.c
-ramstage-y += nbPowerOnReset.c
-#ramstage-y += nbRecovery.c
-#ramstage-y += nbRecoveryInitializer.c
-ramstage-y += nbMaskedMemoryInit32.S
diff --git a/src/vendorcode/amd/cimx/rd890/amdAcpiIvrs.c b/src/vendorcode/amd/cimx/rd890/amdAcpiIvrs.c
deleted file mode 100644
index c710bf06fe..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdAcpiIvrs.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- * @file
- *
- * ACPI common library
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdAcpiLib.h"
-#include "amdAcpiIvrs.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get first block entry in an IVRS (IOMMU) table
- *
- *
- *
- * @param[in] IoVirtualizationEntryType Type of IVHD or IVMD entry (IVHD = 0x10, IVMD = 0x20-0x22, any = 0xFF))
- * @param[in] Pointer to IVRS ACPI table
- *
- */
-VOID*
-LibAmdGetFirstIvrsBlockEntry (
- IN UINT8 IoVirtualizationEntryType,
- IN VOID *IvrsPtr
- )
-{
- // Start at IVRS pointer + 48 (48 is always the size of IVRS header)
- UINT8* BlockPtr;
- // If our pointer is not to an IVRS, return error
-
-// if (((DESCRIPTION_HEADER*)IvrsPtr)->Signature != 'SRVI') return NULL;
- if (((DESCRIPTION_HEADER*)IvrsPtr)->Signature != Int32FromChar ('S', 'R', 'V', 'I')) return NULL;
- BlockPtr = (UINT8*)IvrsPtr + 48;
- // Search each entry incrementing by it's size field in offset 2 until
- // we reach the end of the IVRS
- do {
- if (*BlockPtr == IoVirtualizationEntryType) {
- return BlockPtr;
- }
- BlockPtr += *((UINT16*) (BlockPtr + 2));
- } while (BlockPtr < (UINT8*)IvrsPtr + ((DESCRIPTION_HEADER*)IvrsPtr)->Length);
- return NULL;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get next block entry in an IVRS (IOMMU) table
- *
- *
- *
- * @param[in] IoVirtualizationEntryType Type of IVHD or IVMD entry (IVHD = 0x10, IVMD = 0x20-0x22, any = 0xFF))
- * @param[in] CurrentStructurePtr Pointer to current IVHD or IVMD block in IVRS
- * @param[in] IvrsPtr Pointer to IVRS table
- *
- */
-
-VOID*
-LibAmdGetNextIvrsBlockEntry (
- IN UINT8 IoVirtualizationEntryType,
- IN VOID* CurrentStructurePtr,
- IN VOID* IvrsPtr
- )
-{
- // Start at the current device entry
- // Start searching after the current entry
- UINT8* BlockPtr;
- // If our pointer is not to an IVRS, return error
-// if (((DESCRIPTION_HEADER*)IvrsPtr)->Signature != 'SRVI') return NULL;
- if (((DESCRIPTION_HEADER*)IvrsPtr)->Signature != Int32FromChar ('S', 'R', 'V', 'I')) return NULL;
-
- BlockPtr = (UINT8*)CurrentStructurePtr + *((UINT16*) ((UINT8*)CurrentStructurePtr + 2));
-
- // Search each entry incrementing by it's size field in offset 2 until
- // we reach the end of the IVRS
- while (BlockPtr < ((UINT8*)IvrsPtr + ((DESCRIPTION_HEADER*)IvrsPtr)->Length)) {
- if (*BlockPtr == IoVirtualizationEntryType) {
- return BlockPtr;
- }
- BlockPtr += *((UINT16*) (BlockPtr + 2));
- }
- return NULL;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get pointer to first Device Entry of an IVHD
- *
- *
- *
- * @param[in] IoVirtualizationEntryType Type of IVHD device entry to search for. (0xFF returns next entry of any type)
- * Typical values: 4 byte entries (0-63), 8 byte entries (64-127)
- * @param[in] IvhdBlockPtr Pointer to current IVHD block
- *
- */
-VOID*
-LibAmdGetFirstDeviceEntry (
- IN UINT8 DeviceEntryType,
- IN VOID* IvhdBlockPtr
- )
-{
- // Start at IVHD pointer + 24 (24 is always the size of IVHD header)
- // Not much we can do do validate an IVHD input, the only field we know for sure is the type
- UINT8 *EntryPtr;
- UINT16 IvhdSize;
- EntryPtr = (UINT8*)IvhdBlockPtr + 24;
- IvhdSize = *(UINT16*) ((UINT8*)IvhdBlockPtr + 2);
- // Search each entry incrementing by it's type field until the end of the IVHD
- // Types 0-63 are 4 byte size, 64-127 are 8 byte size
- do {
- if (*EntryPtr == DeviceEntryType) {
- return EntryPtr;
- }
- if (*EntryPtr < 64) {
- EntryPtr += 4;
- } else if ((*EntryPtr >= 64) && (*EntryPtr < 128)) {
- EntryPtr += 8;
- } else {
- ASSERT (TRUE);
- return NULL;
- }
- } while (EntryPtr < ((UINT8*)IvhdBlockPtr + IvhdSize));
- return NULL;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get pointer to Next Device Entry of an IVHD
- *
- *
- *
- *
- * @param[in] IoVirtualizationEntryType Type of IVHD entry. (0xFF returns next entry of any type)
- * Typical values: 4 byte entries (0-63), 8 byte entries (64-127)
- * @param[in] CurrentStructurePtr Pointer to current device entry in IVHD block
- * @param[in] IvhdBlockPtr Pointer to current IVHD block
- */
-VOID*
-LibAmdGetNextDeviceEntry (
- IN UINT8 DeviceEntryType,
- IN VOID* CurrentDeviceEntry,
- IN VOID* IvhdBlockPtr
- )
-{
- UINT8 *EntryPtr;
- UINT16 IvhdSize;
- // Start at IVHD pointer + 24 (24 is always the size of IVHD header)
- // Not much we can do do validate an IVHD input, the only field we know for sure is the type
- EntryPtr = CurrentDeviceEntry;
-
- if ((*EntryPtr != 0) && (*EntryPtr < 64)) {
- EntryPtr += 4;
- } else if ((*EntryPtr >= 64) && (*EntryPtr < 128)) {
- EntryPtr += 8;
- }
- IvhdSize = *(UINT16*) ((UINT8*)IvhdBlockPtr + 2);
- // Search each entry incrementing by it's type field until the end of the IVHD
- // Types 0-63 are 4 byte size, 64-127 are 8 byte size
- while (EntryPtr < ((UINT8*)IvhdBlockPtr + IvhdSize)) {
- if (*EntryPtr == DeviceEntryType) {
- return EntryPtr;
- }
- if (*EntryPtr < 64) {
- EntryPtr += 4;
- } else if ((*EntryPtr >= 64) && (*EntryPtr < 128)) {
- EntryPtr += 8;
- } else {
- ASSERT (TRUE);
- return NULL;
- }
- }
- return NULL;
-} \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/amdAcpiIvrs.h b/src/vendorcode/amd/cimx/rd890/amdAcpiIvrs.h
deleted file mode 100644
index 4d62c17319..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdAcpiIvrs.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * @file
- *
- * ACPI common library
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _AMDACPIIVRS_H_
-#define _AMDACPIIVRS_H_
-
-//#ifndef ASSERT
-//#define ASSERT
-//#endif
-
-
-VOID*
-LibAmdGetFirstIvrsBlockEntry (
- IN UINT8 IoVirtualizationEntryType,
- IN VOID* IvrsPtr
-);
-
-VOID*
-LibAmdGetNextIvrsBlockEntry (
- IN UINT8 IoVirtualizationEntryType,
- IN VOID* CurrentStructurePtr,
- IN VOID* IvrsPtr
-);
-
-VOID*
-LibAmdGetFirstDeviceEntry (
- IN UINT8 DeviceEntryType,
- IN VOID* IvhdBlockPtr
-);
-
-VOID*
-LibAmdGetNextDeviceEntry (
- IN UINT8 DeviceEntryType,
- IN VOID* CurrentDeviceEntry,
- IN VOID* IvhdBlockPtr
-);
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/amdAcpiLib.c b/src/vendorcode/amd/cimx/rd890/amdAcpiLib.c
deleted file mode 100644
index 60b5ffe71b..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdAcpiLib.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * @file
- *
- * ACPI common library
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdAcpiLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get ACPI table.
- *
- *
- *
- * @param[in] Signature ACPI table signature
- *
- */
-
-AGESA_STATUS
-LibAmdGetAcpiTable (
- IN UINT32 Signature,
- IN VOID **TablePtr,
- IN UINTN *TableHandle
- )
-{
- UINT32 i;
- UINT32* RsdPtr;
- UINT32* Rsdt;
- DESCRIPTION_HEADER* CurrentTable;
-
- RsdPtr = (UINT32*) (UINTN)0xe0000;
- Rsdt = NULL;
-
- do {
-// if (*RsdPtr == ' DSR' && *(RsdPtr + 1) == ' RTP') {
- if ((*RsdPtr == Int32FromChar (' ', 'D', 'S', 'R')) && (*(RsdPtr+1) == Int32FromChar (' ', 'R', 'T', 'P'))) {
- Rsdt = (UINT32*) (UINTN) (((RSDP*)RsdPtr)->RsdtAddress);
- break;
- }
- RsdPtr += 4;
- } while (RsdPtr <= (UINT32*) ((UINTN)0xffff0));
- if (Rsdt != NULL && LibAmdGetAcpiTableChecksum (Rsdt) == 0) {
- for (i = 0; i < (((DESCRIPTION_HEADER*)Rsdt)->Length - sizeof (DESCRIPTION_HEADER)) / 4; i++) {
- CurrentTable = (DESCRIPTION_HEADER*) (UINTN)*(UINT32*) ((UINT8*)Rsdt + sizeof (DESCRIPTION_HEADER) + i*4);
- if (CurrentTable->Signature == Signature) {
- *TablePtr = CurrentTable;
- return AGESA_SUCCESS;
- }
- }
- }
- return AGESA_UNSUPPORTED;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set ACPI table.
- *
- *
- *
- * @param[in] Signature ACPI table signature
- *
- */
-
-AGESA_STATUS
-LibAmdSetAcpiTable (
- IN VOID *TablePtr,
- IN BOOLEAN Checksum,
- IN UINTN *TableHandle
- )
-{
- if (Checksum) {
- LibAmdUpdateAcpiTableChecksum (TablePtr);
- }
- return AGESA_SUCCESS;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get ACPI table checksum
- *
- *
- *
- * @param[in] Pointer to ACPI table
- *
- */
-
-UINT8
-LibAmdGetAcpiTableChecksum (
- IN VOID *TablePtr
- )
-{
- UINT32 i;
- UINT8 Checksum;
-
- Checksum = 0;
-
- for (i = 0; i < ((DESCRIPTION_HEADER*)TablePtr)->Length; i++) {
- Checksum = Checksum + *(UINT8*) ((UINT8*)TablePtr + i);
- }
- return Checksum;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Update ACPI table checksum
- *
- *
- *
- * @param[in] Pointer to ACPI table
- *
- */
-
-VOID
-LibAmdUpdateAcpiTableChecksum (
- IN VOID *TablePtr
- )
-{
- UINT8 Checksum;
- Checksum = 0;
- ((DESCRIPTION_HEADER*)TablePtr)->Checksum = 0;
- Checksum = LibAmdGetAcpiTableChecksum (TablePtr);
- ((DESCRIPTION_HEADER*)TablePtr)->Checksum = 0x100 - Checksum;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/amdAcpiLib.h b/src/vendorcode/amd/cimx/rd890/amdAcpiLib.h
deleted file mode 100644
index 46ad04faea..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdAcpiLib.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * @file
- *
- * ACPI common library
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _AMDACPILIB_H_
-#define _AMDACPILIB_H_
-
-#ifndef ASSERT
- #define ASSERT
-#endif
-
-#pragma pack(push, 1)
-
-///Header for RSDP table
-typedef struct _RSDP {
- UINT64 Signature; ///< signature
- UINT8 Checksum; ///< 8 bit checksum
- UINT8 OEMID[6]; ///< OEM identifier
- UINT8 Revision; ///< revision
- UINT32 RsdtAddress; ///< pointer to rsdt
- UINT32 Length; ///< length of RSDP
- UINT64 XsdtAddress; ///< pointer to xsdt
- UINT8 ExtendedChecksum; ///< checksum of xsdt
- UINT8 Reserved[3]; ///< reserved
-} RSDP;
-
-///Header for general ACPI table
-typedef struct _DESCRIPTION_HEADER {
- UINT32 Signature; ///< signature
- UINT32 Length; ///< length
- UINT8 Revision; ///< revision
- UINT8 Checksum; ///< 8 bit checksum
- UINT8 OEMID[6]; ///< OEM identifier
- UINT8 OEMTableID[8]; ///< OEM table identifier
- UINT32 OEMRevision; ///< OEM revision
- UINT32 CreatorID; ///< table creator identifier
- UINT32 CreatorRevision; ///< table revision
-} DESCRIPTION_HEADER;
-
-///IO APIC struct in MADT table
-typedef struct {
- UINT8 Type; ///< type
- UINT8 Length; ///< length
- UINT8 ApicId; ///< Apic Id
- UINT8 Reserved; ///< reserved
- UINT32 IoApicBase; ///< IO APIC base address
- UINT32 GlobalInterruptBase; ///< Global Interrupt Base
-} MADT_IO_APIC_STRUCT;
-
-///Local APIC struct in MADT table
-typedef struct {
- UINT8 Type; ///< type
- UINT8 Length; ///< length
- UINT8 AcpiProcessorId; ///< ACPI Processor ID
- UINT8 ApicId; ///< Apic Id
- UINT32 Flags; ///< Flags
-} MADT_LOCAL_APIC_STRUCT;
-
-///Local SAPIC struct in MADT table
-typedef struct {
- UINT8 Type; ///< type
- UINT8 Length; ///< length
- UINT8 ApicId; ///< Apic Id
- UINT8 Reserved; ///< reserved
- UINT32 GlobalInterruptBase; ///< Global Interrupt Base
- UINT64 IoApicBase; ///< IO SAPIC base address
-} MADT_IO_SAPIC_STRUCT;
-
-#pragma pack(pop)
-
-AGESA_STATUS
-LibAmdSetAcpiTable (
- IN VOID *TablePtr,
- IN BOOLEAN Checksum,
- IN UINTN *TableHandle
- );
-
-AGESA_STATUS
-LibAmdGetAcpiTable (
- IN UINT32 Signature,
- IN VOID **TablePtr,
- IN UINTN *TableHandle
- );
-
-
-VOID
-LibAmdUpdateAcpiTableChecksum (
- IN VOID* TablePtr
-);
-
-UINT8
-LibAmdGetAcpiTableChecksum (
- IN VOID* TablePtr
-);
-
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/amdAcpiMadt.c b/src/vendorcode/amd/cimx/rd890/amdAcpiMadt.c
deleted file mode 100644
index daf2c1feb3..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdAcpiMadt.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * @file
- *
- * ACPI common library
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdAcpiLib.h"
-#include "amdAcpiMadt.h"
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get first block entry in an IVRS (IOMMU) table
- *
- *
- *
- * @param[in] StructureType Type of structure entry to find (APIC = 1, 0xFF = next structure)
- * @param[in] MadtPtr Pointer to MADT ACPI table
- *
- */
-
-VOID*
-LibAmdGetFirstMadtStructure (
- IN UINT8 StructureType,
- IN VOID *MadtPtr
- )
-{
- // Start at MADT pointer + 48 (48 is always the size of IVRS header)
- UINT8* BlockPtr;
-
- // If our pointer is not to an IVRS, return error
-// if (((DESCRIPTION_HEADER*)MadtPtr)->Signature != 'CIPA') {
- if (((DESCRIPTION_HEADER*)MadtPtr)->Signature != Int32FromChar ('C', 'I', 'P', 'A')) {
- return NULL;
- }
- BlockPtr = (UINT8*)MadtPtr + 44;
-
- // Search each entry incrementing by it's size field in offset 2 until
- // we reach the end of the IVRS
- do {
- if (*BlockPtr == StructureType) {
- return BlockPtr;
- }
- BlockPtr += *(BlockPtr + 1);
- } while (BlockPtr < (UINT8*)MadtPtr + ((DESCRIPTION_HEADER*)MadtPtr)->Length);
- return NULL;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get next block entry in an IVRS (IOMMU) table
- *
- *
- *
- * @param[in] StructureType Type of structure entry to find (APIC = 1, ..., 0xFF = next structure)
- * @param[in] CurrentStructurePtr Pointer to current structure in IVRS
- * @param[in] MadtPtr Pointer to MADT ACPI table
- *
- */
-
-VOID*
-LibAmdGetNextMadtStructure (
- IN UINT8 StructureType,
- IN VOID *CurrentStructurePtr,
- IN VOID *MadtPtr
- )
-{
- UINT8 *BlockPtr;
- BlockPtr = (UINT8*)CurrentStructurePtr + (*(UINT8*) ((UINT8*)CurrentStructurePtr + 1));
-
- // If our pointer is not to an IVRS, return error
-// if (((DESCRIPTION_HEADER*)MadtPtr)->Signature != 'CIPA') {
- if (((DESCRIPTION_HEADER*)MadtPtr)->Signature != Int32FromChar ('C', 'I', 'P', 'A')) {
- return NULL;
- }
-
- // Search each entry incrementing by it's size field in offset 2 until
- // we reach the end of the IVRS
- while (BlockPtr < ((UINT8*)MadtPtr + ((DESCRIPTION_HEADER*)MadtPtr)->Length)) {
- if (*BlockPtr == StructureType) {
- return BlockPtr;
- }
- BlockPtr += *(BlockPtr + 1);
- }
- return NULL;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/amdAcpiMadt.h b/src/vendorcode/amd/cimx/rd890/amdAcpiMadt.h
deleted file mode 100644
index 9f0aa73b5a..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdAcpiMadt.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * @file
- *
- * ACPI common library
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _AMDACPIMADT_H_
-#define _AMDACPIMADT_H_
-
-//#ifndef ASSERT
-//#define ASSERT
-//#endif
-
-
-
-VOID*
-LibAmdGetFirstMadtStructure (
- IN UINT8 StructureType,
- IN VOID* MadtPtr
-);
-
-VOID*
-LibAmdGetNextMadtStructure (
- IN UINT8 StructureType,
- IN VOID* CurrentStructurePtr,
- IN VOID* MadtPtr
-);
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/amdDebugOutLib.c b/src/vendorcode/amd/cimx/rd890/amdDebugOutLib.c
deleted file mode 100644
index f40852b7e5..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdDebugOutLib.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/**
- * @file
- *
- * Debug out functions.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "amdDebugOutLib.h"
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-#define COM_BASE_ADDRESS 0x3f8
-#define DIVISOR 115200
-#define LF 0x0a
-#define CR 0x0d
-
-typedef CHAR8 *va_list;
-#ifndef _INTSIZEOF
-#define _INTSIZEOF(n)( (sizeof(n) + sizeof(UINTN) - 1) & ~(sizeof(UINTN) - 1) )
-#endif
-#ifndef va_start
-#define va_start(ap, v) ( ap = (va_list)&(v) + _INTSIZEOF(v) )
-#endif
-#ifndef va_arg
-#define va_arg(ap, t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
-#endif
-#ifndef va_end
-#define va_end(ap) ( ap = (va_list)0 )
-#endif
-
-/*----------------------------------------------------------------------------------------
- * T Y P E D E F S A N D S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-typedef struct {
- UINT8 Index;
- CHAR8 Buffer[256];
-} StringBuffer;
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-VOID
-SendByteToBuffer (
- IN OUT StringBuffer *Buffer,
- IN CHAR8 Data
- );
-
-VOID
-SendStringToBuffer (
- OUT StringBuffer *Buffer,
- IN CHAR8 *pstr
- );
-
-VOID
-SendBufferToDebugOut (
- IN CHAR8* Buffer
- );
-
-VOID
-ItoA (
- IN UINT32 Value,
- IN UINTN Radix,
- OUT CHAR8 *pstr
- );
-
-VOID
-SendBufferToHdtOut (
- IN CHAR8* Buffer
- );
-
-VOID
-SendBufferToSerialOut (
- IN CHAR8* Buffer
- );
-
-VOID
-InitDebugOut (VOID);
-
-VOID
-InitSerialOut (VOID);
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Send format string to debug out
- *
- *
- *
- * @param[in] pConfig
- *
- */
-
-VOID
-LibAmdTraceDebug (
- IN UINT32 Level,
- IN CHAR8 *Format,
- IN ...
- )
-{
- CHAR8 TemBuffer[16];
- UINT8 Index;
- StringBuffer Buffer;
- va_list ArgList;
- if (Level == 0) {
- return;
- }
- Buffer.Index = 0;
- Index = 1;
- va_start (ArgList, Format);
- while (Index != 0) {
- if (*Format == 0) break;
- if (*Format == '%') {
- INT32 Radix;
- Radix = 0;
- if (*(Format + 1) == 'd' || *(Format + 1) == 'D') {
- Radix = 10;
- }
- if (*(Format + 1) == 'x' || *(Format + 1) == 'X' ) {
- Radix = 16;
- }
- if (Radix != 0) {
- ItoA (va_arg (ArgList, INT32), Radix, TemBuffer);
- SendStringToBuffer (&Buffer, TemBuffer);
- Format += 2;
- continue;
- }
- }
- SendByteToBuffer (&Buffer, *Format);
- if (*(Format) == 0x0a) SendByteToBuffer (&Buffer, 0x0d);
- Format++;
- }
- SendBufferToDebugOut (&Buffer.Buffer[0]);
- va_end (ArgList);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Write string to message buffer
- *
- *
- *
- * @param[in] pConfig
- *
- */
-
-VOID
-SendStringToBuffer (
- OUT StringBuffer *Buffer,
- IN CHAR8 *pstr
- )
-{
- while (*pstr != 0) {
- SendByteToBuffer (Buffer, *pstr);
- pstr++;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Write byte to message buffer
- *
- *
- *
- * @param[in] pConfig
- *
- */
-
-VOID
-SendByteToBuffer (
- IN OUT StringBuffer *Buffer,
- IN CHAR8 Data
- )
-{
- if (Buffer->Index < 255) {
- Buffer->Buffer[Buffer->Index] = Data;
- Buffer->Buffer[++Buffer->Index] = 0;
- } else {
- SendBufferToDebugOut (Buffer->Buffer);
- Buffer->Index = 0;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Integer To String
- *
- *
- *
- * @param[in] pConfig
- *
- */
-
-VOID
-ItoA (
- IN UINT32 Value,
- IN UINTN Radix,
- OUT CHAR8 *pstr
- )
-{
- CHAR8 *tsptr;
- CHAR8 *rsptr;
- CHAR8 ch1;
- CHAR8 ch2;
- UINTN Reminder;
-
- tsptr = pstr;
- rsptr = pstr;
-//Create String
- do {
- Reminder = Value % Radix;
- Value = Value / Radix;
- if (Reminder < 0xa) {
- *tsptr = (UINT8)Reminder + '0';
- } else {
- *tsptr = (UINT8)Reminder - 0xa + 'a';
- }
- tsptr++;
- } while (Value != 0);
-//Reverse String
- *tsptr = 0;
- tsptr--;
- while (tsptr > rsptr) {
- ch1 = *tsptr;
- ch2 = *rsptr;
- *rsptr = ch1;
- *tsptr = ch2;
- tsptr--;
- rsptr++;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init debug Output
- *
- *
- *
- * @param[in] pConfig
- *
- */
-VOID
-InitDebugOut (
- VOID
- )
-{
-#ifdef SERIAL_OUT_SUPPORT
- InitSerialOut ();
-#endif
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init Serial Output
- *
- *
- *
- * @param[in] pConfig
- *
- */
-VOID
-InitSerialOut (
- VOID
- )
-{
- UINT8 Data;
- UINT16 Divisor;
-
- Data = 0x87;
- LibAmdIoWrite (AccessWidth8, COM_BASE_ADDRESS + 0x3, &Data, NULL);
- Divisor = 115200 / DIVISOR;
- Data = (UINT8) (Divisor & 0xFF);
- LibAmdIoWrite (AccessWidth8 , COM_BASE_ADDRESS + 0x00, &Data, NULL);
- Data = (UINT8) (Divisor >> 8);
- LibAmdIoWrite (AccessWidth8, COM_BASE_ADDRESS + 0x01, &Data, NULL);
- Data = 0x07;
- LibAmdIoWrite (AccessWidth8, COM_BASE_ADDRESS + 0x3, &Data, NULL);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init HDT Output
- *
- *
- *
- * @param[in] pConfig
- *
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Send Buffer to debug Output
- *
- *
- *
- * @param[in] pConfig
- *
- */
-VOID
-SendBufferToDebugOut (
- IN CHAR8* Buffer
- )
-{
-#ifdef HDT_OUT_SUPPORT
- SendBufferToHdtOut (Buffer);
-#endif
-
-#ifdef SERIAL_OUT_SUPPORT
- SendBufferToSerialOut (Buffer);
-#endif
-}
-
-#ifdef HDT_OUT_SUPPORT
-/*----------------------------------------------------------------------------------------*/
-/**
- * Send Buffer to debug Output
- *
- *
- *
- * @param[in] pConfig
- *
- */
-VOID
-SendBufferToHdtOut (
- IN CHAR8* Buffer
- )
-{
- UINT32 Dr0Reg;
- UINT32 Dr7Reg;
- UINT32 Cr4Reg;
- UINT64 MsrCurrentValue;
- UINT64 MsrNewValue;
-
- // Save the CPU debug registers for restoration at the end of the routine
- LibAmdMsrRead (0xC001100A, &MsrCurrentValue, NULL);
- LibAmdReadCpuReg (DR0_REG, &Dr0Reg);
- LibAmdReadCpuReg (DR7_REG, &Dr7Reg);
- LibAmdReadCpuReg (CR4_REG, &Cr4Reg);
-
- //Modify the registers for HDT out
- LibAmdWriteCpuReg (DR0_REG, 0x8F0);
- LibAmdWriteCpuReg (DR7_REG, 0x20402);
- LibAmdWriteCpuReg (CR4_REG, Cr4Reg | 0x8);
- MsrNewValue = MsrCurrentValue | BIT0;
- LibAmdMsrWrite (0xC001100A, &MsrNewValue, NULL);
-
- //HDT out
- LibAmdIoWrite (AccessWidth32, 0x8F0, &Buffer, NULL);
-
- // Restore the CPU debug registers
- LibAmdWriteCpuReg (CR4_REG, Cr4Reg);
- LibAmdWriteCpuReg (DR7_REG, Dr7Reg);
- LibAmdWriteCpuReg (DR0_REG, Dr0Reg);
- LibAmdMsrWrite (0xC001100A, &MsrCurrentValue, NULL);
-}
-#endif
-/*----------------------------------------------------------------------------------------*/
-/**
- * Send Buffer to debug Output
- *
- *
- *
- * @param[in] pConfig
- *
- */
-VOID
-SendBufferToSerialOut (
- IN CHAR8* Buffer
- )
-{
- UINT8 Status;
- UINT32 Count;
-
- Count = 10000;
- while (*Buffer != 0) {
- do {
- LibAmdIoRead (AccessWidth8, COM_BASE_ADDRESS + 0x05, &Status, NULL);
- if (Status == 0xff) return;
- // Loop port is ready
- } while ((Status & 0x20) == 0 && (--Count) != 0);
- LibAmdIoWrite (AccessWidth8, COM_BASE_ADDRESS + 0x00, Buffer, NULL);
- Buffer++;
- }
-}
diff --git a/src/vendorcode/amd/cimx/rd890/amdDebugOutLib.h b/src/vendorcode/amd/cimx/rd890/amdDebugOutLib.h
deleted file mode 100644
index 3458b80b11..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdDebugOutLib.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file
- *
- * Debug out functions.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _AMDDEBUGOUTLIB_H_
-#define _AMDDEBUGOUTLIB_H_
-
-VOID
-LibAmdTraceDebug (
- IN UINT32 Level,
- IN CHAR8 *Format,
- IN ...
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/amdSbLib.c b/src/vendorcode/amd/cimx/rd890/amdSbLib.c
deleted file mode 100644
index 22b7fb17df..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdSbLib.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
- * @file
- *
- * SB common library
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-#include "AGESA.h"
-#include "amdlib.h"
-#include "amdSbLib.h"
-
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Stall
- *
- *
- *
- * @param[in] uSec
- *
- */
-
-VOID
-LibAmdSbStall (
- IN UINT32 uSec,
- IN VOID *ConfigPtr
- )
-{
- UINT16 AcpiTimerBaseAddress;
- UINT32 StartTime;
- UINT32 ElapsedTime;
- SB_INFO SbInfo;
- SbInfo = LibAmdSbGetRevisionInfo (ConfigPtr);
- if (SbInfo.Type == SB_UNKNOWN) {
- AcpiTimerBaseAddress = 0;
- } else {
- LibAmdSbPmioRead ((SbInfo.Type == SB_SB700) ? 0x24 : 0x64, AccessWidth16, &AcpiTimerBaseAddress, ConfigPtr);
- }
- if (AcpiTimerBaseAddress == 0) {
- uSec = uSec / 2;
- while (uSec != 0) {
- LibAmdIoRead (AccessWidth8, 0x80, &StartTime, (AMD_CONFIG_PARAMS *)ConfigPtr);
- uSec--;
- }
- } else {
- LibAmdIoRead (AccessWidth32, AcpiTimerBaseAddress, &StartTime, (AMD_CONFIG_PARAMS *)ConfigPtr);
- do {
- LibAmdIoRead (AccessWidth32, AcpiTimerBaseAddress, &ElapsedTime, (AMD_CONFIG_PARAMS *)ConfigPtr);
- if (ElapsedTime < StartTime) {
- ElapsedTime = ElapsedTime + (0xFFFFFFFF - StartTime);
- } else {
- ElapsedTime = ElapsedTime - StartTime;
- }
- } while ((ElapsedTime*28/100)<uSec); //28/100
- }
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read PMIO
- *
- *
- *
- * @param[in] uSec
- *
- */
-
-VOID
-LibAmdSbPmioRead (
- IN UINT8 Address,
- IN ACCESS_WIDTH Width,
- OUT VOID *Value,
- IN VOID *ConfigPtr
- )
-{
- UINT8 i;
- if (Width > 0x80) {
- Width -= 0x80;
- }
- for (i = 0; i <= Width; i++) {
- LibAmdIoWrite (AccessWidth8, 0xCD6, &Address, (AMD_CONFIG_PARAMS *)ConfigPtr); // SB_IOMAP_REGCD6
- Address++;
- LibAmdIoRead (AccessWidth8,0xCD7, (UINT8 *)Value + i, (AMD_CONFIG_PARAMS *)ConfigPtr); // SB_IOMAP_REGCD7
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read PMIO
- *
- *
- *
- * @param[in] uSec
- *
- */
-
-VOID
-LibAmdSbPmioWrite (
- IN UINT8 Address,
- IN ACCESS_WIDTH Width,
- IN VOID *Value,
- IN VOID *ConfigPtr
- )
-{
- UINT8 i;
- if (Width > 0x80) {
- Width -= 0x80;
- }
- for (i = 0; i <= Width; i++) {
- LibAmdIoWrite (AccessWidth8, 0xCD6, &Address, (AMD_CONFIG_PARAMS *)ConfigPtr); // SB_IOMAP_REGCD6
- Address++;
- LibAmdIoWrite (AccessWidth8,0xCD7, (UINT8 *)Value + i, (AMD_CONFIG_PARAMS *)ConfigPtr); // SB_IOMAP_REGCD7
- }
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get SB Type
- *
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-SB_INFO
-LibAmdSbGetRevisionInfo (
- IN VOID *ConfigPtr
- )
-{
- UINT32 DeviceId;
- UINT8 RevisionId;
- SB_INFO SbInfo;
- PCI_ADDR SbSmbusAddress;
- SbSmbusAddress.AddressValue = MAKE_SBDFO (0, 0, 0x14, 0, 0x00);
- LibAmdPciRead (AccessWidth32, SbSmbusAddress, &DeviceId, (AMD_CONFIG_PARAMS *)ConfigPtr);
- SbInfo.Revision = SB_REV_UNKNOWN;
- switch (DeviceId) {
- case 0x43851002:
- SbSmbusAddress.AddressValue = MAKE_SBDFO (0, 0, 0x14, 0, 0x08);
- LibAmdPciRead (AccessWidth8, SbSmbusAddress, &RevisionId, (AMD_CONFIG_PARAMS *)ConfigPtr);
- if (RevisionId >= 0x40) {
- SbInfo.Type = SB_SB800;
- } else {
- SbInfo.Type = SB_SB700;
- }
- break;
- default:
- SbInfo.Type = SB_UNKNOWN;
- }
- return SbInfo;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/amdSbLib.h b/src/vendorcode/amd/cimx/rd890/amdSbLib.h
deleted file mode 100644
index b226dba646..0000000000
--- a/src/vendorcode/amd/cimx/rd890/amdSbLib.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * @file
- *
- * SB common library
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: Common Library
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _AMDSBLIB_H_
-#define _AMDSBLIB_H_
-
-VOID
-LibAmdSbStall (
- IN UINT32 uSec,
- IN VOID *ConfigPtr
- );
-
-VOID
-LibAmdSbPmioRead (
- IN UINT8 Address,
- IN ACCESS_WIDTH Width,
- OUT VOID *Value,
- IN VOID *ConfigPtr
- );
-
-VOID
-LibAmdSbPmioWrite (
- IN UINT8 Address,
- IN ACCESS_WIDTH Width,
- IN VOID *Value,
- IN VOID *ConfigPtr
- );
-
-#define SB_SB800 0x02
-#define SB_SB700 0x01
-#define SB_UNKNOWN 0xFF
-#define SB_REV_UNKNOWN 0xFF
-
-/// Southbridge info
-typedef struct {
- UINT8 Type; ///< SB Model (SB800/SB700/...)
- UINT8 Revision; ///< SB Revision ID
-} SB_INFO;
-
-SB_INFO
-LibAmdSbGetRevisionInfo (
- IN VOID *ConfigPtr
- );
-
-#endif
diff --git a/src/vendorcode/amd/cimx/rd890/nbDef.h b/src/vendorcode/amd/cimx/rd890/nbDef.h
deleted file mode 100644
index 8589adcfd2..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbDef.h
+++ /dev/null
@@ -1,532 +0,0 @@
-/**
- * @file
- *
- *
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBDEF_H_
-#define _NBDEF_H_
-
-#pragma pack (push, 1)
-
-AGESA_STATUS
-AmdPowerOnResetInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbPowerOnResetInit (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-AmdHtInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbHtInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-AmdEarlyPostInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbEarlyPostInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-AmdMidPostInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbMidPostInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-AmdLatePostInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbLatePostInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-AmdPcieEarlyInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-PcieEarlyInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-
-AGESA_STATUS
-AmdS3Init (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-AmdS3InitIommu (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbS3Init (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-AmdPcieLateInit (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-AmdPcieLateInitWa (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-AmdPcieValidatePortState (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-PcieLateInit (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-PcieLateInitWa (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-PcieValidatePortState (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-PcieLateInitPorts (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-
-AGESA_STATUS
-AmdPcieS3Init (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-BOOLEAN
-PcieLibCheckGen2Disabled (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibSetGen2Disabled (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-
-PCI_ADDR
-PcieLibGetPortPciAddress (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibSetLinkCompliance (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-AGESA_STATUS
-PcieLibInitValidateInput (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibSetPcieMmioBase (
- IN UINT16 PcieMmioBase,
- IN UINT16 PcieMmioSize,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieCheckSelectedPorts (
- IN UINT16 SelectedPortMask,
- IN AMD_NB_CONFIG *pConfig
- );
-
-PCIE_LINK_STATUS
-PcieGetPortsLinkStatus (
- IN UINT16 SelectedPortMask,
- IN OUT PCIE_LINK_STATUS *PortLinkStatus,
- IN UINT32 Pooling,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-UINT16
-PcieFindPortsWithLinkStatus (
- IN PCIE_LINK_STATUS *PortLinkStatus,
- IN PCIE_LINK_STATUS LinkStatus
- );
-
-AGESA_STATUS
-PcieBrokenLaneWorkaround (
- IN UINT16 SelectedPortMask,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieGen2Workaround (
- IN UINT16 SelectedPortMask,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieMiscWorkaround (
- IN PCIE_LINK_STATUS *PortsLinkStatus,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieCheckVco (
- IN UINT16 SelectedPortMask,
- IN PCIE_LINK_STATUS *PortsLinkStatus,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-VOID
-PcieLibPortTrainingControl (
- IN PORT PortId,
- IN PCIE_LINK_TRAINING Operation,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibSetCoreConfiguration (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibCommonCoreInit (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-LINK_INFO
-PcieLibGetPortLinkInfo (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibPowerOffPortLanes (
- IN PORT PortId,
- IN PCIE_LINK_WIDTH Width,
- IN AMD_NB_CONFIG *pConfig
- );
-
-BOOLEAN
-PcieLibIsPortReversed (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
-);
-
-VOID
-PcieLibPowerOffPll (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieInitSelectedPorts (
- IN UINT16 SelectedPortMask,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibCommonPortInit (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibSetLinkMode (
- IN PORT PortId,
- IN PCIE_LINK_MODE Operation,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PciePreTrainingInit (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieInitPorts (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieAfterTrainingInit (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibUnHidePorts (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibHidePorts (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieLibRequestPciReset (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieLibResetSlot (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-VOID
-PcieLibManageTxClock (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibManageLclkClock (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibEnablePllPowerOffInL1 (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-CORE
-PcieLibGetCoreId (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-UINT32
-PcieLibGetCoreAddress (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-AGESA_STATUS
-AmdPcieInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-PcieLibInitializer (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-
-BOOLEAN
-PcieLibIsValidPortId (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
-);
-
-BOOLEAN
-PcieLibIsValidCoreId (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
-);
-
-VOID
-PcieLibPreTrainingInit (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibMiscLateCoreSetting (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-AGESA_STATUS
-PcieLateValidateConfiguration (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieForcePortsVisibleOrDisable (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-/*
-VOID
-PcieReportCoreDisableStatus (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-*/
-
-AGESA_STATUS
-PcieLateInitCores (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieLateCommonPortInit (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-VOID
-PcieLibStrapModeControl (
- IN CORE CoreId,
- IN PCIE_STRAP_MODE Operation,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibCoreAfterTrainingInit (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-PORT_STATIC_INFO*
-PcieLibGetStaticPortInfo (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-CORE_INFO*
-PcieLibGetCoreInfo (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-PORT
-PcieLibNativePortId (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-
-VOID
-PcieNbSbSetupVc (
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-VOID
-PcieLibLateInit (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieLibValidatePortStateInit (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieInitiateSoftwareGen2 (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieRecoveryInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-PCI_CORE_RESET
-PcieLibCoreReset (
- IN CORE CoreId,
- IN PCI_CORE_RESET Operation,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-PORT_INFO*
-PcieLibGetPortInfo (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-PCIE_DEVICE_TYPE
-PcieGetDeviceType (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- );
-
-UINT8
-PcieLibGetActiveCoreMap (
- IN AMD_NB_CONFIG *pConfig
- );
-
-#pragma pack (pop)
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbDispatcher.c b/src/vendorcode/amd/cimx/rd890/nbDispatcher.c
deleted file mode 100644
index f1c315b7d7..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbDispatcher.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * @file
- *
- * Function dispatcher.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-extern AMD_MODULE_HEADER mNbModuleID;
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * T Y P E D E F S A N D S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-AGESA_STATUS
-CALLCONV
-AmdNbDispatcher (
- IN OUT VOID*ConfigPtr
- )
-{
- AGESA_STATUS Status;
- IMAGE_ENTRY ImageEntry;
- ImageEntry = NULL;
- Status = AGESA_UNSUPPORTED;
- CIMX_INIT_TRACE ((ConfigPtr));
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_TRACE_ALL), "CIMx - RD890 Entry \n"));
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_TRACE_ALL), " Funcid = %x Callout = %x\n", ((AMD_CONFIG_PARAMS*)ConfigPtr)->Func, ((AMD_CONFIG_PARAMS*)ConfigPtr)->CalloutPtr));
-
-
- // 2. AltImage not supported
-
-
- // 4. Try next dispatcher if possible, and we have not already got status back
- if ((mNbModuleID.NextBlock != NULL) && (Status == AGESA_UNSUPPORTED)) {
- MODULE_ENTRY ModuleEntry;
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_TRACE_ALL), "CIMx - RD890 control goes to next Module \n"));
- ModuleEntry = mNbModuleID.NextBlock->ModuleDispatcher;
- Status = (*ModuleEntry) (ConfigPtr);
- }
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_TRACE_ALL), "CIMx - RD890 Exit\n"));
- return Status;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbEventLog.c b/src/vendorcode/amd/cimx/rd890/nbEventLog.c
deleted file mode 100644
index 4c228b0f7b..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbEventLog.c
+++ /dev/null
@@ -1,106 +0,0 @@
-
-/**
- * @file
- *
- *
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * This function logs NB events into a callback.
- *
- *
- *
- * @param[in] EventClass
- * @param[in] EventInfo
- * @param[in] DataParam1
- * @param[in] DataParam2
- * @param[in] DataParam3
- * @param[in] DataParam4
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-LibNbEventLog (
- IN UINTN EventClass,
- IN UINT32 EventInfo,
- IN UINT32 DataParam1,
- IN UINT32 DataParam2,
- IN UINT32 DataParam3,
- IN UINT32 DataParam4,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_EVENT Event;
- Event.EventClass = EventClass;
- Event.EventInfo = EventInfo;
- Event.DataParam1 = DataParam1;
- Event.DataParam2 = DataParam2;
- Event.DataParam3 = DataParam3;
- Event.DataParam4 = DataParam4;
- if (EventClass > ((API_WORKSPACE*)NbConfigPtr->ConfigPtr)->Status) {
- ((API_WORKSPACE*)NbConfigPtr->ConfigPtr)->Status = EventClass;
- }
- LibNbCallBack (PHCB_AmdReportEvent, (UINTN)&Event, NbConfigPtr);
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbEventLog.h b/src/vendorcode/amd/cimx/rd890/nbEventLog.h
deleted file mode 100644
index cf313fa7f2..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbEventLog.h
+++ /dev/null
@@ -1,95 +0,0 @@
-
-/**
- * @file
- *
- *
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBEVENTLOG_H_
-#define _NBEVENTLOG_H_
-
-#pragma pack(push, 1)
-
-/**
- * Event
- *
- */
-typedef struct {
- UINTN EventClass; /**< Event Class.
- * @li <b>AGESA_WARNING</b>
- * @li <b>AGESA_ERROR</b>
- * @li <b>AGESA_FATAL</b>
- */
- UINT32 EventInfo; /**< Event Info.
- * This parameter used as event identifier
- */
- UINT32 DataParam1; ///< Event specific data
- UINT32 DataParam2; ///< Event specific data
- UINT32 DataParam3; ///< Event specific data
- UINT32 DataParam4; ///< Event specific data
-} AGESA_EVENT;
-
-
-#define PCIE_ERROR_HOTPLUG_INIT 0x20010100
-#define PCIE_ERROR_TRAINING_FAIL 0x20010200
-#define PCIE_ERROR_CORE_CONFIGURATION 0x20010300
-#define PCIE_ERROR_BROKEN_LINE 0x20010400
-#define PCIE_ERROR_GEN2_FAIL 0x20010500
-#define PCIE_ERROR_VCO_NEGOTIATON 0x20010600
-#define PCIE_ERROR_DEVICE_REMAP 0x20010700
-#define GENERAL_ERROR_BAD_CONFIGURATION 0x20000100
-#define GENERAL_ERROR_NB_NOT_PRESENT 0x20000200
-#define GENERAL_ERROR_LOCATE_ACPI_TABLE 0x20000300
-
-
-VOID
-LibNbEventLog (
- IN UINTN EventClass,
- IN UINT32 EventInfo,
- IN UINT32 DataParam1,
- IN UINT32 DataParam2,
- IN UINT32 DataParam3,
- IN UINT32 DataParam4,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-#pragma pack(pop)
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbHtInit.c b/src/vendorcode/amd/cimx/rd890/nbHtInit.c
deleted file mode 100644
index 687219a359..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbHtInit.c
+++ /dev/null
@@ -1,626 +0,0 @@
-/**
- * @file
- *
- * HT Initialization
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * T Y P E D E F S A N D S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-#define LINK_BUFFERS_IFCM ((1 << 31) + (1 << 25) + (8 << 20) + (1 << 18) + (1 << 8) + (6 << 5) + 0xF)
-#define LINK_BUFFERS_NFCM ((1 << 31) + (1 << 25) + (8 << 20) + (1 << 18) + (1 << 8) + (6 << 5) + 0x11)
-#define SUBLINK_BUFFERS_IFCM ((1 << 31) + (1 << 25) + (8 << 20) + (1 << 18) + (1 << 8) + (6 << 5) + 0xF)
-#define SUBLINK_BUFFERS_NFCM ((1 << 31) + (1 << 25) + (8 << 20) + (1 << 18) + (1 << 8) + (6 << 5) + 0x11)
-
-typedef VOID DUMMY_CALL (VOID);
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-VOID
-NbInitRasParityMacro (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-UINT8 IBIASCodeTable[] = {
-//0.2G 0.5G 0.6G
- 0x44, 0x00, 0x44, 0x00, 0xb6,
-//0.8G 1.0G 1.2G 1.4G 1.6G
- 0x44, 0x96, 0xb6, 0x23, 0x44,
-//1.8G 2.0G 2.2G 2.4G 2.6G
- 0x64, 0x96, 0xA6, 0xb6, 0xc6
-};
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB Init at early post.
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-HtLibEarlyInit (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- UINT32 Value;
- PCI_ADDR ClkPciAddress;
- PCI_ADDR CpuPciAddress;
- PCI_ADDR LinkPciAddress;
- HT_CONFIG *pHtConfig;
- UINT8 CpuHtSpeed;
- UINT8 NbHtSpeed;
- HT_INACTIVE_LANE_STATE InLnSt;
- BOOLEAN IsIfcmEnabled;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBHT_TRACE), "[NBHT]HtLibEarlyInit Enter\n"));
- pHtConfig = GET_HT_CONFIG_PTR (pConfig);
- Status = AGESA_SUCCESS;
- ClkPciAddress = pConfig->NbPciAddress;
- ClkPciAddress.Address.Device = 1;
- CpuPciAddress.AddressValue = MAKE_SBDFO (0, 0, pConfig->NbHtPath.NodeID + 0x18, 0, 0);
- LinkPciAddress.AddressValue = MAKE_SBDFO (0, 0, pConfig->NbHtPath.NodeID + 0x18, ((pConfig->NbHtPath.LinkID & 0xF0) > 0x10)?4:0, 0);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBHT_TRACE), " Node %d Link %d PciAddress %x\n", pConfig->NbHtPath.NodeID, pConfig->NbHtPath.LinkID, LinkPciAddress.AddressValue));
- LibNbEnableClkConfig (pConfig);
-//Get Ht Speed Info
- LibNbPciRead (LinkPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 32 + 0x89), AccessWidth8, &CpuHtSpeed, pConfig);
- LibNbPciRead (pConfig->NbPciAddress.AddressValue | NB_PCI_REGD1 , AccessWidth8, &NbHtSpeed, pConfig);
- NbHtSpeed &= 0xf;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBHT_TRACE), " Ht speed Cpu %x Nb %x\n", CpuHtSpeed, NbHtSpeed));
-//Set IBIAS code
- LibNbPciRMW (ClkPciAddress.AddressValue | NB_CLK_REGD8, AccessWidth16, (UINT32)~(0x3ff), ((UINT8*)FIX_PTR_ADDR (&IBIASCodeTable[0], NULL))[(pHtConfig->HtReferenceClock / 200)*CpuHtSpeed], pConfig);
- if (CpuHtSpeed > HT_FREQUENCY_1000M) {
- UINT8 T0Time;
- UINT8 ForceFullT0;
-//Enable Protocol checker
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG1E, AccessWidth32, 0, 0x7FFFFFFC, pConfig);
-//Set NB Transmitter Deemphasis
- if ((pHtConfig->NbTransmitterDeemphasis & 0x80) == 0) {
- LibHtSetNbTransmitterDeemphasis (pHtConfig->NbTransmitterDeemphasis, pConfig);
- }
- LibNbPciRead (CpuPciAddress.AddressValue | 0x16C, AccessWidth32, &Value, pConfig);
- T0Time = (UINT8) (Value & 0x3F);
- ForceFullT0 = (UINT8) ((Value >> 13) & 0x7);
-//Enable LS State and set T0Time
- //T0Time = 0x14; //2us
- if (pHtConfig->LSx < HtLinkStateSkipInit) {
- if (pHtConfig->LSx == HtLinkStateSameAsCpu) {
- LibNbPciRead (
- CpuPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 4 + HT_PATH_SUBLINK_ID (pConfig->NbHtPath) * 0x10 + 0x170),
- AccessWidth32,
- &Value,
- pConfig
- );
- if ((Value & BIT8) != 0) {
- pHtConfig->LSx = HtLinkStateLS2;
- } else {
- pHtConfig->LSx = HtLinkStateLS1;
- }
- } else {
- if (pHtConfig->LSx >= HtLinkStateLS2) {
- T0Time = 0x26; //12us
- ForceFullT0 = 0x6;
- } else {
- T0Time = 0x14; //2us
- ForceFullT0 = 0x0;
- }
- }
- if (CpuHtSpeed == NbHtSpeed) {
- LibHtEnableLxState (pHtConfig->LSx, pConfig);
- }
- }
-//Set up InLnSt
- //Match CPU InLnSt except for HT3 LS1
- LibNbPciRead (
- CpuPciAddress.AddressValue | 0x16C,
- AccessWidth32,
- &Value,
- pConfig
- );
- InLnSt = (Value >> 6) & 0x3;
-
- // Do not enable HT3 LS1 with InLnSt == 0x1 (PHY_OFF) as per errata 9
- if (pHtConfig->LSx == HtLinkStateLS1) {
- if (InLnSt == InactiveLaneStateSameAsPhyOff) {
- InLnSt = InactiveLaneStateCadCtrlDrivelToLogic0;
- }
- }
- LibNbPciRMW (
- pConfig->NbPciAddress.AddressValue | NB_PCI_REGA0,
- AccessWidth8,
- 0x00,
- T0Time | (InLnSt << 6),
- pConfig
- );
- LibNbPciRMW (
- CpuPciAddress.AddressValue | 0x16C,
- AccessWidth16,
- (UINT32)(~((0x7 << 13) + 0x3f)),
- T0Time | (ForceFullT0 << 13),
- pConfig
- );
- // Disable command throtling
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | (NB_PCI_REGAC + 1), AccessWidth8, (UINT32)~BIT6, BIT6, pConfig);
- LibNbPciRMW (CpuPciAddress.AddressValue | 0x168, AccessWidth16, (UINT32)~BIT10, BIT10, pConfig);
- // Enables strict TM4 detection
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG15, AccessWidth32, (UINT32)~BIT22, BIT22, pConfig);
- } else {
- //Set Link Tristate
- if (pHtConfig->HtLinkTriState < HtLinkTriStateSkip) {
- if (pHtConfig->HtLinkTriState == HtLinkTriStateSameAsCpu) {
- LibNbPciRead (LinkPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 32 + 0x84), AccessWidth16, &Value, pConfig);
- if ((Value & BIT13) != 0) {
- pHtConfig->HtLinkTriState = HtLinkTriStateCadCtl;
- LibNbPciRead (
- CpuPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 4 + HT_PATH_SUBLINK_ID (pConfig->NbHtPath) * 0x10 + 0x170),
- AccessWidth16,
- &Value,
- pConfig
- );
- if ((Value & BIT8) != 0) {
- pHtConfig->HtLinkTriState = HtLinkTriStateCadCtlClk;
- }
- }
- }
- if (pHtConfig->HtLinkTriState >= HtLinkTriStateCadCtl) {
- UINT16 TriStateValue;
- TriStateValue = 0;
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REGC8, AccessWidth16 , (UINT32)~BIT13, BIT13, pConfig);
- LibNbPciRMW (LinkPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 32 + 0x84), AccessWidth16, (UINT32)~(BIT13), BIT13, pConfig);
- if (pHtConfig->HtLinkTriState == HtLinkTriStateCadCtlClk) {
- TriStateValue = BIT8;
- }
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REGAC, AccessWidth16, (UINT32)~BIT8, TriStateValue, pConfig);
- if (LibNbGetCpuFamily () != 0x0) {
- LibNbPciRMW (
- CpuPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 4 + HT_PATH_SUBLINK_ID (pConfig->NbHtPath) * 0x10 + 0x170),
- AccessWidth16,
- (UINT32)~(BIT8),
- TriStateValue,
- pConfig
- );
- }
- }
- }
- LibNbPciRMW (
- pConfig->NbPciAddress.AddressValue | NB_PCI_REGA0,
- AccessWidth8,
- 0x3f,
- InactiveLaneStateSameAsPhyOff << 6,
- pConfig
- );
- }
- //Enable 64bit address mode
-
- if ((pHtConfig->HtExtendedAddressSupport & 0x80) == 0) {
- LibNbPciRead (LinkPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 32 + 0x85), AccessWidth8, &Value, pConfig);
- if (pHtConfig->HtExtendedAddressSupport == HtExtAddressingSameAsCpu) {
- Value &= BIT7;
- } else {
- Value = (pHtConfig->HtExtendedAddressSupport == HtExtAddressingEnable)? BIT7 : 0;
- }
- LibNbPciRMW (((pConfig->NbPciAddress.AddressValue) | (NB_PCI_REGC8 + 1)), AccessWidth8, 0x7C, Value, pConfig);
- LibNbPciRMW (LinkPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 32 + 0x85), AccessWidth8, 0x7F, Value, pConfig);
- }
-
- // Check if IFCM enabled in CPU
- LibNbPciRead (LinkPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 32 + 0x85), AccessWidth8, &Value, pConfig);
- IsIfcmEnabled = (Value & BIT4) ? TRUE:FALSE;
- if (IsIfcmEnabled) {
- // Enable Isoc in chipset
- LibNbPciRMW (((pConfig->NbPciAddress.AddressValue) | (NB_PCI_REGC8 + 1)), AccessWidth8, 0xFC, BIT4, pConfig);
- }
-
- if (pHtConfig->LinkBufferOptimization == ON) {
- BOOLEAN IsConnectedToSublink;
- IsConnectedToSublink = (pConfig->NbHtPath.LinkID & 0xF0) > 0 ? TRUE:FALSE;
- if (IsConnectedToSublink) {
- Value = IsIfcmEnabled ? SUBLINK_BUFFERS_IFCM : SUBLINK_BUFFERS_NFCM;
- } else {
- Value = IsIfcmEnabled ? LINK_BUFFERS_IFCM : LINK_BUFFERS_NFCM;
- }
- LibNbPciRMW (
- LinkPciAddress.AddressValue | (HT_PATH_LINK_ID (pConfig->NbHtPath) * 32 + 0x90),
- AccessWidth32,
- 0x0,
- Value,
- pConfig
- );
- }
- NbInitRasParityMacro (pConfig);
- LibNbDisableClkConfig (pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBHT_TRACE), "[NBHT]HtLibEarlyInit Exit [0x%x]\n", Status));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set NB transmitter deemphasis level.
- *
- *
- * @param[in] NbDeemphasisLevel NB Deemphasis level See HT_CONFIG::NbTransmitterDeemphasis
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-LibHtSetNbTransmitterDeemphasis (
- IN UINT8 NbDeemphasisLevel,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REGA7, AccessWidth8, (UINT32)~0x07, NbDeemphasisLevel + BIT7, pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Enable LSx state
- *
- *
- *
- * @param[in] LSx LS State to enable. See HT_CONFIG::LSx
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-LibHtEnableLxState (
- IN UINT8 LSx,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
- UINT32 NbLSx;
- UINT32 CpuLSx;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBHT_TRACE), " Enable HT LS%d\n", LSx));
- switch (LSx) {
- case 0:
- Value = LS0;
- break;
- case 1:
- Value = LS1;
- break;
- case 2:
- Value = LS2;
- break;
- case 3:
- Value = LS3;
- break;
- default:
- Value = 0;
- CIMX_ASSERT (FALSE);
- return;
- }
- NbLSx = (Value << 7);
- CpuLSx = (LSx >= 2)?BIT8:0;
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REGAC, AccessWidth16, (UINT32)~(BIT7 + BIT8), NbLSx, pConfig);
- LibNbPciRMW (
- MAKE_SBDFO (0, 0, pConfig->NbHtPath.NodeID + 0x18, 0, HT_PATH_LINK_ID (pConfig->NbHtPath) * 4 + HT_PATH_SUBLINK_ID (pConfig->NbHtPath) * 0x10 + 0x170),
- AccessWidth32,
- (UINT32)~BIT8,
- CpuLSx,
- pConfig
- );
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB validate HY Input parameters
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-HtLibInitValidateInput (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- HT_CONFIG *pHtConfig;
- NB_INFO NbInfo;
-
- Status = AGESA_SUCCESS;
- pHtConfig = GET_HT_CONFIG_PTR (pConfig);
- NbInfo = LibNbGetRevisionInfo (pConfig);
- if (pHtConfig == NULL || NbInfo.Type == NB_UNKNOWN) {
- return AGESA_FATAL;
- }
- if (pHtConfig->sHeader.InitializerID != INITIALIZED_BY_INITIALIZER) {
- Status = HtLibInitializer (pConfig);
- }
- return Status;
-}
-
-UINT8 SmuWaBasePeriod[] = {
- 0x1F, //HT 200Mhz
- 0x00,
- 0x1F, //HT 400Mhz
- 0x00,
- 0x17, //HT 600Mhz
- 0x1F, //HT 800Mhz
- 0x27, //HT 1000Mhz
- 0x2E, //HT 1200Mhz
- 0x36, //HT 1400Mhz
- 0x3E, //HT 1600Mhz
- 0x46, //HT 1800Mhz
- 0x4E, //HT 2000Mhz
- 0x55, //HT 2200Mhz
- 0x5D, //HT 2400Mhz
- 0x65 //HT 2600Mhz
-};
-
-UINT8 SmuWaBaseDelay[] = {
- 0x3, //HT 200Mhz
- 0x0,
- 0x3, //HT 400Mhz
- 0x0,
- 0x2, //HT 600Mhz
- 0x3, //HT 800Mhz
- 0x3, //HT 1000Mhz
- 0x4, //HT 1200Mhz
- 0x5, //HT 1400Mhz
- 0x6, //HT 1600Mhz
- 0x7, //HT 1800Mhz
- 0x7, //HT 2000Mhz
- 0x8, //HT 2200Mhz
- 0x9, //HT 2400Mhz
- 0xA //HT 2600Mhz
-};
-
-UINT8 SmuWaPeriod10us[] = {
- 120,
- 100,
- 90,
- 80
-};
-
-UINT8 SmuWaDelay1us[] = {
- 0x0, //HT 200Mhz
- 0x0,
- 0x0, //HT 400Mhz
- 0x0,
- 0x0, //HT 600Mhz
- 0x0, //HT 800Mhz
- 0x0, //HT 1000Mhz
- 0x0, //HT 1200Mhz
- 0x2, //HT 1400Mhz
- 0x2, //HT 1600Mhz
- 0x2, //HT 1800Mhz
- 0x3, //HT 2000Mhz
- 0x3, //HT 2200Mhz
- 0x4, //HT 2400Mhz
- 0x4 //HT 2600Mhz
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get SMU wa data
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- * @retval SMU wa data
- */
-
-UINT32
-LibHtGetSmuWaData (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 NorthbridgeId;
- UINT8 NorthbridgeIndex;
- UINT8 NbHtSpeed;
- UINT16 SmuWaPeriod;
- UINT16 SmuWaDelay;
- AMD_NB_CONFIG_BLOCK *ConfigPtr;
- NorthbridgeIndex = 0;
- ConfigPtr = GET_BLOCK_CONFIG_PTR (pConfig);
- for (NorthbridgeId = 0; NorthbridgeId <= ConfigPtr->NumberOfNorthbridges; NorthbridgeId++) {
- AMD_NB_CONFIG *NbConfigPtr = &ConfigPtr->Northbridges[NorthbridgeId];
- if (LibNbIsDevicePresent (NbConfigPtr->NbPciAddress, NbConfigPtr)) {
- if (pConfig == NbConfigPtr) {
- LibNbPciRead (pConfig->NbPciAddress.AddressValue | NB_PCI_REGD1 , AccessWidth8, &NbHtSpeed, pConfig);
- NbHtSpeed &= 0xf;
- SmuWaPeriod = SmuWaPeriod10us [NorthbridgeIndex] * SmuWaBasePeriod [NbHtSpeed];
- SmuWaDelay = SmuWaDelay1us [NbHtSpeed] * SmuWaBaseDelay [NbHtSpeed];
- return ((SmuWaPeriod & 0xFF) << 8) | ((SmuWaPeriod & 0xFF00) >> 8) | ((SmuWaDelay & 0xFF) << 24) | ((SmuWaDelay & 0xFF00) << 8);
- }
- NorthbridgeIndex++;
- }
- }
- return 0;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init RAS macro
- *
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-VOID
-NbInitRasParityMacro (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCI_ADDR CpuPciAddress;
- UINT32 SaveBase;
- UINT32 SaveLimit;
- UINT32 Value;
- UINT32 Base;
- UINT32 Limit;
- UINT32 Index;
- UINT64 SaveTom;
- UINT64 Value64;
- DUMMY_CALL *RetAddr;
- UINT8 Node;
- CpuPciAddress.AddressValue = MAKE_SBDFO (0, 0, 0x18, 1, 0);
-//Set TOM
- LibAmdMsrRead (0xC001001a, &SaveTom, (AMD_CONFIG_PARAMS *)NbConfigPtr);
- Value64 = 0x40000000;
- LibAmdMsrWrite (0xC001001a, &Value64, (AMD_CONFIG_PARAMS *)NbConfigPtr);
-//Set mmio
- LibNbPciRead (CpuPciAddress.AddressValue | 0x80, AccessWidth32, &SaveBase, NbConfigPtr);
- LibNbPciRead (CpuPciAddress.AddressValue | 0x84, AccessWidth32, &SaveLimit, NbConfigPtr);
- Limit = ((0x50000000 - 1) >> 8) & (~ 0xFF);
- Limit |= NbConfigPtr->NbHtPath.NodeID | (HT_PATH_LINK_ID (NbConfigPtr->NbHtPath) << 4) | (HT_PATH_SUBLINK_ID (NbConfigPtr->NbHtPath) << 6);
- Base = ((0x40000000 >> 8) & (~ 0xFF)) | 0x3;
- for (Node = 0; Node < 8; Node++) {
- CpuPciAddress.AddressValue = MAKE_SBDFO (0, 0, 0x18 + Node, 1, 0);
- if (LibNbIsDevicePresent (CpuPciAddress, NbConfigPtr)) {
- LibNbPciWrite (CpuPciAddress.AddressValue | 0x84, AccessWidth32, &Limit, NbConfigPtr);
- LibNbPciWrite (CpuPciAddress.AddressValue | 0x80, AccessWidth32, &Base, NbConfigPtr);
- } else {
- break;
- }
- }
-//set Scan
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG06, AccessWidth32, (UINT32)~BIT27, BIT27, NbConfigPtr);
- RetAddr = (DUMMY_CALL* ) (UINTN) 0x40000000;
- *((UINT8*) (UINTN) RetAddr) = 0xC3;
- for (Index = 0; Index < 64; Index++) {
- RetAddr ();
- RetAddr = (DUMMY_CALL*) (UINTN) ((UINT8*) (UINTN) RetAddr + 64);
- }
-//Reset scan
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG06, AccessWidth32, (UINT32)~BIT27, 0x0, NbConfigPtr);
- Value = 0;
-// Restore MMIO Map
- for (Node = 0; Node < 8; Node++) {
- CpuPciAddress.AddressValue = MAKE_SBDFO (0, 0, 0x18 + Node, 1, 0);
- if (LibNbIsDevicePresent (CpuPciAddress, NbConfigPtr)) {
- LibNbPciWrite (CpuPciAddress.AddressValue | 0x80, AccessWidth32, &Value, NbConfigPtr);
- LibNbPciWrite (CpuPciAddress.AddressValue | 0x84, AccessWidth32, &SaveLimit, NbConfigPtr);
- LibNbPciWrite (CpuPciAddress.AddressValue | 0x80, AccessWidth32, &SaveBase, NbConfigPtr);
- } else {
- break;
- }
- }
-// Restore TOM
- LibAmdMsrWrite (0xC001001a, &SaveTom, (AMD_CONFIG_PARAMS *)NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * AMD structures initializer for all NB.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdHtInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- Status = LibNbApiCall (HtLibInitializer, ConfigPtr);
- return Status;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * HT config structure initializer
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-HtLibInitializer (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- HT_CONFIG *pHtConfig;
-
- pHtConfig = GET_HT_CONFIG_PTR (pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBHT_TRACE), "[NBHT]HtLibInitializer Enter\n"));
- if (pHtConfig == NULL) {
- return AGESA_WARNING;
- }
- if (pHtConfig->sHeader.InitializerID == INITIALIZED_BY_INITIALIZER) {
- return AGESA_SUCCESS;
- }
- LibAmdMemFill (pHtConfig, 0, sizeof (HT_CONFIG), (AMD_CONFIG_PARAMS *)&(pHtConfig->sHeader));
- pHtConfig->sHeader.InitializerID = INITIALIZED_BY_INITIALIZER;
- pHtConfig->HtExtendedAddressSupport = HtExtAddressingSameAsCpu;
- pHtConfig->HtLinkTriState = HtLinkTriStateSameAsCpu;
- pHtConfig->HtReferenceClock = 200;
-// Select LS State
- pHtConfig->LSx = HtLinkStateSameAsCpu;
- pHtConfig->LinkBufferOptimization = OFF;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBHT_TRACE), "[NBHT]HtLibInitializer Exit\n"));
- return AGESA_SUCCESS;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbHtInit.h b/src/vendorcode/amd/cimx/rd890/nbHtInit.h
deleted file mode 100644
index 1f8c23d181..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbHtInit.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- * @file
- *
- * HT definitions.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-#ifndef _NBHTINIT_H_
-#define _NBHTINIT_H_
-
-///HT link inactive lane
-typedef enum {
- InactiveLaneStateCadCtrlDrivelToLogic0 = 0, ///< No clock
- InactiveLaneStateSameAsPhyOff, ///< Same as PHY OFF
- InactiveLaneStateSameAsOperational, ///< Same as operational
- InactiveLaneStateSameAsDisconnected, ///< Same as disconnected
-} HT_INACTIVE_LANE_STATE;
-
-AGESA_STATUS
-HtLibEarlyInit (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-
-AGESA_STATUS
-HtLibInitValidateInput (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-LibHtSetNbTransmitterDeemphasis (
- IN UINT8 NbDeemphasisLevel,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-LibHtEnableLxState (
- IN UINT8 LSx,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-AmdHtInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-HtLibInitializer (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-UINT32
-LibHtGetSmuWaData (
- IN AMD_NB_CONFIG *pConfig
- );
-
-#define LS1 0
-#define LS0 1
-#define LS2 2
-#define LS3 3
-
-/// HT link state
-typedef enum {
- HtLinkStateLS0 = 0, ///< LS0
- HtLinkStateLS1, ///< LS1
- HtLinkStateLS2, ///< LS2
- HtLinkStateLS3, ///< LS3
- HtLinkStateSameAsCpu, ///< Same as set on CPU
- HtLinkStateSkipInit = 0x80 ///< Skip initialization
-} HT_LS_STATE;
-
-/// HT Link Tri-state
-typedef enum {
- HtLinkTriStateCadCtl = 1, ///< control/data
- HtLinkTriStateCadCtlClk, ///< CAD clk
- HtLinkTriStateSameAsCpu, ///< Same as set on CPU
- HtLinkTriStateSkip = 0x80 ///< Skip initialization
-} HT_LINK_TRISTATE;
-
-/// HT Link Tri-state
-typedef enum {
- HtExtAddressingDisable = 0, ///< Disable ext addressing
- HtExtAddressingEnable, ///< Enable Ext addressing
- HtExtAddressingSameAsCpu, ///< Set Ext addressing as on CPU
- HtExtAddressingSkip = 0x80 ///< Skip initialization
-} HT_EXT_ADDRESSING;
-
-#define HT_PATH_LINK_ID(htPath) (htPath.LinkID & 0xf)
-#define HT_PATH_SUBLINK_ID(htPath) (((htPath.LinkID & 0xf0) == 0) ? 0 : (((htPath.LinkID & 0xf0) >> 4) - 1))
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbHtInterface.c b/src/vendorcode/amd/cimx/rd890/nbHtInterface.c
deleted file mode 100644
index ecb5e0df57..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbHtInterface.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * @file
- *
- * HT Init interfaces
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Early system wide HT init
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-
-AGESA_STATUS
-AmdHtInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NBHT_TRACE), "[NBHT]AmdHtInit Enter\n"));
- Status = LibNbApiCall (NbHtInit, ConfigPtr);
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NBHT_TRACE), "[NBHT]AmdHtInit Exit [0x%x]\n", Status));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Early Nb HT init.
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-
-AGESA_STATUS
-NbHtInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBHT_TRACE), "[NBHT]NbHtInit Enter\n"));
- Status = HtLibInitValidateInput (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0 , 0, 0, 0, NbConfigPtr);
- CIMX_ASSERT (FALSE);
- return Status;
- }
- Status = HtLibEarlyInit (NbConfigPtr);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBHT_TRACE), "[NBHT]NbHtInit Exit [0x%x]\n", Status));
- return Status;
-}
-
diff --git a/src/vendorcode/amd/cimx/rd890/nbInit.c b/src/vendorcode/amd/cimx/rd890/nbInit.c
deleted file mode 100644
index 8a5c5dba96..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbInit.c
+++ /dev/null
@@ -1,417 +0,0 @@
-/**
- * @file
- *
- * NB Initialization.
- *
- * Init IOAPIC/IOMMU/Misc NB features.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Early post validate input parameters
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbLibEarlyPostInitValidateInput (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- NB_CONFIG *pNbConfig;
- NB_INFO NbInfo;
-
- Status = AGESA_SUCCESS;
- NbInfo = LibNbGetRevisionInfo (pConfig);
- if (NbInfo.Type == NB_UNKNOWN) {
- return AGESA_FATAL;
- }
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- if (pNbConfig->sHeader.InitializerID != INITIALIZED_BY_INITIALIZER) {
- Status = NbLibInitializer (pConfig);
- }
- if (pNbConfig->SysMemoryTomBelow4G == 0) {
- Status = AGESA_FATAL;
- }
- //pNbConfig->sHeader.InitializerID = PH_AmdEarlyPostInit;
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Mid/Late post validate input parameters
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbLibPostInitValidateInput (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- NB_CONFIG *pNbConfig;
- NB_INFO NbInfo;
-
- NbInfo = LibNbGetRevisionInfo (pConfig);
- Status = AGESA_SUCCESS;
- if (NbInfo.Type == NB_UNKNOWN) {
- return AGESA_FATAL;
- }
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- if (pNbConfig->sHeader.InitializerID != INITIALIZED_BY_INITIALIZER) {
- Status = AGESA_FATAL;
- }
- //pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- //if (pNbConfig->sHeader.InitializerID != PH_AmdEarlyPostInit) {
- // return AGESA_FATAL;
- //}
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Prepare NB to boot to OS.
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbLibPrepareToOS (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG00, AccessS3SaveWidth32, 0xffffffff, BIT7, pConfig);
- return AGESA_SUCCESS;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set Multiple NB support
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-VOID
-NbMultiNbIocInit (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
- NB_CONFIG *pNbConfig;
-
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- if (GET_BLOCK_CONFIG_PTR (pConfig)->NumberOfNorthbridges > 0) {
- if (pConfig->NbPciAddress.AddressValue == 0) {
- //Primary NB
- Value = BIT3 + (HT_INTERRUPT_ENCODING_OFFSET << 4);
- } else {
- //Secondary NB
- Value = BIT2 + (HT_INTERRUPT_ENCODING_OFFSET << 4);
- }
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG75, AccessS3SaveWidth32, (UINT32)~((0x7f << 2) + BIT28) , Value, pConfig);
- }
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG75, AccessS3SaveWidth32, (UINT32)~(BIT9 + BIT10 + BIT28), pNbConfig->P2PMode << 9, pConfig);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set NB SSID/SVID.
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-VOID
-NbLibSetSSID (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- NB_CONFIG *pNbConfig;
-
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- if (pNbConfig->SSID == 0xffffffff) {
- LibNbPciRead (pConfig->NbPciAddress.AddressValue, AccessWidth32, &pNbConfig->SSID, pConfig);
- }
- if (pNbConfig->SSID != 0) {
- LibNbPciWrite (pConfig->NbPciAddress.AddressValue | NB_PCI_REG50, AccessS3SaveWidth32, &pNbConfig->SSID, pConfig);
- }
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Setup UnitId clamping
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-VOID
-NbLibSetupClumping (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT16 ClumpingCapability;
- UINT16 Value;
- NB_CONFIG *pNbConfig;
-
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- Value = 0;
- if (LibNbGetCpuFamily () == CPU_FAMILY_NPT) {
- return;
- }
- LibNbPciRead (pConfig->NbPciAddress.AddressValue | NB_PCI_REG58, AccessS3SaveWidth16, &ClumpingCapability, pConfig);
- if ((ClumpingCapability & BIT3) != 0 &&
- (pNbConfig->UnitIdClumping & DEV3_CLUMPING) != 0 &&
- !LibNbIsDevicePresent (PcieLibGetPortPciAddress (3, pConfig), pConfig)) {
- Value |= BIT3;
- }
- if ((ClumpingCapability & BIT12) != 0 &&
- (pNbConfig->UnitIdClumping & DEV12_CLUMPING) != 0 &&
- !LibNbIsDevicePresent (PcieLibGetPortPciAddress (12, pConfig), pConfig)) {
- Value |= BIT12;
- }
- if (Value != 0) {
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REG5C, AccessS3SaveWidth16, 0xffff, Value, pConfig);
- LibNbPciRMW (MAKE_SBDFO (0, 0, pConfig->NbHtPath.NodeID + 0x18, 0, HT_PATH_LINK_ID (pConfig->NbHtPath) * 4 + HT_PATH_SUBLINK_ID (pConfig->NbHtPath) * 0x10 + 0x110), AccessS3SaveWidth16, 0xffff, Value, pConfig);
- }
-}
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set top of memory in NB.
- * NB will not pass to CPU any upstream DMA request to address above TOM and TOM2
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbLibSetTopOfMemory (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- NB_CONFIG *pNbConfig;
- UINT32 RD890_TOM2;
- UINT32 RD890_TOM3;
-
- RD890_TOM2 = 0;
- RD890_TOM3 = 0;
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- if (pNbConfig->SysMemoryTomBelow4G != 0) {
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REG90, AccessS3SaveWidth32, 0, ((UINT32)pNbConfig->SysMemoryTomBelow4G) << 20, pConfig);
- }
- if (pNbConfig->SysMemoryTomAbove4G != 0) {
- if ((pNbConfig->SysMemoryTomAbove4G - 1) <= 0xfffff) {
- RD890_TOM2 = pNbConfig->SysMemoryTomAbove4G;
- } else {
- RD890_TOM2 = (UINT32) (0xFD00000000 >> 20);
- RD890_TOM3 = pNbConfig->SysMemoryTomAbove4G;
- }
- }
- if (RD890_TOM2 != 0) {
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG31, AccessS3SaveWidth32, 0, (RD890_TOM2 >> 12), pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG30, AccessS3SaveWidth32, 0, (RD890_TOM2 << 20) | 1, pConfig);
- }
- if (RD890_TOM3 != 0) {
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG4E, AccessS3SaveWidth32, 0, ((UINT32)pNbConfig->SysMemoryTomAbove4G >> 2) | BIT31, pConfig);
- }
- return AGESA_SUCCESS;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * Loget COre APic ID and dtore to scratch
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-NbLibGetCore0ApicId (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT64 Value;
- UINT32 Apic20;
- NB_CONFIG *pNbConfig;
-
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- LibAmdMsrRead (0x0000001B, &Value, (AMD_CONFIG_PARAMS *)pConfig);
- LibNbMemRead ((Value & 0xfffffffff000) + 0x20, AccessWidth32, &Apic20, pConfig);
- pNbConfig->Reserved = (UINT16) (Apic20 >> 24);
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Direct NMI message to Core 0
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-NbLibSetNmiRouting (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- NB_CONFIG *pNbConfig;
-
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- NB_MISC_REG12,
- AccessS3SaveWidth32,
- 0x00ffffff,
- (UINT32)pNbConfig->Reserved << 24,
- pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * AMD structures initializer for all NB.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdNbInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- Status = LibNbApiCall (NbLibInitializer, ConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB config structure initializer
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-NbLibInitializer (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- UINT64 Value64;
- NB_CONFIG *pNbConfig;
-
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- if (pNbConfig == NULL) {
- return AGESA_WARNING;
- }
- if (pNbConfig->sHeader.InitializerID == INITIALIZED_BY_INITIALIZER) {
- return AGESA_SUCCESS;
- }
- LibAmdMemFill (pNbConfig, 0, sizeof (NB_CONFIG), (AMD_CONFIG_PARAMS *)&(pNbConfig->sHeader));
- pNbConfig->sHeader.InitializerID = INITIALIZED_BY_INITIALIZER;
- // Get TOM and TOM2
- LibAmdMsrRead (0xC001001a, &Value64, (AMD_CONFIG_PARAMS *)pConfig);
- pNbConfig->SysMemoryTomBelow4G = (UINT16) (Value64 >> 20);
- LibAmdMsrRead (0xC0010010, &Value64, (AMD_CONFIG_PARAMS *)pConfig);
- if ((Value64 & BIT21) != 0) {
- LibAmdMsrRead (0xC001001d, &Value64, (AMD_CONFIG_PARAMS *)pConfig);
- pNbConfig->SysMemoryTomAbove4G = (UINT32) (Value64 >> 20);
- }
- pNbConfig->P2PMode = 1;
- pNbConfig->UnitIdClumping = 3;
- return AGESA_SUCCESS;
-}
-
-
diff --git a/src/vendorcode/amd/cimx/rd890/nbInit.h b/src/vendorcode/amd/cimx/rd890/nbInit.h
deleted file mode 100644
index 36a83f8b9b..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbInit.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * @file
- *
- * NB definitions
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBINIT_H_
-#define _NBINIT_H_
-
-
-VOID
-NbLibSetSSID (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-NbLibSetupClumping (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-NbLibSetTopOfMemory (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-NbLibEarlyPostInitValidateInput (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-NbLibPostInitValidateInput (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-NbLibPrepareToOS (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-NbMultiNbIocInit (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-NbLibInitializer (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-AmdNbInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-#ifndef HT_INTERRUPT_ENCODING_OFFSET
- #define HT_INTERRUPT_ENCODING_OFFSET 0x2
-#endif
-
-VOID
-NbLibSetNmiRouting (
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-NbLibGetCore0ApicId (
- IN AMD_NB_CONFIG *pConfig
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbInitializer.c b/src/vendorcode/amd/cimx/rd890/nbInitializer.c
deleted file mode 100644
index ab4a0041a8..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbInitializer.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * @file
- *
- * NB Post Init interfaces
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-AGESA_STATUS
-AmdInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * AMD structures initializer for all NB.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- Status = LibNbApiCall (NbInitializer, ConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB structure initializer.
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbInitializer Enter\n"));
- Status = MiscInitializer (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- return Status;
- }
- Status = HtLibInitializer (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- return Status;
- }
- Status = PcieLibInitializer (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- return Status;
- }
- Status = NbLibInitializer (NbConfigPtr);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbInitializer Exit\n"));
- return Status;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbInitializer.h b/src/vendorcode/amd/cimx/rd890/nbInitializer.h
deleted file mode 100644
index 0ae6d16b40..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbInitializer.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * @file
- *
- * NB Post Init interfaces
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-#ifndef _NBINITIALIZER_H_
-#define _NBINITIALIZER_H_
-
-
-AGESA_STATUS
-AmdInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbInterface.c b/src/vendorcode/amd/cimx/rd890/nbInterface.c
deleted file mode 100644
index 7d41b26053..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbInterface.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/**
- * @file
- *
- * NB Post Init interfaces
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd Init all NB at early POST.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdEarlyPostInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbApiCall (NbEarlyPostInit, ConfigPtr);
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB Init at early post.
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbEarlyPostInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbEarlyPostInit Enter\n"));
-
- Status = NbLibEarlyPostInitValidateInput (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0, 0, 0, 0, NbConfigPtr);
- CIMX_ASSERT (FALSE);
- return Status;
- }
- NbLibSetTopOfMemory (NbConfigPtr);
- NbLibSetupClumping (NbConfigPtr);
- NbMultiNbIocInit (NbConfigPtr);
-#ifndef EPREADY_WORKAROUND_DISABLED
- PcieEpReadyWorkaround (NbConfigPtr);
-#endif
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbEarlyPostInit Exit [ %x]\n", Status));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd Init all NB at mid POST.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdMidPostInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- Status = LibNbApiCall (NbMidPostInit, ConfigPtr);
-#ifndef IOMMU_SUPPORT_DISABLE
- NbIommuInit (ConfigPtr);
-#endif
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB Init at mid POST.
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbMidPostInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbMidPostInit Enter\n"));
- Status = NbLibPostInitValidateInput (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0, 0, 0, 0, NbConfigPtr);
- CIMX_ASSERT (FALSE);
- return Status;
- }
- NbLibSetIOAPIC (NbConfigPtr);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbMidPostInit Exit [ %x]\n", Status));
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd Init all NB at late POST.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdLatePostInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- Status = LibNbApiCall (NbLatePostInit, ConfigPtr);
-#ifndef IOMMU_SUPPORT_DISABLE
- NbIommuAcpiFixup (ConfigPtr);
-#endif
- return Status;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB Init at late post.
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbLatePostInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbLatePostInit Enter\n"));
- Status = NbLibPostInitValidateInput (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0, 0, 0, 0, NbConfigPtr);
- CIMX_ASSERT (FALSE);
- return Status;
- }
- NbLibGetCore0ApicId (NbConfigPtr);
- NbLibSetNmiRouting (NbConfigPtr);
- NbLibSetSSID (NbConfigPtr);
- Status = NbLibPrepareToOS (NbConfigPtr);
- LibNbSetDefaultIndexes (NbConfigPtr);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbLatePostInit Exit [ %x]\n", Status));
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd Init all NB at S3 Resume.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdS3InitIommu (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
-
-#ifndef IOMMU_SUPPORT_DISABLE
- NbIommuInitS3 (ConfigPtr);
-#endif
-
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd Init all NB at S3 Resume.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdS3Init (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbApiCall (NbS3Init, ConfigPtr);
-
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB Init at S3
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbS3Init (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbS3Init Enter\n"));
- Status = NbLibPostInitValidateInput (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0, 0, 0, 0, NbConfigPtr);
- CIMX_ASSERT (FALSE);
- return Status;
- }
- Status = NbLibSetTopOfMemory (NbConfigPtr);
- NbLibSetupClumping (NbConfigPtr);
- NbMultiNbIocInit (NbConfigPtr);
- NbLibSetSSID (NbConfigPtr);
- NbLibSetIOAPIC (NbConfigPtr);
- NbLibSetNmiRouting (NbConfigPtr);
- Status = NbLibPrepareToOS (NbConfigPtr);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbS3Init Exit [%x]\n", Status));
- return Status;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbIoApic.c b/src/vendorcode/amd/cimx/rd890/nbIoApic.c
deleted file mode 100644
index 045883def8..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbIoApic.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/**
- * @file
- *
- * NB IOAPIC Initialization.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*! \var APIC_DEVICE_INFO gDefaultApicDeviceInfoTable[]
- * \brief Default IO APIC interrupt mapping
- * \details
- * @li Interrupt Info for HT referenced as gDefaultApicDeviceInfoTable[0]
- * @li Interrupt Info for IOMMU referenced as gDefaultApicDeviceInfoTable[1]
- * @li Interrupt Info for device 2 referenced as gDefaultApicDeviceInfoTable[2]
- * @li Interrupt Info for device 3 referenced as gDefaultApicDeviceInfoTable[3]
- * @li ...
- * @li Interrupt Info for device 13 can be referenced as gDefaultApicDeviceInfoTable[13]
- */
-CONST APIC_DEVICE_INFO gDefaultApicDeviceInfoTable[] = {
-// Group Swizzling Port Int Pin
- {0, 0, 31}, //HT
- {0, 0, 31}, //IOMMU
- {0, ABCD, 28}, //Dev2 Grp0 [Int - 0..3]
- {1, ABCD, 28}, //Dev3 Grp1 [Int - 4..7]
- {5, ABCD, 28}, //Dev4 Grp5 [Int - 20..23]
- {5, CDAB, 28}, //Dev5 Grp5 [Int - 20..23]
- {6, BCDA, 29}, //Dev6 Grp6 [Int - 24..27]
- {6, CDAB, 29}, //Dev7 Grp6 [Int - 24..27]
- {0, 0, 0 }, // Reserved
- {6, ABCD, 29}, //Dev9 Grp6 [Int - 24..27]
- {5, BCDA, 30}, //Dev10 Grp5 [Int - 20..23]
- {2, ABCD, 30}, //Dev11 Grp2 [Int - 8..11]
- {3, ABCD, 30}, //Dev12 Grp3 [Int - 12..15]
- {4, ABCD, 30} //Dev13 Grp4 [Int - 16..19]
-};
-
-CONST APIC_REGISTER_INFO gApicRegisterInfoTable[] = {
- {0, NB_IOAPICCFG_REG03, 0, NB_IOAPICCFG_REG06}, //Dev2
- {8, NB_IOAPICCFG_REG03, 8, NB_IOAPICCFG_REG06}, //Dev3
- {16, NB_IOAPICCFG_REG03, 16, NB_IOAPICCFG_REG06}, //Dev4
- {24, NB_IOAPICCFG_REG03, 24, NB_IOAPICCFG_REG06}, //Dev5
- {0, NB_IOAPICCFG_REG04, 0, NB_IOAPICCFG_REG07}, //Dev6
- {8, NB_IOAPICCFG_REG04, 8, NB_IOAPICCFG_REG07}, //Dev7
- {0, 0, 0, 0 }, //Dev8
- {16, NB_IOAPICCFG_REG04, 24 ,NB_IOAPICCFG_REG07}, //Dev9
- {24, NB_IOAPICCFG_REG04, 0 ,NB_IOAPICCFG_REG08}, //Dev10
- {0, NB_IOAPICCFG_REG05, 8 ,NB_IOAPICCFG_REG08}, //Dev11
- {8, NB_IOAPICCFG_REG05, 16 ,NB_IOAPICCFG_REG08}, //Dev12
- {16, NB_IOAPICCFG_REG05, 24 ,NB_IOAPICCFG_REG08}, //Dev13
-};
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Configure IO APIC
- * Enable IO APIC base address decoding. Enable default forwarding interrupt to SB
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-NbLibSetIOAPIC (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- NB_CONFIG *pNbConfig;
- PORT PortId;
- APIC_DEVICE_INFO ApicDeviceInfoTable[sizeof (gDefaultApicDeviceInfoTable) / sizeof (APIC_DEVICE_INFO)];
- APIC_REGISTER_INFO *pApicRegisterInfoTable;
-
- pNbConfig = GET_NB_CONFIG_PTR (pConfig);
- pApicRegisterInfoTable = (APIC_REGISTER_INFO*)FIX_PTR_ADDR (&gApicRegisterInfoTable[0], NULL);
- if (pNbConfig->IoApicBaseAddress != 0 ) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), "[NB]NbLibSetIOAPIC\n"));
- //Copy default routing to local memory buffer
- LibAmdMemCopy (&ApicDeviceInfoTable, (APIC_DEVICE_INFO*)FIX_PTR_ADDR (&gDefaultApicDeviceInfoTable[0], NULL), sizeof (ApicDeviceInfoTable), (AMD_CONFIG_PARAMS *)&(pNbConfig->sHeader));
- //Callback to platform BIOS to update
- LibNbCallBack (PHCB_AmdUpdateApicInterruptMapping, (UINTN)&ApicDeviceInfoTable, pConfig);
- //Setup base address
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), " Apic Base %x\n", (UINT32)pNbConfig->IoApicBaseAddress & 0xffffff00));
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_IOAPICCFG_INDEX, NB_IOAPICCFG_REG01, AccessS3SaveWidth32, (UINT32) (0xff), (UINT32)pNbConfig->IoApicBaseAddress & 0xffffff00, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_IOAPICCFG_INDEX, NB_IOAPICCFG_REG02, AccessS3SaveWidth32, 0x0, ((UINT32*)&pNbConfig->IoApicBaseAddress)[1] , pConfig);
- //Setup interrupt mapping
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- PCI_ADDR Port;
- APIC_REGISTER_INFO RegisterInfo;
- APIC_DEVICE_INFO PortInfo;
- PORT NativePortId;
- if (PortId == 8 || !PcieLibIsValidPortId (PortId, pConfig)) {
- continue;
- }
- NativePortId = PcieLibNativePortId (PortId, pConfig);
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- RegisterInfo = pApicRegisterInfoTable[NativePortId - MIN_PORT_ID];
- PortInfo = ApicDeviceInfoTable[Port.Address.Device];
- //Setup routing for EP
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_IOAPICCFG_INDEX,
- RegisterInfo.EpRoutingRegister,
- AccessS3SaveWidth32,
- 0xFFFFFFFF,
- (PortInfo.Group | (PortInfo.Swizzle << 4)) << RegisterInfo.EpRoutingOffset,
- pConfig
- );
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), " EP Routing Dev[%d] NativePortId[%d] PortId[%d] Group - %d Swizzle - %d\n", Port.Address.Device, NativePortId, PortId, PortInfo.Group, PortInfo.Swizzle));
- //Setup routing for RC
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_IOAPICCFG_INDEX,
- RegisterInfo.RcRoutingRegister,
- AccessS3SaveWidth32,
- 0xFFFFFFFF,
- (PortInfo.Pin) << RegisterInfo.RcRoutingOffset,
- pConfig
- );
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), " RC Routing Dev[%d] NativeDev[%d] Pin - %d \n", Port.Address.Device, NativePortId, PortInfo.Pin));
-
- }
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_IOAPICCFG_INDEX,
- NB_IOAPICCFG_REG09,
- AccessS3SaveWidth32,
- 0x0,
- ApicDeviceInfoTable[0].Pin | (ApicDeviceInfoTable[1].Pin << 8),
- pConfig
- );
- //Enable IO API MMIO decoding and configure features
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_IOAPICCFG_INDEX, NB_IOAPICCFG_REG00, AccessS3SaveWidth32, 0x0 , 0x1f , pConfig);
- }
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbIoApic.h b/src/vendorcode/amd/cimx/rd890/nbIoApic.h
deleted file mode 100644
index f2ba8944d2..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbIoApic.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file
- *
- * NB IOAPIC Initialization.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-#ifndef _NBIOAPIC_H_
-#define _NBIOAPIC_H_
-
-
-VOID
-NbLibSetIOAPIC (
- IN AMD_NB_CONFIG *pConfig
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbIommu.c b/src/vendorcode/amd/cimx/rd890/nbIommu.c
deleted file mode 100644
index 705b1a82fd..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbIommu.c
+++ /dev/null
@@ -1,1737 +0,0 @@
-/**
- * @file
- *
- * Routines for IOMMU.
- *
- * Implement the IOMMU init and ACPI feature.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-#include "amdSbLib.h"
-
-#define Int32FromChar(a,b,c,d) ((a) << 0 | (b) << 8 | (c) << 16 | (d) << 24)
-
-/*----------------------------------------------------------------------------------------
- * R D 8 9 0 / S D A T A
- *----------------------------------------------------------------------------------------
- */
-
-// IOMMU Initialization
-
-INDIRECT_REG_ENTRY
-CONST
-STATIC
-IommuL1Table[] = {
- // 01. 0x0C [30:28]=7 L1VirtOrderQueues Increase maximum number virtual queues
- // for all devices
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP1 | L1REG_0C, 0x8FFFFFFF, 0x70000000 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP2 | L1REG_0C, 0x8FFFFFFF, 0x70000000 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_SB | L1REG_0C, 0x8FFFFFFF, 0x70000000 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP3A | L1REG_0C, 0x8FFFFFFF, 0x70000000 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP3B | L1REG_0C, 0x8FFFFFFF, 0x70000000 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_VC1 | L1REG_0C, 0x8FFFFFFF, 0x70000000 },
- // 02. 0x07 [11] L1DEBUG_1 Multiple error logs possible
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP1 | L1REG_07, (UINT32)~(BIT8 + BIT9 + BIT10), BIT11 + BIT5 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP2 | L1REG_07, (UINT32)~(BIT8 + BIT9 + BIT10), BIT11 + BIT5},
- { L1CFG_SEL_WR_EN | L1CFG_SEL_SB | L1REG_07, (UINT32)~(BIT8 + BIT9 + BIT10), BIT11 + BIT5},
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP3A | L1REG_07, (UINT32)~(BIT8 + BIT9 + BIT10), BIT11 + BIT5},
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP3B | L1REG_07, (UINT32)~(BIT8 + BIT9 + BIT10), BIT11 + BIT5},
- { L1CFG_SEL_WR_EN | L1CFG_SEL_VC1 | L1REG_07, (UINT32)~(BIT8 + BIT9 + BIT10), BIT11 + BIT5},
- // 02. 0x06 [0] L1DEBUG_0 Phantom function disable
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP1 | L1REG_06, (UINT32)~BIT0, 0 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP2 | L1REG_06, (UINT32)~BIT0, 0 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_SB | L1REG_06, (UINT32)~BIT0, 0 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP3A | L1REG_06, (UINT32)~BIT0, 0 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_GPP3B | L1REG_06, (UINT32)~BIT0, 0 },
- { L1CFG_SEL_WR_EN | L1CFG_SEL_VC1 | L1REG_06, (UINT32)~BIT0, 0 }
-};
-
-INDIRECT_REG_ENTRY
-CONST
-STATIC
-IommuL2Table[] = {
- // 01. 0x0C [29]=1 IFifoClientPriority Set attribute to VC1 L1 client high priority
- { L2CFG_SEL_WR_EN | L2REG_0C, 0xD0000000, 0x20000000 },
- // 02. 0x10 [9:8]=2 DTCInvalidationSel DTC cache invalidation sequential precise
- { L2CFG_SEL_WR_EN | L2REG_10, 0xFFFFFC00, 0x00000200 },
- // 03. 0x14 [9:8]=2 ITCInvalidationSel ... cache invalidation sequential precise
- { L2CFG_SEL_WR_EN | L2REG_14, 0xFFFFFC00, 0x00000200 },
- // 04. 0x18 [9:8]=2 IPTCAInvalidationSel ... cache invalidation sequential precise
- { L2CFG_SEL_WR_EN | L2REG_18, 0xFFFFFC00, 0x00000200 },
- // 05. 0x1C [9:8]=2 IPTCBInvalidationSel ... cache invalidation sequential precise
- { L2CFG_SEL_WR_EN | L2REG_1C, 0xFFFFFC00, 0x00000200 },
- // 06. 0x50 [9:8]=2 PDCInvalidationSel ... cache invalidation sequential precise
- { L2CFG_SEL_WR_EN | L2REG_50, 0xFFFFFC00, 0x00000200 },
- // 07. 0x10 [4]=1 DTCParityEn DTC cache parity protection
- { L2CFG_SEL_WR_EN | L2REG_10, (UINT32)~BIT4, BIT4 },
- // 08. 0x14 [4]=1 ITCParityEn ... cache parity protection
- { L2CFG_SEL_WR_EN | L2REG_14, (UINT32)~BIT4, BIT4 },
- // 09. 0x18 [4]=1 PTCAParityEn ... cache parity protection
- { L2CFG_SEL_WR_EN | L2REG_18, (UINT32)~BIT4, BIT4 },
- // 10. 0x1C [4]=1 PTCBParityEn ... cache parity protection
- { L2CFG_SEL_WR_EN | L2REG_1C, (UINT32)~BIT4, BIT4 },
- // 11. 0x50 [4]=1 PDCParityEn ... cache parity protection
- { L2CFG_SEL_WR_EN | L2REG_50, (UINT32)~BIT4, BIT4 },
- // 12. 0x80 [0]=1 ERRRuleLock0 Lock fault detection rule sets
- // 0x30 [0]=1 ERRRuleLock1
- { L2CFG_SEL_WR_EN | L2REG_80, (UINT32)~BIT0, BIT0 },
- { L2CFG_SEL_WR_EN | L2REG_30, (UINT32)~BIT0, BIT0 },
- // 13. 0x56 [2]=0 L2_CP_CONTROL Disable CP flush on invalidation
- // 0x56 [1]=1 L2_CP_CONTROL Enable CP flush on wait
- { L2CFG_SEL_WR_EN | L2REG_56, 0xFFFFFFF9, BIT1 },
- // A21
- { L2CFG_SEL_WR_EN | L2REG_06, 0xFFFFFFFF, BIT6 + BIT7 + BIT5 + BIT8 },
- { L2CFG_SEL_WR_EN | L2REG_47, 0xFFFFFFFF, BIT1 + BIT3 + BIT0 + BIT4 + BIT5 },
- { L2CFG_SEL_WR_EN | L2REG_07, 0xFFFFFFFF, BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT8 + BIT6},
-
-};
-
-// IOMMU ACPI Initialization
-
-IOMMU_IVRS_HEADER
-STATIC
-RD890S_DfltHeader = {
-// 'SRVI',
- Int32FromChar ('S', 'R', 'V', 'I'),
- 48,
- 1,
- 0,
- {'A', 'M', 'D', ' ', ' ', 0},
- {'R', 'D', '8', '9', '0', 'S', 0, 0},
- {'1', ' ', ' ', 0},
- {'A','M','D',' '},
- {'1', ' ', ' ', 0},
- 0,
- 0
-};
-
-IOMMU_EXCLUSIONTABLE
-STATIC
-RD890S_DfltExclusion = {
- sizeof (UINTN) + sizeof (IOMMU_EXCLUSIONRANGE) * 0,
- {{0, 0}}
-};
-
-IOMMU_DEVICELIST
-STATIC
-RD890S_DfltDevices = {
- (sizeof (UINT16) + sizeof (UINT16) * 12),
- {
- DEVICEID_NB, // Type 2 entry, Device 0, Func 0 <-- NB all functions
- DEVICEID_GPP1_0, // Type 2 entry, Device 2, Func 0 <-- GPP1 port 0
- DEVICEID_GPP1_1, // Type 2 entry, Device 3, Func 0 <-- GPP1 port 1
- DEVICEID_GPP3A_0, // Type 2 entry, Device 4, Func 0 <-- GPP3a port 0
- DEVICEID_GPP3A_1, // Type 2 entry, Device 5, Func 0 <-- GPP3a port 1
- DEVICEID_GPP3A_2, // Type 2 entry, Device 6, Func 0 <-- GPP3a port 2
- DEVICEID_GPP3A_3, // Type 2 entry, Device 7, Func 0 <-- GPP3a port 3
- DEVICEID_GPP3A_4, // Type 2 entry, Device 9, Func 0 <-- GPP3a port 4
- DEVICEID_GPP3A_5, // Type 2 entry, Device A, Func 0 <-- GPP3a port 5
- DEVICEID_GPP2_0, // Type 2 entry, Device B, Func 0 <-- GPP2 port 0
- DEVICEID_GPP2_1, // Type 2 entry, Device C, Func 0 <-- GPP2 port 1
- DEVICEID_GPP3B_0, // Type 2 entry, Device D, Func 0 <-- GPP3b port 0
- }
-};
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
-*/
-
-// IOMMU Library
-
-BOOLEAN
-NbIommuEnabled (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-BOOLEAN
-IommuCheckEnable (
- IN PCI_ADDR IommuPciAddress,
- IN AMD_NB_CONFIG *pConfig
- );
-
-BOOLEAN
-IommuCheckHp (
- IN UINT16 DeviceId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-BOOLEAN
-IommuCheckPhantom (
- IN UINT16 DeviceId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-UINT32
-IommuGetL1 (
- IN UINT16 DeviceId
- );
-
-UINT8
-IommuGetLog2 (
- IN UINT32 Value
- );
-
-VOID
-IommuRecordBusDevFuncInfo (
- IN OUT IOMMU_PCI_TOPOLOGY *PciPtr,
- IN UINT16 DeviceId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-AGESA_STATUS
-IommuInit (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-IommuInitL2CacheControl (
- IN IOMMU_PCI_TOPOLOGY *PciPtr,
- IN OUT AMD_NB_CONFIG *pConfig
-);
-
-VOID
-IommuPlaceHeader (
- IN OUT VOID *BufferPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-IommuPlaceIvhdAndScanDevices (
- IN OUT VOID *BufferPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-IommuPlaceIvmdAndExclusions (
- IN OUT VOID *BufferPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-IommuIvhdNorthbridgeDevices (
- IN OUT IOMMU_PCI_TOPOLOGY *PciPtr,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-IommuIvhdSouthbridgeDevices (
- IN OUT IOMMU_PCI_TOPOLOGY *PciPtr,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-IommuIvhdApicsAndHpets (
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-VOID
-IommuCreateDeviceEntry (
- IN OUT IOMMU_PCI_TOPOLOGY *PciPtr,
- IN UINT16 DeviceId,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-IommuCreate4ByteEntry (
- IN UINT8 Type,
- IN UINT8 Data,
- IN UINT16 Word1,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr
- );
-
-VOID
-IommuCreate8ByteEntry (
- IN UINT8 Type,
- IN UINT8 Data,
- IN UINT16 Word1,
- IN UINT8 Byte4,
- IN UINT16 Word5,
- IN UINT8 Byte7,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr
- );
-
-VOID
-IommuFinalizeIvrs (
- IN OUT VOID *BufferPtr,
- IN AMD_NB_CONFIG *pConfig
- );
-
-// IOMMU ACPI Final
-
-UINT64
-IommuGetApicBaseAddress (
- IN VOID *DevicePtr,
- IN AMD_NB_CONFIG *pConfig
- );
-
-UINT8
-IommuGetApicId (
- IN UINT64 BaseAddress,
- IN VOID *MadtPtr,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-NbIommuHwInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbIommuHwTopologyInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-IommuTopologyInit (
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check if IOMMU enable on platform
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- * @retval AGESA_SUCCESS IOMMU initialized and table created
- * @retval AGESA_UNSUPPORTED IOMMU not enabled or not found
- * @retval AGESA_ERROR IOMMU initialization failed.
- *
- */
-BOOLEAN
-NbIommuEnabled (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- UINT8 NorthbridgeId;
- BOOLEAN Result;
- Result = FALSE;
- for (NorthbridgeId = 0; NorthbridgeId <= ConfigPtr->NumberOfNorthbridges; NorthbridgeId++) {
- if (ConfigPtr->Northbridges[NorthbridgeId].pNbConfig->IommuBaseAddress != 0) {
- Result = TRUE;
- break;
- }
- }
- return Result;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Northbridge Iommu Initialization for all NB in system.
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- * @retval AGESA_SUCCESS IOMMU initialized and table created
- * @retval AGESA_UNSUPPORTED IOMMU not enabled or not found
- * @retval AGESA_ERROR IOMMU initialization failed.
- *
- */
-AGESA_STATUS
-NbIommuInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = AGESA_SUCCESS;
-
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuInit Enter\n"));
-
- if (NbIommuEnabled (ConfigPtr)) {
- NbIommuHwInit (ConfigPtr);
- NbIommuAcpiInit (ConfigPtr);
- NbIommuHwTopologyInit (ConfigPtr);
- } else {
- Status = AGESA_UNSUPPORTED;
- }
-
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuInit Exit [Status = 0x%x]\n", Status));
- return Status;
-}
-
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Northbridge Iommu Initialization for all NB in system.
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- * @retval AGESA_SUCCESS IOMMU initialized and table created
- * @retval AGESA_UNSUPPORTED IOMMU not enabled or not found
- * @retval AGESA_ERROR IOMMU initialization failed.
- *
- */
-AGESA_STATUS
-NbIommuInitS3 (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = AGESA_SUCCESS;
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuInitS3 Enter\n"));
-
- if (NbIommuEnabled (ConfigPtr)) {
- NbIommuHwInit (ConfigPtr);
- NbIommuHwTopologyInit (ConfigPtr);
- } else {
- Status = AGESA_UNSUPPORTED;
- }
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuInitS3 Exit [Status = 0x%x]\n", Status));
- return Status;
-}
-
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Northbridge Iommu HW Initialization for all NB in system.
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- * @retval AGESA_SUCCESS IOMMU initialized and table created
- * @retval AGESA_ERROR IOMMU initialization failed.
- *
- */
-AGESA_STATUS
-NbIommuHwInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- UINT8 NorthbridgeId;
- AMD_NB_CONFIG *pConfig;
-
- for (NorthbridgeId = 0; NorthbridgeId <= ConfigPtr->NumberOfNorthbridges; NorthbridgeId++) {
- pConfig = &ConfigPtr->Northbridges[NorthbridgeId];
- ConfigPtr->CurrentNorthbridge = NorthbridgeId;
- IommuInit (pConfig);
- }
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Northbridge Iommu HW Initialization for all NB in system.
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- * @retval AGESA_SUCCESS IOMMU initialized and table created
- * @retval AGESA_ERROR IOMMU initialization failed.
- *
- */
-AGESA_STATUS
-NbIommuHwTopologyInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- UINT8 NorthbridgeId;
- AMD_NB_CONFIG *pConfig;
-
- for (NorthbridgeId = 0; NorthbridgeId <= ConfigPtr->NumberOfNorthbridges; NorthbridgeId++) {
- pConfig = &ConfigPtr->Northbridges[NorthbridgeId];
- ConfigPtr->CurrentNorthbridge = NorthbridgeId;
- IommuTopologyInit (pConfig);
- }
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Northbridge Iommu Initialization for all NB in system.
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- * @retval AGESA_SUCCESS IOMMU initialized and table created
- * @retval AGESA_UNSUPPORTED IOMMU not enabled or not found
- * @retval AGESA_ERROR IOMMU initialization failed.
- *
- */
-AGESA_STATUS
-NbIommuAcpiInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- UINT8 NorthbridgeId;
- AGESA_STATUS Status;
- AMD_NB_CONFIG *pConfig;
- NB_BUFFER_PARAMS Ivrs;
- UINTN IvrsHandle;
-
- Status = AGESA_SUCCESS;
- Ivrs.BufferLength = 0;
- Ivrs.BufferHandle = IVRS_HANDLE;
- Ivrs.BufferPtr = NULL;
- pConfig = &ConfigPtr->Northbridges[0];
- ConfigPtr->CurrentNorthbridge = 0;
- IvrsHandle = 0;
-
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuAcpiInit Enter\n"));
-
- // Get a buffer for IVRS
- Ivrs.BufferLength = IVRS_BUFFER_SIZE;
- Status = LibNbCallBack (PHCB_AmdAllocateBuffer, (UINTN)&Ivrs, &ConfigPtr->Northbridges[0]);
- if (Status != AGESA_SUCCESS || Ivrs.BufferPtr == NULL) {
- // Table creation failed
- return AGESA_ERROR;
- }
-
- // Clear buffer before using
- LibAmdMemFill (Ivrs.BufferPtr, 0, Ivrs.BufferLength, (AMD_CONFIG_PARAMS *)&(pConfig->sHeader));
-
- // PLACE OUR ACPI IVRS TABLE
- // 1. Create IVRS header
- // 2. For each northbridge place IVHD
- // 3. For northbridge 0 only, place IVMD exclusion entries
- for (NorthbridgeId = 0; NorthbridgeId <= ConfigPtr->NumberOfNorthbridges; NorthbridgeId++) {
- pConfig = &ConfigPtr->Northbridges[NorthbridgeId];
- ConfigPtr->CurrentNorthbridge = NorthbridgeId;
- if (NorthbridgeId == 0) {
- IommuPlaceHeader (Ivrs.BufferPtr, pConfig);
- }
- IommuPlaceIvhdAndScanDevices (Ivrs.BufferPtr, pConfig);
- IommuPlaceIvmdAndExclusions (Ivrs.BufferPtr, pConfig);
- }
- IommuFinalizeIvrs (Ivrs.BufferPtr, pConfig);
-
- LibAmdSetAcpiTable (Ivrs.BufferPtr, TRUE, &IvrsHandle);
-
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuAcpiInit [IVRS TableAddress = 0x%x]\n", (UINT32)(Ivrs.BufferPtr)));
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuAcpiInit Exit [Status = 0x%x]\n", Status));
-
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Northbridge Iommu IVRS fixup for APICS
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- * @retval AGESA_SUCCESS IOMMU initialized and table patched, or no patching required
- * @retval AGESA_ERROR IOMMU enabled but no previously generated IVRC table found.
- *
- */
-AGESA_STATUS
-NbIommuAcpiFixup (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- UINT8 ApicId;
- UINT64 ApicBaseAddress;
- UINT8 NorthbridgeId;
- BOOLEAN IommuFound;
- VOID *DevicePtr;
- VOID *IvhdPtr;
- VOID *IvrsPtr;
- VOID *MadtPtr;
- AMD_NB_CONFIG *pConfig;
- PCI_ADDR IommuPciAddress;
- UINTN IvrsHandle;
-
-
- pConfig = &ConfigPtr->Northbridges[0];
- IommuFound = FALSE;
- ApicId = 0xFF;
- ApicBaseAddress = 0;
-
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuAcpiFixup Enter\n"));
-
- for (NorthbridgeId = 0; NorthbridgeId <= ConfigPtr->NumberOfNorthbridges; NorthbridgeId++) {
- pConfig = &ConfigPtr->Northbridges[NorthbridgeId];
- ConfigPtr->CurrentNorthbridge = NorthbridgeId;
- IommuPciAddress = pConfig->NbPciAddress;
- IommuPciAddress.Address.Function = NB_IOMMU;
- if (IommuCheckEnable (IommuPciAddress, pConfig)) {
- IommuFound = TRUE;
- }
- }
-
- // Any Iommus enabled? If no, we don't need to patch anything
- if (!IommuFound) {
- return AGESA_SUCCESS;
- }
-
- // Check for an IVRS
- // Check IVRS for a type 10 block (IVHD)
- // Check for an MADT
- // If these conditions fail, abort
-
-// Status = LibAmdGetAcpiTable ('SRVI', &IvrsPtr, &IvrsHandle);
- Status = LibAmdGetAcpiTable (Int32FromChar ('S', 'R', 'V', 'I'), &IvrsPtr, &IvrsHandle);
- if (Status != AGESA_SUCCESS) {
-// REPORT_EVENT (AGESA_ERROR, GENERAL_ERROR_LOCATE_ACPI_TABLE, 'SRVI', 0, 0, 0, pConfig);
- REPORT_EVENT (AGESA_ERROR, GENERAL_ERROR_LOCATE_ACPI_TABLE, Int32FromChar ('S', 'R', 'V', 'I'), 0, 0, 0, pConfig);
- return AGESA_ERROR;
- }
-
-// Status = LibAmdGetAcpiTable ('CIPA', &MadtPtr, NULL);
- Status = LibAmdGetAcpiTable (Int32FromChar ('C', 'I', 'P', 'A'), &MadtPtr, NULL);
- if (Status != AGESA_SUCCESS) {
-// REPORT_EVENT (AGESA_ERROR, GENERAL_ERROR_LOCATE_ACPI_TABLE, 'CIPA', 0, 0, 0, pConfig);
- REPORT_EVENT (AGESA_ERROR, GENERAL_ERROR_LOCATE_ACPI_TABLE, Int32FromChar ('C', 'I', 'P', 'A'), 0, 0, 0, pConfig);
- return AGESA_ERROR;
- }
-
- IvhdPtr = LibAmdGetFirstIvrsBlockEntry (TYPE_IVHD, IvrsPtr);
- if (IvhdPtr == NULL) {
- return AGESA_ERROR;
- }
-
- // An IVRS can contain one or more IVHD entries (one per IOMMU)
- // Each IVHD entry can contain one or more APIC entries
-
- while (IvhdPtr != NULL) {
- DevicePtr = LibAmdGetFirstDeviceEntry (DE_SPECIAL, IvhdPtr);
- do {
- // Be sure to only fix APIC entries
- if (*(UINT8*) ((UINT8*)DevicePtr + DE_SPECIAL_VARIETY) == VARIETY_IOAPIC) {
- ApicBaseAddress = IommuGetApicBaseAddress (DevicePtr, pConfig);
- ApicId = IommuGetApicId (ApicBaseAddress, MadtPtr, pConfig);
- *(UINT8*)((UINT8*)DevicePtr + DE_SPECIAL_ID) = ApicId;
- }
- DevicePtr = LibAmdGetNextDeviceEntry (DE_SPECIAL, DevicePtr, IvhdPtr);
- } while (DevicePtr != NULL);
-
- IvhdPtr = LibAmdGetNextIvrsBlockEntry (TYPE_IVHD, IvhdPtr, IvrsPtr);
- }
-
- LibAmdSetAcpiTable (IvrsPtr, TRUE, &IvrsHandle);
-
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuAcpiFixup [IVRS TableAddress = 0x%x]\n", (UINT32)IvrsPtr));
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuAcpiFixup [APIC TableAddress = 0x%x]\n", (UINT32)MadtPtr));
- CIMX_TRACE ((TRACE_DATA (ConfigPtr, CIMX_NB_TRACE), "[NBIOMMU]NbIommuAcpiFixup Exit\n"));
-
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------
- * P R I V A T E
- *----------------------------------------------------------------------------------------
- */
-UINT32 IommuMmioInitTable[] = {
- 0x8, 0x0,
- 0xC, 0x08000000,
- 0x10, 0x0,
- 0x14, 0x08000000,
- 0x2000, 0x0,
- 0x2008, 0x0
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Nb Iommu Initialization.
- *
- * @param[in] pConfig Northbridge configuration pointer
- * @retval AGESA_SUCCESS IOMMU enable and initialized succesfully.
- * @retval AGESA_UNSUPPORTED IOMMU not initialized.
- */
-AGESA_STATUS
-IommuInit (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 CapBase;
- PCI_ADDR IommuPciAddress;
- UINTN i;
-
- IommuPciAddress = pConfig->NbPciAddress;
- IommuPciAddress.Address.Function = NB_IOMMU;
-
- // If the base address = 0, don't enable IOMMU
- if (pConfig->pNbConfig->IommuBaseAddress == 0) {
- return AGESA_UNSUPPORTED;
- }
-
- // NBMISCIND:0x75 IOC_FEATURE_CNTL_10_0[10]=1
- // 0=disable
- // 1=enable
-
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG75, AccessS3SaveWidth32, (UINT32)~(BIT28), BIT0, pConfig);
-
- // Get Capabilities pointer 32h (points to 40h) - capability ID 0x0F. Not found, we have no IOMMU.
- CapBase = LibNbFindPciCapability (IommuPciAddress.AddressValue, IOMMU_CAPID, pConfig);
- if (CapBase == 0) {
- return AGESA_UNSUPPORTED;
- }
-
- // IOMMU_ADAPTER_ID_W - RW - 32 bits - nbconfigfunc2:0x68
- // SUBSYSTEM_VENDOR_ID_W 15:0 0x0 Sets the subsystem vendor ID register header
- // SUBSYSTEM_ID_W 31:16 0x0 Sets the subsystem ID register in the configuration header
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), "[NBIOMMU]Iommu Device Found [PCI Address = 0x%x]\n", IommuPciAddress.AddressValue));
- if (pConfig->pNbConfig->SSID == PCI_INVALID) {
- LibNbPciRead (IommuPciAddress.AddressValue, AccessWidth32, &pConfig->pNbConfig->SSID, pConfig);
- }
- if (pConfig->pNbConfig->SSID) {
- LibNbPciWrite (IommuPciAddress.AddressValue | 0x68, AccessS3SaveWidth32, &pConfig->pNbConfig->SSID, pConfig);
- }
-
- // Get Capabilities pointer 32h (points to 40h) - capability ID 0x0F
- // Set Cap_Offset+04h [31:14] Base Address Low [31:14]
- // Set Cap_Offset+08h [31:0] Base Address High [64:32]
- // Set Cap_Offset+04h [0] Enable
- LibNbPciRMW ((IommuPciAddress.AddressValue | (CapBase + 8)), AccessS3SaveWidth32, 0x0, ((UINT32*)&pConfig->pNbConfig->IommuBaseAddress)[1], pConfig);
- LibNbPciRMW ((IommuPciAddress.AddressValue | (CapBase + 4)), AccessS3SaveWidth32, 0x0, ((UINT32*)&pConfig->pNbConfig->IommuBaseAddress)[0], pConfig);
-
- // Enable zeroing of address for zero-byte reads when IOMMU enabled
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG01, AccessS3SaveWidth32, (UINT32)~(BIT8 | BIT9), BIT8, pConfig);
-
- // 8.3.1 L1 Initialization
- LibNbIndirectTableInit (IommuPciAddress.AddressValue | L1CFG_INDEX,
- 0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR(&IommuL1Table[0],NULL),
- (sizeof (IommuL1Table) / sizeof (INDIRECT_REG_ENTRY)),
- pConfig
- );
-
- // 8.3.3.1 L2 Common Initialization
- LibNbIndirectTableInit (IommuPciAddress.AddressValue | L2CFG_INDEX,
- 0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR(&IommuL2Table[0], NULL),
- (sizeof (IommuL2Table) / sizeof (INDIRECT_REG_ENTRY)),
- pConfig
- );
- //Configure PDC cache to 12-way set associative cache for A21
- if (LibNbGetRevisionInfo (pConfig).Revision > NB_REV_A11) {
- LibNbPciIndexRMW (IommuPciAddress.AddressValue | L2CFG_INDEX, L2CFG_SEL_WR_EN | L2REG_52, AccessS3SaveWidth32, 0x0, 0xF0000002 , pConfig);
- }
- // Start and lock the Iommu settings
- LibNbPciRMW ((IommuPciAddress.AddressValue | (CapBase + 4)), AccessS3SaveWidth32, 0xFFFFFFFF, (UINT32)BIT0, pConfig);
-
- //Reset IOMMU MMIO registers on system reset
- for (i = 0; i < (sizeof (IommuMmioInitTable) / sizeof (UINT32)); i = i + 2) {
- LibNbMemRMW (pConfig->pNbConfig->IommuBaseAddress + IommuMmioInitTable[i], AccessS3SaveWidth32, 0x0, IommuMmioInitTable[i + 1], pConfig);
- }
- return AGESA_SUCCESS;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Iommu Initialization of topology specific data.
- *
- * @param[in] pConfig Northbridge configuration pointer
- * @retval AGESA_SUCCESS IOMMU enable and initialized succesfully.
- * @retval AGESA_UNSUPPORTED IOMMU not initialized.
- */
-AGESA_STATUS
-IommuTopologyInit (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- // Set L2 Caches Hash Control based on maximum bus, device, function
- IommuInitL2CacheControl ((IOMMU_PCI_TOPOLOGY*) &pConfig->pNbConfig->IommuTpologyInfo, pConfig);
- return AGESA_SUCCESS;
-}
-
-L2_HASH_CONTROL HashControls[] = {
- {
- L2_DTC_CONTROL
- },
- {
- L2_ITC_CONTROL
- },
- {
- L2_PTC_A_CONTROL
- },
- {
- L2_PTC_B_CONTROL
- },
- {
- L2_PDC_CONTROL
- }
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set L2 Cache Hash Control based on maximum Bus, Dev, Function found
- *
- * @param[in] PciPtr Array of bus, device, function
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-IommuInitL2CacheControl (
- IN IOMMU_PCI_TOPOLOGY *PciPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
- PCI_ADDR IommuPciAddress;
- UINTN i;
- UINT8 FuncBitsUsed;
- UINT8 DevBitsUsed;
- UINT8 BusBitsUsed;
-
- IommuPciAddress = pConfig->NbPciAddress;
- IommuPciAddress.Address.Function = NB_IOMMU;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), " L2Cache Init Max Bus = 0x%x Max Device = 0x%x Mux Func = 0x%x\n", PciPtr->MaxBus, PciPtr->MaxDevice, PciPtr->MaxFunction));
-
- FuncBitsUsed = CIMX_MAX (IommuGetLog2 (PciPtr->MaxFunction + 1), 3);
- DevBitsUsed = IommuGetLog2 (PciPtr->MaxDevice + 1);
- BusBitsUsed = IommuGetLog2 (PciPtr->MaxBus + 1);
-
- for (i = 0; i < (sizeof (HashControls) / sizeof (L2_HASH_CONTROL)); i++) {
- UINT8 NBits;
- UINT8 NFuncBits;
- UINT8 NDevBits;
- UINT8 NBusBits;
- LibNbPciIndexRead (IommuPciAddress.AddressValue | L2CFG_INDEX, L2CFG_SEL_WR_EN | HashControls[i].HashControl, AccessWidth32, &Value, pConfig);
- NBits = (UINT8) (Value >> 28) - IommuGetLog2 ((Value >> 16) & 0xff);
- NFuncBits = CIMX_MIN (NBits, 0x3);
- NBits = NBits - NFuncBits;
- NDevBits = CIMX_MIN ( NBits, DevBitsUsed + FuncBitsUsed - NFuncBits);
- NBusBits = NBits - NDevBits;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), " NBusBits = %d, NDevBits = %d, NFuncBits = %d \n", NBusBits, NDevBits, NFuncBits));
- LibNbPciIndexRMW (
- IommuPciAddress.AddressValue | L2CFG_INDEX,
- L2CFG_SEL_WR_EN | (HashControls[i].HashControl + 1),
- AccessS3SaveWidth32,
- 0xFFFFFE00,
- (NFuncBits | (NDevBits << 2) | (NBusBits << 5)) & 0x1FF,
- pConfig
- );
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check to see if current PCI Address is an IOMMU
- *
- * @param[in] IommuPciAddress PCI Address to check
- * @param[in] pConfig Northbridge configuration structure pointer.
- * @retval TRUE if Iommu is enabled and found
- */
-BOOLEAN
-IommuCheckEnable (
- IN PCI_ADDR IommuPciAddress,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 CapBase;
-
- if (pConfig->pNbConfig->IommuBaseAddress == 0x0) {
- return FALSE;
- }
- CapBase = LibNbFindPciCapability (IommuPciAddress.AddressValue, IOMMU_CAPID, pConfig);
- if (CapBase == 0) {
- return FALSE;
- } else {
- return TRUE;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check an RD890 PCIE bridge to see if hot plug is enabled
- *
- * @param[in] DeviceId Device Id to check
- * @param[in] pConfig Northbridge configuration structure pointer.
- * @retval TRUE if current device supports hotplug
- */
-BOOLEAN
-IommuCheckHp (
- IN UINT16 DeviceId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 PciData;
- PCI_ADDR PciAddress;
-
- PciAddress.AddressValue = MAKE_SBDFO (0, (DeviceId >> 8) & 0xFF, (DeviceId >> 3) & 0x1F, DeviceId & 0x7, 0);
-
- LibNbPciRead (PciAddress.AddressValue | NB_PCIP_REG6C, AccessWidth32, &PciData, pConfig);
-
- // Check for hot plug by reading PCIE_SLOT_CAP pcieConfigDev[13:2]:0x6C [6] HOTPLUG_CAPABLE
- PciData &= BIT6;
- if (PciData != 0) {
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check a PCIE device to see if it supports phantom functions
- *
- * @param[in] DeviceId Device Id to check
- * @param[in] pConfig Northbridge configuration structure pointer.
- * @retval TRUE if current device supports phantom functions
- */
-BOOLEAN
-IommuCheckPhantom (
- IN UINT16 DeviceId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 PciData;
- UINT8 PcieCapBase;
- PCI_ADDR PciAddress;
-
- PciAddress.AddressValue = MAKE_SBDFO (0, (DeviceId >> 8) & 0xFF, (DeviceId >> 3) & 0x1F, DeviceId & 0x7, 0);
-
- // Check for phantom functions by reading PCIE Device Capabilities register (base + 4) [4:3] 0 = not supported
- PcieCapBase = LibNbFindPciCapability (PciAddress.AddressValue, PCIE_CAPID, pConfig);
- if (PcieCapBase != 0) {
- LibNbPciRead (((PciAddress.AddressValue) | (PcieCapBase + 4)), AccessWidth32, &PciData, pConfig);
- PciData &= PCIE_PHANTOMMASK;
- if (PciData != 0) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check to see if current PCI Address is a multi-port PCIE core
- *
- * @param[in] DeviceId 16-bit device id to check
- * @retval L1 configuration select
- */
-UINT32
-IommuGetL1 (
- IN UINT16 DeviceId
- )
-{
- // This function translates an RD890 multi-port pci core to the offset of the L1 entry
- // corresponding to it. An unknown device returns as invalid
- switch (DeviceId) {
- case DEVICEID_GPP1_0 :
- return L1CFG_SEL_GPP1;
- case DEVICEID_GPP1_1 :
- return L1CFG_SEL_GPP1;
- case DEVICEID_GPP2_0 :
- return L1CFG_SEL_GPP2;
- case DEVICEID_GPP2_1 :
- return L1CFG_SEL_GPP2;
- case DEVICEID_GPP3A_0 :
- return L1CFG_SEL_GPP3A;
- case DEVICEID_GPP3A_1 :
- return L1CFG_SEL_GPP3A;
- case DEVICEID_GPP3A_2 :
- return L1CFG_SEL_GPP3A;
- case DEVICEID_GPP3A_3 :
- return L1CFG_SEL_GPP3A;
- case DEVICEID_GPP3A_4 :
- return L1CFG_SEL_GPP3A;
- case DEVICEID_GPP3A_5 :
- return L1CFG_SEL_GPP3A;
- case DEVICEID_GPP3B_0 :
- return L1CFG_SEL_GPP3B;
- default:
- return PCI_INVALID;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVHD Device Entries
- *
- * @param[in] Value Value to find the logarithm of
- * @retval Logarithm of input Value
- */
-UINT8
-IommuGetLog2 (
- IN UINT32 Value
- )
-{
- UINT8 Result;
-
- Result = 0;
-
- // This code will round a 32bit value to the next highest power of 2
- Value--;
- Value |= Value >> 1;
- Value |= Value >> 2;
- Value |= Value >> 4;
- Value |= Value >> 8;
- Value |= Value >> 16;
- Value++;
-
- // Calculate the logarithm
- while (Value >>= 1) {
- Result++;
- }
-
- return Result;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVRS Header for IOMMU ACPI table
- *
- * @param[in, out] BufferPtr Pointer to buffer to return IVRS.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-IommuPlaceHeader (
- IN OUT VOID *BufferPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- IOMMU_IVRS_HEADER *HeaderPtr;
- HeaderPtr = (IOMMU_IVRS_HEADER *)BufferPtr;
- LibAmdMemCopy (HeaderPtr, &RD890S_DfltHeader, sizeof (IOMMU_IVRS_HEADER), (AMD_CONFIG_PARAMS *)&(pConfig->sHeader));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVMD (memory device) Create all IVMD entries for a single exclusion table
- *
- * @param[in, out] BufferPtr Pointer to text buffer to return IVRS
- * @param[in] pConfig Northbridge configuration pointer
- */
-VOID
-IommuPlaceIvmdAndExclusions (
- IN OUT VOID *BufferPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 EntryCount;
- UINT8 CurrentExclusion;
- AGESA_STATUS Status;
- IOMMU_EXCLUSIONTABLE *pExclusion;
- IOMMU_IVRS_HEADER *HeaderPtr;
- IOMMU_IVMD_ENTRY *IvmdPtr;
-
- pExclusion = &RD890S_DfltExclusion;
- HeaderPtr = (IOMMU_IVRS_HEADER *)BufferPtr;
- IvmdPtr = (IOMMU_IVMD_ENTRY *)BufferPtr;
-
- Status = LibNbCallBack (PHCB_AmdGetExclusionTable, (UINTN)&pExclusion, pConfig);
- if (Status == AGESA_SUCCESS) {
- EntryCount = (UINT8) ((pExclusion->TableLength - sizeof (UINTN)) / sizeof (IOMMU_EXCLUSIONRANGE));
- for (CurrentExclusion = 0; CurrentExclusion < EntryCount; CurrentExclusion++) {
- IvmdPtr = (IOMMU_IVMD_ENTRY*) ((UINT8*)HeaderPtr + HeaderPtr->Length);
- IvmdPtr->Type = TYPE_IVMD_ALL; // 20h = All peripherals
- IvmdPtr->Flags = 0x7; // Exclusion range
- IvmdPtr->Length = 32; // 32 byte structure
- IvmdPtr->DeviceId = 0; // Reserved for type 20h
- IvmdPtr->AuxData = 0; // Reserved for type 20h
- IvmdPtr->Reserved = 0;
- IvmdPtr->BlockStartAddress = pExclusion->ExclusionRange[CurrentExclusion].Start;
- IvmdPtr->BlockLength = pExclusion->ExclusionRange[CurrentExclusion].Length;
- HeaderPtr->Length += 32; // Update size of IVRS
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVHD (hardware device) Entry for IOMMU ACPI table
- *
- * @param[in, out] BufferPtr Pointer to text buffer to return IVRS
- * @param[in] pConfig Northbridge configuration pointer
- */
-VOID
-IommuPlaceIvhdAndScanDevices (
- IN OUT VOID *BufferPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
- IOMMU_PCI_TOPOLOGY PciFlags;
- IOMMU_IVRS_HEADER *HeaderPtr;
- IOMMU_IVHD_ENTRY *IvhdPtr;
- PCI_ADDR IommuPciAddress;
-
- HeaderPtr = (IOMMU_IVRS_HEADER *)BufferPtr;
- IvhdPtr = (IOMMU_IVHD_ENTRY *)BufferPtr;
- //PciFlags.PhantomFunction = FALSE;
- PciFlags.MaxBus = 0;
- PciFlags.MaxDevice = 0;
- PciFlags.MaxFunction = 0;
- IommuPciAddress = pConfig->NbPciAddress;
- IommuPciAddress.Address.Function = NB_IOMMU;
-
- IvhdPtr = (IOMMU_IVHD_ENTRY*) ((UINT8*)HeaderPtr + HeaderPtr->Length);
- IvhdPtr->Type = TYPE_IVHD; // Hardware block
- IvhdPtr->Flags = FLAGS_COHERENT | FLAGS_IOTLBSUP | FLAGS_ISOC | FLAGS_RESPASSPW | FLAGS_PASSPW;
- IvhdPtr->Length = 24; // Length = 24 with no devices
- IvhdPtr->DeviceId = (UINT16)((IommuPciAddress.AddressValue >> 12) & 0xFFFF); // Change 32 bit ID into 16 bit
- IvhdPtr->CapabilityOffset = (UINT16) (LibNbFindPciCapability (IommuPciAddress.AddressValue, IOMMU_CAPID, pConfig));
- IvhdPtr->BaseAddress = pConfig->pNbConfig->IommuBaseAddress;
- IvhdPtr->PciSegment = 0;
- LibNbPciRead (IommuPciAddress.AddressValue | (IvhdPtr->CapabilityOffset + 0x10), AccessWidth32, &Value, pConfig);
- IvhdPtr->IommuInfo = (UINT16)(Value & 0x1f); //Set MSInum.
- IvhdPtr->IommuInfo |= ((0x13) << 8); //set UnitID
- IvhdPtr->Reserved = 0;
-
- IommuIvhdNorthbridgeDevices (&PciFlags, IvhdPtr, pConfig);
- if (IommuPciAddress.Address.Bus == 0) {
- IommuIvhdSouthbridgeDevices (&PciFlags, IvhdPtr, pConfig);
- }
- IommuIvhdApicsAndHpets (IvhdPtr, pConfig);
- pConfig->pNbConfig->IommuTpologyInfo = *((UINT32*) &PciFlags);
- HeaderPtr->Length += IvhdPtr->Length;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVHD Device Entries
- *
- * @param[in, out] PciPtr Pci topology flags
- * @param[in, out] IvhdPtr Pointer to IVHD where entry is appended
- * @param[in] pConfig NB config block
- */
-VOID
-IommuIvhdNorthbridgeDevices (
- IN OUT IOMMU_PCI_TOPOLOGY *PciPtr,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- UINT16 CurrentDevice;
- UINT16 DeviceId;
- UINT8 EntryCount;
- IOMMU_DEVICELIST *pDevices;
- PCI_ADDR NbPciAddress;
- PCI_ADDR IommuPciAddress;
-
- pDevices = &RD890S_DfltDevices;
- NbPciAddress = pConfig->NbPciAddress;
- IommuPciAddress = pConfig->NbPciAddress;
-
- IommuPciAddress.Address.Function = NB_IOMMU;
- EntryCount = (UINT8) ((pDevices->TableLength - sizeof (UINT16)) / sizeof (UINT16));
-
- // Run RD890S device table, fixed for current bus
- for (CurrentDevice = 0; CurrentDevice < EntryCount; CurrentDevice++) {
- DeviceId = (UINT16) (NbPciAddress.Address.Bus << 8) | pDevices->Device[CurrentDevice];
- IommuCreateDeviceEntry (PciPtr, DeviceId, IvhdPtr, pConfig);
-
- // CHECK HOTPLUG OR PHANTOM FUNCTION SUPPORT
- // For each device, reset PhantomEnable, but set it as a one-shot. If any device under the northbridge PCIE bridge
- // device has phantom function support enabled, set the L1. Additionally, check the bridge for hotplug, and set the
- // L1 if so.
-
- //PciPtr->PhantomFunction = FALSE;
- //if (PciPtr->PhantomFunction || IommuCheckHp (DeviceId, pConfig)) {
- // if (IommuGetL1 (DeviceId) != PCI_INVALID && LibNbGetRevisionInfo (pConfig).Revision != NB_REV_A11) {
- // // Determine from deviceID which L1
- // LibNbPciIndexRMW (IommuPciAddress.AddressValue | L1CFG_INDEX, L1CFG_SEL_WR_EN | IommuGetL1 (DeviceId), AccessS3SaveWidth32, (UINT32)~BIT0, BIT0, pConfig);
- // }
- //}
- //PciPtr->PhantomFunction = FALSE;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVHD Device Entries
- *
- * @param[in, out] PciPtr PCI topology flags
- * @param[in, out] IvhdPtr Pointer to IVHD where entry is appended
- * @param[in] pConfig NB config structute
- */
-VOID
-IommuIvhdSouthbridgeDevices (
- IN OUT IOMMU_PCI_TOPOLOGY *PciPtr,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- UINT16 DeviceId;
- PCI_ADDR IommuPciAddress;
- IommuPciAddress = pConfig->NbPciAddress;
- IommuPciAddress.Address.Function = NB_IOMMU;
-
- // Assume Device 0x10 Function 0 - Device 0x17 Function 7 belong to the SB
- //PciPtr->PhantomFunction = FALSE;
- for (DeviceId = (0x10 << 3); (DeviceId < (0x18 << 3)); DeviceId++) {
- IommuCreateDeviceEntry (PciPtr, DeviceId, IvhdPtr, pConfig);
- //if (PciPtr->PhantomFunction) {
- // // Enable SB phantom enable
- // LibNbPciIndexRMW (IommuPciAddress.AddressValue | L1CFG_INDEX, L1CFG_SEL_WR_EN | L1CFG_SEL_SB, AccessS3SaveWidth32, (UINT32)~BIT0, BIT0, pConfig);
- //}
- //PciPtr->PhantomFunction = FALSE;
- }
-
-#if defined (IVHD_APIC_SUPPORT) || defined (IVHD_HPET_SUPPORT)
- DeviceId = (SB_DEV << 3); // Bus 0 Dev 14 Func 0
-#endif
-
-#ifdef IVHD_APIC_SUPPORT
- // Southbridge IOAPIC
- IommuCreate8ByteEntry (DE_SPECIAL, DATA_ALLINTS, 0, 0xFF, DeviceId, VARIETY_IOAPIC, IvhdPtr);
-#endif
-
-#ifdef IVHD_HPET_SUPPORT
- // Southbridge HPET
- IommuCreate8ByteEntry (DE_SPECIAL, DATA_ALLINTS, 0, 0, DeviceId, VARIETY_HPET, IvhdPtr);
-#endif
-
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVHD Device Entries
- *
- * @param[in, out] IvhdPtr Pointer to buffer to return IVRS.
- * @param[in] pConfig NB config structute
- */
-VOID
-IommuIvhdApicsAndHpets (
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
-#ifdef IVHD_APIC_SUPPORT
- PCI_ADDR PciAddress;
- UINT16 DeviceId;
- UINT32 PciData;
-
- PciAddress = pConfig->NbPciAddress;
-
- // Northbridge IOAPIC
- DeviceId = (UINT16)((PciAddress.Address.Bus << 8)) | 1; // Bus X Dev 0 Func 0
- LibNbPciRead (PciAddress.AddressValue | 0x4C, AccessWidth32, &PciData, pConfig);
- if (PciData & (UINT32)BIT1) {
- IommuCreate8ByteEntry (DE_SPECIAL, DATA_NOINTS, 0, 0xFF, DeviceId, VARIETY_IOAPIC, IvhdPtr);
- }
-#endif
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVHD device entry (type 2 for single function or 3/4 for multifunction) at end of IVHD entry
- *
- * @param[in, out] PciPtr Pci topology flags
- * @param[in] DeviceId DeviceID of entry to potentially create
- * @param[in, out] IvhdPtr Pointer to IVHD
- * @param[in] pConfig NB config structute
- */
-VOID
-IommuCreateDeviceEntry (
- IN OUT IOMMU_PCI_TOPOLOGY *PciPtr,
- IN UINT16 DeviceId,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- // 8 BYTE DEVICE ENTRY:
- // [0] Type (0x2 = Device, 0x3 = Device Range Start, 0x4 = Device Range End
- // [1] DeviceID LSB (Device/Function)
- // [2] DeviceID MSB (Bus)
- // [3] Data (0 = No legacy interrupts)
-
- // DEVICEID
- // A 16 bit bus/device/function DeviceId consists of:
- // [15:8] Bus
- // [7:3] Device
- // [2:0] Function
-
- PCI_ADDR PciAddress;
- UINT32 PciData;
- UINT8 DeviceCount;
- UINT8 FunctionCount;
- UINT8 PcieCapBase;
- UINT8 PcixCapBase;
-
- BOOLEAN LegacyBridge;
- BOOLEAN MultiFunction;
- BOOLEAN SubFunction;
- BOOLEAN DiscreteEntry;
- UINT8 HighFunction;
- UINT32 ClassCode;
- UINT16 ExtendedCapabilityPtr;
- SB_INFO SbInfo;
- UINT8 SataEnableRegValue;
- BOOLEAN SrIovDevice;
-
- PcieCapBase = 0;
- PcixCapBase = 0;
- LegacyBridge = FALSE;
- MultiFunction = FALSE;
- SubFunction = FALSE;
- DiscreteEntry = FALSE;
- HighFunction = 0;
- SataEnableRegValue = 0;
- SrIovDevice = FALSE;
-
- //For SB700, get combined mode status
- SbInfo = LibAmdSbGetRevisionInfo ((pConfig == NULL)?NULL:GET_BLOCK_CONFIG_PTR (pConfig));
- if (SbInfo.Type == SB_SB700) {
- LibNbPciRead (MAKE_SBDFO (0, 0, 0x14, 0, SATA_ENABLE_REG), AccessWidth8, &SataEnableRegValue , pConfig);
- }
-
-
- // If the device to check does not exist, exit
- PciAddress.AddressValue = MAKE_SBDFO (0, (DeviceId >> 8) & 0xFF, (DeviceId >> 3) & 0x1F, DeviceId & 0x7, 0);
- if (!LibNbIsDevicePresent (PciAddress, pConfig)) {
- return;
- };
- LibNbPciRead (PciAddress.AddressValue | PCI_CLASS, AccessWidth32, &ClassCode, pConfig);
- ClassCode = (ClassCode >> 16) & 0xFFFF; // Keep class code and sub-class only
-
- // THREE STAGES TO THIS FUNCTION
- // 1. Check for multifunction or special devices
- // 2. Place device entry for the current device ID
- // 3. If a bridge, decide if we need to traverse further
-
- // STEP 1 - CHECK FUNCTIONS ON THIS DEVICE
- // To make decisions, we will need several pieces of information about this device not found with current SBDFO
- // 1. Multifunction device - To determine if a device entry, or device range entry is needed - check function 0 only
- // 2. DisableRange - We will create single entries a device containing a PCI or PCIE bridge
- // 3. How many functions on this device?
-
- PciAddress.AddressValue = MAKE_SBDFO (0, (DeviceId >> 8) & 0xFF, (DeviceId >> 3) & 0x1F, 0, 0);
- LibNbPciRead (PciAddress.AddressValue | PCI_HEADER, AccessWidth32, &PciData, pConfig);
- if ((PciData & PCI_MULTIFUNCTION) != 0) {
- MultiFunction = TRUE;
- } else {
- DiscreteEntry = TRUE;
- }
- if ((DeviceId & 0x7) != 0 && MultiFunction) {
- SubFunction = TRUE;
- }
-
- if (MultiFunction) {
- for (FunctionCount = 0; FunctionCount < 8; FunctionCount++) {
- PciAddress.AddressValue = MAKE_SBDFO (0, (DeviceId >> 8) & 0xFF, (DeviceId >> 3) & 0x1F, FunctionCount, 0);
- LibNbPciRead (PciAddress.AddressValue | PCI_HEADER, AccessWidth32, &PciData, pConfig);
- if (PciData != PCI_INVALID) {
- HighFunction = FunctionCount;
- }
- LibNbPciRead (PciAddress.AddressValue | PCI_CLASS, AccessWidth32, &PciData, pConfig);
- if (((PciData >> 16) & 0xFFFF) == PCI_BRIDGE_CLASS) {
- DiscreteEntry = TRUE;
- }
- }
- }
-
- // For SR IOV devices set for all functions to be available
- if (MultiFunction && (!DiscreteEntry) && (!SubFunction)) {
- PciAddress.AddressValue = MAKE_SBDFO (0, (DeviceId >> 8) & 0xFF, (DeviceId >> 3) & 0x1F, 0, 0);
- ExtendedCapabilityPtr = LibNbFindPcieExtendedCapability (PciAddress.AddressValue, 0x10, pConfig);
- if (ExtendedCapabilityPtr != 0) {
- SrIovDevice = TRUE;
- }
- }
- // STEP 2 - PLACE DEVICE ENTRY
- // We have already decided whether we should use discrete type2 entries, or ranged type3/4 entries
- // Place each device entry at the end of the current IVHD
- // In each case, increment the maximum bus/device/function for L2 cache control done after the IVHD is created
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), "[NBIOMMU]Placing Entry for Device [0x%x]\n", DeviceId));
-
- //if (IommuCheckPhantom (DeviceId, pConfig)) {
- // PciPtr->PhantomFunction = TRUE;
- //}
-
- if (!MultiFunction || DiscreteEntry) {
- //For Device 0x14, function 0, Set DATA_ALLINTS
- if (DeviceId == (SB_DEV << 3)) {
- IommuCreate4ByteEntry (DE_SELECT, DATA_ALLINTS, DeviceId, IvhdPtr);
- } else if (DeviceId == DEVICEID_IDE) {
- // For IDE device 0x14, function 1, first check if in combined mode
- if (SataEnableRegValue & SATA_COMBINED_MODE) {
- // Create Alias entry in combined mode
- IommuCreate8ByteEntry (DE_ALIASSELECT, DATA_NOINTS, DEVICEID_IDE, 0, DEVICEID_SATA, 00, IvhdPtr);
- } else {
- //Create select entry if not in the combined mode
- IommuCreate4ByteEntry (DE_SELECT, 0, DeviceId, IvhdPtr);
- }
- } else {
- // For all other single function devices other than device 0x14, functions 0 or 1, create select entry
- IommuCreate4ByteEntry (DE_SELECT, 0, DeviceId, IvhdPtr);
- }
-
- // Record the largest bus, device, function which will be used as a mask by the Iommu L2 cache
- // Record if phantom device present for current device. Only set it if present, do not clear.
-// if (IommuCheckPhantom (DeviceId, pConfig)) {
-// PciPtr->PhantomFunction = TRUE;
-// }
- IommuRecordBusDevFuncInfo (PciPtr, DeviceId, pConfig);
- }
-
- if (MultiFunction && (!DiscreteEntry) && (!SubFunction)) {
-
- // This is a multifunction device without a bridge, so create a type 3 and 4 device entry
- IommuCreate4ByteEntry (DE_START, 0, DeviceId, IvhdPtr);
- if (SrIovDevice) {
- IommuCreate4ByteEntry (DE_END, 0, (DeviceId | 0x00FF), IvhdPtr);
- } else {
- IommuCreate4ByteEntry (DE_END, 0, DeviceId + HighFunction, IvhdPtr);
- }
-
- // Record the largest bus, device, function which will be used as a mask by the Iommu L2 cache
- // Record if phantom device present for current device. Only set it if present, do not clear.
-// if (IommuCheckPhantom (DeviceId, pConfig)) {
-// PciPtr->PhantomFunction = TRUE;
-// }
- IommuRecordBusDevFuncInfo (PciPtr, DeviceId + HighFunction, pConfig);
- }
-
- if (ClassCode == PCI_BRIDGE_CLASS) {
- UINTN Type;
- UINT32 BusData;
- // STEP 3 - BRIDGE DEVICE
- // These are treated a little differently. We already created the entry for the bridge itself...
- // For a PCIe bridge, continue down the bridge device creating more entries until we find an endpoint
- // For a PCI bridge, define the entire sub-bus range as belonging to this source id
- // For a PCIX bridge, figure out which mode it is operating in
- PciAddress.AddressValue = MAKE_SBDFO (0, (DeviceId >> 8) & 0xFF, (DeviceId >> 3) & 0x1F, DeviceId & 0x7, 0);
- LibNbPciRead (PciAddress.AddressValue | PCI_BUS, AccessWidth32, &BusData, pConfig);
- PcieCapBase = LibNbFindPciCapability (PciAddress.AddressValue, PCIE_CAPID, pConfig);
- PcixCapBase = LibNbFindPciCapability (PciAddress.AddressValue, PCIX_CAPID, pConfig);
-
- Type = 0;
- if (PcieCapBase != 0) {
- Type = 1;
- LibNbPciRead (PciAddress.AddressValue | PcieCapBase, AccessWidth32, &PciData, pConfig);
- PciData = (PciData >> 16) & PCIE_PORTMASK; // [7:4] are Device/Port type, 01
- if (PciData == PCIE_PCIE2PCIX) {
- Type = 2;
- }
- }
- if (PcixCapBase != 0) {
- Type = 2;
- }
-
- //For Hot plug capable devices, create 'Start of range' and 'End of range' IVRS'.
- // This will override Type 1 and Type 2.
- if (IommuCheckHp (DeviceId, pConfig)) {
- Type = 3;
- }
-
- switch (Type) {
- case 0:
- //PCI
- IommuRecordBusDevFuncInfo (PciPtr, DeviceId, pConfig);
- IommuCreate8ByteEntry (DE_ALIASSTART, DATA_NOINTS, (UINT16) (BusData & 0xFF00), 0, DeviceId, 0, IvhdPtr);
- IommuCreate4ByteEntry (DE_END, 0, (UINT16) (((BusData & 0xFF0000) >> 8) + 0xFF), IvhdPtr);
- break;
- case 1:
- //Pcie (non hot plug)
- for (DeviceCount = 0; DeviceCount <= 0x1f; DeviceCount++) {
- for (FunctionCount = 0; FunctionCount <= 0x7; FunctionCount++) {
- IommuCreateDeviceEntry (PciPtr, ((UINT16) (BusData & 0xFF00)) | (DeviceCount << 3) | FunctionCount, IvhdPtr, pConfig);
- }
- }
- break;
- case 2:
- //PCIx
- IommuRecordBusDevFuncInfo (PciPtr, (UINT16) (BusData & 0xFF00), pConfig);
- IommuCreate8ByteEntry (DE_ALIASSTART, DATA_NOINTS, (UINT16) ((BusData & 0xFF00) | ( 1 << 3)), 0, (UINT16) (BusData & 0xFF00), 0, IvhdPtr);
- IommuCreate4ByteEntry (DE_END, 0, (UINT16) (((BusData & 0xFF0000) >> 8) + 0xFF), IvhdPtr);
- break;
- case 3:
- //For Hot plug ports, set all devices and functions behind the secondary bus.
- IommuCreate4ByteEntry (DE_START, 0, (UINT16) (BusData & 0xFF00), IvhdPtr); // Secondary bus, Device 0, Function 0
- IommuCreate4ByteEntry (DE_END, 0, (UINT16) ((BusData & 0xFF00) | (0x1F << 3) | 7), IvhdPtr); // Secondary bus, Device 1f, Function 7
- break;
- default:
- CIMX_ASSERT (FALSE);
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Place IVHD device entry (type 2 for single function or 3/4 for multifunction) at end of IVHD entry
- *
- * @param[in, out] PciPtr Pci topology flags
- * @param[in] DeviceId DeviceID
- * @param[in] pConfig NB config structute
- */
-VOID
-IommuRecordBusDevFuncInfo (
- IN OUT IOMMU_PCI_TOPOLOGY *PciPtr,
- IN UINT16 DeviceId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT16 ExtendedCapabilityPtr;
- PCI_ADDR Device;
- Device.AddressValue = MAKE_SBDFO (0, DeviceId >> 8, (DeviceId >> 3) & 0x1f, DeviceId & 0x7, 0);
-#ifdef EXCLUDE_SB_DEVICE_FROM_L2_HASH
- if ((UINT8)Device.Address.Bus == 0) {
- AMD_NB_CONFIG_BLOCK *ConfigPtr = GET_BLOCK_CONFIG_PTR (pConfig);
- if (ConfigPtr->PlatformType == ServerPlatform) {
- return;
- }
- }
-#endif
- Device.AddressValue = MAKE_SBDFO (0, DeviceId >> 8, (DeviceId >> 3) & 0x1f, DeviceId & 0x7, 0);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NB_TRACE), " Device Data For L2 Hash Bus = 0x%x Device = 0x%x Func = 0x%x\n", Device.Address.Bus, Device.Address.Device, Device.Address.Function));
- ExtendedCapabilityPtr = LibNbFindPcieExtendedCapability (Device.AddressValue, 0x10, pConfig);
- if (ExtendedCapabilityPtr != 0) {
- UINT16 TotalVF;
- LibNbPciRead (Device.AddressValue | (ExtendedCapabilityPtr + 0xE), AccessWidth16, &TotalVF, pConfig);
- PciPtr->MaxFunction = CIMX_MAX (PciPtr->MaxFunction, TotalVF);
- }
- PciPtr->MaxBus = CIMX_MAX (PciPtr->MaxBus, (UINT8)Device.Address.Bus);
- PciPtr->MaxDevice = CIMX_MAX (PciPtr->MaxDevice, (UINT8)Device.Address.Device);
- PciPtr->MaxFunction = CIMX_MAX (PciPtr->MaxFunction, (UINT16) (UINT8)Device.Address.Function);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Append data entry to IVRS
- *
- * @param[in] Type IVRC entry type
- * @param[in] Data IVRC entry data
- * @param[in] Word1 IVRC entry data
- * @param[in, out] IvhdPtr Current IVHD pointer
- *
- */
-VOID
-IommuCreate4ByteEntry (
- IN UINT8 Type,
- IN UINT8 Data,
- IN UINT16 Word1,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr
- )
-{
- UINT32 Buffer;
- UINT16 AlignedDeviceEntryIndex;
- UINT16 DeviceEntryIndex;
-
- Buffer = Type + (Word1 << 8) + (Data << 24);
- DeviceEntryIndex = (IvhdPtr->Length - 24) / sizeof (UINT32);
- AlignedDeviceEntryIndex = DeviceEntryIndex;
-
-#ifdef IVHD_MIN_8BYTE_ALIGNMENT
- AlignedDeviceEntryIndex = (DeviceEntryIndex + 1) & 0xfffe;
-#endif
-
- IvhdPtr->DeviceEntry[AlignedDeviceEntryIndex] = Buffer;
- IvhdPtr->Length += (4 + (AlignedDeviceEntryIndex - DeviceEntryIndex) * 4);
- CIMX_TRACE ((TRACE_DATA (NULL, CIMX_NB_TRACE), "[NBIOMMU]Added entry - [0x%x]\n", Buffer));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Append data entry to IVRS
- *
- * @param[in] Type IVRC entry type
- * @param[in] Data IVRC entry data
- * @param[in] Word1 IVRC entry data
- * @param[in] Byte4 IVRC entry data
- * @param[in] Word5 IVRC entry data
- * @param[in] Byte7 IVRC entry data
- * @param[in, out] IvhdPtr Current IVHD pointer
- *
- */
-VOID
-IommuCreate8ByteEntry (
- IN UINT8 Type,
- IN UINT8 Data,
- IN UINT16 Word1,
- IN UINT8 Byte4,
- IN UINT16 Word5,
- IN UINT8 Byte7,
- IN OUT IOMMU_IVHD_ENTRY *IvhdPtr
- )
-{
- UINT16 AlignedDeviceEntryIndex;
- UINT16 DeviceEntryIndex;
- UINT64 Buffer;
-
- Buffer = Type + (Word1 << 8) + ((UINT32)Data << 24);
- ((UINT32*)&Buffer)[1] = Byte4 + (Word5 << 8) + (Byte7 << 24);
- DeviceEntryIndex = (IvhdPtr->Length - 24) / sizeof (UINT32);
- AlignedDeviceEntryIndex = DeviceEntryIndex;
-
-#if defined (IVHD_MIN_8BYTE_ALIGNMENT) || defined (IVHD_SIZE_ALIGNMENT)
- AlignedDeviceEntryIndex = (DeviceEntryIndex + 1) & 0xfffe;
-#endif
- IvhdPtr->DeviceEntry[AlignedDeviceEntryIndex] = ((UINT32*)&Buffer)[0];
- IvhdPtr->DeviceEntry[AlignedDeviceEntryIndex + 1] = ((UINT32*)&Buffer)[1];
- IvhdPtr->Length += (8 + (AlignedDeviceEntryIndex - DeviceEntryIndex) * 4);
- CIMX_TRACE ((TRACE_DATA (NULL, CIMX_NB_TRACE), "[NBIOMMU]Added entry - [0x%llx]\n", Buffer));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set checksum, IvInfo, finish IVRS table
- *
- * @param[in, out] BufferPtr Pointer to text buffer to return IVRS.
- * @param[in, out] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-IommuFinalizeIvrs (
- IN OUT VOID *BufferPtr,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- IOMMU_IVRS_HEADER *HeaderPtr;
- PCI_ADDR IommuPciAddress;
- UINT32 PciData;
-
- HeaderPtr = (IOMMU_IVRS_HEADER *)BufferPtr;
- IommuPciAddress = pConfig->NbPciAddress;
- IommuPciAddress.Address.Function = NB_IOMMU;
-
- // Find common IvInfo (largest shared) 0x50
- // [22] = ATS Translation Reserved
- // [21:15] = VA Size
- // [14:8] = PA Size
-
- LibNbPciRead (IommuPciAddress.AddressValue | RD890S_CAP_MISC, AccessWidth32, &PciData, pConfig);
- PciData &= (IVINFO_ATSMASK | IVINFO_VAMASK | IVINFO_PAMASK);
- HeaderPtr->IvInfo = PciData;
-
- //LibAmdUpdateAcpiTableChecksum (HeaderPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Nb Iommu Fixup of IVRS APIC entries
- *
- * @param[in] DevicePtr Pointer to current device entry
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-UINT64
-IommuGetApicBaseAddress (
- IN VOID *DevicePtr,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCI_ADDR PciAddress;
- UINT16 DeviceId;
- UINT32 Data;
-
- // If no pointer provided, return no base address
- if (DevicePtr == NULL) {
- return 0;
- }
-
- // Special entry can be IOAPIC or other(HPET). We only care about the IOAPIC.
- if (*(UINT8*) ((UINT8*)DevicePtr + DE_SPECIAL_VARIETY) != VARIETY_IOAPIC) {
- return 0;
- }
-
- DeviceId = *(UINT16*) ((UINT8*)DevicePtr + DE_DEVICEID);
- PciAddress.AddressValue = MAKE_SBDFO (0, (DeviceId >> 8) & 0xFF, (DeviceId >> 3) & 0x1F, 0, 0);
-
- // An APIC entry will only be created for AMD northbridge or southbridges, so
- // we can assume PCI dev/func = 0, 0 will be a northbridge IOAPIC device
- // and any other will be a southbridge IOAPIC device. If the device was not
- // already enabled and known to be an AMD device, no entry would have been created.
-
- if ((PciAddress.Address.Device == NB_PCI_DEV) && (PciAddress.Address.Function == NB_HOST)) {
-
- // We have an AMD NB, check function 0
- Data = 1;
- PciAddress.Address.Function = 0;
- LibNbPciWrite (PciAddress.AddressValue | 0xF8, AccessS3SaveWidth32, &Data, pConfig);
- LibNbPciRead (PciAddress.AddressValue | 0xFC, AccessWidth32, &Data, pConfig);
- } else {
- SB_INFO SbInfo;
- SbInfo = LibAmdSbGetRevisionInfo ((pConfig == NULL)?NULL:GET_BLOCK_CONFIG_PTR (pConfig));
- if (SbInfo.Type == SB_SB700) {
- PciAddress.Address.Function = 0;
- LibNbPciRead (PciAddress.AddressValue | 0x74, AccessWidth32, &Data, pConfig);
- } else {
- LibAmdSbPmioRead ( 0x34, AccessWidth32, &Data, pConfig);
- }
- }
- return ((UINT64) (Data & 0xFFFFFF00));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Nb Iommu Fixup of IVRS APIC entries
- *
- * @param[in] BaseAddress Base address to match
- * @param[in] MadtPtr Pointer to current device entry
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-UINT8
-IommuGetApicId (
- IN UINT64 BaseAddress,
- IN VOID *MadtPtr,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- VOID *EntryPtr;
-
- EntryPtr = LibAmdGetFirstMadtStructure (MADT_APIC_TYPE, MadtPtr);
-
- do {
- // If our base address for a known device matches this MADT, get the APIC ID
- if (*(UINT32*) ((UINT8*)EntryPtr + MADT_APIC_BASE) == (UINT32)BaseAddress) {
- return *(UINT8*) ((UINT8*)EntryPtr + MADT_APIC_ID);
- }
- EntryPtr = LibAmdGetNextMadtStructure (MADT_APIC_TYPE, EntryPtr, MadtPtr);
- } while (EntryPtr != NULL);
- return 0xFF;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Disconnect unused PCIe core from IOMMU block.
- *
- * @param[in] CoreId Pcie Core Id
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-NbIommuDisconnectPcieCore (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCI_ADDR IommuPciAddress;
- UINT32 Value;
- IommuPciAddress = pConfig->NbPciAddress;
- IommuPciAddress.Address.Function = NB_IOMMU;
- Value = 1 << ((0x4310 >> (CoreId * 4)) & 0xf);
- LibNbPciIndexRMW (IommuPciAddress.AddressValue | L2CFG_INDEX, L2CFG_SEL_WR_EN | L2REG_46, AccessS3SaveWidth32, 0xFFFFFFFF, Value , pConfig);
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbIommu.h b/src/vendorcode/amd/cimx/rd890/nbIommu.h
deleted file mode 100644
index 7fc2c5c908..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbIommu.h
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
- * @file
- *
- * Routines for IOMMU.
- *
- * Implement the IOMMU init and ACPI feature.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-// Identifying an IOMMU:
-// RD890S - IOMMU present
-// all other (including RD890) - IOMMU not present
-// Class = System Base Peripheral (08h)
-// Subclass = IOMMU (06h)
-// Programming Interface Code = 0h
-// Must reside on top/root complex PCI hierarchy
-// There is always a NB device at bus 0 device 0 function 0 (fcn 2 for IOMMU) - device ID 0x5A23
-
-// Inputs:
-// From OEM: Get exclusion table
-// From OEM: Get text buffer
-
-// Outputs:
-// To OEM: Complete IVRS table for linking
-
-#ifndef _NBIOMMU_H_
-#define _NBIOMMU_H_
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-AGESA_STATUS
-NbIommuInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbIommuInitS3 (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbIommuAcpiInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbIommuAcpiFixup (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-VOID
-NbIommuDisconnectPcieCore (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-// IOMMU Architectural
-#define IVRS_BUFFER_SIZE 0x2000 // Default 8KB allocated to table
-//#define IVHD_MIN_8BYTE_ALIGNMENT // Align IVHD entries on 8 byte boundary
-#define IVHD_SIZE_ALIGNMENT // Align IVHD entries on MOD entry-size boundary
-#define IVHD_HPET_SUPPORT // Create HPET entries
-#define IVHD_APIC_SUPPORT // Create IOAPIC entries
-
-// IOMMU Northbridge
-#define RD890S_CAP_MISC 0x50 // RD890/S Capabilities Misc Info
-#define NB_PCI_DEV 0 // PCI NB device number
-#define NB_HOST 0 // Function 0 = NB HOST
-#define NB_IOMMU 2 // Function 2 = IOMMU
-#define SB_DEV 0x14 // PCI SB device number
-#define SB_SMBUS 3 // Function 3 = SMBUS
-#define SB_SATA 0x11 // SB SATA
-#define SATA_ENABLE_REG 0xAD // Dev. 0x14, Func 0, Reg 0xAD for SATA combined mode
-#define SATA_COMBINED_MODE BIT3 // Bit 3 of SB_ENABLE_REG., 1 = Combined mode
-
-#define IOMMU_CAP_HEADER_OFFSET 0x00
-#define IOMMU_BASE_LOW_OFFSET 0x04
-#define IOMMU_BASE_HIGH_OFFSET 0x08
-#define IOMMU_RANGE_OFFSET 0x0C
-#define IOMMU_MISC_OFFSET 0x10
-
-#define DEVICEID_NB ((0 << 8) + (NB_PCI_DEV << 3) + NB_HOST)
-#define DEVICEID_IOMMU ((0 << 8) + (NB_PCI_DEV << 3) + NB_IOMMU)
-#define DEVICEID_GPP1_0 ((0 << 8) + (0x2 << 3) + 0)
-#define DEVICEID_GPP1_1 ((0 << 8) + (0x3 << 3) + 0)
-#define DEVICEID_GPP2_0 ((0 << 8) + (0xB << 3) + 0)
-#define DEVICEID_GPP2_1 ((0 << 8) + (0xC << 3) + 0)
-#define DEVICEID_GPP3A_0 ((0 << 8) + (0x4 << 3) + 0)
-#define DEVICEID_GPP3A_1 ((0 << 8) + (0x5 << 3) + 0)
-#define DEVICEID_GPP3A_2 ((0 << 8) + (0x6 << 3) + 0)
-#define DEVICEID_GPP3A_3 ((0 << 8) + (0x7 << 3) + 0)
-#define DEVICEID_GPP3A_4 ((0 << 8) + (0x9 << 3) + 0)
-#define DEVICEID_GPP3A_5 ((0 << 8) + (0xA << 3) + 0)
-#define DEVICEID_GPP3B_0 ((0 << 8) + (0xD << 3) + 0)
-
-#define DEVICEID_SATA ((0 << 8) + (0x11 << 3) + 0)
-#define DEVICEID_IDE ((0 << 8) + (0x14 << 3) + 1)
-
-#define L1CFG_INDEX 0xF8
-// There is an L1 for each device (6), which is selected by [19:16] of L1CFG_INDEX
-// e.g. (LibNbPciIndexRead (Address | L1CFGIND, L1_REG_0C | L1_CFG_SEL, AccessWidth32, &Value, pConfig)
-#define L1CFG_SEL_WR_EN 0x80000000
-#define L1CFG_SEL_GPP1 0x00000000
-#define L1CFG_SEL_GPP2 0x00010000
-#define L1CFG_SEL_SB 0x00020000
-#define L1CFG_SEL_GPP3A 0x00030000
-#define L1CFG_SEL_GPP3B 0x00040000
-#define L1CFG_SEL_VC1 0x00050000
-#define L1REG_06 0x6
-#define L1REG_0C 0xC
-#define L1REG_0D 0xD
-#define L1REG_07 0x7
-#define L1CFG_DATA 0xFC
-
-#define L2CFG_INDEX 0xF0
-// e.g. (LibNbPciIndexRead (Address | L2CFGIND, L2_REG_0C, AccessWidth16, &Value, pConfig)
-#define L2CFG_SEL_WR_EN 0x100
-#define L2REG_06 0x6
-#define L2REG_07 0x7
-#define L2REG_0C 0xC
-#define L2REG_10 0x10
-#define L2REG_11 0x11
-#define L2REG_14 0x14
-#define L2REG_15 0x15
-#define L2REG_18 0x18
-#define L2REG_19 0x19
-#define L2REG_1C 0x1C
-#define L2REG_1D 0x1D
-#define L2REG_46 0x46
-#define L2REG_47 0x47
-#define L2REG_50 0x50
-#define L2REG_51 0x51
-#define L2REG_52 0x52
-#define L2REG_56 0x56
-#define L2REG_30 0x30
-#define L2REG_80 0x80
-#define L2CFG_DATA 0xF4
-
-// PCI/PCIe Architectural
-#define PCIE_CAPID 0x10
-#define PCIE_PORTMASK 0xF0 // Device cap reg 2
-#define PCIE_PCIE2PCIX 0x70 // Device cap reg 2
-#define PCIE_PHANTOMMASK 0x18 // Device cap reg 4
-#define PCIX_CAPID 0x07
-#define IOMMU_CAPID 0x0F
-
-#define PCI_DVID 0x00
-#define PCI_INVALID 0xFFFFFFFF
-#define PCI_CLASS 0x08
-#define PCI_HEADER 0x0C
-#define PCI_MULTIFUNCTION 0x00800000
-#define PCI_BUS 0x18
-#define PCI_SUBMASK 0xFF0000
-#define PCI_SECMASK 0xFF00
-#define PCI_PRIMASK 0xFF
-#define PCI_BRIDGE_CLASS 0x0604
-
-// IVRS Table Access
-#define TYPE_IVHD 0x10
-#define IVINFO_ATSMASK 0x00400000 // [22] = ATS
-#define IVINFO_VAMASK 0x003F8000 // [21:15] = Virtual Address Size
-#define IVINFO_PAMASK 0x00007F00 // [14:8] = Physical Address Size
-#define FLAGS_COHERENT BIT5
-#define FLAGS_IOTLBSUP BIT4
-#define FLAGS_ISOC BIT3
-#define FLAGS_RESPASSPW BIT2
-#define FLAGS_PASSPW BIT1
-
-#define TYPE_IVMD_ALL 0x20
-#define TYPE_IVMD_SELECT 0x21
-#define TYPE_IVMD_RANGE 0x22
-
-#define DE_PAD4 1
-#define DE_BYTE0 0
-#define DE_BYTE1 1
-#define DE_BYTE2 2
-#define DE_BYTE3 3
-#define DE_SELECT 2
-#define DATA_NOINTS 0
-#define DATA_LINT_EINT_INIT BIT7 + BIT6 + BIT1 + BIT0
-#define DATA_ALLINTS 0xD7
-#define DE_START 3
-#define DE_END 4
-#define DE_PAD8 64
-#define DE_BYTE4 4
-#define DE_BYTE5 5
-#define DE_BYTE6 6
-#define DE_BYTE7 7
-#define DE_ALIASSELECT 66
-#define DE_ALIASSTART 67
-#define DE_SPECIAL 72
-#define VARIETY_IOAPIC 0x1
-#define VARIETY_HPET 0x2
-#define DE_SPECIAL_VARIETY 7
-#define DE_DEVICEID 5
-#define DE_SPECIAL_ID 4
-
-// MADT Table Access
-#define MADT_APIC_TYPE 0x1
-#define MADT_APIC_ID 0x2
-#define MADT_APIC_BASE 0x4
-
-/*----------------------------------------------------------------------------------------
- * T Y P E D E F S A N D S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-
-
-#pragma pack (push, 1)
-
-/// IVRS header
-typedef struct {
- UINT32 Signature; ///< see IOMMU specification for details
- UINT32 Length; ///< see IOMMU specification for details
- UINT8 Revision; ///< see IOMMU specification for details
- UINT8 Checksum; ///< see IOMMU specification for details
- CHAR8 OemId[6]; ///< see IOMMU specification for details
- CHAR8 OemTableId[8]; ///< see IOMMU specification for details
- CHAR8 OemRevision[4]; ///< see IOMMU specification for details
- CHAR8 CreatorId[4]; ///< see IOMMU specification for details
- CHAR8 CreatorRevision[4]; ///< see IOMMU specification for details
- UINT32 IvInfo; ///< see IOMMU specification for details
- UINT64 Reserved; ///< see IOMMU specification for details
-} IOMMU_IVRS_HEADER;
-
-/// DeviceID
-typedef struct {
- UINT16 TableLength; ///< length of table
- UINT16 Device[]; ///< DeviceID
-} IOMMU_DEVICELIST;
-
-/// PCI Topology Based Settings
-typedef struct {
-// BOOLEAN PhantomFunction; ///< phantom functions present
- UINT8 MaxBus; ///< max bus accumulator
- UINT8 MaxDevice; ///< max device accumulator
- UINT16 MaxFunction; ///< max function accumulator
-} IOMMU_PCI_TOPOLOGY;
-
-/// IVHD for each hardware definition (i.e. # of northbridges)
-typedef struct {
- UINT8 Type; ///< see IOMMU specification for details
- UINT8 Flags; ///< see IOMMU specification for details
- UINT16 Length; ///< see IOMMU specification for details
- UINT16 DeviceId; ///< see IOMMU specification for details
- UINT16 CapabilityOffset; ///< see IOMMU specification for details
- UINT64 BaseAddress; ///< see IOMMU specification for details
- UINT16 PciSegment; ///< see IOMMU specification for details
- UINT16 IommuInfo; ///< see IOMMU specification for details
- UINT32 Reserved; ///< see IOMMU specification for details
- UINT32 DeviceEntry[]; ///< see IOMMU specification for details
-} IOMMU_IVHD_ENTRY;
-
-/// IVMD for each memory range
-typedef struct {
- UINT8 Type; ///< see IOMMU specification for details
- UINT8 Flags; ///< see IOMMU specification for details
- UINT16 Length; ///< see IOMMU specification for details
- UINT16 DeviceId; ///< see IOMMU specification for details
- UINT16 AuxData; ///< see IOMMU specification for details
- UINT64 Reserved; ///< see IOMMU specification for details
- UINT64 BlockStartAddress; ///< see IOMMU specification for details
- UINT64 BlockLength; ///< see IOMMU specification for details
-} IOMMU_IVMD_ENTRY;
-
-//#define IVRS_HANDLE 'SRVI'
-#define IVRS_HANDLE Int32FromChar ('S', 'R', 'V', 'I')
-
-#define L2_DTC_CONTROL 0x10
-#define L2_ITC_CONTROL 0x14
-#define L2_PTC_A_CONTROL 0x18
-#define L2_PTC_B_CONTROL 0x1C
-#define L2_PDC_CONTROL 0x50
-
-#define EXCLUDE_SB_DEVICE_FROM_L2_HASH
-
-/// L2 cache init
-typedef struct {
- UINT8 HashControl; ///<Control regsiter block address
-} L2_HASH_CONTROL;
-
-#pragma pack (pop)
-
-#endif
diff --git a/src/vendorcode/amd/cimx/rd890/nbLib.c b/src/vendorcode/amd/cimx/rd890/nbLib.c
deleted file mode 100644
index 5862768bb0..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbLib.c
+++ /dev/null
@@ -1,1138 +0,0 @@
-/**
- * @file
- *
- * NB library functions.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get silicon type and revision info.
- *
- *
- *
- * @param[in] NbConfigPtr configuration structure pointer.
- * @retval NB_INFO Northbrige Info Structure.
- */
-/*----------------------------------------------------------------------------------------*/
-NB_INFO
-LibNbGetRevisionInfo (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- NB_INFO RevisionInfo;
- UINT16 DeviceId;
- UINT8 RevisionId;
- UINT32 PrivateId;
- LibNbPciRead (NbConfigPtr->NbPciAddress.AddressValue | 0x8, AccessWidth8, &RevisionId, NbConfigPtr);
- RevisionInfo.Revision = RevisionId;
- LibNbPciRead (NbConfigPtr->NbPciAddress.AddressValue | 0x2, AccessWidth16, &DeviceId, NbConfigPtr);
- switch (DeviceId) {
- case 0x5956:
- RevisionInfo.Type = NB_RD890TV;
- break;
- case 0x5957:
- RevisionInfo.Type = NB_RX780;
- break;
- case 0x5958:
- RevisionInfo.Type = NB_RD780;
- break;
- case 0x5A10:
- RevisionInfo.Type = NB_SR5690;
- break;
- case 0x5A11:
- RevisionInfo.Type = NB_RD890;
- break;
- case 0x5A12:
- RevisionInfo.Type = NB_SR5670;
- break;
- case 0x5A13:
- RevisionInfo.Type = NB_SR5650;
- break;
- case 0x5A14:
- RevisionInfo.Type = NB_990FX;
- LibNbPciIndexRead (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG7D, AccessWidth32, &PrivateId, NbConfigPtr);
- PrivateId = (PrivateId >> 21) & 0x0f;
- if (PrivateId == 1) {
- RevisionInfo.Type = NB_990FX;
- }
- if (PrivateId == 2) {
- RevisionInfo.Type = NB_990X;
- }
- if (PrivateId == 3) {
- RevisionInfo.Type = NB_970;
- }
- break;
- default:
- RevisionInfo.Type = NB_UNKNOWN;
- CIMX_ASSERT (FALSE);
- }
- return RevisionInfo;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Call Back routine.
- *
- *
- *
- * @param[in] CallBackId Callback ID.
- * @param[in] Data Callback specific data.
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-LibNbCallBack (
- IN UINT32 CallBackId,
- IN OUT UINTN Data,
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- CALLOUT_ENTRY CallBackPtr = GET_BLOCK_CONFIG_PTR (NbConfigPtr)->StandardHeader.CalloutPtr;
-
- Status = AGESA_UNSUPPORTED;
- if (CallBackPtr != NULL) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NBLIB]LibNbCallBack CallBackId = 0x%x\n", CallBackId));
- Status = (*CallBackPtr) (CallBackId, Data, GET_BLOCK_CONFIG_PTR (NbConfigPtr));
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NBLIB]LibNbCallBack Return = 0x%x\n", Status));
- }
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Call Back routine.
- *
- *
- *
- * @param[in] SystemApi Pointer to System API
- * @param[in] ConfigPtr Northbridge block configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-LibSystemApiCall (
- IN SYSTEM_API SystemApi,
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- API_WORKSPACE Workspace;
- UINT8 NorthbridgeId;
-
- LibAmdMemFill (&Workspace, 0, sizeof (API_WORKSPACE), (AMD_CONFIG_PARAMS *)&(ConfigPtr->StandardHeader));
- Workspace.ConfigPtr = ConfigPtr;
- Workspace.Status = AGESA_SUCCESS;
- for (NorthbridgeId = 0; NorthbridgeId <= ConfigPtr->NumberOfNorthbridges; NorthbridgeId++) {
- ConfigPtr->Northbridges[NorthbridgeId].ConfigPtr = &Workspace.ConfigPtr;
- }
- if (SystemApi != NULL) {
- (*SystemApi)(ConfigPtr);
- }
- return Workspace.Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Call Back routine.
- *
- *
- *
- * @param[in] NbApi Pointer to NB API
- * @param[in] ConfigPtr Northbridge block configuration structure pointer
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-LibNbApiCall (
- IN NB_API NbApi,
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- UINT8 NorthbridgeId;
- AGESA_STATUS Status;
-
- Status = AGESA_SUCCESS;
- for (NorthbridgeId = 0; NorthbridgeId <= ConfigPtr->NumberOfNorthbridges; NorthbridgeId++) {
- AMD_NB_CONFIG *NbConfigPtr = &ConfigPtr->Northbridges[NorthbridgeId];
- ConfigPtr->CurrentNorthbridge = NorthbridgeId;
- if (!LibNbIsDevicePresent (NbConfigPtr->NbPciAddress, NbConfigPtr)) {
- REPORT_EVENT (AGESA_WARNING, GENERAL_ERROR_NB_NOT_PRESENT, 0 , 0, 0, 0, NbConfigPtr);
- continue;
- }
- if (NbApi != NULL) {
- Status = (*NbApi) (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- break;
- }
- }
- }
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Write PCI register.
- *
- *
- *
- * @param[in] Address Compressed PCIE address identical to PCI_ADDR.AddressValue
- * @param[in] Width Access width.
- * @param[in] Value Pointer to new register value.
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbPciWrite (
- IN UINT32 Address,
- IN ACCESS_WIDTH Width,
- IN VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCI_ADDR DeviceAddress;
- DeviceAddress.AddressValue = Address;
- LibAmdPciWrite (Width, DeviceAddress, Value, (AMD_CONFIG_PARAMS *)((NbConfigPtr == NULL)?NULL:GET_BLOCK_CONFIG_PTR (NbConfigPtr)));
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read PCI register
- *
- *
- *
- * @param[in] Address Compressed PCIE address identical to PCI_ADDR.AddressValue
- * @param[in] Width Access width.
- * @param[in] Value Pointer to save register value.
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-LibNbPciRead (
- IN UINT32 Address,
- IN ACCESS_WIDTH Width,
- OUT VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCI_ADDR DeviceAddress;
- DeviceAddress.AddressValue = Address;
- LibAmdPciRead (Width, DeviceAddress, Value, (AMD_CONFIG_PARAMS *)((NbConfigPtr == NULL)?NULL:GET_BLOCK_CONFIG_PTR (NbConfigPtr)));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read/Modify/Write PCI register
- *
- *
- *
- * @param[in] Address Compressed PCIE address identical to PCI_ADDR.AddressValue
- * @param[in] Width Access width.
- * @param[in] Mask AND Mask.
- * @param[in] Data OR Mask.
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-LibNbPciRMW (
- IN UINT32 Address,
- IN ACCESS_WIDTH Width,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Value;
- LibNbPciRead (Address, Width, &Value, NbConfigPtr);
- Value = (Value & Mask) | Data;
- LibNbPciWrite (Address, Width, &Value, NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read PCI Index/Data Address space
- *
- *
- *
- * @param[in] Address Compressed PCIE address identical to PCI_ADDR.AddressValue
- * @param[in] Index Index Address.
- * @param[in] Width Access width of Index/Data register.
- * @param[in] Value Pointer to save register value.
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbPciIndexRead (
- IN UINT32 Address,
- IN UINT32 Index,
- IN ACCESS_WIDTH Width,
- OUT UINT32 *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 IndexOffset;
- IndexOffset = (1 << ((Width < 0x80)? (Width - 1): (Width - 0x81)));
- LibNbPciWrite (Address, Width, &Index, NbConfigPtr);
- LibNbPciRead (Address + IndexOffset, Width, Value, NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Write PCI Index/Data Address space
- *
- *
- *
- * @param[in] Address Compressed PCIE address identical to PCI_ADDR.AddressValue
- * @param[in] Index Index Address.
- * @param[in] Width Access width of Index/Data register.
- * @param[in] Value Pointer to save register value.
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbPciIndexWrite (
- IN UINT32 Address,
- IN UINT32 Index,
- IN ACCESS_WIDTH Width,
- IN UINT32 *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 IndexOffset;
- IndexOffset = (1 << ((Width < 0x80)? (Width - 1): (Width - 0x81)));
- LibNbPciWrite (Address, Width, &Index, NbConfigPtr);
- LibNbPciWrite (Address + IndexOffset , Width, Value, NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read/Modify/Write PCI Index/Data Address space
- *
- *
- *
- * @param[in] Address Compressed PCIE address identical to PCI_ADDR.AddressValue
- * @param[in] Index Index Address.
- * @param[in] Width Access width of Index/Data register.
- * @param[in] Mask AND Mask.
- * @param[in] Data OR Mask.
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbPciIndexRMW (
- IN UINT32 Address,
- IN UINT32 Index,
- IN ACCESS_WIDTH Width,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Value;
- LibNbPciIndexRead (Address, Index, Width, &Value, NbConfigPtr);
- Value = (Value & Mask) | Data;
- LibNbPciIndexWrite (Address, Index, Width, &Value, NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Program table of indirect register.
- *
- *
- *
- * @param[in] Address Compressed PCIE address identical to PCI_ADDR.AddressValue
- * @param[in] Index Index Address. Index address OR with INDIRECT_REG_ENTRY.Register
- * @param[in] pTable Pointer to indirect register table.
- * @param[in] Length Number of entry in indirect register table.
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-LibNbIndirectTableInit (
- IN UINT32 Address,
- IN UINT32 Index,
- IN INDIRECT_REG_ENTRY *pTable,
- IN UINTN Length,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINTN i;
- for (i = 0; i < Length; i++) {
- LibNbPciIndexRMW (Address, Index | pTable[i].Register , AccessS3SaveWidth32, pTable[i].Mask, pTable[i].Data, NbConfigPtr);
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Find PCI capability pointer
- *
- *
- *
- *
- *
- */
-/*----------------------------------------------------------------------------------------*/
-
-UINT8
-LibNbFindPciCapability (
- IN UINT32 Address,
- IN UINT8 CapabilityId,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT8 CapabilityPtr;
- UINT8 CurrentCapabilityId;
- PCI_ADDR Device;
- Device.AddressValue = Address;
- CapabilityPtr = 0x34;
- if (!LibNbIsDevicePresent (Device, NbConfigPtr)) {
- return 0;
- }
- while (CapabilityPtr != 0) {
- LibNbPciRead (Address | CapabilityPtr, AccessWidth8 , &CapabilityPtr, NbConfigPtr);
- if (CapabilityPtr) {
- LibNbPciRead (Address | CapabilityPtr , AccessWidth8 , &CurrentCapabilityId, NbConfigPtr);
- if (CurrentCapabilityId == CapabilityId) break;
- CapabilityPtr++;
- }
- }
- return CapabilityPtr;
-}
-/*----------------------------------------------------------------------------------------*/
-/*
- * Find PCIe extended capability pointer
- *
- *
- *
- *
- *
- */
-/*----------------------------------------------------------------------------------------*/
-
-UINT16
-LibNbFindPcieExtendedCapability (
- IN UINT32 Address,
- IN UINT16 ExtendedCapabilityId,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT16 CapabilityPtr;
- UINT32 ExtendedCapabilityIdBlock;
- if (LibNbFindPciCapability (Address, 0x10, NbConfigPtr) != 0) {
- CapabilityPtr = 0x100;
- LibNbPciRead (Address | CapabilityPtr , AccessWidth32 , &ExtendedCapabilityIdBlock, NbConfigPtr);
- if (ExtendedCapabilityIdBlock != 0 && (UINT16)ExtendedCapabilityIdBlock != 0xffff) {
- do {
- if ((UINT16)ExtendedCapabilityIdBlock == ExtendedCapabilityId) {
- return CapabilityPtr;
- }
- CapabilityPtr = (UINT16) ((ExtendedCapabilityIdBlock >> 20) & 0xfff);
- LibNbPciRead (Address | CapabilityPtr , AccessWidth32 , &ExtendedCapabilityIdBlock, NbConfigPtr);
- } while (CapabilityPtr != 0);
- }
- }
- return 0;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read IO space
- *
- *
- *
- * @param[in] Address IO Port address.
- * @param[in] Width Access width
- * @param[in] Value Pointer to save IO port value;
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbIoRead (
- IN UINT16 Address,
- IN ACCESS_WIDTH Width,
- OUT VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- LibAmdIoRead (Width, Address, Value, (AMD_CONFIG_PARAMS *)((NbConfigPtr == NULL)?NULL:GET_BLOCK_CONFIG_PTR (NbConfigPtr)));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Write IO space
- *
- *
- *
- * @param[in] Address IO Port address.
- * @param[in] Width Access width
- * @param[in] Value Pointer to new IO port value
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-VOID
-LibNbIoWrite (
- IN UINT16 Address,
- IN ACCESS_WIDTH Width,
- IN VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- LibAmdIoWrite (Width, Address, Value, (AMD_CONFIG_PARAMS *)((NbConfigPtr == NULL)?NULL:GET_BLOCK_CONFIG_PTR (NbConfigPtr)));
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read/Modify/Write IO space
- *
- *
- *
- * @param[in] Address IO Port address.
- * @param[in] Width Access width
- * @param[in] Mask AND Mask
- * @param[in] Data OR Mask
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbIoRMW (
- IN UINT16 Address,
- IN ACCESS_WIDTH Width,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Value;
- LibNbIoRead (Address, Width, &Value, NbConfigPtr);
- Value = (Value & Mask) | Data;
- LibNbIoWrite (Address, Width, &Value, NbConfigPtr);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read CPU HT link Phy register
- *
- *
- *
- * @param[in] Node Node device Address (0x18 - Node 0, 0x19 - Mode 1 etc.)
- * @param[in] Link HT Link ID (0 - Link 0, 1 - Link 1 etc.)
- * @param[in] Register Register address.
- * @param[in] Value Pointer to save register value
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbCpuHTLinkPhyRead (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT16 Register,
- OUT UINT32 *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Data;
- PCI_ADDR CpuPciAddress;
- UINT8 LinkId;
- LinkId = Link & 0xf;
- CpuPciAddress.AddressValue = MAKE_SBDFO (0, 0, Node, 4, 0);
- LibNbPciRMW (CpuPciAddress.AddressValue | (LinkId * 8 + 0x180), AccessWidth32, 0x0, Register | ((Register & 0xfe00)?BIT29:0), NbConfigPtr);
- do {
- LibNbPciRead (CpuPciAddress.AddressValue | (LinkId * 8 + 0x180), AccessWidth32, &Data, NbConfigPtr);
- } while ((Data & BIT31) == 0);
- LibNbPciRead (CpuPciAddress.AddressValue | (LinkId * 8 + 0x184), AccessWidth32, Value, NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Write CPU HT link Phy register
- *
- *
- *
- * @param[in] Node Node device Address (0x18 - Node 0, 0x19 - Mode 1 etc.)
- * @param[in] Link HT Link ID (0 - Link 0, 1 - Link 1 etc.)
- * @param[in] Register Register address.
- * @param[in] Value Pointer to new register value
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbCpuHTLinkPhyWrite (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT16 Register,
- IN UINT32 *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Data;
- PCI_ADDR CpuPciAddress;
- UINT8 LinkId;
- LinkId = Link & 0xf;
- CpuPciAddress.AddressValue = MAKE_SBDFO (0, 0, Node, 4, 0);
- LibNbPciWrite (CpuPciAddress.AddressValue | (LinkId * 8 + 0x184), AccessWidth32, Value, NbConfigPtr);
- LibNbPciRMW (CpuPciAddress.AddressValue | (LinkId * 8 + 0x180), AccessWidth32, 0x0, Register | BIT30 | ((Register & 0xfe00)?BIT29:0), NbConfigPtr);
- do {
- LibNbPciRead (CpuPciAddress.AddressValue | (LinkId * 8 + 0x180), AccessWidth32, &Data, NbConfigPtr);
- } while ((Data & BIT31) == 0);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read/Modify/Write CPU HT link Phy register
- *
- *
- *
- * @param[in] Node Node device Address (0x18 - Node 0, 0x19 - Mode 1 etc.)
- * @param[in] Link HT Link ID (0 - Link 0, 1 - Link 1 etc.)
- * @param[in] Register Register address.
- * @param[in] Mask AND Mask.
- * @param[in] Data OR Mask.
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-LibNbCpuHTLinkPhyRMW (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT16 Register,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Value;
- LibNbCpuHTLinkPhyRead (Node, Link, Register, &Value, NbConfigPtr);
- Value = (Value & Mask) | Data;
- LibNbCpuHTLinkPhyWrite (Node, Link, Register, &Value, NbConfigPtr);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Enable Clock Config space access.
- * Enable access to Clock Config Space at 0:0:1 PCI address.
- *
- *
- * @param[in] pConfig Northbridge configuration block pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbEnableClkConfig (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- LibNbPciRMW (NB_SBDFO | NB_PCI_REG4C, AccessS3SaveWidth8, (UINT32)~BIT0, BIT0, pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Disable Clock Config space access.
- * Disable access to Clock Config Space at 0:0:1 PCI address.
- *
- *
- * @param[in] pConfig Northbridge configuration block pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbDisableClkConfig (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- LibNbPciRMW (NB_SBDFO | NB_PCI_REG4C, AccessS3SaveWidth8, (UINT32)~BIT0, 0x0 , pConfig);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check if PCI Device Present
- *
- *
- *
- * @param[in] Device Device PCI address.
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- *
- * @retval TRUE Device present.
- * @retval FALSE Device not present.
- */
-/*----------------------------------------------------------------------------------------*/
-
-BOOLEAN
-LibNbIsDevicePresent (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 VendorId;
- LibNbPciRead (Device.AddressValue, AccessWidth32, &VendorId, NbConfigPtr);
- return (VendorId == 0xffffffff)?FALSE:TRUE;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check if IOMMU enabled
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- *
- * @retval TRUE IOMMU not enabled.
- * @retval FALSE IOMMU not enabled.
- */
-/*----------------------------------------------------------------------------------------*/
-BOOLEAN
-LibNbIsIommuEnabled (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCI_ADDR IommuAddress;
- IommuAddress.AddressValue = NbConfigPtr->NbPciAddress.AddressValue;
- IommuAddress.Address.Function = 2;
- if (LibNbIsDevicePresent (IommuAddress, NbConfigPtr)) {
- UINT8 Value;
- LibNbPciRead (IommuAddress.AddressValue | 0x44, AccessWidth8, &Value, NbConfigPtr);
- if ((Value & BIT0) != 0) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Reverse bit in DWORD.
- * Reverse bits in bitfield inside DWORD.
- *
- *
- * @param[in] Data Value to reverse.
- * @param[in] StartBit Start bit.
- * @param[in] StopBit Stop bit.
- * @retval Reversed Value.
- */
-/*----------------------------------------------------------------------------------------*/
-
-UINT32
-LibNbBitReverse (
- IN UINT32 Data,
- IN UINT8 StartBit,
- IN UINT8 StopBit
- )
-{
-
- UINT32 Bitr;
- UINT32 Bitl;
- UINT32 Distance;
-
- while (StartBit < StopBit) {
- Bitr = Data & (1 << StartBit );
- Bitl = Data & (1 << StopBit );
- Distance = StopBit - StartBit;
- Data = (Data & ((UINT32)~(Bitl | Bitr))) | (Bitr << Distance ) | (Bitl >> Distance);
- StartBit++;
- StopBit--;
- }
- return Data;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read CPU family
- *
- *
- *
- * @retval 0xXX00000 CPU family.
- *
- */
-UINT32
-LibNbGetCpuFamily (
- VOID
- )
-{
- CPUID_DATA Cpuid;
- CpuidRead (0x1, &Cpuid);
- return Cpuid.EAX_Reg & 0xff00000;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Load Firmware block
- *
- *
- *
- * @param[in] Address Address to load firmware
- * @param[in] Size Firmware block size
- * @param[in] FirmwareBlockPtr Pointer to firmware block
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- *
- */
-VOID
-LibNbLoadMcuFirmwareBlock (
- IN UINT16 Address,
- IN UINT16 Size,
- IN UINT32 *FirmwareBlockPtr,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 i;
- PCI_ADDR ClkPciAddress;
- UINT32 Selector;
-
- Selector = (Address >= 0x200)?0x0000000:0x10000;
- ClkPciAddress = NbConfigPtr->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- LibNbEnableClkConfig (NbConfigPtr);
- for (i = 0; i < Size; i++) {
- LibNbPciIndexWrite (ClkPciAddress.AddressValue | MC_CLK_INDEX, Selector | (Address + (i * 4)), AccessWidth32, &FirmwareBlockPtr[i], NbConfigPtr);
- }
- LibNbDisableClkConfig (NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read SMU firmware ram
- *
- *
- *
- * @param[in] Address Address to read
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- *
- */
-UINT32
-LibNbReadMcuRam (
- IN UINT16 Address,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Value;
- PCI_ADDR ClkPciAddress;
- UINT32 Selector;
-
- Selector = (Address >= 0x200) ? 0x0000000 : 0x10000;
- ClkPciAddress = NbConfigPtr->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- LibNbEnableClkConfig (NbConfigPtr);
- LibNbPciIndexRead (ClkPciAddress.AddressValue | MC_CLK_INDEX, Selector | (Address), AccessWidth32, &Value, NbConfigPtr);
- LibNbDisableClkConfig (NbConfigPtr);
- return Value;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * MCU Control
- *
- *
- *
- * @param[in] Operation Set/Reset MCU controller
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- */
-VOID
-LibNbMcuControl (
- IN NB_MCU_MODE Operation,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCI_ADDR ClkPciAddress;
- UINT32 Value;
-
- Value = (Operation == AssertReset)?0x00000ee1:0x00000ee2;
- ClkPciAddress = NbConfigPtr->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "LibNbMcuControl Operation [0x%x]\n", Operation));
- LibNbEnableClkConfig (NbConfigPtr);
- LibNbPciIndexWrite (ClkPciAddress.AddressValue | MC_CLK_INDEX, 0x00030000, AccessWidth32, &Value, NbConfigPtr);
- LibNbDisableClkConfig (NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read/Modify/Write memory space
- *
- *
- *
- * @param[in] Address Memory address.
- * @param[in] Width Access width
- * @param[in] Mask AND Mask
- * @param[in] Data OR Mask
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbMemRMW (
- IN UINT64 Address,
- IN ACCESS_WIDTH Width,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Value;
- LibNbMemRead (Address, Width, &Value, NbConfigPtr);
- Value = (Value & Mask) | Data;
- LibNbMemWrite (Address, Width, &Value, NbConfigPtr);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Read memory space
- *
- *
- *
- * @param[in] Address Memory address.
- * @param[in] Width Access width
- * @param[in] Value Pointer to memory to store value
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbMemRead (
- IN UINT64 Address,
- IN ACCESS_WIDTH Width,
- IN VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- LibAmdMemRead (Width, Address, Value, (AMD_CONFIG_PARAMS *)((NbConfigPtr == NULL)?NULL:GET_BLOCK_CONFIG_PTR (NbConfigPtr)));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Write memory space
- *
- *
- *
- * @param[in] Address Memory address.
- * @param[in] Width Access width
- * @param[in] Value Pointer to memory to get value
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbMemWrite (
- IN UINT64 Address,
- IN ACCESS_WIDTH Width,
- OUT VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- LibAmdMemWrite (Width, Address, Value, (AMD_CONFIG_PARAMS *)((NbConfigPtr == NULL)?NULL:GET_BLOCK_CONFIG_PTR (NbConfigPtr)));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Scan Pci Bridge
- *
- *
- *
- * @param[in] This Pointer to PCI topology scan protocol
- * @param[in] Bridge Address of PCI to PCI bridge to scan.
- */
-
-SCAN_STATUS
-LibNbScanPciBridgeBuses (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Bridge
- )
-{
- SCAN_STATUS Status;
- UINT8 CurrentBus;
- UINT8 MinBus;
- UINT8 MaxBus;
- PCI_ADDR Device;
-
- CIMX_ASSERT (This != NULL);
- if (This->ScanBus == NULL) {
- return SCAN_FINISHED;
- }
- LibNbPciRead (Bridge.AddressValue | 0x19, AccessWidth8, &MinBus, This->pConfig);
- LibNbPciRead (Bridge.AddressValue | 0x1A, AccessWidth8, &MaxBus, This->pConfig);
- if (MinBus == 0 || MaxBus == 0) {
- return SCAN_FINISHED;
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (This->pConfig), CIMX_NBPCIE_TRACE), " Scan bridge %d:%d:%d \n", Bridge.Address.Bus, Bridge.Address.Device, Bridge.Address.Function));
- for (CurrentBus = MinBus; CurrentBus <= MaxBus; CurrentBus++) {
- Device.AddressValue = MAKE_SBDFO (0, CurrentBus, 0, 0, 0);
- Status = This->ScanBus (This, Device);
- }
- return SCAN_FINISHED;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Scan Pci Bus
- *
- *
- *
- * @param[in] This Pointer to PCI topology scan protocol
- * @param[in] Device Pci address device to start bus scan from
- */
-/*----------------------------------------------------------------------------------------*/
-SCAN_STATUS
-LibNbScanPciBus (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Device
- )
-{
- SCAN_STATUS Status;
- UINT32 CurrentDevice;
- CIMX_ASSERT (This != NULL);
- if (This->ScanDevice == NULL) {
- return SCAN_FINISHED;
- }
- for (CurrentDevice = Device.Address.Device; CurrentDevice <= 0x1f; CurrentDevice++) {
- Device.Address.Device = CurrentDevice;
- if (LibNbIsDevicePresent (Device, This->pConfig)) {
- Status = This->ScanDevice (This, Device);
- if (Status == SCAN_STOP_BUS_ENUMERATION) {
- return Status;
- }
-
- }
- }
- return SCAN_FINISHED;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Scan Pci Device
- *
- *
- *
- * @param[in] This Pointer to PCI topology scan protocol
- * @param[in] Device Pci address device to scan
- */
-/*----------------------------------------------------------------------------------------*/
-
-SCAN_STATUS
-LibNbScanPciDevice (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Device
- )
-{
- SCAN_STATUS Status;
- UINT8 Header;
- UINT32 CurrentFunction;
- UINT32 MaxFunction;
- CIMX_ASSERT (This != NULL);
- if (This->ScanFunction == NULL) {
- return SCAN_FINISHED;
- }
- LibNbPciRead (Device.AddressValue | 0x0E , AccessWidth8, &Header, This->pConfig);
- MaxFunction = (Header & 0x80)?7:0;
- for (CurrentFunction = Device.Address.Function; CurrentFunction <= MaxFunction; CurrentFunction++) {
- Device.Address.Function = CurrentFunction;
- if (LibNbIsDevicePresent (Device, This->pConfig)) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (This->pConfig), CIMX_NBPCIE_TRACE), " Scan function %d:%d:%d \n", Device.Address.Bus, Device.Address.Device, Device.Address.Function));
- Status = This->ScanFunction (This, Device);
- if (Status == SCAN_STOP_DEVICE_ENUMERATION || Status == SCAN_STOP_BUS_ENUMERATION) {
- return Status;
- }
- }
- }
- return SCAN_FINISHED;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set default Indexes
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration block pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-
-VOID
-LibNbSetDefaultIndexes (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCI_ADDR PciAddress;
- PORT PortId;
- LibNbPciRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_HTIU_INDEX, AccessWidth32, 0x0, 0x0, NbConfigPtr);
- LibNbPciRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, AccessWidth32, 0x0, 0x0, NbConfigPtr);
- LibNbPciRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_BIF_INDEX, AccessWidth32, 0x0, SB_CORE, NbConfigPtr);
- PciAddress.AddressValue = NbConfigPtr->NbPciAddress.AddressValue;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- PciAddress.Address.Device = PortId;
- LibNbPciRMW (PciAddress.AddressValue | NB_BIF_INDEX, AccessWidth32, 0x0, 0x0, NbConfigPtr);
- }
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbLib.h b/src/vendorcode/amd/cimx/rd890/nbLib.h
deleted file mode 100644
index af10946b9a..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbLib.h
+++ /dev/null
@@ -1,352 +0,0 @@
-/**
- * @file
- *
- * CNB Library function
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBLIB_H_
-#define _NBLIB_H_
-
-#pragma pack(push, 1)
-
-/// NB_MCU_MODE
-typedef enum {
- AssertReset, ///< Assert reset
- DeAssertReset ///< Deassert reset
-} NB_MCU_MODE;
-
-/// SMU Firmware revision
-typedef struct {
- UINT16 MajorRev; ///< Major revision
- UINT16 MinorRev; ///< Minor revision
-} SMU_FIRMWARE_REV;
-
-/// Firmware block
-typedef struct {
- UINT16 Address; ///< Block Address
- UINT16 Length; ///< Block length in DWORD
- UINT32 *Data; ///< Pointer to data array
-} SMU_FIRMWARE_BLOCK;
-
-/// Firmware header
-typedef struct {
- SMU_FIRMWARE_REV Revision; ///< Revision info
- UINT16 NumberOfBlock; ///< Number of blocks
- SMU_FIRMWARE_BLOCK *BlockArray; ///< Pointer to block definition array
-} SMU_FIRMWARE_HEADER;
-
-
-NB_INFO
-LibNbGetRevisionInfo (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-AGESA_STATUS
-LibNbCallBack (
- IN UINT32 CallBackId,
- IN OUT UINTN Data,
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbPciWrite (
- IN UINT32 Address,
- IN ACCESS_WIDTH Width,
- IN VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbPciRead (
- IN UINT32 Address,
- IN ACCESS_WIDTH Width,
- OUT VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbPciRMW (
- IN UINT32 Address,
- IN ACCESS_WIDTH Width,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbPciIndexRead (
- IN UINT32 Address,
- IN UINT32 Index,
- IN ACCESS_WIDTH Width,
- OUT UINT32 *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbPciIndexWrite (
- IN UINT32 Address,
- IN UINT32 Index,
- IN ACCESS_WIDTH Width,
- IN UINT32 *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbPciIndexRMW (
- IN UINT32 Address,
- IN UINT32 Index,
- IN ACCESS_WIDTH Width,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbIndirectTableInit (
- IN UINT32 Address,
- IN UINT32 Index,
- IN INDIRECT_REG_ENTRY *pTable,
- IN UINTN Length,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-UINT8
-LibNbFindPciCapability (
- IN UINT32 Address,
- IN UINT8 CapabilityId,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbIoRMW (
- IN UINT16 Address,
- IN ACCESS_WIDTH Width,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbCpuHTLinkPhyRead (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT16 Register,
- OUT UINT32 *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbCpuHTLinkPhyWrite (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT16 Register,
- IN UINT32 *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
-);
-
-VOID
-LibNbCpuHTLinkPhyRMW (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT16 Register,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
-);
-
-VOID
-LibNbEnableClkConfig (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-LibNbDisableClkConfig (
- IN AMD_NB_CONFIG *pConfig
- );
-
-BOOLEAN
-LibNbIsDevicePresent (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-UINT32
-LibNbBitReverse (
- IN UINT32 Data,
- IN UINT8 StartBit,
- IN UINT8 StopBit
- );
-
-UINT32
-LibNbGetCpuFamily (
- VOID
- );
-
-VOID
-LibNbIoWrite (
- IN UINT16 Address,
- IN ACCESS_WIDTH Width,
- IN VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbIoRead (
- IN UINT16 Address,
- IN ACCESS_WIDTH Width,
- OUT VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbLoadMcuFirmwareBlock (
- IN UINT16 Address,
- IN UINT16 Size,
- IN UINT32 *FirmwareBlockPtr,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-UINT32
-LibNbReadMcuRam (
- IN UINT16 Address,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbMcuControl (
- IN NB_MCU_MODE Operation,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-
-AGESA_STATUS
-LibSystemApiCall (
- IN SYSTEM_API SystemApi,
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-LibNbApiCall (
- IN NB_API NbApi,
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-VOID
-LibNbMemRMW (
- IN UINT64 Address,
- IN ACCESS_WIDTH Width,
- IN UINT32 Mask,
- IN UINT32 Data,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbMemRead (
- IN UINT64 Address,
- IN ACCESS_WIDTH Width,
- IN VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-LibNbMemWrite (
- IN UINT64 Address,
- IN ACCESS_WIDTH Width,
- OUT VOID *Value,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-struct _PCI_SCAN_PROTOCOL;
-typedef struct _PCI_SCAN_PROTOCOL PCI_SCAN_PROTOCOL;
-typedef UINT32 SCAN_STATUS;
-
-typedef SCAN_STATUS (*SCAN_ENTRY) (PCI_SCAN_PROTOCOL *This, PCI_ADDR Device);
-
-#define SCAN_FINISHED 0x0
-#define SCAN_STOP_DEVICE_ENUMERATION 0x1
-#define SCAN_STOP_BUS_ENUMERATION 0x2
-
-
-/// PCI topology scan protocol
-struct _PCI_SCAN_PROTOCOL {
- SCAN_ENTRY ScanBus; ///< Pointer to function to scan device on PCI bus.
- SCAN_ENTRY ScanDevice; ///< Pointer to function to scan function on PCI device.
- SCAN_ENTRY ScanFunction; ///< Pointer to scan PCI function.
- AMD_NB_CONFIG *pConfig; ///< NB configuration info.
-};
-
-SCAN_STATUS
-LibNbScanPciBus (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Device
- );
-
-SCAN_STATUS
-LibNbScanPciDevice (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Device
- );
-
-SCAN_STATUS
-LibNbScanPciBridgeBuses (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Bridge
- );
-
-VOID
-LibNbSetDefaultIndexes (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-UINT16
-LibNbFindPcieExtendedCapability (
- IN UINT32 Address,
- IN UINT16 ExtendedCapabilityId,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-BOOLEAN
-LibNbIsIommuEnabled (
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-#pragma pack(pop)
-
-#endif
diff --git a/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit.c b/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit.c
deleted file mode 100644
index 8394835d06..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * @file
- *
- * NB RAS
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-extern UINT16 NbInitMaskedMemoryLength;
-
-typedef VOID (*MASKED_MEMORY_INIT_PROC) (IN UINT32 PciAddress, IN UINT16 AlinkAddress);
-
-
-AGESA_STATUS
-AmdMaskedMemoryInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- Status = LibNbApiCall (NbMaskedMemoryInit, ConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init Mask Memory
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-NbMaskedMemoryInit (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- UINT8 ExecutionBuffer[300];
- SCRATCH_1 Scratch;
- UINT16 AlinkPort;
-
- Status = AGESA_SUCCESS;
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG15, AccessS3SaveWidth32, (UINT32*)&Scratch, pConfig);
- if (Scratch.MaskMemoryInit == OFF) {
- return Status;
- }
- Scratch.MaskMemoryInit = OFF;
- LibNbPciIndexWrite (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG15, AccessS3SaveWidth32, (UINT32*)&Scratch, pConfig);
- CIMX_ASSERT (NbInitMaskedMemoryLength < 300);
- LibAmdMemCopy ((VOID*)ExecutionBuffer, (VOID*) (UINTN)NbInitMaskedMemory, NbInitMaskedMemoryLength, (AMD_CONFIG_PARAMS *)&(pConfig->sHeader));
- PcieSbAgetAlinkIoAddress (&AlinkPort, pConfig);
- (*((MASKED_MEMORY_INIT_PROC)(UINTN)ExecutionBuffer))(pConfig->NbPciAddress.AddressValue, AlinkPort);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG87, AccessS3SaveWidth32, 0x0, 0xffffffff, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG88, AccessS3SaveWidth32, 0x0, 0xffffffff, pConfig);
- return Status;
-}
-
diff --git a/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit.h b/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit.h
deleted file mode 100644
index c364fe2d75..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * @file
- *
- * NB RAS
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBMASKEDMEMORYINIT_H_
-#define _NBMASKEDMEMORYINIT_H_
-
-AGESA_STATUS
-AmdMaskedMemoryInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-NbMaskedMemoryInit (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-NbInitMaskedMemory (
- IN UINT32 PciAddress,
- IN UINT16 AlinkAddress
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit32.S b/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit32.S
deleted file mode 100644
index 3c148aa85e..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbMaskedMemoryInit32.S
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-/******************************************************************************
-* CIMX Northbridge
-*
-* Contains CIMX 32 bit library code
-*
-* Description: nbMaskedMemoryInit32.S - nb Masked Memory Init 32bit ASM code
-*
-******************************************************************************/
-
-.altmacro
-
-#include <cpu/x86/post_code.h>
-
- .section ".text"
- .code32
- .globl NbInitMaskedMemory, NbInitMaskedMemoryLength
-
-/*
-* PciAddress = 8(%ebp)
-* AlinkAddress = 12(%ebp)
-*/
-.type NbInitMaskedMemory, @function
-
-NbInitMaskedMemory:
- push %ebp
- movl %esp, %ebp
- pusha
- cmp $0, 12(%ebp)
- jz 0f
- mov 12(%ebp), %dx
- mov $0x80000004, %eax
- out %eax, %dx
- add $4, %dx
- in %dx, %eax
- btr $2, %eax
- out %eax, %dx
- 0:
- mov 8(%ebp), %eax
- shr $4, %eax
- or $0x80000060, %eax
- mov %eax, %ebx
- mov $0x0cf8, %dx
- out %eax, %dx
- mov $0x0cfc, %dx
- mov $(0x80 | 0x1B), %eax # NB_MISC_REG1B
- out %eax, %dx
- mov %ebx, %eax
- mov $0x64, %al
- mov $0x0cf8, %dx
- out %eax, %dx
- mov $0x0cfc, %dx
- in %dx, %eax
- and $(~(0x01ff << 21)), %eax
- bts $15, %eax
- xor %ecx, %ecx
- out %eax, %dx
-StartInit:
- and $(~(0xff << 22)), %eax
- shl $22, %ecx
- or %ecx, %eax
- shr $22, %ecx
- out %eax, %dx
- bts $21, %eax
- out %eax, %dx
- btr $21, %eax
- out %eax, %dx
- cmp $0x0ff, %cl
- je DoneInit
- inc %ecx
- jmp StartInit
-DoneInit:
- btr $15, %eax
- out %eax, %dx
- cmp $0, 12(%ebp)
- jz 1f
- mov 12(%ebp), %dx
- mov $0x80000004, %eax
- out %eax, %dx
- add $4, %dx
- in %dx, %eax
- bts $2, %eax
- out %eax, %dx
- 1:
- popa
- movl %ebp, %esp
- pop %ebp
- ret
-NbInitMaskedMemoryLength = ( . - NbInitMaskedMemory)
-
diff --git a/src/vendorcode/amd/cimx/rd890/nbMiscInit.c b/src/vendorcode/amd/cimx/rd890/nbMiscInit.c
deleted file mode 100644
index ded6934cec..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbMiscInit.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * @file
- *
- * NB Initialization.
- *
- * Init IOAPIC/IOMMU/Misc NB features.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * AMD structures initializer for all NB.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdMiscInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- Status = LibNbApiCall (MiscInitializer, ConfigPtr);
- return Status;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB structure initializer.
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-MiscInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AMD_NB_CONFIG_BLOCK *ConfigPtr;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbMiscInitializer Enter\n"));
- ConfigPtr = GET_BLOCK_CONFIG_PTR (NbConfigPtr);
- if (ConfigPtr == NULL) {
- return AGESA_FATAL;
- }
- if (ConfigPtr->PlatformType == DetectPlatform) {
- NB_INFO NbInfo;
- NbInfo = LibNbGetRevisionInfo (NbConfigPtr);
- if (NbInfo.Type != NB_UNKNOWN && NbInfo.Type >= NB_SR5690 && NbInfo.Type <= NB_SR5650) {
- ConfigPtr->PlatformType = ServerPlatform;
- } else {
- ConfigPtr->PlatformType = DesktopPlatform;
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NB_TRACE), "[NB]NbMiscInitializer Exit\n"));
- return AGESA_SUCCESS;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbMiscInit.h b/src/vendorcode/amd/cimx/rd890/nbMiscInit.h
deleted file mode 100644
index 2537e787f2..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbMiscInit.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * @file
- *
- * NB definitions
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBMISCINIT_H_
-#define _NBMISCINIT_H_
-
-AGESA_STATUS
-AmdMiscInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-AGESA_STATUS
-MiscInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbModuleInfo.c b/src/vendorcode/amd/cimx/rd890/nbModuleInfo.c
deleted file mode 100644
index 175e3b369e..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbModuleInfo.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * @file
- *
- * Function dispatcher.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-#define Int32FromChar(a,b,c,d) ((a) << 0 | (b) << 8 | (c) << 16 | (d) << 24)
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-VOLATILE AMD_MODULE_HEADER mNbModuleID = {
-// 'DOM$',
- Int32FromChar ('D', 'O', 'M', '$'),
- CIMX_NB_ID,
- CIMX_NB_REVISION,
- AmdNbDispatcher,
- NULL
-};
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcie.h b/src/vendorcode/amd/cimx/rd890/nbPcie.h
deleted file mode 100644
index 50120582d9..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcie.h
+++ /dev/null
@@ -1,352 +0,0 @@
-/**
- * @file
- *
- * PCIE definitions.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBPCIE_H_
-#define _NBPCIE_H_
-
-#pragma pack(push, 1)
-
-/// PCIe Link Aspm mode
-typedef enum {
- PcieLinkAspmDisabled, ///< Disabled
- PcieLinkAspmL0s, ///< L0s only
- PcieLinkAspmL1, ///< L1 only
- PcieLinkAspmL0sAndL1, ///< L0s and L1
- PcieLinkAspmL0sDownstreamOnly, ///< L0s Donnstream Port Only
- PcieLinkAspmL0sDownstreamOnlyAndL1 ///< L0s Donnstream Port and L1
-} PCIE_LINK_ASPM;
-
-/// PCIe device type
-typedef enum {
- PcieDeviceEndPoint, ///< Endpoint
- PcieDeviceLegacyEndPoint, ///< Legacy endpoint
- PcieDeviceRootComplex = 4, ///< Root complex
- PcieDeviceUpstreamPort, ///< Upstream port
- PcieDeviceDownstreamPort, ///< Downstream Port
- PcieDevicePcieToPcix, ///< PCIe to PCI/PCIx bridge
- PcieDevicePcixToPcie, ///< PCI/PCIx to PCIe bridge
- PcieNotPcieDevice = 0xff ///< unknown device
-} PCIE_DEVICE_TYPE;
-
-/// PCIe Link Mode
-typedef enum {
- PcieLinkModeGen2, ///< Gen 2
- PcieLinkModeGen1, ///< Gen 1
- PcieLinkModeGen2SoftwareInitiated, ///< Gen 2 software
- PcieLinkModeGen2AdvertizeOnly ///< Gen 2 advertise only
-} PCIE_LINK_MODE;
-
-/// PCIE Link Status
-typedef enum {
- PcieLinkStatusNotConnected, ///< not connected
- PcieLinkStatusConnected, ///< connected
- PcieLinkStatusInCompliance, ///< compliant
- PcieLinkStatusTrainingInProgress, ///< training in progress
- PcieLinkStatusVcoNegotiationInProgress, ///< Vco negotiation in progress
-} PCIE_LINK_STATUS;
-
-/// PCIE Link Width Information
-typedef enum {
- PcieLinkMaxWidth, ///< max width
- PcieLinkCurrentWidth, ///< current width
-} PCIE_LINK_WIDTH_INFO;
-
-/// PCIE Link Training
-typedef enum {
- PcieLinkTrainingRelease, ///< training release
- PcieLinkTrainingHold ///< training hold
-} PCIE_LINK_TRAINING;
-
-/// PCIE Strap Mode
-typedef enum {
- PcieCoreStrapConfigStart, ///< start
- PcieCoreStrapConfigStop ///< stop
-} PCIE_STRAP_MODE;
-
-/// PCIE Link Width
-typedef enum {
- PcieLinkWidth_x0 = 0, ///< x0
- PcieLinkWidth_x1 = 1, ///< x1
- PcieLinkWidth_x2, ///< x2
- PcieLinkWidth_x4, ///< x4
- PcieLinkWidth_x8, ///< x8
- PcieLinkWidth_x12, ///< x12
- PcieLinkWidth_x16 ///< x16
-} PCIE_LINK_WIDTH;
-
-/// PCIe Transmitter deemphasis advertise
-typedef enum {
- PcieTxDeemphasis6dB = 0, ///< -6dB
- PcieTxDeemphasis3p5dB, ///< -3.5dB
-} PCIE_LINK_DEEMPASIS;
-
-/// PCIe Transmitter deemphasis advertise
-typedef enum {
- PcieTxDriveStrangth26mA = 0, ///< 26mA
- PcieTxDriveStrangth20mA, ///< 20mA
- PcieTxDriveStrangth22mA, ///< 22mA
- PcieTxDriveStrangth24mA, ///< 24mA
-} PCIE_LINK_DRIVE_STRANGTH;
-
-/// PCIe Channel type
-typedef enum {
- PcieShortChannel = 1, ///< Short Channel
- PcieMediumChannel, ///< Medium Channel
- PcieLongChannel, ///< Long Channel
-} NB_PCIE_CHANNEL_TYPE;
-
-/// PCI Core Reset
-typedef enum {
- PcieCoreResetAllDeassert = 1, ///< deassert
- PcieCoreResetAllAssert, ///< assert
- PcieCoreResetAllCheck, ///< check
-} PCI_CORE_RESET;
-
-/// Misc PCIE Core Setting
-typedef struct {
- UINT32 CoreDisabled :1; ///< Core not present or disabled
- UINT32 PowerOffPll :1; ///< Enable power off PLL if group of lanes controlled by PLL unused
- UINT32 PowerOffPllInL1 :1; ///< Enable Power off PLL in L1
- UINT32 LclkClockGating :1; ///< Enable LCLK clock gating
- UINT32 TxClockGating :1; ///< Enable TX clock gating
- UINT32 PowerOffUnusedLanes :1; ///< Enable Power off pads for unused Lanes
- UINT32 CplBufferAllocation :1; ///< Enable special/optimized CPL buffer allocation
- UINT32 PerformanceMode :1; ///< Enable support PCIe Reference Clock overclocking. In addition to rump-up PCIe reference clock
- UINT32 TxDriveStrength :2; /**< TX Drive strength (Only applicable if PCIE_CORE_SETTING::ChannelType == 0).
- * @li @b 0 - 26mA
- * @li @b 1 - 20mA
- * @li @b 2 - 22mA
- * @li @b 3 - 24mA
- */
- UINT32 SkipConfiguration :1; ///< Special case to skip core configuration (configured outside of CIMx)
- UINT32 TxHalfSwingMode :1; ///< Half Swing Mode for PCIe Transmitters (Only applicable if PCIE_CORE_SETTING::ChannelType == 0).
- UINT32 ChannelType :3; /**< Group PCIe PHY setting for channel with specific trace length
- * @li @b 0 - Use individual parameters to configure PCIe PHY (see PCIE_CORE_SETTING::TxHalfSwingMode,
- PCIE_CORE_SETTING::TxDriveStrength, PCIE_EXT_PORT_CONFIG::PortDeemphasis).
- * @li @b 1 - Short Channel.
- * @li @b 2 - Midium Channel.
- * @li @b 3 - Long Channel.
- */
- UINT32 DetectPowerOffPllInL1 :1; ///< Enable detection if endpoint L1 acceptable latency allow Enable Power off PLL in L1.
- UINT32 TxClockOff :1; ///< Disable TX clock if possible
- UINT32 LclkClockOff :1; ///< Disable LCLK clock if possible
- UINT32 RefClockInput :1; ///< Use dedicated ref. clock input (only applicable GPP1 and GPP2 cores). By default SB ref clock is used.
- UINT32 Reserved :2; ///<
- UINT32 CoreDisableStatus :1; /**< Output status of core disable/enable
- * @li @b 0 = Core not disabled
- * @li @b 1 = Core Disabled
- */
-} PCIE_CORE_SETTING;
-
-/// Misc Configuration
-typedef struct {
- UINT32 DisableHideUnusedPorts :1; ///< Hide unused ports if no EP was detected and port non hotpluggable
- UINT32 Peer2Peer :1; ///< Enable Peer to Peer.
- UINT32 DisableGfxWorkaround :1; ///< disable RV370/RV380 workaround
- UINT32 NbSbVc1 :1; ///< Enable VC1 for NB SB Audio traffic
-} PCIE_MISC_CONFIG;
-
-/// Extended PCIE Port Configuration
-typedef struct {
- UINT32 PortL1ImmediateACK :1; ///< Validation feature
- UINT32 PortLinkWidth :3; /**< Port Link width
- * @li @b 0 - Auto. Default max link width.
- * @li @b 1 - x1
- * @li @b 2 - x2
- * @li @b 3 - x4
- * @li @b 4 - x8
- * @li @b 6 - x16
- */
- UINT32 PortMapping :4; /**< Device number mapping info
- * @li @b 0 - Default mapping
- * @li @b n - PCI device number for port (Valid device numbers are 2/3/4/5/6/7/9/10/11/12/13).
- */
- UINT32 PortHotplugDevMap :2; /**< PCA9539 device map.
- *Only valid if PortHotplug = 1
- */
- UINT32 PortHotplugByteMap :1; /**< PCA9539 channel map.
- *Only valid if PortHotplug = 1
- */
- UINT32 PortPowerLimit :8; ///< Slot power limit in W
- UINT32 Reserved :2; ///< Reserved
- UINT32 PortDeemphasis :2; /**< Port deempasis adverise (Only applicable if PCIE_CORE_SETTING::ChannelType == 0).
- * @li @b 0 - 6dB
- * @li @b 1 - 3.5dB
- */
-
-} PCIE_EXT_PORT_CONFIG;
-
-/// PCIE Port Configuration
-typedef struct {
- UINT32 PortPresent :1; /**< Port connection
- * @li @b 0 - Port has no slot or EP connected. Link not needs to be trained.
- * @li @b 1 - Has slot or EP connected. Link needs to be trained.
- */
- UINT32 PortDetected :1; /**< Scratch bit to record status of training
- * @li @b 0 - EP not detected
- * @li @b 1 - EP detected
- */
- UINT32 PortCompliance :1; /**< Link compliance mode
- * @li @b 0 - Link in operational mode
- * @li @b 1 - Force link into compliance mode
- */
- UINT32 PortLinkMode :2; /**< Link speed mode configuration
- * @li @b 0 - GEN2 Autonomous (GEN2 capability advertized and and immediate link speed change initiated).
- * @li @b 1 - GEN1
- * @li @b 2 - GEN2 Software Initiated (Port trained to Gen1 thereafter if EP report GEN2 capability port reconfigured to GEN2)
- * @li @b 3 - GEN2 advertize only (RC only advertize GEN2 capability and not initiate transition to GEN2 speed)
- */
- UINT32 PortHotplug :2; /**< Port Hotplug configuration
- * @li @b 0 - Hotplug Disabled
- * @li @b 1 - Server Hotplug Enabled
- * @li @b 2 - Reserved
- * @li @b 3 - Reserved
- */
- UINT32 PortAspm :3; /**< Port ASPM support
- * @li @b 0 - Disabled
- * @li @b 1 - L0s enable
- * @li @b 2 - L1 enable
- * @li @b 3 - L0s + L1 enable
- * @li @b 4 - L0s Downstream Only
- * @li @b 5 - L0s Downstream Only + L1
- * @li <b>4..7</b> - Reserved
- */
- UINT32 PortReversed :1; /**< Port lanes reversed
- * @li @b 0 - Lanes non reversed
- * @li @b 1 - Lanes reversed
- */
- UINT32 ForcePortDisable :1; /**< Port Disable after PCIE training
- * @li @b 0 - Do not force port disable
- * @li @b 1 - Force port disable
- */
- UINT32 PortAlwaysVisible :1; /**< Port always visible
- * @li @b 1 - Port always visible
- */
-} PCIE_PORT_CONFIG;
-
-/// PCIE default configuration parameters structure
-typedef struct {
- PCIE_MISC_CONFIG PcieConfiguration; ///< PCIE configuration
- PCIE_CORE_SETTING CoreSetting[5]; ///< Core Setting
- UINT16 DeviceInitMaskS1; ///< Bit mask of ports id to be initialized at stage 1
- UINT16 DeviceInitMaskS2; ///< Bit mask of ports id to be initialized at stage 2
- UINT16 ResetToTrainingDelay; ///< Delay (in 1ms) after reset deassert before training started
- UINT16 TrainingToLinkTestDelay; ///< Delay (in 1ms) after training started but before pooling link state
- UINT16 ReceiverDetectionPooling; ///< Total amount time (in 1ms of pooling for passing receiver detection stage
-} PCIE_DEFAULT_CONFIG;
-
-/// Link Info
-typedef struct {
- UINT8 LinkWidth; ///< width
- UINT8 MaxLinkWidth; ///< max width
- UINT8 Line0Offset; ///< line 0 offset
-} LINK_INFO;
-
-/// Port Static Info
-typedef struct {
- UINT8 TrainingAddress; ///< training address
- UINT8 ReversalAddress; ///< reversal address
- UINT8 DeemphasisAddress; ///< de-emphasis address
- UINT8 MappingAddress; ///< mapping address
- UINT8 HotplugAddress; ///< Hotplug address
-} PORT_STATIC_INFO;
-
-/// Core Info
-typedef struct {
- UINT32 CoreSelector; ///< core selector
- UINT16 PortIdBitMap; ///< port Id
- UINT8 TrainingRegister; ///< training
- UINT8 DeemphasisRegister; ///< de-emphasis
- UINT8 StrapRegister; ///< strap
- UINT8 StrapAddress; ///< strap address
- UINT8 HotplugRegister; ///< Hotplug descriptor register
- UINT8 TxDriveStrengthRegister; ///< Tx drive strength register
- UINT8 TxDriveStrengthOffset; ///< Tx drive strength bit offeset
- UINT8 TxHalfSwingRegister; ///< Tx half swing register
- UINT8 TxHalfSwingOffset; ///< Tx half swing bit offset
- UINT8 TxHalfSwingDeepmhasisRegister; ///< Tx half swing deephasis register
- UINT8 TxHalfSwingDeepmhasisOffset; ///< Tx half swing deephasis register
- UINT8 TxOffOffset; ///< Tx shutdown enable offset
- UINT8 LclkOffOffset; ///< Lclk shutdown enable offset
- UINT8 LclkPermOffOffset; ///< Lclk Perm shutdown enable offset
-} CORE_INFO;
-
-/// Port Information
-typedef struct {
- UINT8 MaxLinkWidth; ///< max link width
- UINT8 Line0Offset; ///< offset
- UINT8 SlaveCplBuffers; ///< Alternative to default CPL buffer count
-} PORT_INFO;
-
-/// GPP Configuration Info
-typedef struct {
- PORT_INFO *PortInfoPtr; ///< port information
- UINT32 PortIdMap; ///< port id map
-} GPP_CFG_INFO;
-
-
-#define GPP1_CORE 0x40000
-#define GPP2_CORE 0x60000
-#define GPP3a_CORE 0x70000
-#define GPP3b_CORE 0x30000
-#define SB_CORE 0x50000
-
-#define GPP_CONFIG_GPP420000 0x01
-#define GPP_CONFIG_GPP411000 0x02
-#define GPP_CONFIG_GPP222000 0x03
-#define GPP_CONFIG_GPP221100 0x04
-#define GPP_CONFIG_GPP211110 0x05
-#define GPP_CONFIG_GPP111111 0x06
-
-#define GFX_CONFIG_A 0x01
-#define GFX_CONFIG_B 0x02
-
-#define GFX_CONFIG_AAAA (GFX_CONFIG_A | (GFX_CONFIG_A << 8) | (GFX_CONFIG_A << 16) | (GFX_CONFIG_A << 24))
-#define GFX_CONFIG_AABB (GFX_CONFIG_A | (GFX_CONFIG_A << 8) | (GFX_CONFIG_B << 16) | (GFX_CONFIG_B << 24))
-
-#define PCIE_CAP_ID 0x10
-
-
-#pragma pack(pop)
-
-#endif
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieAspm.c b/src/vendorcode/amd/cimx/rd890/nbPcieAspm.c
deleted file mode 100644
index 38bc41fb1a..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieAspm.c
+++ /dev/null
@@ -1,507 +0,0 @@
-/**
- * @file
- *
- * ASPM support.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-#include "amdSbLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-
-VOID
-PcieAspmSetOnRc (
- IN PCI_ADDR Device,
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- );
-
-SCAN_STATUS
-PcieSetDeviceAspm (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Function
- );
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init Port ASPM.
- * Enable ASPM states on RC and EP. Only states supported by both RC and EP
- * will be enabled.
- *
- *
- * @param[in] PortId Pcie Port ID
- * @param[in] AsmpState ASPM states to enable.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-PcieAsmpEnableOnPort (
- IN PORT PortId,
- IN PCIE_LINK_ASPM AsmpState,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCI_ADDR Port;
- UINT8 Lx;
- PCI_ADDR NbPciAddress;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "PcieAsmpEnableOnPort Enter PortId [%d]\n", PortId));
- NbPciAddress.AddressValue = NB_SBDFO;
- switch (AsmpState) {
- case PcieLinkAspmDisabled:
- return ;
- case PcieLinkAspmL0s:
- Lx = ASPM_UPSTREAM_L0s | ASPM_DOWNSTREAM_L0s;
- break;
- case PcieLinkAspmL1:
- Lx = ASPM_L1;
- break;
- case PcieLinkAspmL0sAndL1:
- Lx = ASPM_UPSTREAM_L0s | ASPM_DOWNSTREAM_L0s | ASPM_L1;
- break;
- case PcieLinkAspmL0sDownstreamOnly:
- Lx = ASPM_DOWNSTREAM_L0s;
- break;
- case PcieLinkAspmL0sDownstreamOnlyAndL1:
- Lx = ASPM_DOWNSTREAM_L0s | ASPM_L1;
- break;
- default:
- CIMX_ASSERT (FALSE);
- return ;
- }
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
-//NB-SB link
- if (PortId == 8 && NbPciAddress.AddressValue == 0) {
- if (PcieSbInitAspm ((Lx & ASPM_L1) | ((Lx & ASPM_UPSTREAM_L0s)?ASPM_L0s:0), pConfig) == AGESA_SUCCESS) {
- PcieAspmEnableOnFunction (Port, (Lx & ASPM_L1) | ((Lx & ASPM_DOWNSTREAM_L0s)?ASPM_L0s:0), pConfig);
- }
- return ;
- }
- PcieAspmSetOnRc (Port, Lx, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "PcieAsmpEnableOnPort Exit. Lx[0x%x]\n", Lx));
- return ;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Enable Common Clock on PCIe Link
- *
- *
- *
- * @param[in] Downstream Downstream PCIe port PCI address
- * @param[in] Upstream Upstream PCIe port PCI address
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
- /*----------------------------------------------------------------------------------------*/
-
-VOID
-PcieAspmEnableCommonClock (
- IN PCI_ADDR Downstream,
- IN PCI_ADDR Upstream,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT16 DownstreamCommonClockCap;
- UINT16 UpstreamCommonClockCap;
- UINT16 Value;
- UINT8 DownstreamPcieCapPtr;
- UINT8 UpstreamPcieCapPtr;
- DownstreamPcieCapPtr = LibNbFindPciCapability (Downstream.AddressValue, PCIE_CAP_ID, pConfig);
- UpstreamPcieCapPtr = LibNbFindPciCapability (Upstream.AddressValue, PCIE_CAP_ID, pConfig);
- if (DownstreamPcieCapPtr == 0 || UpstreamPcieCapPtr == 0) {
- return ;
- }
- LibNbPciRead (Downstream.AddressValue | (DownstreamPcieCapPtr + 0x10) , AccessWidth16, &DownstreamCommonClockCap, pConfig);
- if ((DownstreamCommonClockCap & BIT6) != 0) {
- //Aready enabled
- return ;
- }
- LibNbPciRead (Downstream.AddressValue | (DownstreamPcieCapPtr + 0x12) , AccessWidth16, &DownstreamCommonClockCap, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Downstream Common Clock Capability %d:%d:%d - %x\n", Downstream.Address.Bus, Downstream.Address.Device, Downstream.Address.Function, DownstreamCommonClockCap));
- LibNbPciRead (Upstream.AddressValue | (UpstreamPcieCapPtr + 0x12) , AccessWidth16, &UpstreamCommonClockCap, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Upstream Common Clock Capability %d:%d:%d - %x\n", Upstream.Address.Bus, Upstream.Address.Device, Upstream.Address.Function, UpstreamCommonClockCap));
- if ((DownstreamCommonClockCap & UpstreamCommonClockCap & BIT12) != 0) {
- //Enable common clock
- PcieAspmCommonClockOnFunction (Downstream, pConfig);
- PcieAspmCommonClockOnDevice (Upstream, pConfig);
-// LibNbPciRMW (Downstream.AddressValue | (DownstreamPcieCapPtr + 0x10) , AccessS3SaveWidth8, 0xff, BIT6, pConfig);
-// LibNbPciRMW (Upstream.AddressValue | (UpstreamPcieCapPtr + 0x10) , AccessS3SaveWidth8, 0xff, BIT6, pConfig);
- //Reatrain link
- LibNbPciRMW (Downstream.AddressValue | (DownstreamPcieCapPtr + 0x10) , AccessS3SaveWidth8, 0xff, BIT5, pConfig);
- do {
- LibNbPciRead (Downstream.AddressValue | (DownstreamPcieCapPtr + 0x12) , AccessWidth16, (UINT16*)&Value, pConfig);
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 200, CIMX_S3_SAVE);
- } while ((Value & BIT11) != 0);
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set "Common Clock" enable on function
- *
- *
- *
- * @param[in] Device PCI address of function.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
- /*----------------------------------------------------------------------------------------*/
-VOID
-PcieAspmCommonClockOnDevice (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 Value;
- UINT8 MaxFunc;
- UINT8 CurrentFunc;
- LibNbPciRead (Device.AddressValue | 0x0E , AccessWidth8, &Value, pConfig);
- MaxFunc = (Value & BIT7)?7:0;
- for (CurrentFunc = 0; CurrentFunc <= MaxFunc; CurrentFunc++) {
- Device.Address.Function = CurrentFunc;
- if (LibNbIsDevicePresent (Device, pConfig)) {
- PcieAspmCommonClockOnFunction (Device, pConfig);
- }
- }
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set "Common Clock" enable on function
- *
- *
- *
- * @param[in] Function PCI address of function.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
- /*----------------------------------------------------------------------------------------*/
-VOID
-PcieAspmCommonClockOnFunction (
- IN PCI_ADDR Function,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 PcieCapPtr;
- PcieCapPtr = LibNbFindPciCapability (Function.AddressValue, PCIE_CAP_ID, pConfig);
- if (PcieCapPtr != 0) {
- LibNbPciRMW (Function.AddressValue | (PcieCapPtr + 0x10) , AccessS3SaveWidth8, (UINT32)~(BIT6), BIT6, pConfig);
- }
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * Enable ASPM on PCIe Link
- *
- *
- *
- * @param[in] Downstream Downstream PCIe port PCI address
- * @param[in] Upstream Upstream PCIe port PCI address
- * @param[in] Lx Lx ASPM bitmap.
- * Lx[0] - reserved
- * Lx[1] - L1 enable
- * Lx[2] - L0s enable for upstream ports
- * Lx[3] - L0s enable for downstream ports
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
- /*----------------------------------------------------------------------------------------*/
-
-VOID
-PcieAspmEnableOnLink (
- IN PCI_ADDR Downstream,
- IN PCI_ADDR Upstream,
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- ASPM_LINK_INFO AspmLinkInfo;
- AspmLinkInfo.UpstreamLxCap = PcieAspmGetPmCapability (Upstream, pConfig);
- AspmLinkInfo.DownstreamLxCap = PcieAspmGetPmCapability (Downstream, pConfig);
- AspmLinkInfo.DownstreamPort = Downstream;
- AspmLinkInfo.UpstreamPort = Upstream;
- AspmLinkInfo.RequestedLx = Lx;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Downstream ASPM Capability %d:%d:%d - %x\n", Downstream.Address.Bus, Downstream.Address.Device, Downstream.Address.Function, AspmLinkInfo.DownstreamLxCap));
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Upstream ASPM Capability %d:%d:%d - %x\n", Upstream.Address.Bus, Upstream.Address.Device, Upstream.Address.Function, AspmLinkInfo.UpstreamLxCap));
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Requested ASPM State - %x\n", Lx));
- AspmLinkInfo.DownstreamLx = AspmLinkInfo.UpstreamLxCap & AspmLinkInfo.DownstreamLxCap & Lx & ASPM_L1;
- AspmLinkInfo.UpstreamLx = AspmLinkInfo.DownstreamLx;
- if ((AspmLinkInfo.UpstreamLxCap & ASPM_L0s) != 0 && (Lx & ASPM_UPSTREAM_L0s) != 0) {
- AspmLinkInfo.UpstreamLx |= ASPM_L0s;
- }
- if ((AspmLinkInfo.DownstreamLxCap & ASPM_L0s) != 0 && (Lx & ASPM_DOWNSTREAM_L0s) != 0) {
- AspmLinkInfo.DownstreamLx |= ASPM_L0s;
- }
-#ifndef ASPM_WORKAROUND_DISABLE
- PcieAspmWorkarounds (&AspmLinkInfo, pConfig);
-#endif
- LibNbCallBack (PHCB_AmdPcieAsmpInfo, (UINTN)&AspmLinkInfo, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Upstream ASPM State - %x\n", AspmLinkInfo.UpstreamLx));
- PcieAspmEnableOnDevice (Upstream, AspmLinkInfo.UpstreamLx, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Downstream ASPM State - %x\n", AspmLinkInfo.DownstreamLx));
- PcieAspmEnableOnFunction (Downstream, AspmLinkInfo.DownstreamLx, pConfig);
-
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set ASMP State on all function of PCI device
- *
- *
- *
- * @param[in] Device PCI address of device.
- * @param[in] Lx Lx ASPM bitmap.
- * Lx[0] = L0s enable
- * Lx[1] - L1 enable
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
- /*----------------------------------------------------------------------------------------*/
-VOID
-PcieAspmEnableOnDevice (
- IN PCI_ADDR Device,
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 Value;
- UINT8 MaxFunc;
- UINT8 CurrentFunc;
-
- LibNbPciRead (Device.AddressValue | 0x0E , AccessWidth8, &Value, pConfig);
- MaxFunc = (Value & BIT7)?7:0;
- for (CurrentFunc = 0; CurrentFunc <= MaxFunc; CurrentFunc++) {
- Device.Address.Function = CurrentFunc;
- if (LibNbIsDevicePresent (Device, pConfig)) {
- PcieAspmEnableOnFunction (Device, Lx, pConfig);
- }
- }
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set ASMP State on PCIe device function
- *
- *
- *
- * @param[in] Function PCI address of function.
- * @param[in] Lx Lx ASPM bitmap.
- * Lx[0] = L0s enable
- * Lx[1] - L1 enable
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
- /*----------------------------------------------------------------------------------------*/
-VOID
-PcieAspmEnableOnFunction (
- IN PCI_ADDR Function,
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 PcieCapPtr;
- PcieCapPtr = LibNbFindPciCapability (Function.AddressValue, PCIE_CAP_ID, pConfig);
- if (PcieCapPtr != 0) {
- LibNbPciRMW (Function.AddressValue | (PcieCapPtr + 0x10) , AccessS3SaveWidth8, (UINT32)~(BIT0 & BIT1), Lx, pConfig);
- }
-}
-
-/**----------------------------------------------------------------------------------------*/
-/**
- * Port/Endpoint ASMP capability
- *
- *
- *
- * @param[in] Device PCI address of downstream port.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- * @retval Bitmap of actual supported Lx states
- */
- /*----------------------------------------------------------------------------------------*/
-UINT8
-PcieAspmGetPmCapability (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 PcieCapPtr;
- UINT8 Value;
- PcieCapPtr = LibNbFindPciCapability (Device.AddressValue, PCIE_CAP_ID, pConfig);
- if (PcieCapPtr == 0) {
- return 0;
- }
- LibNbPciRead (Device.AddressValue | (PcieCapPtr + 0x0D) , AccessWidth8, &Value, pConfig);
- return (Value >> 2) & 3;
-}
-
-
-/**----------------------------------------------------------------------------------------*/
-/**
- * Scan PCIe topology
- *
- *
- *
- * @param[in] This Pointer to instance of scan protocol
- * @param[in] Function PCI address of found device/function.
- *
- * @retval SCAN_FINISHED Scan for device finished.
- */
- /*----------------------------------------------------------------------------------------*/
-SCAN_STATUS
-PcieSetDeviceAspm (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Function
- )
-{
- PCIE_DEVICE_TYPE DeviceType;
- UINT8 SecondaryBus;
- ASPM_WORKSPACE *WorkspacePtr;
- WorkspacePtr = (ASPM_WORKSPACE*)This;
-
- DeviceType = PcieGetDeviceType (Function, This->pConfig);
- if (DeviceType == PcieDeviceRootComplex || DeviceType == PcieDeviceDownstreamPort) {
- PCI_ADDR UpstreamDevice;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (This->pConfig), CIMX_NBPCIE_TRACE), " Reached downstream port\n"));
- //Lets enable Common clock
- LibNbPciRead (Function.AddressValue | 0x19, AccessWidth8, &SecondaryBus, This->pConfig);
- LibNbPciRMW(Function.AddressValue | 0x18, AccessS3SaveWidth32, 0xffffffff, 0, This->pConfig); //This done to help UEFI bootscript restore bud topology.
- if (SecondaryBus == 0) {
- return SCAN_FINISHED;
- }
- //New Downstream Port
- WorkspacePtr->LinkCount++;
- if (WorkspacePtr->DownstreamPort.AddressValue == 0) {
- WorkspacePtr->DownstreamPort.AddressValue = Function.AddressValue;
- }
- //Lets enable Common clock
- UpstreamDevice.AddressValue = MAKE_SBDFO (0, SecondaryBus, 0, 0, 0);
- if (LibNbIsDevicePresent (UpstreamDevice, This->pConfig)) {
- PcieAspmEnableCommonClock (Function, UpstreamDevice, This->pConfig);
- }
- This->ScanBus (This, UpstreamDevice);
- if (WorkspacePtr->DownstreamPort.AddressValue == Function.AddressValue) {
- WorkspacePtr->DownstreamPort.AddressValue = 0;
- PcieAspmEnableOnLink (Function, UpstreamDevice, WorkspacePtr->Lx, This->pConfig);
- }
- } else if (DeviceType == PcieDeviceUpstreamPort ) {
- PCI_ADDR DownstreamDevice;
-
- if (WorkspacePtr->DownstreamPort.AddressValue == 0) {
- return SCAN_FINISHED;
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (This->pConfig), CIMX_NBPCIE_TRACE), " Reached upstream port\n"));
- LibNbPciRead (Function.AddressValue | 0x19, AccessWidth8, &SecondaryBus, This->pConfig);
- LibNbPciRMW(Function.AddressValue | 0x18, AccessS3SaveWidth32, 0xffffffff, 0, This->pConfig); //This done to help UEFI bootscript restore bud topology.
- if (SecondaryBus == 0) {
- return SCAN_FINISHED;
- }
- DownstreamDevice.AddressValue = MAKE_SBDFO (0, SecondaryBus, 0, 0, 0);
- This->ScanBus (This, DownstreamDevice);
- } else if (DeviceType < PcieDeviceLegacyEndPoint) {
- // We reach end of link @toDo code to check exit latency.
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (This->pConfig), CIMX_NBPCIE_TRACE), " Reached endpoint \n"));
- }
- return SCAN_FINISHED;
-}
-
-/**----------------------------------------------------------------------------------------*/
-/**
- * Scan RC PCIe topology to setup ASPM
- *
- *
- *
- * @param[in] Device PCI address of downstream port.
- * @param[in] Lx Lx ASPM bitmap.
- * Lx[0] - reserved
- * Lx[1] - L1 enable
- * Lx[2] - L0s enable for upstream ports
- * Lx[3] - L0s enable for downstream ports
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
- /*----------------------------------------------------------------------------------------*/
-VOID
-PcieAspmSetOnRc (
- IN PCI_ADDR Device,
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- ASPM_WORKSPACE AspmWorkspace;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieSetPortAspm Enter\n"));
- LibAmdMemFill (&AspmWorkspace, 0, sizeof (AspmWorkspace), (AMD_CONFIG_PARAMS *)&(pConfig->sHeader));
- AspmWorkspace.ScanPciePort.pConfig = pConfig;
- AspmWorkspace.ScanPciePort.ScanBus = LibNbScanPciBus;
- AspmWorkspace.ScanPciePort.ScanDevice = LibNbScanPciDevice;
- AspmWorkspace.ScanPciePort.ScanFunction = PcieSetDeviceAspm;
- AspmWorkspace.Lx = Lx;
- AspmWorkspace.ScanPciePort.ScanFunction (&AspmWorkspace.ScanPciePort, Device);
- if (AspmWorkspace.LinkCount > 1) {
- LibNbScanPciBridgeBuses (&AspmWorkspace.ScanPciePort, Device);
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieSetPortAspm Exit\n"));
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieAspm.h b/src/vendorcode/amd/cimx/rd890/nbPcieAspm.h
deleted file mode 100644
index 63a88a0c0e..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieAspm.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * @file
- *
- * ASPM support.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-#ifndef _NBPCIEASPM_H_
-#define _NBPCIEASPM_H_
-
-VOID
-PcieAsmpEnableOnPort (
- IN PORT PortId,
- IN PCIE_LINK_ASPM AsmpState,
- IN AMD_NB_CONFIG *pConfig
- );
-
-UINT8
-PcieAspmGetPmCapability (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-VOID
-PcieAspmEnableOnDevice (
- IN PCI_ADDR Device,
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieAspmEnableOnFunction (
- IN PCI_ADDR Function,
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieAspmEnableOnLink (
- IN PCI_ADDR Downstream,
- IN PCI_ADDR Upstream,
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieAspmEnableCommonClock (
- IN PCI_ADDR Downstream,
- IN PCI_ADDR Upstream,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-VOID
-PcieAspmCommonClockOnDevice (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieAspmCommonClockOnFunction (
- IN PCI_ADDR Function,
- IN AMD_NB_CONFIG *pConfig
- );
-
-#pragma pack (push, 1)
-
-/// Framework for ASPM enable
-typedef struct {
- PCI_SCAN_PROTOCOL ScanPciePort; ///< PCI scan protocol
- PCI_ADDR DownstreamPort; ///< Downstream port to enable ASPM
- UINT8 MaxL0sLatency; ///< TBD
- UINT8 MaxL1Latency; ///< TBD
- UINT8 LinkCount; ///< TBD
- UINT8 Lx; ///< ASPM state to enable
-} ASPM_WORKSPACE;
-
-#define ASPM_UPSTREAM_L0s BIT2
-#define ASPM_DOWNSTREAM_L0s BIT3
-#define ASPM_L1 BIT1
-#define ASPM_L0s BIT0
-
-/// Framework for callback ASPM capability callback
-typedef struct {
- PCI_ADDR DownstreamPort; ///< Downstream port PCI address to enable ASPM
- PCI_ADDR UpstreamPort; ///< Upstream port PCI address to enable ASPM
- UINT8 DownstreamLxCap; ///< Downstream port ASPM capability
- UINT8 UpstreamLxCap; ///< Upstream port ASPM capability
- UINT8 DownstreamLx; ///< Downstream port ASPM setting
- UINT8 UpstreamLx; ///< Upstream port ASPM setting
- UINT8 RequestedLx; ///< Requested port ASPM setting
-} ASPM_LINK_INFO;
-
-#pragma pack (pop)
-#endif
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieCplBuffers.c b/src/vendorcode/amd/cimx/rd890/nbPcieCplBuffers.c
deleted file mode 100644
index a77623e2c2..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieCplBuffers.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * @file
- *
- * PCIe link width control.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Allocate CPL buffers
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer. *
- */
-VOID
-PcieLibCplBufferAllocation (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PORT PortId;
- BOOLEAN IsAllocationEnabled;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibCplBufferAllocation Enter [CoreId = %d]\n", CoreId));
- IsAllocationEnabled = FALSE;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PcieLibIsValidPortId (PortId, pConfig) && PcieLibGetCoreId (PortId, pConfig) == CoreId) {
- PCI_ADDR Port;
- PORT_INFO *pPortInfo;
- pPortInfo = PcieLibGetPortInfo (PortId, pConfig);
- if (pPortInfo->SlaveCplBuffers != 0) {
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " PortId %d , Port Address 0x%x, CplBuffers, %d\n", PortId, Port.AddressValue, pPortInfo->SlaveCplBuffers));
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG10, AccessWidth32, (UINT32)~(0x3f << 8), pPortInfo->SlaveCplBuffers << 8, pConfig);
- IsAllocationEnabled = TRUE;
- }
- }
- }
- if (IsAllocationEnabled) {
- CORE CoreAddress;
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG20 | CoreAddress, AccessWidth32, (UINT32)~(BIT11), BIT11, pConfig);
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibCplBufferAllocation Exit\n"));
-} \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieCplBuffers.h b/src/vendorcode/amd/cimx/rd890/nbPcieCplBuffers.h
deleted file mode 100644
index 87d3b30722..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieCplBuffers.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file
- *
- * PCIe link width control.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBPCIECPLBUFFERS_H_
-#define _NBPCIECPLBUFFERS_H_
-
-VOID
-PcieLibCplBufferAllocation (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieEarlyHwLib.c b/src/vendorcode/amd/cimx/rd890/nbPcieEarlyHwLib.c
deleted file mode 100644
index 1111556270..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieEarlyHwLib.c
+++ /dev/null
@@ -1,475 +0,0 @@
-/**
- * @file
- *
- * PCIe silicon specific functions library.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "HotplugFirmware.h"
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-#define MCU_CLEAR_BLOCK_LENGTH 16
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-INDIRECT_REG_ENTRY
-STATIC
-PcieMiscInitTable[] = {
- {
- NB_MISC_REG20,
- (UINT32)~BIT1,
- 0x0
- }, //enable static device remapping by default
- {
- NB_MISC_REG22,
- 0xffffffff,
- BIT27 | (0x8 << 12) | (0x8 << 16) | (0x8 << 20)
- },
- {
- NB_MISC_REG2B,
- 0xffffffff,
- (0x8 << 12)
- },
- {
- NB_MISC_REG6C,
- 0xffffffff,
- (0x8 << 16)
- },
- {
- NB_MISC_REG6B,
- 0xffffffff,
- (UINT32) (0x1f << 27)
- }, //[13][12]Turn Off Offset Cancellation
- {
- NB_MISC_REG37,
- (UINT32)~(BIT11 + BIT12 + BIT13),
- 0x0
- }, //[14][13]Disables Rx Clock gating in CDR
- {
- NB_MISC_REG67,
- (UINT32)~(BIT26 + BIT10 + BIT11),
- BIT11
- }, //[13]Disables Rx Clock gating in CDR
- //[16]Sets Electrical Idle Threshold
- {
- NB_MISC_REG2C,
- (UINT32)~(BIT10),
- 0x0
- }, //[13]Disables Rx Clock gating in CDR
- {
- NB_MISC_REG2A,
- (UINT32)~(BIT17 + BIT16),
- BIT17
- }, //[16]Sets Electrical l Idle Threshold
- {
- NB_MISC_REG32,
- (UINT32)~(0x3F << 20),
- (UINT32) (0x2A << 20)
- } //[17][16]Sets Electrical Idle Threshold
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Misc Initialization prior port training.
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-VOID
-PcieLibPreTrainingInit (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
- PCIE_CONFIG *pPcieConfig;
- UINT32 ServerHotplugMask;
- BOOLEAN SmuWa;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibPreTrainingInit Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- ServerHotplugMask = 0;
-//Init Misc registers
- LibNbIndirectTableInit (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- 0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&PcieMiscInitTable[0],NULL),
- (sizeof (PcieMiscInitTable) / sizeof (INDIRECT_REG_ENTRY)),
- pConfig
- );
-//Setup peer-to-peer
- if (pPcieConfig->PcieConfiguration.Peer2Peer == ON) {
- if (pPcieConfig->CoreConfiguration[PcieLibGetCoreId (3, pConfig)] == GFX_CONFIG_AABB) {
- Value = 0x08080404;
- } else {
- Value = 0x08080008;
- }
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG49, AccessWidth32, 0, Value, pConfig);
- if (pPcieConfig->CoreConfiguration[PcieLibGetCoreId (12, pConfig)] == GFX_CONFIG_AABB) {
- Value = 0xFFFF0404;
- } else {
- Value = 0xFFFF0008;
- }
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG2F, AccessWidth32, 0, Value, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG48, AccessWidth32, (UINT32)~(BIT8), 0xffff0000, pConfig);
- }
-
- //Remap device number
-#ifndef DEVICE_REMAP_DISABLE
- if (PciePortRemapInit (pConfig) != AGESA_SUCCESS ) {
- REPORT_EVENT (AGESA_ERROR, PCIE_ERROR_DEVICE_REMAP, 0, 0, 0, 0, pConfig);
- }
-#endif
-
-#ifndef HOTPLUG_SUPPORT_DISABLED
- ServerHotplugMask = PcieInitHotplug (pConfig);
-#endif
-
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG4A, AccessWidth32, &Value, pConfig);
- SmuWa = ((Value & BIT21) != 0) ? TRUE : FALSE;
-
- if (SmuWa || ServerHotplugMask != 0) {
- UINT32 BlockIndex;
- UINT32 SmuWaData;
- UINT16 Address;
- UINT32 Data[MCU_CLEAR_BLOCK_LENGTH];
-
- LibNbMcuControl (AssertReset, pConfig);
- // clear SMU RAM
- LibAmdMemFill (&Data[0], 0, sizeof (Data), (AMD_CONFIG_PARAMS *)&(pConfig->sHeader));
- for (Address = 0; Address < (16 * 1024); Address = Address + 4 * MCU_CLEAR_BLOCK_LENGTH) {
- LibNbLoadMcuFirmwareBlock (Address, MCU_CLEAR_BLOCK_LENGTH, &Data[0], pConfig);
- }
- //Load SMU firmware
- for (BlockIndex = 0; BlockIndex < Fm.NumberOfBlock; BlockIndex++) {
- LibNbLoadMcuFirmwareBlock (Fm.BlockArray[BlockIndex].Address, Fm.BlockArray[BlockIndex].Length, Fm.BlockArray[BlockIndex].Data, pConfig);
- }
- if (SmuWa) {
- SmuWaData = LibHtGetSmuWaData (pConfig);
- LibNbLoadMcuFirmwareBlock (0xFE70, 0x1, &SmuWaData, pConfig);
- }
- SmuWaData = ((SmuWa == TRUE) ? 0x100 : 0x100) | ((ServerHotplugMask != 0) ? 0x1 : 0);
- LibNbLoadMcuFirmwareBlock (0xFE74, 0x1, &SmuWaData, pConfig);
-
- LibNbMcuControl (DeAssertReset, pConfig);
- }
-
-#ifndef HOTPLUG_SUPPORT_DISABLED
- PcieCheckHotplug (ServerHotplugMask, pConfig);
-#endif
-
-}
-
-INDIRECT_REG_ENTRY PcieCoreInitTable[] = {
- {
- NB_BIFNB_REG10,
- (UINT32)~(BIT10 + BIT11 + BIT12),
- BIT12
- },
- {
- NB_BIFNB_REG20,
- (UINT32)~(BIT8 + BIT9),
- BIT9
- },
- {
- NB_BIFNB_REG02,
- (UINT32)~(BIT0),
- BIT0
- },
- {
- NB_BIFNB_REG40,
- (UINT32)~(BIT14 + BIT15),
- BIT15
- },
- {
- NB_BIFNB_REGC2,
- (UINT32)~(BIT25),
- BIT25
- },
- {
- NB_BIFNB_REGC1,
- (UINT32)~(BIT0),
- (BIT0 + BIT1 + BIT2)
- },
- {
- NB_BIFNB_REG1C,
- 0x0,
- (4 << 6) + (4 << 1) + 1
- }
-};
-
-INDIRECT_REG_ENTRY PcieRd790CoreInitTable[] = {
- {
- NB_BIFNB_REGC2,
- (UINT32)~(BIT14),
- (BIT14)
- },
- {
- NB_BIFNB_REGC1,
- (UINT32)~(BIT2),
- 0x0
- },
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init Core registers
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-PcieLibCommonCoreInit (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 CoreAddress;
- NB_INFO NbInfo;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibCommonCoreInit (CoreId = %d) Enter\n", CoreId));
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- NbInfo = LibNbGetRevisionInfo (pConfig);
-
- LibNbIndirectTableInit (
- pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX,
- CoreAddress,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&PcieCoreInitTable[0],NULL),
- (sizeof (PcieCoreInitTable) / sizeof (INDIRECT_REG_ENTRY)),
- pConfig
- );
-
- if (CoreAddress == SB_CORE) {
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG10 | CoreAddress, AccessWidth32, (UINT32)~BIT9, BIT9, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG06, AccessWidth32, (UINT32)~BIT26, BIT26 + BIT1, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG1C | CoreAddress, AccessWidth32, (UINT32)~BIT0, 0x0, pConfig);
- }
- if ( NbInfo.Type < NB_SR5690 ) {
- LibNbIndirectTableInit (
- pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX,
- CoreAddress,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&PcieRd790CoreInitTable[0], NULL),
- (sizeof (PcieRd790CoreInitTable) / sizeof (INDIRECT_REG_ENTRY)),
- pConfig
- );
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibCommonCoreInit Exit\n"));
-};
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init Core after training is completed
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer. *
- */
-
-
-VOID
-PcieLibCoreAfterTrainingInit (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 CoreAddress;
- PCIE_CONFIG *pPcieConfig;
- PCI_ADDR ClkPciAddress;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- ClkPciAddress = pConfig->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG20 | CoreAddress, AccessWidth32, (UINT32)~(BIT9), 0, pConfig);
-//Save core setting in scratch register
- LibNbPciIndexWrite (
- pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX,
- NB_BIFNB_REG01 | CoreAddress,
- AccessWidth32,
- (UINT32*)&pPcieConfig->CoreSetting[CoreId],
- pConfig
- );
-//Save general setting in scratch
- LibNbEnableClkConfig (pConfig);
- LibNbPciWrite (ClkPciAddress.AddressValue | NB_CLK_REG78, AccessWidth32, &pPcieConfig->PcieConfiguration, pConfig);
- LibNbDisableClkConfig (pConfig);
-
-}
-
-
-INDIRECT_REG_ENTRY PciePortInitTable[] = {
- {
- NB_BIFNBP_REG02,
- (UINT32)~(BIT15),
- BIT15
- },
- {
- NB_BIFNBP_REGA1,
- (UINT32)~(BIT24 + BIT26),
- BIT11
- },
- {
- NB_BIFNBP_REGB1,
- 0xffffffff,
- BIT28 + BIT23 + BIT19 + BIT20
- },
- {
- NB_BIFNBP_REGA4,
- (UINT32)~(BIT0),
- 0x0
- },
- {
- NB_BIFNBP_REGA2,
- (UINT32)~(BIT13),
- BIT13
- },
- {
- NB_BIFNBP_REGA3,
- (UINT32)~(BIT9),
- BIT9
- },
- {
- NB_BIFNBP_REGA0,
- 0xffff000f,
- 0x6830
- },
- {
- NB_BIFNBP_REGC1,
- 0xfffffff0,
- 0xC
- },
- {
- NB_BIFNBP_REG70,
- (UINT32)~(BIT16 + BIT17 + BIT18),
- BIT16 + BIT18
- }
-};
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init port registers
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieLibCommonPortInit (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCI_ADDR Port;
- PCIE_CONFIG *pPcieConfig;
- UINT32 PcieSlotCapability;
- UINT32 CoreAddress;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibCommonPortInit PortId %d Enter\n", PortId));
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- CoreAddress = PcieLibGetCoreAddress (PcieLibGetCoreId (PortId, pConfig), pConfig);
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
-
- LibNbIndirectTableInit (
- Port.AddressValue | NB_BIF_INDEX,
- 0x0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&PciePortInitTable[0],NULL),
- (sizeof (PciePortInitTable) / sizeof (INDIRECT_REG_ENTRY)),
- pConfig
- );
- if (CoreAddress == GPP3a_CORE || CoreAddress == SB_CORE || CoreAddress == GPP3b_CORE) {
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG70, AccessWidth32, (UINT32)~(BIT16 + BIT17 + BIT18), (BIT17 + BIT18), pConfig);
- if (CoreAddress == GPP3a_CORE) {
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGB1, AccessWidth32, (UINT32)~(BIT22), BIT22, pConfig);
- }
- }
-// Set completion timeout
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG80, AccessS3SaveWidth8, 0xF0, 0x6, pConfig);
- //if (CoreAddress != SB_CORE) {
- // LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG10, AccessWidth32, (UINT32)~BIT0, 0x0, pConfig);
- //}
-//For hotplug ports
- //if (pPcieConfig->PortConfiguration[PortId].PortHotplug != OFF ||
- // pPcieConfig->PcieConfiguration.DisableHideUnusedPorts == ON ||
- // LibNbGetRevisionInfo (pConfig).Revision == NB_REV_A11) {
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG20, AccessWidth32, (UINT32)~BIT19, 0x0, pConfig);
- //}
-
-// Enable Immediate ACK
- if (pPcieConfig->ExtPortConfiguration[PortId].PortL1ImmediateACK == ON) {
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA0, AccessWidth32, (UINT32)~BIT23, BIT23, pConfig);
- }
-//Set up slot capability
- PcieSlotCapability = (pPcieConfig->ExtPortConfiguration[PortId].PortPowerLimit << 7) |
- ((Port.Address.Device | Port.Address.Bus << 5 ) << 19);
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG6C, AccessS3SaveWidth32, (UINT32)~((0x3ff << 7) | (0x1fff << 19)), PcieSlotCapability, pConfig);
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG5A, AccessS3SaveWidth16, (UINT32)~BIT8, BIT8, pConfig);
-//Set interrupt pin info
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG3D, AccessS3SaveWidth8, 0x0, 0x1, pConfig);
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibCommonPortInit Exit\n"));
-};
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieHotplug.c b/src/vendorcode/amd/cimx/rd890/nbPcieHotplug.c
deleted file mode 100644
index 25ef38f587..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieHotplug.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/**
- * @file
- *
- * Routines to support Hotplug.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdSbLib.h"
-
-#ifndef HOTPLUG_SUPPORT_DISABLED
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-#define ATTN_BUTTON_PRESENT BIT0
-#define PWR_CONTROLLER_PRESENT BIT1
-#define MRL_SENSOR_PRESENT BIT2
-#define ATTN_INDICATOR_PRESENT BIT3
-#define PWR_INDICATOR_PRESENT BIT4
-#define HOTPLUG_SURPRISE BIT5
-#define HOTPLUG_CAPABLE BIT6
-
-#define ATTN_BUTTON_PRESSED BIT0
-#define PWR_FAULT_DETECTED BIT1
-#define MRL_SENSOR_CHANGED BIT2
-#define PRESENCE_DETECT_CHANGED BIT3
-#define COMMAND_COMPLETED BIT4
-#define MRL_SENSOR_STATE BIT5
-#define PRESENCE_DETECT_STATE BIT6
-#define DL_STATE_CHANGED BIT8
-
-#define PWR_CONTROLLER_CNTL BIT10
-#define NO_COMMAND_COMPLETED_SUPPORTED BIT18
-#define SERVER_HOTPLUG_CAPABILITY \
- (ATTN_BUTTON_PRESENT | PWR_CONTROLLER_PRESENT | ATTN_INDICATOR_PRESENT | PWR_INDICATOR_PRESENT | HOTPLUG_CAPABLE)
-#define NATIVE_HOTPLUG_CAPABILITY \
- (HOTPLUG_SURPRISE | HOTPLUG_CAPABLE)
-
-#define SERVER_HOTPLUG 1
-#define NATIVE_HOTPLUG 2
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init Ports Hotplug capability.
- * Initialize hotplug controller init port hotplug capability
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- * @retval AGESA_SUCCESS Hotplug controller successfully initialized.
- * @retval AGESA_FAIL Failure during initialization of hotplug controller.
- */
-/*----------------------------------------------------------------------------------------*/
-UINT32
-PcieInitHotplug (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 ServerHotplugPortMask;
- PORT PortId;
- PCI_ADDR ClkPciAddress;
- NB_INFO NbInfo;
- PCIE_CONFIG *pPcieConfig;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieInitHotplug Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- NbInfo = LibNbGetRevisionInfo (pConfig);
- ServerHotplugPortMask = 0;
- ClkPciAddress = pConfig->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- if (NbInfo.Type == NB_SR5690) {
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON &&
- pPcieConfig->PortConfiguration[PortId].PortHotplug != OFF ) {
- PCI_ADDR Port;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- if (pPcieConfig->PortConfiguration[PortId].PortHotplug == SERVER_HOTPLUG) {
- UINT8 HpDescriptorRegister;
- UINT8 HpDescriptorOffset;
- ServerHotplugPortMask |= 1 << PortId;
- HpDescriptorOffset = (PcieLibGetStaticPortInfo (PcieLibNativePortId (PortId, pConfig), pConfig))->HotplugAddress;
- if (HpDescriptorOffset != 0xff) {
- ServerHotplugPortMask |= 1 << PortId;
- HpDescriptorRegister = (PcieLibGetCoreInfo (PcieLibGetCoreId (PortId, pConfig), pConfig))->HotplugRegister;
- //Enable CLK config
- LibNbEnableClkConfig (pConfig);
- //Setup descriptor
- LibNbPciRMW (
- ClkPciAddress.AddressValue | HpDescriptorRegister ,
- AccessWidth32,
- 0xffffffff,
- ((1 << 3) | (pPcieConfig->ExtPortConfiguration[PortId].PortHotplugDevMap << 2) | pPcieConfig->ExtPortConfiguration[PortId].PortHotplugByteMap) << HpDescriptorOffset,
- pConfig
- );
- //Hide CLK config
- LibNbDisableClkConfig (pConfig);
- // Enable power fault
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG10, AccessWidth32, (UINT32)~BIT4, BIT4, pConfig);
- //Set up capability. Keep NO_COMMAND_COMPLETED_SUPPORTED (bit 18) to zero
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG6C, AccessWidth32, 0xfffbffff, SERVER_HOTPLUG_CAPABILITY, pConfig);
- //Clear Status
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG72, AccessWidth16, 0xffffffff, 0x11F, pConfig);
- }
- }
- if (pPcieConfig->PortConfiguration[PortId].PortHotplug == NATIVE_HOTPLUG) {
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG6C, AccessWidth32, 0xffffffff, NATIVE_HOTPLUG_CAPABILITY, pConfig);
- }
- }
- }
- }
- return ServerHotplugPortMask;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init Ports Hotplug capability.
- * Initialize hotplug controller init port hotplug capability
- *
- * @param[in] ServerHotplugPortMask ServerHotplugPortMask
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- * @retval AGESA_SUCCESS Hotplug controller successfully initialized.
- * @retval AGESA_FAIL Failure during initialization of hotplug controller.
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-PcieCheckHotplug (
- IN UINT32 ServerHotplugPortMask,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PORT PortId;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieCheckHotplug Enter\n"));
- //Check if Firmware loaded successfully
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- //Check Firmware Loaded successfully
- if ((ServerHotplugPortMask & (1 << PortId)) != 0) {
- UINT32 Count;
- PCI_ADDR Port;
- UINT16 SlotStatus;
-
- Count = 30; //Setup counter for 30ms
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- do {
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 1000, 0);
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG72, AccessWidth16, &SlotStatus, pConfig);
- } while ((SlotStatus & (ATTN_BUTTON_PRESSED | PWR_FAULT_DETECTED)) == 0 && --Count != 0);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Hotplug Firmware Init PortId = %d SlotStatus = 0x%x Retry = %d\n", PortId, SlotStatus, Count));
- if ((SlotStatus & PWR_FAULT_DETECTED) != 0 || (SlotStatus & (PWR_FAULT_DETECTED | ATTN_BUTTON_PRESSED)) == 0) {
- REPORT_EVENT (AGESA_ERROR, PCIE_ERROR_HOTPLUG_INIT, PortId, 0, 0, 0, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " ERROR!!!Hotplug Firmware Init FAIL\n"));
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG6C, AccessWidth32, (UINT32)~SERVER_HOTPLUG_CAPABILITY, 0x0, pConfig);
- } else {
- //Clear Status
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG72, AccessWidth16, 0xffffffff, 0x11F, pConfig);
- if ((SlotStatus & PRESENCE_DETECT_CHANGED) != 0) {
- //Power on slot
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG70, AccessWidth16, (UINT32)~PWR_CONTROLLER_CNTL, 0x0, pConfig);
- }
- }
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieCheckHotplug Exit\n"));
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init Ports Hotplug capability.
- * Initialize hotplug controller init port hotplug capability
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- * @retval AGESA_SUCCESS Hotplug controller successfully initialized.
- * @retval AGESA_FAIL Failure during initialization of hotplug controller.
- */
-/*----------------------------------------------------------------------------------------*/
-/*
-AGESA_STATUS
-PcieInitHotplug (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- UINT32 ServerHotplugPortMask;
- PORT PortId;
- PCI_ADDR ClkPciAddress;
- NB_INFO NbInfo;
- PCIE_CONFIG *pPcieConfig;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieInitHotplug Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- NbInfo = LibNbGetRevisionInfo (pConfig);
- ServerHotplugPortMask = 0;
- ClkPciAddress = pConfig->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- Status = AGESA_SUCCESS;
- if (NbInfo.Type == NB_SR5690) {
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON &&
- pPcieConfig->PortConfiguration[PortId].PortHotplug != OFF ) {
- PCI_ADDR Port;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- if (pPcieConfig->PortConfiguration[PortId].PortHotplug == SERVER_HOTPLUG) {
- UINT8 HpDescriptorRegister;
- UINT8 HpDescriptorOffset;
- ServerHotplugPortMask |= 1 << PortId;
- HpDescriptorOffset = (PcieLibGetStaticPortInfo (PcieLibNativePortId (PortId, pConfig), pConfig))->HotplugAddress;
- if (HpDescriptorOffset != 0xff) {
- ServerHotplugPortMask |= 1 << PortId;
- HpDescriptorRegister = (PcieLibGetCoreInfo (PcieLibGetCoreId (PortId, pConfig), pConfig))->HotplugRegister;
- //Enable CLK config
- LibNbEnableClkConfig (pConfig);
- //Setup descriptor
- LibNbPciRMW (
- ClkPciAddress.AddressValue | HpDescriptorRegister ,
- AccessWidth32,
- 0xffffffff,
- ((1 << 3) | (pPcieConfig->ExtPortConfiguration[PortId].PortHotplugDevMap << 2) | pPcieConfig->ExtPortConfiguration[PortId].PortHotplugByteMap) << HpDescriptorOffset,
- pConfig
- );
- //Hide CLK config
- LibNbDisableClkConfig (pConfig);
- // Enable power fault
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG10, AccessWidth32, (UINT32)~BIT4, BIT4, pConfig);
- //Set up capability. Keep NO_COMMAND_COMPLETED_SUPPORTED (bit 18) to zero
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG6C, AccessWidth32, 0xfffbffff, SERVER_HOTPLUG_CAPABILITY, pConfig);
- //Clear Status
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG72, AccessWidth16, 0xffffffff, 0x11F, pConfig);
- }
- }
- if (pPcieConfig->PortConfiguration[PortId].PortHotplug == NATIVE_HOTPLUG) {
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG6C, AccessWidth32, 0xffffffff, NATIVE_HOTPLUG_CAPABILITY, pConfig);
- }
- }
- }
- if (ServerHotplugPortMask != 0) {
- UINT32 FirmwareLength;
- FirmwareLength = sizeof (Firmware);
- if (FirmwareLength > 0) {
- UINT32 *pFirmware;
- pFirmware = (UINT32*)FIX_PTR_ADDR (&Firmware[0], NULL);
- //Load firmware
- LibNbMcuControl (AssertReset, pConfig);
- LibNbLoadMcuFirmwareBlock (0x200, (sizeof (Firmware) - 64), pFirmware, pConfig);
- LibNbLoadMcuFirmwareBlock (0xFFC0, 64, &pFirmware[(sizeof (Firmware) - 64) / 4], pConfig);
- LibNbMcuControl (DeAssertReset, pConfig);
- }
- }
- //Check if Firmware loaded successfully
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- //Check Firmware Loaded successfully
- if ((ServerHotplugPortMask & (1 << PortId)) != 0) {
- UINT32 Count;
- PCI_ADDR Port;
- UINT16 SlotStatus;
-
- Count = 30; //Setup counter for 30ms
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- do {
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 1000, 0);
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG72, AccessWidth16, &SlotStatus, pConfig);
- } while ((SlotStatus & (ATTN_BUTTON_PRESSED | PWR_FAULT_DETECTED)) == 0 && --Count != 0);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Hotplug Firmware Init PortId = %d SlotStatus = 0x%x Retry = %d\n", PortId, SlotStatus, Count));
- if ((SlotStatus & PWR_FAULT_DETECTED) != 0 || (SlotStatus & (PWR_FAULT_DETECTED | ATTN_BUTTON_PRESSED)) == 0) {
- Status = AGESA_ERROR;
- REPORT_EVENT (AGESA_ERROR, PCIE_ERROR_HOTPLUG_INIT, PortId, 0, 0, 0, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " ERROR!!!Hotplug Firmware Init FAIL\n", PortId));
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG6C, AccessWidth32, ~SERVER_HOTPLUG_CAPABILITY, 0x0, pConfig);
- } else {
- //Clear Status
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG72, AccessWidth16, 0xffffffff, 0x11F, pConfig);
- if ((SlotStatus & PRESENCE_DETECT_CHANGED) != 0) {
- //Power on slot
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG70, AccessWidth16, ~PWR_CONTROLLER_CNTL, 0x0, pConfig);
- }
- }
- }
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieInitHotplug Exit. Status[0x%x]\n", Status));
- return Status;
-}
-*/
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieHotplug.h b/src/vendorcode/amd/cimx/rd890/nbPcieHotplug.h
deleted file mode 100644
index 1b7ba040b2..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieHotplug.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * @file
- *
- * PCIe hotplug support.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#ifndef _NBPCIEHOTPLUG_H_
-#define _NBPCIEHOTPLUG_H_
-
-
-UINT32
-PcieInitHotplug (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieCheckHotplug (
- IN UINT32 ServerHotplugPortMask,
- IN AMD_NB_CONFIG *pConfig
- );
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieInitEarly.c b/src/vendorcode/amd/cimx/rd890/nbPcieInitEarly.c
deleted file mode 100644
index 6fdf2b120c..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieInitEarly.c
+++ /dev/null
@@ -1,720 +0,0 @@
-/**
- * @file
- *
- * PCIe Early initialization.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-#include "amdSbLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * PCIE Init for all NB.
- * Basic programming / EP training. After this call EP are fully operational.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-AmdPcieEarlyInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbApiCall (PcieEarlyInit, ConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Northbridge PCIE Init.
- * Basic programming / EP training. After this call EP are fully operational on particular NB.
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieEarlyInit (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieEarlyInit Enter\n"));
- Status = PcieLibInitValidateInput (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0 , 0, 0, 0, NbConfigPtr);
- CIMX_ASSERT (FALSE);
- return Status;
- }
- Status = PciePreTrainingInit (NbConfigPtr);
- Status = PcieInitPorts (NbConfigPtr);
- Status = PcieAfterTrainingInit (NbConfigPtr);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieEarlyInit Exit [0x%x]\n", Status));
- return Status;
-}
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Misc initialization prior port link training started
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PciePreTrainingInit (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_CONFIG *pPcieConfig;
- CORE CoreId ;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PciePreTrainingInit Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- //Unhide all ports
- PcieLibUnHidePorts (pConfig);
- if (pPcieConfig->PcieMmioBaseAddress != 0 && pPcieConfig->PcieMmioSize != 0) {
- PcieLibSetPcieMmioBase (pPcieConfig->PcieMmioBaseAddress, pPcieConfig->PcieMmioSize, pConfig);
- }
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " CoreId %d CoreSetting = 0x%x\n", CoreId, *((UINT32*)&pConfig->pPcieConfig->CoreSetting[CoreId])));
- //if (pPcieConfig->CoreSetting[CoreId].CoreDisabled == OFF) {
- //Configure cores
- if (pPcieConfig->CoreSetting[CoreId].SkipConfiguration == OFF) {
- PcieLibSetCoreConfiguration (CoreId, pConfig);
- }
- //Init core registers
- PcieLibCommonCoreInit (CoreId, pConfig);
- //}
- }
- PcieLibPreTrainingInit (pConfig);
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " CoreId %d CoreSetting = 0x%x\n", CoreId, *((UINT32*)&pConfig->pPcieConfig->CoreSetting[CoreId])));
- //Init CPL buffer allocation
- //if (pPcieConfig->CoreSetting[CoreId].CoreDisabled == OFF && pPcieConfig->CoreSetting[CoreId].CplBufferAllocation == ON) {
- if (pPcieConfig->CoreSetting[CoreId].CplBufferAllocation == ON) {
- PcieLibCplBufferAllocation (CoreId, pConfig);
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PciePreTrainingInit Exit\n"));
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Misc initialization after port training complete
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieAfterTrainingInit (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_CONFIG *pPcieConfig;
- CORE CoreId;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
-// if (pPcieConfig->CoreSetting[CoreId].CoreDisabled == OFF) {
- //Configure cores
- PcieLibCoreAfterTrainingInit (CoreId, pConfig);
-// }
- }
- //Hide all Ports
- PcieLibHidePorts (pConfig);
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Train PCIE Ports
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieInitPorts (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PCIE_CONFIG *pPcieConfig;
-
- Status = AGESA_SUCCESS;
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- if (pPcieConfig->DeviceInitMaskS1 != 0) {
- Status = PcieInitSelectedPorts (pPcieConfig->DeviceInitMaskS1, pConfig);
- }
- if (pPcieConfig->DeviceInitMaskS2 != 0) {
- Status = PcieInitSelectedPorts (pPcieConfig->DeviceInitMaskS2, pConfig);
- }
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Train PCIE Ports selected for this stage
- *
- *
- * @param[in] SelectedPortMask Bitmap of port ID selected for training.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieInitSelectedPorts (
- IN UINT16 SelectedPortMask,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PCIE_CONFIG *pPcieConfig;
- PORT PortId;
- BOOLEAN RequestResetDelay;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieInitSelectedPorts (Ports = 0x%x) Enter\n", SelectedPortMask));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- Status = AGESA_SUCCESS;
- RequestResetDelay = FALSE;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " PortId %d PortConfiguration = 0x%x ExtPortConfiguration = 0x%x\n", PortId, *((UINT32*)&pPcieConfig->PortConfiguration[PortId]), *((UINT32*)&pPcieConfig->ExtPortConfiguration[PortId])));
- if ((SelectedPortMask & (1 << PortId)) != 0) {
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON && PcieLibIsValidPortId (PortId, pConfig)) {
- PCIE_LINK_MODE LinkMode;
- //Deassert slot reset. Bring EP out of reset
- Status = LibNbCallBack (PHCB_AmdPortResetDeassert, 1 << PortId, pConfig);
- if (Status == AGESA_SUCCESS) {
- //STALL (GET_BLOCK_CONFIG_PTR (pConfig), pPcieConfig->ResetToTrainingDelay * 1000, 0);
- RequestResetDelay = TRUE;
- }
- //Init common registers
- PcieLibCommonPortInit (PortId, pConfig);
- //Check if we already have device failure to go to Gen2 before
- if (PcieLibCheckGen2Disabled (PortId, pConfig)) {
- pPcieConfig->PortConfiguration[PortId].PortLinkMode = PcieLinkModeGen1;
- pPcieConfig->ExtPortConfiguration[PortId].PortDeemphasis = PcieTxDeemphasis6dB; // this is to workaround Gen2
- }
- //@todo Add handling for scratch register for PCIE Gen
- switch (pPcieConfig->PortConfiguration[PortId].PortLinkMode) {
- case PcieLinkModeGen2:
- case PcieLinkModeGen2AdvertizeOnly:
- case PcieLinkModeGen1:
- LinkMode = pPcieConfig->PortConfiguration[PortId].PortLinkMode;
- break;
- default:
- LinkMode = PcieLinkModeGen1;
- }
- PcieLibSetLinkMode (PortId, LinkMode, pConfig);
- //Enable Compliance Mode
- if (pPcieConfig->PortConfiguration[PortId].PortCompliance == ON) {
- PcieLibSetLinkCompliance (PortId, pConfig);
- }
- } else {
- //Port disabled
- SelectedPortMask &= (~(1 << PortId));
- }
- }
- }
- if (RequestResetDelay) {
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), pPcieConfig->ResetToTrainingDelay * 1000, 0);
- }
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if ((SelectedPortMask & (1 << PortId)) != 0) {
- //Release Port Training
- PcieLibPortTrainingControl (PortId, PcieLinkTrainingRelease, pConfig);
- }
- }
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), pPcieConfig->TrainingToLinkTestDelay * 1000, 0);
- Status = PcieCheckSelectedPorts (SelectedPortMask, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieInitSelectedPorts Exit\n"));
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check link state on selected ports.
- *
- *
- *
- * @param[in] SelectedPortMask Bitmap of port ID selected for training.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieCheckSelectedPorts (
- IN UINT16 SelectedPortMask,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PCIE_CONFIG *pPcieConfig;
- PORT PortId;
- UINT16 PortMask;
- UINT16 CurrentPortMask;
- PCIE_LINK_STATUS PortsLinkStatus[MAX_PORT_ID + 1];
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieCheckSelectedPorts (Ports = 0x%x) Enter\n", SelectedPortMask));
- Status = AGESA_SUCCESS;
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- PortMask = SelectedPortMask;
- // Clear up link state storage
- LibAmdMemFill (PortsLinkStatus, 0, sizeof (PortsLinkStatus), (AMD_CONFIG_PARAMS *)&(pPcieConfig->sHeader));
- // Initial check for link status on all ports
- if (PortMask != 0) {
- PcieGetPortsLinkStatus (PortMask, &PortsLinkStatus[0], pPcieConfig->ReceiverDetectionPooling, pConfig);
- }
- // Check if training on any ports in progress
- PortMask = PcieFindPortsWithLinkStatus (&PortsLinkStatus[0], PcieLinkStatusTrainingInProgress);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " #1 PortMask = 0x%x\n", PortMask));
- if (PortMask != 0) {
- // Try to recover ports in case of broken lane
- if (PcieBrokenLaneWorkaround (PortMask, pConfig) != AGESA_UNSUPPORTED) {
- // Update port status array
- PortMask |= PcieFindPortsWithLinkStatus (&PortsLinkStatus[0], PcieLinkStatusConnected);
- PcieGetPortsLinkStatus (PortMask, &PortsLinkStatus[0], pPcieConfig->ReceiverDetectionPooling, pConfig);
- }
- }
- // Check if training on any ports still in progress
- CurrentPortMask = PcieFindPortsWithLinkStatus (&PortsLinkStatus[0], PcieLinkStatusTrainingInProgress);
- if (PortMask != CurrentPortMask) {
- REPORT_EVENT (AGESA_WARNING, PCIE_ERROR_BROKEN_LINE, (PortMask^CurrentPortMask)&PortMask, 0, 0, 0, pConfig);
- }
- PortMask = CurrentPortMask;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " #2 PortMask = 0x%x\n", PortMask));
- if (PortMask != 0) {
- // Try to recover port training by downgrading link speed to Gen1
- if (PcieGen2Workaround (PortMask, pConfig) != AGESA_UNSUPPORTED) {
- PortMask |= PcieFindPortsWithLinkStatus (&PortsLinkStatus[0], PcieLinkStatusConnected);
- PcieGetPortsLinkStatus (PortMask, &PortsLinkStatus[0], pPcieConfig->ReceiverDetectionPooling, pConfig);
- }
- }
- // Check if training on any ports still in progress
- CurrentPortMask = PcieFindPortsWithLinkStatus (&PortsLinkStatus[0], PcieLinkStatusTrainingInProgress);
- if (PortMask != CurrentPortMask) {
- REPORT_EVENT (AGESA_WARNING, PCIE_ERROR_GEN2_FAIL, (PortMask^CurrentPortMask)&PortMask, 0, 0, 0, pConfig);
- }
- PortMask = CurrentPortMask;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " #3 PortMask = 0x%x\n", PortMask));
- if (PortMask != 0) {
- REPORT_EVENT (AGESA_WARNING, PCIE_ERROR_TRAINING_FAIL, PortMask, 0, 0, 0, pConfig);
- PcieMiscWorkaround (&PortsLinkStatus[0], pConfig);
- }
- //Get bitmap of successfully trained ports
- PortMask = PcieFindPortsWithLinkStatus (&PortsLinkStatus[0], PcieLinkStatusConnected);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " #4 PortMask = 0x%x\n", PortMask));
- if (PortMask != 0) {
- // Check if VCO negotiation is completed
- PcieCheckVco (PortMask, &PortsLinkStatus[0], pConfig);
- }
- CurrentPortMask = PcieFindPortsWithLinkStatus (&PortsLinkStatus[0], PcieLinkStatusConnected);
- if (PortMask != CurrentPortMask) {
- REPORT_EVENT (AGESA_WARNING, PCIE_ERROR_VCO_NEGOTIATON, (PortMask^CurrentPortMask)&PortMask, 0, 0, 0, pConfig);
- }
- PortMask = CurrentPortMask;
- //Update status port status info
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if ((SelectedPortMask & (1 << PortId)) != 0) {
- PCI_ADDR Port;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- if (PortsLinkStatus[PortId] == PcieLinkStatusInCompliance) {
- pPcieConfig->PortConfiguration[PortId].PortCompliance = ON;
- } else {
- if (PortsLinkStatus[PortId] == PcieLinkStatusConnected) {
- if (LibNbCallBack (PHCB_AmdPortTrainingCompleted, Port.AddressValue, pConfig) == AGESA_ERROR) {
- PortsLinkStatus[PortId] = 0;
- }
- if (PortsLinkStatus[PortId] == PcieLinkStatusConnected &&
- pPcieConfig->PcieConfiguration.DisableGfxWorkaround == OFF &&
- PcieLibGetPortLinkInfo (PortId, pConfig).MaxLinkWidth >= PcieLinkWidth_x8 &&
- PcieGfxWorkarounds (PortId, pConfig) != AGESA_SUCCESS) {
- //CIMX_ASSERT (FALSE);
- PortsLinkStatus[PortId] = 0;
- }
- if (PortsLinkStatus[PortId] == PcieLinkStatusConnected) {
- pPcieConfig->PortConfiguration[PortId].PortDetected = ON;
- PcieLibSetLinkWidth (PortId, pPcieConfig->ExtPortConfiguration[PortId].PortLinkWidth, pConfig);
- }
- }
- if (pPcieConfig->PortConfiguration[PortId].PortDetected == OFF &&
- pPcieConfig->PortConfiguration[PortId].PortHotplug == OFF) {
- //Port training on Hold if Link in not connected and not in compliance
- PcieLibPortTrainingControl (PortId, PcieLinkTrainingHold, pConfig);
- }
- }
- if (pPcieConfig->PortConfiguration[PortId].PortDetected == OFF ||
- pPcieConfig->PortConfiguration[PortId].PortHotplug == ON) {
- // For all port without devices and hotplug ports
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG70, AccessWidth32, (UINT32)~BIT19, BIT19, pConfig);
- }
- LibNbPciIndexWrite (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG01, AccessWidth32, (UINT32*)&pPcieConfig->PortConfiguration[PortId], pConfig);
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG108, AccessWidth32, (UINT32*)&pPcieConfig->ExtPortConfiguration[PortId], pConfig);
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieCheckSelectedPorts Exit\n"));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Workaround for broken TX line.
- *
- *
- *
- * @param[in] SelectedPortMask Bitmap of port ID selected for training.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieBrokenLaneWorkaround (
- IN UINT16 SelectedPortMask,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PORT PortId;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieBrokenLaneWorkaround Enter\n"));
- Status = AGESA_UNSUPPORTED;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if ((SelectedPortMask & (1 << PortId)) != 0) {
- LINK_INFO LinkInfo = PcieLibGetPortLinkInfo (PortId, pConfig);
- if (LinkInfo.MaxLinkWidth > PcieLinkWidth_x1 && LinkInfo.LinkWidth < LinkInfo.MaxLinkWidth) {
- PcieLibPowerOffPortLanes (PortId, LinkInfo.LinkWidth, pConfig);
- if (PcieLibResetSlot (PortId, pConfig) == AGESA_SUCCESS) {
- Status = AGESA_SUCCESS;
- }
- }
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieBrokenLaneWorkaround Exit\n"));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Workaround for device violating Gen2 spec.
- * Downgrade link speed to Gen1.
- *
- *
- *
- * @param[in] SelectedPortMask Bitmap of port ID selected for training.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieGen2Workaround (
- IN UINT16 SelectedPortMask,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PCIE_CONFIG *pPcieConfig;
- PORT PortId;
- BOOLEAN RequestPciReset;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieGen2Workaround Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- RequestPciReset = FALSE;
- Status = AGESA_UNSUPPORTED;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if ((SelectedPortMask & (1 << PortId)) != 0) {
- if (pPcieConfig->PortConfiguration[PortId].PortLinkMode == PcieLinkModeGen2 ||
- pPcieConfig->PortConfiguration[PortId].PortLinkMode == PcieLinkModeGen2AdvertizeOnly ||
- pPcieConfig->ExtPortConfiguration[PortId].PortDeemphasis == PcieTxDeemphasis3p5dB) {
- //Degrade link speed to Gen1
- pPcieConfig->ExtPortConfiguration[PortId].PortDeemphasis = PcieTxDeemphasis6dB;
- PcieLibSetLinkMode (PortId, PcieLinkModeGen1, pConfig);
- PcieLibSetGen2Disabled (PortId, pConfig);
- if (PcieLibResetSlot (PortId, pConfig) != AGESA_SUCCESS) {
- //Slot reset logic not supported request PCI reset.
- RequestPciReset = TRUE;
- }
- //Report back to caller that potential downgrade case is detected.
- Status = AGESA_SUCCESS;
- }
- }
- if (RequestPciReset) {
- PcieLibRequestPciReset (pConfig);
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieGen2Workaround Enter\n"));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Try to recover system by issuing system wide PCI reset.
- *
- *
- *
- * @param[in] PortsLinkStatus Array of link status for every Port
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieMiscWorkaround (
- IN PCIE_LINK_STATUS *PortsLinkStatus,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PORT PortId;
- UINT16 PortMask;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieMiscWorkaround Enter\n"));
- Status = AGESA_UNSUPPORTED;
- PortMask = PcieFindPortsWithLinkStatus (PortsLinkStatus, PcieLinkStatusTrainingInProgress);
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if ((PortMask & (1 << PortId)) != 0) {
- if (PcieLibRequestPciReset (pConfig)!= AGESA_SUCCESS) {
- break;
- }
- PortMask = PcieFindPortsWithLinkStatus (PortsLinkStatus, PcieLinkStatusTrainingInProgress);
- if (PortMask == 0) {
- break;
- }
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieMiscWorkaround Exit\n"));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check VCO negotiation complete.
- * Routine will retry retrain device infinitely if VCO negotiation is failing.
- *
- *
- * @param[in] SelectedPortMask Bitmap of port ID selected for training.
- * @param[in] PortsLinkStatus Array of link status for every Port
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieCheckVco (
- IN UINT16 SelectedPortMask,
- IN PCIE_LINK_STATUS *PortsLinkStatus,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- UINT16 VcoNegotiationInProgressPortMask;
- PORT PortId;
- UINT16 VcoStatus;
- UINT32 LinkRetrainCount;
- UINT32 VcoPoll;
- UINT32 Value;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]VcoNegotiationInProgress Enter\n"));
- Status = AGESA_SUCCESS;
- VcoNegotiationInProgressPortMask = SelectedPortMask;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (VcoNegotiationInProgressPortMask & (1 << PortId)) {
- // For each port where VCO needs to be checked
- PCI_ADDR Port;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- PortsLinkStatus[PortId] = PcieLinkStatusVcoNegotiationInProgress;
- for (LinkRetrainCount = 0; LinkRetrainCount < 10; LinkRetrainCount++) {
- // Poll for 200 ms for VC0 negotioation completion
- for (VcoPoll = 0; VcoPoll < 200; VcoPoll++) {
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG12A, AccessWidth16, &VcoStatus, pConfig);
- if ((VcoStatus & BIT1) != 0) {
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 1000, 0);
- } else {
- PortsLinkStatus[PortId] = PcieLinkStatusConnected;
- break;
- }
- } //For each VcoPoll
- if (PortsLinkStatus[PortId] == PcieLinkStatusVcoNegotiationInProgress) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_MISC), " Vco Not Completed. Retrain link on PortId %d\n", PortId));
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, &Value, pConfig);
- Value = (Value & 0xfffffe80) | ((Value & 0x70) >> 4) | BIT8;
- LibNbPciIndexWrite (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, &Value, pConfig);
- } else {
- break; //Vco negotiations complete
- }
- } //For each LinkRetrainCount
- if (PortsLinkStatus[PortId] == PcieLinkStatusVcoNegotiationInProgress) {
- PortsLinkStatus[PortId] = PcieLinkStatusNotConnected;
- }
- } // Vco negotiations required
- } //For each port
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]VcoNegotiationInProgress Exit\n"));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get bit map of ports with particular link status
- *
- *
- *
- * @param[in] PortLinkStatus Pointer to array of link status for every Port
- * @param[in] LinkStatus LinkStatus to search for.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-UINT16
-PcieFindPortsWithLinkStatus (
- IN PCIE_LINK_STATUS *PortLinkStatus,
- IN PCIE_LINK_STATUS LinkStatus
- )
-{
- UINT16 PortMask;
- PORT PortId;
-
- PortMask = 0;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PortLinkStatus[PortId] == LinkStatus) PortMask |= (1 << PortId);
- }
- return PortMask;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * Gather link state for selected ports.
- *
- *
- * @param[in] SelectedPortMask Bitmap of port ID selected for training.
- * @param[in] PortLinkStatus Pointer to array of link status for every Port
- * @param[in] Pooling Time in MS to pool for link status change.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-PCIE_LINK_STATUS
-PcieGetPortsLinkStatus (
- IN UINT16 SelectedPortMask,
- IN OUT PCIE_LINK_STATUS *PortLinkStatus,
- IN UINT32 Pooling,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_LINK_STATUS Status;
- PORT PortId;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieGetPortsLinkStatus Enter\n"));
- Status = PcieLinkStatusNotConnected;
- Pooling *= 10;
- while (Pooling-- != 0 && Status != PcieLinkStatusConnected) {
- Status = PcieLinkStatusConnected; //Set up initial overall state as connected
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- //Work only on selected ports
- if ((SelectedPortMask & (1 << PortId)) != 0) {
- PCI_ADDR Port;
- UINT32 LinkState;
- Port = PcieLibGetPortPciAddress (PortId, pConfig); //Get PCI address of this port
- //Get link state
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA5, AccessWidth32, &LinkState, pConfig);
- LinkState &= 0x3F;
- //CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_MISC), " PortId %d LinkState = 0x%x \n", PortId, LinkState));
- printk(BIOS_INFO, "[NBPCIE] PortId %02d LinkState = 0x%x \n", PortId, LinkState);
- //Check if link in L0 state
-
- if (LinkState == 0x10) {
- PortLinkStatus[PortId] = PcieLinkStatusConnected;
- } else {
- Status = PcieLinkStatusNotConnected;
- //Check if link in compliance mode
- if (LinkState == 0x7) {
- PortLinkStatus[PortId] = PcieLinkStatusInCompliance;
- } else {
- //Check if we passed receiver detection. It will indicate that device present.
- if (LinkState > 0x4) {
- PortLinkStatus[PortId] = PcieLinkStatusTrainingInProgress;
- }
- }
- }
- }
- }
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 100, 0);
- }
- return Status;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieInitLate.c b/src/vendorcode/amd/cimx/rd890/nbPcieInitLate.c
deleted file mode 100644
index 17ae4f746b..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieInitLate.c
+++ /dev/null
@@ -1,505 +0,0 @@
-/**
- * @file
- *
- * PCIE Late Initialization
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-#include "amdSbLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd PCIE Late Init for all NB.
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-AGESA_STATUS
-AmdPcieLateInit (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbApiCall (PcieLateInit, ConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd PCIE Late Init for all NB.
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-AGESA_STATUS
-AmdPcieLateInitWa (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbApiCall (PcieLateInitWa, ConfigPtr);
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd PCIE Special Init for all NB.
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-AGESA_STATUS
-AmdPcieValidatePortState (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbApiCall (PcieValidatePortState, ConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd PCIE S3 Init fro all NB.
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-AGESA_STATUS
-AmdPcieS3Init (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbApiCall (PcieLateInit, ConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB PCIE Late Init.
- * Extended programming. Enable power management and misc capability.
- * Prepare PCIE subsystem to boot to OS.
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLateInit (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- PcieLibUnHidePorts (NbConfigPtr);
- Status = PcieLateValidateConfiguration (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- PcieLibHidePorts (NbConfigPtr);
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0, 0, 0, 0, NbConfigPtr);
- CIMX_ASSERT (FALSE);
- return Status;
- }
- PcieLibLateInit (NbConfigPtr);
- Status = PcieLateInitPorts (NbConfigPtr);
- Status = PcieLateInitCores (NbConfigPtr);
- PcieLibHidePorts (NbConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB PCIE Late Init.
- * Extended programming. Enable power management and misc capability.
- * Prepare PCIE subsystem to boot to OS.
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLateInitWa (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 Value;
- BOOLEAN SmuWa;
- LibNbPciIndexRead (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG4A, AccessWidth32, &Value, NbConfigPtr);
- SmuWa = ((Value & BIT21) != 0) ? TRUE : FALSE;
- if (SmuWa) {
- UINT32 SmuWaData;
- LibNbMcuControl (AssertReset, NbConfigPtr);
- SmuWaData = LibNbReadMcuRam (0xFE74, NbConfigPtr);
- SmuWaData &= 0x00ff;
- LibNbLoadMcuFirmwareBlock (0xFE74, 0x1, &SmuWaData, NbConfigPtr);
- LibNbMcuControl (DeAssertReset, NbConfigPtr);
- }
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Late init PCIE Ports
- *
- *
- *
-* @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLateInitPorts (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- PCIE_CONFIG *pPcieConfig;
- PORT PortId;
- BOOLEAN IsIommuEnabled;
- NB_INFO NbInfo;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLateInitPorts Enter\n"));
- IsIommuEnabled = LibNbIsIommuEnabled (NbConfigPtr);
- NbInfo = LibNbGetRevisionInfo (NbConfigPtr);
- pPcieConfig = GET_PCIE_CONFIG_PTR (NbConfigPtr);
- Status = AGESA_SUCCESS;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- CORE CoreId;
- CoreId = PcieLibGetCoreId (PortId, NbConfigPtr);
- if (!PcieLibIsValidCoreId (CoreId, NbConfigPtr)) {
- PcieLibPowerOffPortLanes (PortId, PcieLinkWidth_x0, NbConfigPtr);
- } else if (PcieLibIsValidPortId (PortId, NbConfigPtr)) {
- PCIE_LINK_WIDTH LinkWidth;
- PCI_ADDR Port;
- LinkWidth = PcieLibGetLinkWidth (PortId, NbConfigPtr);
- CoreId = PcieLibGetCoreId (PortId, NbConfigPtr);
- Port = PcieLibGetPortPciAddress (PortId, NbConfigPtr);
- PcieLateCommonPortInit (PortId, NbConfigPtr);
- if (pPcieConfig->PortConfiguration[PortId].PortDetected == ON) {
- if (pPcieConfig->PortConfiguration[PortId].PortLinkMode == PcieLinkModeGen2SoftwareInitiated) {
- PcieInitiateSoftwareGen2 (PortId, NbConfigPtr);
- }
- PcieAsmpEnableOnPort (PortId, (UINT8)pPcieConfig->PortConfiguration[PortId].PortAspm, NbConfigPtr);
- }
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG70 , AccessS3SaveWidth32, (UINT32)~BIT12, 0, NbConfigPtr); //PCIE should not ignore malformed packet error or ATS request
- if (pPcieConfig->PortConfiguration[PortId].PortCompliance == OFF &&
- pPcieConfig->PortConfiguration[PortId].PortHotplug == OFF &&
- pPcieConfig->CoreSetting[CoreId].PowerOffUnusedLanes == ON) {
- PcieLibPowerOffPortLanes (PortId, LinkWidth, NbConfigPtr);
- }
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLateInitPorts Exit\n"));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Late init PCIE Cores. Core level feature/power management etc.
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLateInitCores (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PCIE_CONFIG *pPcieConfig;
- CORE CoreId;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLateInitCores Enter\n"));
- Status = AGESA_SUCCESS;
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Init CoreId [%d]\n", CoreId));
- if (pPcieConfig->CoreSetting[CoreId].PowerOffPllInL1 == ON) {
- PcieLibEnablePllPowerOffInL1 (CoreId, pConfig);
- }
- if (pPcieConfig->CoreSetting[CoreId].PowerOffPll == ON) {
- PcieLibPowerOffPll (CoreId, pConfig);
- }
- PcieLibMiscLateCoreSetting (CoreId, pConfig);
- PcieLibManageTxClock (CoreId, pConfig);
- PcieLibManageLclkClock (CoreId, pConfig);
- }
-#ifndef VC1_SUPPORT_DISABLE
- if (NB_SBDFO == 0 && pPcieConfig->PcieConfiguration.NbSbVc1 == ON) {
- PcieNbSbSetupVc (pConfig);
- }
-#endif
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLateInitCores Exit\n"));
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Set up NB-SB virtual channel for audio traffic
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieNbSbSetupVc (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 VCStatus;
- PCI_ADDR Port;
-
- Port = PcieLibGetPortPciAddress (8, pConfig);
- if (PcieSbSetupVc (pConfig) == AGESA_SUCCESS) {
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG124, AccessS3SaveWidth8, 0x01, 0, pConfig);
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG130, AccessS3SaveWidth32, (UINT32)~(BIT24 + BIT25 + BIT26), 0xFE + BIT24, pConfig);
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG130, AccessS3SaveWidth32, 0xffffffff, BIT31, pConfig);
- do {
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 200, CIMX_S3_SAVE);
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG134, AccessWidth32, &VCStatus, pConfig);
- } while (VCStatus & BIT17);
- PcieSbEnableVc (pConfig);
- }
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Late common Port Init
- *
- *
- * @param[in] PortId Port Id
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLateCommonPortInit (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- Status = AGESA_SUCCESS;
-
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Initiate SW Gen2 switch
- *
- *
- *
- * @param[in] PortId Port Id.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieInitiateSoftwareGen2 (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 LinkSpeedCap;
- UINT8 PcieCapPtr;
- UINT8 SecondaryBus;
- UINT32 Value;
- UINT32 Counter;
- PCI_ADDR Ep;
- PCI_ADDR Port;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieInitiateSoftwareGen2 PortId[%d] Enter\n", PortId));
- Counter = 5000;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG19, AccessWidth8, &SecondaryBus, pConfig);
- Ep.AddressValue = 0;
- Ep.Address.Bus = SecondaryBus;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE] SecondaryBus = 0x%x \n", SecondaryBus));
- PcieCapPtr = LibNbFindPciCapability (Ep.AddressValue, PCIE_CAP_ID, pConfig);
- LibNbPciRead (Ep.AddressValue | (PcieCapPtr + 0xC), AccessWidth8, &LinkSpeedCap, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE] PcieCapPtr = 0x%x \n", PcieCapPtr));
- if ((LinkSpeedCap & 0xf) < 2) {
- return;
- }
- PcieLibSetLinkMode (PortId, PcieLinkModeGen2, pConfig);
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA4 , AccessS3SaveWidth32, (UINT32)~(BIT18), BIT18 , pConfig);
- do {
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 200, CIMX_S3_SAVE);
- LibNbPciIndexRead (Port.AddressValue | NB_PCIP_REGE0, NB_BIFNBP_REGA5, AccessWidth32, &Value, pConfig);
- } while ((UINT8)Value != 0x10 && Counter-- != 0);
- LibNbPciIndexRead (Port.AddressValue | NB_PCIP_REGE0, NB_BIFNBP_REGA4, AccessWidth32, &Value, pConfig);
- if ((Value & BIT24) != 0) {
- //Initiate link speed change
- LibNbPciIndexRMW (Port.AddressValue | NB_PCIP_REGE0, NB_BIFNBP_REGA4, AccessS3SaveWidth32, ((UINT32)~BIT7), BIT7, pConfig);
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieInitiateSoftwareGen2 Exit\n"));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Validate input parameters configuration for PCie Late Init call.
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLateValidateConfiguration (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_CONFIG *pPcieConfig;
- NB_INFO NbInfo;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLateValidateConfiguration Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- NbInfo = LibNbGetRevisionInfo (pConfig);
- if (pPcieConfig == NULL) {
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0, 0, 0, 0, pConfig);
- CIMX_ASSERT (FALSE);
- return AGESA_FATAL;
- }
- if (pPcieConfig->sHeader.InitializerID != INITIALIZED_BY_INITIALIZER) {
- PcieLibInitializer (pConfig);
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLateValidateConfiguration Exit\n"));
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * PcieValidatePortState
- * Port disable or port visibility control
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieValidatePortState (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = AGESA_SUCCESS;
- PcieLibUnHidePorts (NbConfigPtr);
- PcieLibValidatePortStateInit (NbConfigPtr);
- PcieForcePortsVisibleOrDisable (NbConfigPtr);
- PcieLibHidePorts (NbConfigPtr);
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * PciePortsVisibleOrDisable
- * Set ports always visible or disable based on input parameter
- *
- *
- *
-* @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieForcePortsVisibleOrDisable (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCIE_CONFIG *pPcieConfig;
- PORT PortId;
- PCI_ADDR Port;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (NbConfigPtr);
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PcieLibIsValidPortId (PortId, NbConfigPtr)) {
- Port = PcieLibGetPortPciAddress (PortId, NbConfigPtr);
- if (pPcieConfig->PortConfiguration[PortId].ForcePortDisable == ON ) {
- pPcieConfig->PortConfiguration[PortId].PortPresent = OFF;
- pPcieConfig->PortConfiguration[PortId].PortDetected = OFF;
- }
- if (pPcieConfig->PortConfiguration[PortId].PortAlwaysVisible == ON) {
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG70, AccessWidth32, (UINT32)~BIT19, BIT19, NbConfigPtr);
- pPcieConfig->PortConfiguration[PortId].PortPresent = ON;
- pPcieConfig->PortConfiguration[PortId].PortDetected = ON;
- }
- LibNbPciIndexWrite (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG01, AccessWidth32, (UINT32*)&pPcieConfig->PortConfiguration[PortId], NbConfigPtr);
- }
- }
-}
-
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieLateHwLib.c b/src/vendorcode/amd/cimx/rd890/nbPcieLateHwLib.c
deleted file mode 100644
index 8b1782e7bb..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieLateHwLib.c
+++ /dev/null
@@ -1,486 +0,0 @@
-/**
- * @file
- *
- * PCIe silicon specific functions library.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * T Y P E D E F S A N D S T R U C T U R E S
- *----------------------------------------------------------------------------------------
- */
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Misc Initialization in late init
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-VOID
-PcieLibLateInit (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- PORT PortId;
- PCIE_CONFIG *pPcieConfig;
- PCI_ADDR ClkPciAddress;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- ClkPciAddress = pConfig->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- //Restore general setting in scratch
- LibNbEnableClkConfig (pConfig);
- LibNbPciRead (ClkPciAddress.AddressValue | NB_CLK_REG78, AccessWidth32, &pPcieConfig->PcieConfiguration, pConfig);
- LibNbDisableClkConfig (pConfig);
- // Restore Core setting from scratch
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
-// if (PcieLibIsCoreAccessible (CoreId, pConfig) && pPcieConfig->CoreSetting[CoreId].CoreDisabled != ON ) {
- UINT32 CoreAddress;
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- LibNbPciIndexRead (
- pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX,
- NB_BIFNB_REG01 | CoreAddress,
- AccessWidth32,
- (UINT32*)&pPcieConfig->CoreSetting[CoreId],
- pConfig
- );
-// } else {
-// pPcieConfig->CoreSetting[CoreId].CoreDisabled = ON;
-// }
-// CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Recover Core Setting CoreId %d Setting %x Enter\n", CoreId, (UINT32)(pPcieConfig->CoreSetting[CoreId])));
- }
- // Restore port Setting from scratch
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PcieLibIsValidPortId (PortId, pConfig)) {
- PCI_ADDR Port;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- //Reload port configuration from scratch register
- LibNbPciIndexRead (
- Port.AddressValue | NB_BIF_INDEX,
- NB_BIFNBP_REG01,
- AccessWidth32,
- (UINT32*)&pPcieConfig->PortConfiguration[PortId],
- pConfig
- );
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG108, AccessWidth32, (UINT32*)&pPcieConfig->ExtPortConfiguration[PortId], pConfig);
-// CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Recover Port setting PortId %d Setting %x Enter\n", PortId, (UINT32)(pPcieConfig->PortConfiguration[PortId])));
- } else {
- *((UINT32*)&pPcieConfig->ExtPortConfiguration[PortId]) = 0;
- *((UINT32*)&pPcieConfig->PortConfiguration[PortId]) = 0;
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Misc Initialization in validate port state
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-VOID
-PcieLibValidatePortStateInit (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- PORT PortId;
- UINT32 PortAlwaysVisible;
- UINT32 ForcePortDisable;
- PCIE_CONFIG *pPcieConfig;
- PCI_ADDR ClkPciAddress;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- ClkPciAddress = pConfig->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- //Restore general setting in scratch
- LibNbEnableClkConfig (pConfig);
- LibNbPciRead (ClkPciAddress.AddressValue | NB_CLK_REG78, AccessWidth32, &pPcieConfig->PcieConfiguration, pConfig);
- LibNbDisableClkConfig (pConfig);
- // Restore Core setting from scratch
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
-// if (PcieLibIsCoreAccessible (CoreId, pConfig) && pPcieConfig->CoreSetting[CoreId].CoreDisabled != ON ) {
- UINT32 CoreAddress;
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- LibNbPciIndexRead (
- pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX,
- NB_BIFNB_REG01 | CoreAddress,
- AccessWidth32,
- (UINT32*)&pPcieConfig->CoreSetting[CoreId],
- pConfig
- );
-// } else {
-// pPcieConfig->CoreSetting[CoreId].CoreDisabled = ON;
-// }
-// CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Recover Core Setting CoreId %d Setting %x Enter\n", CoreId, (UINT32)(pPcieConfig->CoreSetting[CoreId])));
- }
- // Restore port Setting from scratch
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PcieLibIsValidPortId (PortId, pConfig)) {
- PCI_ADDR Port;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- PortAlwaysVisible = pPcieConfig->PortConfiguration[PortId].PortAlwaysVisible;
- ForcePortDisable = pPcieConfig->PortConfiguration[PortId].ForcePortDisable;
- //Reload port configuration from scratch register
- LibNbPciIndexRead (
- Port.AddressValue | NB_BIF_INDEX,
- NB_BIFNBP_REG01,
- AccessWidth32,
- (UINT32*)&pPcieConfig->PortConfiguration[PortId],
- pConfig
- );
- pPcieConfig->PortConfiguration[PortId].PortAlwaysVisible = PortAlwaysVisible;
- pPcieConfig->PortConfiguration[PortId].ForcePortDisable = ForcePortDisable;
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG108, AccessWidth32, (UINT32*)&pPcieConfig->ExtPortConfiguration[PortId], pConfig);
-// CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Recover Port setting PortId %d Setting %x Enter\n", PortId, (UINT32)(pPcieConfig->PortConfiguration[PortId])));
- } else {
- *((UINT32*)&pPcieConfig->ExtPortConfiguration[PortId]) = 0;
- *((UINT32*)&pPcieConfig->PortConfiguration[PortId]) = 0;
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Enable LCLK clock gating or shutdown LCLK clock banch if possible
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieLibManageLclkClock (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
- UINT32 Mask;
- PCI_ADDR ClkPciAddress;
- UINT32 CoreAddress;
- PCIE_CONFIG *pPcieConfig;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibManageLclkClock [CoreId %d] Enter \n", CoreId));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- ClkPciAddress = pConfig->NbPciAddress;
- ClkPciAddress.Address.Function = 1;
- LibNbEnableClkConfig (pConfig);
-
- if (pPcieConfig->CoreSetting[CoreId].LclkClockGating == ON) {
- ClkPciAddress.Address.Register = NB_CLK_REGE8;
- Value = 0;
- Mask = 0;
- switch (CoreAddress) {
- case GPP1_CORE:
- ClkPciAddress.Address.Register = NB_CLK_REG94;
- Mask = BIT16;
- break;
- case GPP2_CORE:
- Value = BIT28;
- break;
- case GPP3a_CORE:
- Value = BIT31;
- break;
- case GPP3b_CORE:
- Value = BIT25;
- break;
- case SB_CORE:
- ClkPciAddress.Address.Register = NB_CLK_REG94;
- Mask = BIT24;
- break;
- default:
- CIMX_ASSERT (FALSE);
- }
- LibNbPciRMW (ClkPciAddress.AddressValue, AccessS3SaveWidth32, ~Mask, Value, pConfig);
- }
- if (pPcieConfig->CoreSetting[CoreId].LclkClockOff == ON) {
- UINT8 ActiveCoreMap;
- ActiveCoreMap = PcieLibGetActiveCoreMap (pConfig);
- if ((ActiveCoreMap & (1 << CoreId)) == 0) {
- //Core not active we can shutdown LCLK permanantly
- CORE_INFO *pCoreInfo;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Shutdown LCKL clock\n"));
- pCoreInfo = PcieLibGetCoreInfo (CoreId, pConfig);
- ClkPciAddress.Address.Register = NB_CLK_REGE0;
- pPcieConfig->CoreSetting[CoreId].CoreDisableStatus = ON;
- // We have to setup Index for BIFNB to point out to SB core. After this point core registers no longer accesasable
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, 0x00 | SB_CORE, AccessS3SaveWidth32, 0xffffffff, 0x00, pConfig);
- LibNbPciRMW (ClkPciAddress.AddressValue, AccessS3SaveWidth32, 0xffffffff, 1 << pCoreInfo->LclkOffOffset, pConfig);
-
- Value = 0;
- if (CoreAddress == GPP1_CORE) {
- if ((ActiveCoreMap & 0xb) == 0 && !LibNbIsIommuEnabled (pConfig)) {
- // Can shutdown master core
- Value = 1 << pCoreInfo->LclkPermOffOffset;
- }
- } else {
- Value = 1 << pCoreInfo->LclkPermOffOffset;
- }
- if (Value != 0) {
- NbIommuDisconnectPcieCore (CoreId, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG27, AccessS3SaveWidth32, 0xffffffff, Value, pConfig);
-
- }
- }
- }
- LibNbDisableClkConfig (pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Power Off Pll for unused lanes.
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-PcieLibPowerOffPll (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_CONFIG *pPcieConfig;
- UINT32 CoreAddress;
- UINT32 PowerOfPllValue;
- UINT32 PadsMap;
- //UINT32 TxClockOffValue;
- UINT32 PowerOfPllRegister;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- PowerOfPllValue = 0;
- PadsMap = 0;
- //TxClockOffValue = 0;
- PowerOfPllRegister = NB_MISC_REG23;
-
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG65 | CoreAddress, AccessS3SaveWidth32, &PadsMap, pConfig);
- if (CoreAddress == GPP1_CORE || CoreAddress == GPP2_CORE) {
- if ((PadsMap & 0xf0) == 0xf0) {
- //Power Off PLL1
- PowerOfPllValue |= (BIT1 | BIT3);
- if ((PadsMap & 0x0f) == 0x0f && pPcieConfig->CoreConfiguration[CoreId] != GFX_CONFIG_AABB) {
- //Power Off PLL0
- PowerOfPllValue |= (BIT0 | BIT2);
- }
- }
- if (CoreAddress == GPP2_CORE) {
- PowerOfPllValue <<= 8;
- //TxClockOffValue = BIT1;
- } else {
- //TxClockOffValue = BIT0;
- }
- if ((UINT16)PadsMap != 0xffff) {
- //TxClockOffValue = 0; //Do not disable TX clock in case any line is ON
- }
- }
- if (CoreAddress == GPP3a_CORE ) {
- if ((UINT16)PadsMap == 0x3F3F) {
- PowerOfPllValue = BIT18 | BIT16;
- //TxClockOffValue = BIT2;
- }
- }
- if (CoreAddress == GPP3b_CORE ) {
- PowerOfPllRegister = NB_MISC_REG2E;
- if ((UINT16)PadsMap == 0x0F0F) {
- PowerOfPllValue = BIT8 | BIT6;
- //TxClockOffValue = BIT3;
- }
- }
- //Power Off Pll
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, PowerOfPllRegister , AccessS3SaveWidth32, 0xffffffff, PowerOfPllValue, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Power off PLL CoreId %d, Value 0x%x\n", CoreId, PowerOfPllValue));
- //Turn off TXCLK
- //LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG07, AccessS3SaveWidth32, 0xffffffff, TxClockOffValue, pConfig);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Enable TX clock gating or shutdown TX clock if possible
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer. *
- */
-VOID
-PcieLibManageTxClock (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_CONFIG *pPcieConfig;
- UINT32 CoreAddress;
- UINT32 Value;
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- if (pPcieConfig->CoreSetting[CoreId].TxClockGating == ON) {
- switch (CoreAddress) {
- case GPP1_CORE:
- Value = BIT4;
- break;
- case GPP2_CORE:
- Value = BIT5;
- break;
- case GPP3a_CORE:
- Value = BIT6;
- break;
- case GPP3b_CORE:
- Value = BIT24;
- break;
- case SB_CORE:
- Value = BIT7;
- break;
- default:
- Value = 0;
- CIMX_ASSERT (FALSE);
- }
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG07, AccessS3SaveWidth32, 0xffffffff, Value, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG40 | CoreAddress, AccessS3SaveWidth32, (UINT32)~BIT6, BIT6, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG11 | CoreAddress, AccessS3SaveWidth32, 0xfffffff0, 0x0C, pConfig);
- }
- if (pPcieConfig->CoreSetting[CoreId].TxClockOff == ON) {
- UINT8 ActiveCoreMap;
- ActiveCoreMap = PcieLibGetActiveCoreMap (pConfig);
- if ((ActiveCoreMap & (1 << CoreId)) == 0) {
- //Core not active we can shutdown TX clk permanantly
- CORE_INFO *pCoreInfo;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Shutdown TX clock\n"));
- pPcieConfig->CoreSetting[CoreId].CoreDisableStatus = ON;
- pCoreInfo = PcieLibGetCoreInfo (CoreId, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG07, AccessS3SaveWidth32, 0xffffffff, 1 << pCoreInfo->TxOffOffset, pConfig);
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Enable Pll Power Down in L1.
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer. *
- */
-VOID
-PcieLibEnablePllPowerOffInL1 (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_CONFIG *pPcieConfig;
- UINT32 Value;
- UINT32 CoreAddress;
- PORT PortId;
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- if (pPcieConfig->CoreSetting[CoreId].DetectPowerOffPllInL1 == ON && !PciePllOffComatibilityTest (CoreId, pConfig)) {
- return;
- }
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PcieLibIsValidPortId (PortId, pConfig) && PcieLibGetCoreId (PortId, pConfig) == CoreId) {
- if (pPcieConfig->PortConfiguration[PortId].PortHotplug != OFF) {
- // set up max exit latency requirment for hotplug ports
- PCI_ADDR Port;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGC1 , AccessS3SaveWidth32, 0xffffffff, 0xf, pConfig);
- }
- }
- }
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- Value = BIT8;
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG40 | CoreAddress, AccessS3SaveWidth32, (UINT32)~(BIT9 + BIT4), BIT3 + BIT0 + BIT12, pConfig);
- if (CoreAddress == GPP3b_CORE || CoreAddress == GPP3a_CORE || CoreAddress == SB_CORE) {
- Value |= BIT3;
- }
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG02 | CoreAddress, AccessS3SaveWidth32, 0xffffffff, Value, pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Misc. core setting.
- *
- *
- *
- * @param[in] CoreId PCI Express- Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-PcieLibMiscLateCoreSetting (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
-//Lock
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX,
- NB_BIFNB_REG10 | PcieLibGetCoreAddress (CoreId, pConfig),
- AccessS3SaveWidth32,
- 0xffffffff,
- BIT0,
- pConfig
- );
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieLib.c b/src/vendorcode/amd/cimx/rd890/nbPcieLib.c
deleted file mode 100644
index 2e91cb6c1a..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieLib.c
+++ /dev/null
@@ -1,1604 +0,0 @@
-/**
- * @file
- *
- * PCIe silicon specific functions library.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-#include "amdSbLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-UINT32
-PcieLibGetCoreConfiguration (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieLibValidateGfxConfig (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- );
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-
-
-CORE_INFO CoreInfoTable[] = {
- { // GPP1_CORE_ID = 0 It is GFX Core (GPP1 Core)
- GPP1_CORE, // Core Selector
- (BIT2 | BIT3), // Port ID Mask. Defines what ports belongs
- NB_MISC_REG08,
- NB_MISC_REG28, // De-emphasis register
- NB_MISC_REG26, // Strap control register
- 28, // Strap bit offset
- NB_CLK_REGF0,
- NB_MISC_REG35, 26, // TX drive strength and offset
- NB_MISC_REG35, 18, // TX half swing
- NB_MISC_REG36, 24, // TX zero deemphasis
- 0,
- 28,
- 23
- },
- { // GPP2_CORE_ID = 1 It is GFX2 Core (GPP2 Core)
- GPP2_CORE, // Core Selector
- (BIT11 | BIT12), // Port ID Mask. Defines what ports belongs
- NB_MISC_REG08,
- NB_MISC_REG27, // De-emphasis register
- NB_MISC_REG26, // Strap control register
- 29, // Strap bit offset
- NB_CLK_REGF0,
- NB_MISC_REG35, 28, // TX drive strength and offset
- NB_MISC_REG35, 19, // TX half swing
- NB_MISC_REG36, 26, // TX zero deemphasis
- 1,
- 29,
- 24
- },
- { // GPP3a_CORE_ID = 2 It is GPP Core (GPP3a Core)
- GPP3a_CORE, // Core Selector
- (BIT4 | BIT5 | BIT6 | BIT7 | BIT9 | BIT10), // Port ID Mask. Defines what ports belongs
- NB_MISC_REG08,
- NB_MISC_REG28, // De-emphasis register
- NB_MISC_REG26, // Strap control register
- 30, // Strap bit offset
- NB_CLK_REGF4,
- NB_MISC_REG35, 30, // TX drive strength and offset
- NB_MISC_REG35, 20, // TX half swing
- NB_MISC_REG36, 28, // TX zero deemphasis
- 2,
- 30,
- 25
- },
- { // GPP3b_CORE_ID = 3 It is GPP2 Core (GPP3b Core)
- GPP3b_CORE, // Core Selector
- (BIT13), // Port ID Mask. Defines what ports belongs
- NB_MISC_REG2A,
- NB_MISC_REG2D, // De-emphasis register
- NB_MISC_REG2D, // Strap control register
- 21, // Strap bit offset
- NB_CLK_REGF4,
- NB_MISC_REG2C, 4, // TX drive strength and offset
- NB_MISC_REG2C, 2, // TX half swing
- NB_MISC_REG2B, 10, // TX zero deemphasis
- 3,
- 31,
- 26
- },
- { // SB_CORE_ID = 4 It is SB Core
- SB_CORE, // Core Selector
- (BIT8), // Port ID Mask. Defines what ports belongs
- NB_MISC_REG08,
- NB_MISC_REG6F, // De-emphasis register
- 0x0,
- 0x0,
- 0x0,
- NB_MISC_REG68, 8, // TX drive strength and offset
- NB_MISC_REG67, 27, // TX half swing
- NB_MISC_REG68, 20, // TX zero deemphasis
- 0xff,
- 0xff,
- 0xff
- }
-};
-
-
-PORT_INFO pGfxPortFullA = {
- PcieLinkWidth_x16, 0, 0
-};
-
-PORT_INFO pGfxPortA = {
- PcieLinkWidth_x8, 0, 96
-};
-
-PORT_INFO pGfxPortB = {
- PcieLinkWidth_x8, 8, 96
-};
-
-PORT_INFO pGpp420000[] = {
- {PcieLinkWidth_x4, 0, 56},
- {PcieLinkWidth_x2, 4, 28}
-};
-
-PORT_INFO pGpp411000[] = {
- {PcieLinkWidth_x4, 0, 56},
- {PcieLinkWidth_x1, 4, 14},
- {PcieLinkWidth_x1, 5, 14}
-};
-
-PORT_INFO pGpp222000[] = {
- {PcieLinkWidth_x2, 0, 28},
- {PcieLinkWidth_x2, 2, 28},
- {PcieLinkWidth_x2, 4, 28}
-};
-
-PORT_INFO pGpp221100[] = {
- {PcieLinkWidth_x2, 0, 28},
- {PcieLinkWidth_x2, 2, 28},
- {PcieLinkWidth_x1, 4, 14},
- {PcieLinkWidth_x1, 5, 14}
-};
-
-PORT_INFO pGpp211110[] = {
- {PcieLinkWidth_x2, 0, 28},
- {PcieLinkWidth_x1, 2, 14},
- {PcieLinkWidth_x1, 3, 14},
- {PcieLinkWidth_x1, 4, 14},
- {PcieLinkWidth_x4, 0, 0 }, //Dummy entry
- {PcieLinkWidth_x1, 5, 14}
-};
-
-PORT_INFO pGpp111111[] = {
- {PcieLinkWidth_x1, 0, 14},
- {PcieLinkWidth_x1, 1, 14},
- {PcieLinkWidth_x1, 2, 14},
- {PcieLinkWidth_x1, 3, 14},
- {PcieLinkWidth_x4, 0, 0 }, //Dummy entry
- {PcieLinkWidth_x1, 4, 14},
- {PcieLinkWidth_x1, 5, 14}
-};
-
-GPP_CFG_INFO GppCfgInfoTable[] = {
- {pGpp420000, 0xff50fff4},
- {pGpp411000, 0xf650fff4},
- {pGpp222000, 0xff60f5f4},
- {pGpp221100, 0xf760f5f4},
- {pGpp211110, 0xf97065f4},
- {pGpp111111, 0xfA907654}
-};
-
-CONST PORT_STATIC_INFO PortInfoTable[] = {
-//Training Reversal Deemp Mapping Hotplug Offset
- {4 , 3, 0 , 4 , 0 }, //2
- {5 , 4, 1 , 8 , 8 }, //3
- {21, 7, 2 , 12 , 0 }, //4
- {22, 8, 3 , 16 , 8 }, //5
- {23, 9, 4 , 20 , 16 }, //6
- {24, 10, 5 , 24 , 0xFF }, //7
- {20, 0, 1 , 0xFF , 0xFF }, //8
- {25, 11, 6 , 28 , 0xFF }, //9
- {26, 12, 7 , 0 , 0xFF }, //10
- {6 , 5, 30, 4 , 16 }, //11
- {7 , 6, 31, 8 , 24 }, //12
- {4 , 25, 5 , 12 , 24 } //13
-};
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Port Training Control
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] Operation Release or Hold training
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-VOID
-PcieLibPortTrainingControl (
- IN PORT PortId,
- IN PCIE_LINK_TRAINING Operation,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- CORE_INFO *pCoreInfo;
- PORT_STATIC_INFO *pStaticPortInfo;
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- pStaticPortInfo = PcieLibGetStaticPortInfo (PcieLibNativePortId (PortId, pConfig), pConfig);
- pCoreInfo = PcieLibGetCoreInfo (CoreId, pConfig);
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- pCoreInfo->TrainingRegister,
- AccessWidth32,
- ~(1 << pStaticPortInfo->TrainingAddress),
- (Operation == PcieLinkTrainingHold)?(1 << pStaticPortInfo->TrainingAddress):0,
- pConfig
- );
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get PCI address of Port.
- * Function return pcie Address based on port mapping and core configuration.
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-PCI_ADDR
-PcieLibGetPortPciAddress (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCI_ADDR Port;
- UINT32 RemapEnable;
- UINT32 RemapValue;
- PORT_STATIC_INFO *pPortStaticInfo;
-
- RemapEnable = 0;
- RemapValue = 0;
- pPortStaticInfo = PcieLibGetStaticPortInfo (PcieLibNativePortId (PortId, pConfig), pConfig);
- Port.AddressValue = pConfig->NbPciAddress.AddressValue;
-
- LibNbPciIndexRead (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- NB_MISC_REG20,
- AccessWidth32,
- &RemapEnable,
- pConfig
- );
- if (pPortStaticInfo->MappingAddress != 0xff && RemapEnable & BIT0) {
- LibNbPciIndexRead (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- (PortId > 9)? NB_MISC_REG21:NB_MISC_REG20,
- AccessWidth32,
- &RemapValue,
- pConfig
- );
- RemapValue = (RemapValue >> pPortStaticInfo->MappingAddress) & 0xf;
- }
- if (RemapValue == 0) {
- RemapValue = PortId;
- }
- Port.Address.Device = RemapValue;
- return Port;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Core register selector.
- * Function return selector to access BIFNB register space for selected core
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-UINT32
-PcieLibGetCoreAddress (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- return PcieLibGetCoreInfo (CoreId, pConfig)->CoreSelector;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Core Id
- * Function return PCIE core ID base on Port ID
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- * @retval Core ID.
- */
-CORE
-PcieLibGetCoreId (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- CORE_INFO *pCoreInfoTable = (CORE_INFO*)FIX_PTR_ADDR (&CoreInfoTable[0], NULL);
- CORE CoreId;
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
- if (pCoreInfoTable[CoreId].PortIdBitMap & (1 << PortId)) {
- break;
- }
- }
- return CoreId;
-}
-
-/*
-INDIRECT_REG_ENTRY
-STATIC
-PcieMiscInitTable[] = {
- {
- NB_MISC_REG20,
- (UINT32)~BIT1,
- 0x0
- }, //enable static device remapping by default
- {
- NB_MISC_REG22,
- 0xffffffff,
- BIT27
- }, //[10]CMGOOD_OVERRIDE for all 5 pcie cores.
- {
- NB_MISC_REG6B,
- 0xffffffff,
- (UINT32) (0x1f << 27)
- }, //[13][12]Turn Off Offset Cancellation
- {
- NB_MISC_REG37,
- (UINT32)~(BIT11 + BIT12 + BIT13),
- 0x0
- }, //[14][13]Disables Rx Clock gating in CDR
- {
- NB_MISC_REG67,
- (UINT32)~(BIT26 + BIT10 + BIT11),
- BIT11
- }, //[13]Disables Rx Clock gating in CDR
- //[16]Sets Electrical Idle Threshold
- {
- NB_MISC_REG2C,
- (UINT32)~(BIT10),
- 0x0
- }, //[13]Disables Rx Clock gating in CDR
- {
- NB_MISC_REG2A,
- (UINT32)~(BIT17 + BIT16),
- BIT17
- }, //[16]Sets Electrical l Idle Threshold
- {
- NB_MISC_REG32,
- (UINT32)~(0x3F << 20),
- (UINT32) (0x2A << 20)
- } //[17][16]Sets Electrical Idle Threshold
-};
-*/
-
-
-
-UINT8 GppConfigTable[] = {
- 0x0, 0x1, 0x2, 0xC, 0xA, 0x4, 0xB
-};
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set Core Configuration.
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-PcieLibSetCoreConfiguration (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 LaneReversalValue;
- PORT PortId;
- PCIE_CONFIG *pPcieConfig;
- CORE_INFO *pCoreInfo;
- CORE CoreAddress;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibSetCoreConfiguration CoreId = %d Configuration = 0x%x Enter\n", CoreId, pPcieConfig->CoreConfiguration[CoreId]));
- pCoreInfo = PcieLibGetCoreInfo (CoreId, pConfig);
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- LaneReversalValue = 0;
- PcieLibCoreReset (CoreId, PcieCoreResetAllAssert, pConfig);
- PcieLibStrapModeControl (CoreId, PcieCoreStrapConfigStart, pConfig);
- //Setup GFX/GFX2 core configuration
- if (CoreAddress == GPP1_CORE || CoreAddress == GPP2_CORE) {
- if (pPcieConfig->CoreConfiguration[CoreId] == GFX_CONFIG_AABB) {
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08, AccessWidth32, 0xffffffff, (CoreAddress == GPP1_CORE)?BIT8:BIT9, pConfig);
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 2000, 0);
- }
- if (pPcieConfig->CoreSetting[CoreId].RefClockInput == ON) {
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG6C, AccessWidth32, 0xffffffff, (CoreAddress == GPP1_CORE)?BIT9:BIT31, pConfig);
- }
- }
- //Setup GPP core configuration
- if (CoreAddress == GPP3a_CORE) {
- UINT32 Mux;
- UINT8 *pGppConfigTable;
-
- Mux = 0;
- pGppConfigTable = (UINT8*)FIX_PTR_ADDR (&GppConfigTable[0], NULL);
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- NB_MISC_REG67, AccessWidth32,
- 0xfffffff0,
- (UINT32)pGppConfigTable[pPcieConfig->CoreConfiguration[CoreId]],
- pConfig
- );
- switch (pPcieConfig->CoreConfiguration[CoreId]) {
- case GPP_CONFIG_GPP420000:
- Mux = (pPcieConfig->PortConfiguration[6].PortReversed == ON)?0xF05BA00:0x055B000;
- break;
- case GPP_CONFIG_GPP411000:
- Mux = 0x215B400;
- break;
- case GPP_CONFIG_GPP222000:
- case GPP_CONFIG_GPP211110:
- Mux = (pPcieConfig->PortConfiguration[4].PortReversed == ON)?0xFFF0AAA:0xFF0BAA0;
- break;
- case GPP_CONFIG_GPP221100:
- Mux = 0x215B400;
- break;
- case GPP_CONFIG_GPP111111:
- Mux = 0x2AA3554;
- break;
- default:
- CIMX_ASSERT (FALSE);
- }
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG26, AccessWidth32, 0xf0000000, Mux, pConfig);
- }
- PcieLibStrapModeControl (CoreId, PcieCoreStrapConfigStop, pConfig);
- PcieLibCoreReset (CoreId, PcieCoreResetAllDeassert, pConfig);
- //Setup lane reversal
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PcieLibIsValidPortId (PortId, pConfig)) {
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON &&
- pPcieConfig->PortConfiguration[PortId].PortReversed == ON &&
- (pCoreInfo->PortIdBitMap & (1 << PortId)) != 0) {
- PORT_STATIC_INFO *pStaticPortInfo = PcieLibGetStaticPortInfo (PcieLibNativePortId (PortId, pConfig), pConfig);
- LaneReversalValue |= (1 << (pStaticPortInfo->ReversalAddress));
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Port reversed Port Id %d Native Id %d, Reversal Address %d \n", PortId, PcieLibNativePortId (PortId, pConfig), pStaticPortInfo->ReversalAddress));
- }
- }
- }
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- (CoreAddress == GPP3b_CORE) ? NB_MISC_REG2D : NB_MISC_REG27,
- AccessWidth32, 0xffffffff,
- LaneReversalValue,
- pConfig
- );
- //Setup performance mode
- if (pPcieConfig->CoreSetting[CoreId].PerformanceMode == ON) {
- UINT32 RegisterAddress;
- switch (CoreAddress) {
- case GPP1_CORE:
- RegisterAddress = NB_MISC_REG33;
- break;
- case GPP2_CORE:
- RegisterAddress = NB_MISC_REG22;
- break;
- default:
- RegisterAddress = 0;
- break;
- }
- if (RegisterAddress != 0) {
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, RegisterAddress , AccessWidth32, 0xfffffC00, 0xB5, pConfig);
- }
- }
- //Setup Tx Drive Strength
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- pCoreInfo->TxDriveStrengthRegister ,
- AccessWidth32,
- ~(0x3 << pCoreInfo->TxDriveStrengthOffset),
- pPcieConfig->CoreSetting[CoreId].TxDriveStrength << pCoreInfo->TxDriveStrengthOffset,
- pConfig
- );
- //Setup Tx half swing
- if (pPcieConfig->CoreSetting[CoreId].TxHalfSwingMode == ON) {
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- pCoreInfo->TxHalfSwingRegister,
- AccessWidth32,
- ~(0x1 << pCoreInfo->TxHalfSwingOffset),
- 0x0,
- pConfig
- );
- // Setup half swing deemphasis
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- pCoreInfo->TxHalfSwingDeepmhasisRegister ,
- AccessWidth32,
- ~(0x3 << pCoreInfo->TxHalfSwingDeepmhasisOffset),
- 0x0,
- pConfig
- );
- }
- //Finalize straps for this core
- PcieLibStrapModeControl (CoreId, PcieCoreStrapConfigStart, pConfig);
- PcieLibStrapModeControl (CoreId, PcieCoreStrapConfigStop, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibSetCoreConfiguration Exit\n"));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Core Configuration
- * Function return GPPSB/GFX/GFX2 core configuration.
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-UINT32
-PcieLibGetCoreConfiguration (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 CoreConfiguration;
- UINT32 Value;
- CORE CoreAddress;
-
- CoreConfiguration = 0,
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
-// CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibGetCoreConfiguration (Core = 0x%x) Enter\n", CoreAddress));
- if (CoreAddress == GPP1_CORE || CoreAddress == GPP2_CORE) {
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08, AccessWidth32, &Value, pConfig);
- CoreConfiguration = (Value & ((CoreAddress == GPP1_CORE) ? BIT8:BIT9))? GFX_CONFIG_AABB:GFX_CONFIG_AAAA;
- } else {
- if (CoreAddress == GPP3a_CORE) {
- UINT8 *pGppConfigTable;
- pGppConfigTable = (UINT8*)FIX_PTR_ADDR (&GppConfigTable[0], NULL);
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG67, AccessWidth32, &Value, pConfig);
- while (pGppConfigTable[CoreConfiguration] != (Value & 0xf)) {
- CoreConfiguration++;
- }
- }
- }
-// CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibGetCoreConfiguration (CoreConfiguration = 0x%x) Exit\n", CoreConfiguration));
- return CoreConfiguration;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Return link misc information (max link width, current link width, lane 0 map)
- *
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-LINK_INFO
-PcieLibGetPortLinkInfo (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
- PCI_ADDR Port;
- PORT_INFO *pPortInfo;
- LINK_INFO LinkInfo = {0, 0, 0};
-
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- pPortInfo = PcieLibGetPortInfo (PortId, pConfig);
-//Read current link width
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, &Value, pConfig);
- Value = (Value >> 4) & 0xf;
- LinkInfo.LinkWidth = (UINT8)Value;
- LinkInfo.MaxLinkWidth = pPortInfo->MaxLinkWidth;
- LinkInfo.Line0Offset = pPortInfo->Line0Offset;
-// CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " PortId %d LinkWidth 0x%x MaxLinkWidth 0x%x Line0Offset %d\n", PortId, LinkInfo.LinkWidth, LinkInfo.MaxLinkWidth,LinkInfo.Line0Offset));
- return LinkInfo;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check if port in lane reversed configuration.
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-BOOLEAN
-PcieLibIsPortReversed (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- BOOLEAN Result;
- UINT32 Value;
- PCIE_CONFIG *pPcieConfig;
- PCI_ADDR Port;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REG50, AccessWidth32, &Value, pConfig);
- if (pPcieConfig->PortConfiguration[PortId].PortReversed == ON || (Value & BIT0) != 0) {
- Result = TRUE;
- } else {
- Result = FALSE;
- }
- return Result;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check if core id valid for current silicon
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-BOOLEAN
-PcieLibIsValidCoreId (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 CoreAddress;
- NB_INFO NbInfo;
-
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- NbInfo = LibNbGetRevisionInfo (pConfig);
- if (CoreAddress == GPP3b_CORE) {
- if (NbInfo.Type == NB_RD890 || NbInfo.Type == NB_SR5690) {
- return TRUE;
- } else {
- return FALSE;
- }
- }
- if (CoreAddress == GPP2_CORE && (NbInfo.Type == NB_RD780 || NbInfo.Type == NB_RX780 || NbInfo.Type == NB_SR5650 || NbInfo.Type == NB_990X || NbInfo.Type == NB_970)) {
- return FALSE;
- }
- return TRUE;
-}
-
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check if port Id valid for current core configuration
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-BOOLEAN
-PcieLibIsValidPortId (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- NB_INFO NbInfo;
-
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- NbInfo = LibNbGetRevisionInfo (pConfig);
- if (!PcieLibIsValidCoreId (CoreId, pConfig)) {
- return FALSE;
- }
- if ((PortId == 3 || PortId == 12) && PcieLibGetCoreConfiguration (CoreId, pConfig) != GFX_CONFIG_AABB) {
- return FALSE;
- }
- if (PortId == 3 && NbInfo.Type == NB_970) {
- return FALSE;
- }
- if (PortId == 12 && NbInfo.Type == NB_SR5670) {
- return FALSE;
- }
- if (PortId == 13 || PortId == 8) {
- return TRUE;
- } else {
- return (PcieLibNativePortId (PortId, pConfig) == 0xf)?FALSE:TRUE;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set Link mode. Gen1/Gen2/Gen2-Advertize
- *
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] Operation Link Mode
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-
-VOID
-PcieLibSetLinkMode (
- IN PORT PortId,
- IN PCIE_LINK_MODE Operation,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCI_ADDR Port;
- UINT8 LinkSpeed;
- UINT32 LinkDeemphasisMask;
- UINT32 LinkDeemphasisValue;
- UINT32 RegA4Value;
- UINT32 RegA2Value;
- UINT32 RegC0Value;
- CORE_INFO *pCoreInfo;
- PORT_STATIC_INFO *pStaticPortInfo;
- PCIE_CONFIG *pPcieConfig;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibSetLinkMode PortId %d Operation %d Enter\n", PortId, Operation));
- LinkSpeed = 2;
- RegA4Value = BIT29 + BIT0;
- RegA2Value = 0;
- RegC0Value = 0;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- pStaticPortInfo = PcieLibGetStaticPortInfo (PcieLibNativePortId (PortId, pConfig), pConfig);
- pCoreInfo = PcieLibGetCoreInfo (PcieLibGetCoreId (PortId, pConfig), pConfig);
-
- LinkDeemphasisValue = pPcieConfig->ExtPortConfiguration[PortId].PortDeemphasis << pStaticPortInfo->DeemphasisAddress;
- LinkDeemphasisMask = ~(1 << pStaticPortInfo->DeemphasisAddress);
-
- if (Operation == PcieLinkModeGen1 || Operation == PcieLinkModeGen2AdvertizeOnly) {
- RegC0Value = BIT15;
- RegA2Value = BIT13;
- if (Operation == PcieLinkModeGen1) {
- RegA4Value = 0;
- LinkSpeed = 1;
- LinkDeemphasisValue = 0;
- }
- }
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " pCoreInfo->DeemphasisRegister %x pStaticPortInfo->DeemphasisAddress %x LinkDeemphasisMask %x, LinkDeemphasisValue %x\n", pCoreInfo->DeemphasisRegister, pStaticPortInfo->DeemphasisAddress, LinkDeemphasisMask, LinkDeemphasisValue));
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA4 , AccessWidth32, (UINT32)~(BIT0 + BIT29), RegA4Value , pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, pCoreInfo->DeemphasisRegister, AccessWidth32, LinkDeemphasisMask, LinkDeemphasisValue , pConfig);
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG88, AccessWidth8, 0xF0, LinkSpeed, pConfig);
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGC0 , AccessWidth32, (UINT32)~(BIT15), RegC0Value , pConfig);
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2 , AccessWidth32, (UINT32)~(BIT13), RegA2Value , pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Request PCIE reset to be executed
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLibRequestPciReset (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- SCRATCH_1 Scratch;
-
- Status = AGESA_UNSUPPORTED;
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG15, AccessS3SaveWidth32, (UINT32*)&Scratch, pConfig);
- if (Scratch.ResetCount == 0xf) {
- Scratch.ResetCount = 0;
- }
- if (Scratch.ResetCount < 5) {
- ++Scratch.ResetCount;
- LibNbPciIndexWrite (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG15, AccessS3SaveWidth32, (UINT32*)&Scratch, pConfig);
- if (LibNbCallBack (PHCB_AmdGeneratePciReset, WARM_RESET , pConfig) != AGESA_SUCCESS) {
- LibNbIoRMW (0xCF9, AccessWidth8, 0, 0x6, pConfig);
- }
- }
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Control Core Reset
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] Operation Assert/Deassert/Check core reset
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-PCI_CORE_RESET
-PcieLibCoreReset (
- IN CORE CoreId,
- IN PCI_CORE_RESET Operation,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
- UINT32 CalibrationReset;
- UINT32 GlobalReset;
- UINT32 RegisterAddress;
- UINT32 CoreAddress;
-
- RegisterAddress = NB_MISC_REG08;
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- switch (CoreAddress) {
- case GPP3b_CORE:
- RegisterAddress = NB_MISC_REG2A; // break missing and it is not an error.
- case GPP1_CORE:
- CalibrationReset = BIT14;
- GlobalReset = BIT15;
- break;
- case GPP2_CORE:
- CalibrationReset = BIT12;
- GlobalReset = BIT13;
- break;
- case GPP3a_CORE:
- CalibrationReset = BIT30;
- GlobalReset = BIT31;
- break;
- default:
- return PcieCoreResetAllDeassert;
- }
- switch (Operation) {
- case PcieCoreResetAllDeassert:
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, RegisterAddress, AccessS3SaveWidth32, ~CalibrationReset, 0x0, pConfig);
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 200, 0);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, RegisterAddress, AccessS3SaveWidth32, ~GlobalReset, 0x0, pConfig);
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 2000, 0);
- break;
- case PcieCoreResetAllAssert:
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, RegisterAddress, AccessS3SaveWidth32, 0xffffffff, CalibrationReset | GlobalReset, pConfig);
- break;
- case PcieCoreResetAllCheck:
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, RegisterAddress, AccessS3SaveWidth32, &Value, pConfig);
- Operation = (Value & (CalibrationReset | GlobalReset))?PcieCoreResetAllAssert:PcieCoreResetAllDeassert;
- break;
- default:
- CIMX_ASSERT (FALSE);
- }
- return Operation;
-}
-
-UINT8 GfxLineMapTable[] = {
- 0x00, 0x01, 0x01, 0x03, 0x0f, 0x00, 0xFF
-};
-UINT8 GppLineMapTable[] = {
- 0x00, 0x01, 0x03, 0x0F
-};
-/*----------------------------------------------------------------------------------------*/
-/**
- * Power off port lanes.
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] Width Port Link Width.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-VOID
-PcieLibPowerOffPortLanes (
- IN PORT PortId,
- IN PCIE_LINK_WIDTH Width,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- LINK_INFO LinkInfo;
- UINT32 PowerOffPads;
- UINT32 CoreAddress;
- UINT8* pLineMapTable;
- UINT16 MaxLaneBitMap;
- UINT16 LaneBitMap;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibPowerOffPortLanes (PortId = %d, Width = %d) Enter\n", PortId, Width));
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- LinkInfo = PcieLibGetPortLinkInfo (PortId, pConfig);
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- if (CoreAddress == GPP1_CORE || CoreAddress == GPP2_CORE) {
- pLineMapTable = &GfxLineMapTable[0];
- LinkInfo.Line0Offset /= 2;
- } else {
- pLineMapTable = &GppLineMapTable[0];
- }
- pLineMapTable = (UINT8*)FIX_PTR_ADDR (pLineMapTable, NULL);
- LaneBitMap = pLineMapTable[Width];
- MaxLaneBitMap = pLineMapTable[LinkInfo.MaxLinkWidth];
- if (PcieLibIsPortReversed (PortId, pConfig)) {
- LaneBitMap = (UINT16)LibNbBitReverse ((UINT32)LaneBitMap, LibAmdBitScanForward (MaxLaneBitMap), LibAmdBitScanReverse (MaxLaneBitMap));
- }
- PowerOffPads = (MaxLaneBitMap ^ LaneBitMap) << LinkInfo.Line0Offset;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Pads %x Exit\n", PowerOffPads));
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_BIF_INDEX, NB_BIFNB_REG65 | CoreAddress, AccessWidth32, 0xffffffff, PowerOffPads | (PowerOffPads << 8), pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibPowerOffPortLanes Exit\n"));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Hide Unused Ports
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieLibHidePorts (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 PresentPortMask;
- UINT32 DetectedPortMask;
- UINT32 HotplugPortMask;
- UINT32 Value;
- PORT PortId;
- PCIE_CONFIG *pPcieConfig;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibHidePorts Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- PresentPortMask = 0;
- DetectedPortMask = 0;
- HotplugPortMask = 0;
- // Hide SB Port
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG00, AccessS3SaveWidth32, (UINT32)~BIT6, 0, pConfig);
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON && PcieLibIsValidPortId (PortId, pConfig)) {
- PCI_ADDR Port;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- if (pPcieConfig->PortConfiguration[PortId].PortDetected == ON ) {
- DetectedPortMask |= 1 << Port.Address.Device;
- }
- if (pPcieConfig->PortConfiguration[PortId].PortHotplug != OFF) {
- HotplugPortMask |= 1 << Port.Address.Device;
- }
- PresentPortMask |= 1 << Port.Address.Device;
- }
- }
-
- if (pPcieConfig->PcieConfiguration.DisableHideUnusedPorts == ON) {
- Value = PresentPortMask;
- } else {
- Value = DetectedPortMask | HotplugPortMask;
- }
- //CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Present Port 0x%x Visible Ports 0x%xExit\n",PresentPortMask,VisiblePortMask));
- Value = (~((Value & (0xFC)) + ((Value & 0x3E00) << 7))) & 0x1F00FC;
- // Hide GFX/GFX2/GPP/GPP2 Ports
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG0C, AccessS3SaveWidth32, 0xffffffff, Value, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibHidePorts Exit\n"));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * UnHide all PCIE Ports
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-VOID
-PcieLibUnHidePorts (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG0C, AccessS3SaveWidth32, (UINT32)~0x1F00FCul, 0, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG00, AccessS3SaveWidth32, (UINT32)~BIT6, BIT6, pConfig);
-}
-
-
-
-PCIE_DEFAULT_CONFIG PcieDefaultConfig = {
- {0, 1, 0, 0},
- {
- {0, 1, 1, 1, 1, 1, 1, 0, PcieTxDriveStrangth22mA, 0, 0, PcieMediumChannel, 1, 1, 1}, //GPP1
- {0, 1, 1, 1, 1, 1, 1, 0, PcieTxDriveStrangth22mA, 0, 0, PcieMediumChannel, 1, 1, 1}, //GPP2
- {0, 1, 1, 1, 1, 1, 1, 0, PcieTxDriveStrangth22mA, 0, 0, PcieMediumChannel, 1, 1, 1}, //GPP3a
- {0, 1, 1, 1, 1, 1, 0, 0, PcieTxDriveStrangth22mA, 0, 0, PcieMediumChannel, 1, 1, 1}, //GPP3b
- {0, 1, 0, 1, 1, 1, 0, 0, PcieTxDriveStrangth22mA, 0, 0, PcieMediumChannel, 0, 0, 0} //SB
- },
- (BIT2 + BIT4 + BIT5 + BIT6 + BIT7 + BIT8 + BIT9 + BIT10 + BIT11 + BIT13) | (BIT3 + BIT12),
- 0,
- 2,
- 0,
- 60,
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * AMD structures initializer for all NB.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdPcieInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- Status = LibNbApiCall (PcieLibInitializer, ConfigPtr);
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Initialize default PCIE_CONFIG setting
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLibInitializer (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- PCIE_CONFIG *pPcieConfig;
- PCIE_DEFAULT_CONFIG *pPcieDefaultConfig;
- AMD_NB_CONFIG_BLOCK *ConfigPtr;
- PORT PortId;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibInitializer Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- if (pPcieConfig == NULL) {
- return AGESA_WARNING;
- }
- if (pPcieConfig->sHeader.InitializerID == INITIALIZED_BY_INITIALIZER) {
- return AGESA_SUCCESS;
- }
- ConfigPtr = GET_BLOCK_CONFIG_PTR (pConfig);
- LibAmdMemFill (pPcieConfig, 0, sizeof (PCIE_CONFIG), (AMD_CONFIG_PARAMS *)&(pPcieConfig->sHeader));
- pPcieConfig->sHeader.InitializerID = INITIALIZED_BY_INITIALIZER;
- pPcieDefaultConfig = (PCIE_DEFAULT_CONFIG*)FIX_PTR_ADDR (&PcieDefaultConfig, NULL);
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
- pPcieConfig->CoreSetting[CoreId] = pPcieDefaultConfig->CoreSetting[CoreId];
- }
- pPcieConfig->PcieConfiguration = pPcieDefaultConfig->PcieConfiguration;
- if (ConfigPtr->PlatformType == DesktopPlatform) {
- pPcieConfig->PcieConfiguration.NbSbVc1 = ON;
- }
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- pPcieConfig->ExtPortConfiguration[PortId].PortDeemphasis = PcieTxDeemphasis3p5dB;
- }
- pPcieConfig->CoreConfiguration[2] = PcieLibGetCoreConfiguration (2, pConfig);
- pPcieConfig->ReceiverDetectionPooling = pPcieDefaultConfig->ReceiverDetectionPooling;
- pPcieConfig->ResetToTrainingDelay = pPcieDefaultConfig->ResetToTrainingDelay;
- pPcieConfig->ExtPortConfiguration[8].PortL1ImmediateACK = ON;
- pPcieConfig->TrainingToLinkTestDelay = pPcieDefaultConfig->TrainingToLinkTestDelay;
- pPcieConfig->DeviceInitMaskS1 = pPcieDefaultConfig->DeviceInitMaskS1;
- pPcieConfig->DeviceInitMaskS2 = pPcieDefaultConfig->DeviceInitMaskS2;
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibInitializer Exit\n"));
- return AGESA_SUCCESS;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Validate Gfx Core Configuration
- *
- *
- *
- *
- *
- */
-AGESA_STATUS
-PcieLibValidateGfxConfig (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- PCIE_CONFIG *pPcieConfig;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieLibValidateGfxConfig Enter\n"));
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " CoreConfiguration[%d] = \n", CoreId));
- if (pPcieConfig->CoreConfiguration[CoreId] == 0x0) {
- pPcieConfig->CoreConfiguration[CoreId] = (pPcieConfig->PortConfiguration[PortId].PortPresent == ON)?GFX_CONFIG_AABB:GFX_CONFIG_AAAA;
- } else {
- if (pPcieConfig->CoreConfiguration[CoreId] != GFX_CONFIG_AABB &&
- pPcieConfig->CoreConfiguration[CoreId] != GFX_CONFIG_AAAA) {
- //We have received request for unknown configuration.
- //pPcieConfig->CoreSetting[CoreId].CoreDisabled = ON;
- pPcieConfig->PortConfiguration[PortId].PortPresent = 0;
- pPcieConfig->PortConfiguration[PortId - 1].PortPresent = 0;
- return AGESA_WARNING;
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " CoreConfiguration[%d] = %x\n", CoreId, pPcieConfig->CoreConfiguration[CoreId]));
- return AGESA_SUCCESS;
-}
-/*----------------------------------------------------------------------------------------*/
-/**
- * Validate input parameters for early PCIE init.
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieLibInitValidateInput (
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PCIE_CONFIG *pPcieConfig;
- NB_INFO NbInfo;
- CORE CoreId;
- PORT PortId;
-
- NbInfo = LibNbGetRevisionInfo (pConfig);
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- if (NbInfo.Type == NB_UNKNOWN || pPcieConfig == NULL) {
- return AGESA_FATAL;
- }
- Status = AGESA_SUCCESS;
- //Validate GFX configuration
- if (PcieLibValidateGfxConfig (3, pConfig) != AGESA_SUCCESS) {
- REPORT_EVENT (AGESA_WARNING, PCIE_ERROR_CORE_CONFIGURATION, GPP1_CORE , 0, 0, 0, pConfig);
- Status = AGESA_WARNING;
- }
- if (PcieLibValidateGfxConfig (12, pConfig) != AGESA_SUCCESS) {
- REPORT_EVENT (AGESA_WARNING, PCIE_ERROR_CORE_CONFIGURATION, GPP2_CORE , 0, 0, 0, pConfig);
- Status = AGESA_WARNING;
- }
- //Enable SB port on NB - SB chain and disable otherwise
- pPcieConfig->PortConfiguration[8].PortPresent = (pConfig->NbPciAddress.AddressValue == 0)?ON:OFF;
-
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
- if (pPcieConfig->PcieConfiguration.DisableHideUnusedPorts == ON) {
- //pPcieConfig->CoreSetting[CoreId].PowerOffUnusedLanes = OFF;
- pPcieConfig->CoreSetting[CoreId].TxClockOff = OFF;
- pPcieConfig->CoreSetting[CoreId].LclkClockOff = OFF;
- pPcieConfig->CoreSetting[CoreId].PowerOffPll = OFF;
- }
- if (pPcieConfig->CoreSetting[CoreId].ChannelType != 0) {
- //Set Trasmitter drive strength based on cahnnel type
- if (pPcieConfig->CoreSetting[CoreId].ChannelType == PcieLongChannel) {
- pPcieConfig->CoreSetting[CoreId].TxDriveStrength = (NbInfo.Revision == NB_REV_A11)? PcieTxDriveStrangth24mA : PcieTxDriveStrangth26mA;
- } else {
- pPcieConfig->CoreSetting[CoreId].TxDriveStrength = PcieTxDriveStrangth22mA;
- }
- // Enable half swing mode
- if (pPcieConfig->CoreSetting[CoreId].ChannelType == PcieShortChannel) {
- pPcieConfig->CoreSetting[CoreId].TxHalfSwingMode = ON;
- } else {
- pPcieConfig->CoreSetting[CoreId].TxHalfSwingMode = OFF;
- }
- }
- }
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- if (pPcieConfig->ExtPortConfiguration[PortId].PortPowerLimit == 0) {
- pPcieConfig->ExtPortConfiguration[PortId].PortPowerLimit = 75; //Set 75W by default
- }
- if (pPcieConfig->CoreSetting[CoreId].ChannelType != 0) {
- if (pPcieConfig->CoreSetting[CoreId].ChannelType == PcieLongChannel) {
- pPcieConfig->ExtPortConfiguration[PortId].PortDeemphasis = PcieTxDeemphasis6dB;
- } else {
- pPcieConfig->ExtPortConfiguration[PortId].PortDeemphasis = PcieTxDeemphasis3p5dB;
- }
- }
- }
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Enable PCIE Extended configuration MMIO.
- *
- *
- *
- * @param[in] PcieMmioBase MMIO Base Address in 1MB unit.
- * @param[in] PcieMmioSize MMIO Size in 1MB unit
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieLibSetPcieMmioBase (
- IN UINT16 PcieMmioBase,
- IN UINT16 PcieMmioSize,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 BAR3BusRange;
-
- BAR3BusRange = LibAmdBitScanReverse ((UINT32)PcieMmioSize);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG00, AccessWidth32, (UINT32)~BIT3, 0x0, pConfig);
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REG7F, AccessWidth8, (UINT32)~BIT6, BIT6, pConfig);
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | (NB_PCI_REG84 + 2), AccessWidth8, (UINT32)~(0x7), (BAR3BusRange > 8)?0:BAR3BusRange, pConfig);
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REG1C, AccessWidth32, 0, (UINT32) (PcieMmioBase << 20), pConfig);
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REG7F, AccessWidth8, (UINT32)~BIT6, 0, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG32, AccessWidth32, 0xffffffff, BIT28, pConfig);
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG00, AccessWidth32, 0xffffffff, BIT3, pConfig);
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | NB_PCI_REG04, AccessWidth8, (UINT32)~BIT1, BIT1, pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Assert/Deassert Strap valid enables programming for misc strap features.
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] Operation Assert or deassert strap valid.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieLibStrapModeControl (
- IN CORE CoreId,
- IN PCIE_STRAP_MODE Operation,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- CORE_INFO *pCoreInfo;
-
- pCoreInfo = PcieLibGetCoreInfo (CoreId, pConfig);
- LibNbPciIndexRMW (
- pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX,
- pCoreInfo->StrapRegister,
- AccessS3SaveWidth32,
- ~(1 << pCoreInfo->StrapAddress),
- (Operation == PcieCoreStrapConfigStart)?(1 << pCoreInfo->StrapAddress):0,
- pConfig
- );
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Pcie Port Info.
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-PORT_INFO*
-PcieLibGetPortInfo (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- UINT32 CoreConfig;
- PORT_INFO *pPortInfo;
- PORT NativePortId;
- GPP_CFG_INFO *pGppCfgInfoTable;
-
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- CoreConfig = PcieLibGetCoreConfiguration (CoreId, pConfig);
- switch (PcieLibGetCoreAddress (CoreId, pConfig)) {
- case GPP1_CORE:
- case GPP2_CORE:
- pPortInfo = &pGfxPortFullA;
- if (CoreConfig == GFX_CONFIG_AABB) {
- if (PortId == 3 || PortId == 12) {
- pPortInfo = &pGfxPortB;
- } else {
- pPortInfo = &pGfxPortA;
- }
- }
- break;
- case SB_CORE:
- case GPP3b_CORE:
- pPortInfo = &pGpp420000[0];
- break;
- case GPP3a_CORE:
- pGppCfgInfoTable = (GPP_CFG_INFO*)FIX_PTR_ADDR (&GppCfgInfoTable[CoreConfig - 1], NULL);
- NativePortId = PcieLibNativePortId (PortId, pConfig);
- if (NativePortId == 0xf) {
- return NULL;
- }
- pPortInfo = &pGppCfgInfoTable->PortInfoPtr[NativePortId - 4];
- break;
- default:
- return NULL;
- }
- return (PORT_INFO*)FIX_PTR_ADDR (pPortInfo, NULL);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Pointer to static port info
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-PORT_STATIC_INFO*
-PcieLibGetStaticPortInfo (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- PORT_STATIC_INFO *pPortStaticInfo;
-
- pPortStaticInfo = (PORT_STATIC_INFO*)FIX_PTR_ADDR (&PortInfoTable[PortId - MIN_PORT_ID], NULL);
- return pPortStaticInfo ;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Native Port Id.
- * Native Port Id can be different from Port ID only on GPPSB core ports.
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-PORT
-PcieLibNativePortId (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- CORE CoreId;
- GPP_CFG_INFO *pGppCfgInfoTable;
-
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- if (PcieLibGetCoreAddress (CoreId, pConfig) == GPP3a_CORE) {
- UINT32 CoreConfig;
- CoreConfig = PcieLibGetCoreConfiguration (CoreId, pConfig);
- pGppCfgInfoTable = (GPP_CFG_INFO*)FIX_PTR_ADDR (&GppCfgInfoTable[CoreConfig - 1], NULL);
- return (pGppCfgInfoTable->PortIdMap >> ((PortId - 4) * 4)) & 0xF;
- } else {
- return PortId;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get pointer to Core info structure.
- *
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-CORE_INFO*
-PcieLibGetCoreInfo (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- return (CORE_INFO*)FIX_PTR_ADDR (&CoreInfoTable[CoreId], NULL);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Reset Device in slot.
- * Check if slot has controlled by GPI reset. If support toggle reset for 10us.
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-AGESA_STATUS
-PcieLibResetSlot (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbCallBack (PHCB_AmdPortResetSupported, (UINTN) (1 << PortId), pConfig);
- if (Status == AGESA_SUCCESS) {
- LibNbCallBack (PHCB_AmdPortResetAssert, (UINTN) (1 << PortId), pConfig);
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 10, 0);
- LibNbCallBack (PHCB_AmdPortResetDeassert, (UINTN) (1 << PortId), pConfig);
- }
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Secondary level interface to check if Gen2 disabled.
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-BOOLEAN
-PcieLibCheckGen2Disabled (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- SCRATCH_1 Scratch;
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG15, AccessS3SaveWidth32, (UINT32*)&Scratch, pConfig);
- if ((Scratch.PortGen2Disable & (1 << (PortId - 2))) != 0) {
- return FALSE;
- } else {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Force Gen2 Disable\n"));
- return TRUE;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Request Gen 2 disabled on next boot.
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-VOID
-PcieLibSetGen2Disabled (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *pConfig
- )
-{
- SCRATCH_1 Scratch;
-
- LibNbPciIndexRead (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG15, AccessS3SaveWidth32, (UINT32*)&Scratch, pConfig);
- Scratch.PortGen2Disable &= (~(1 << (PortId - 2)));
- LibNbPciIndexWrite (pConfig->NbPciAddress.AddressValue | NB_HTIU_INDEX, NB_HTIU_REG15, AccessS3SaveWidth32, (UINT32*)&Scratch, pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Force link to compliance mode
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-PcieLibSetLinkCompliance (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCI_ADDR Port;
- PCIE_CONFIG *pPcieConfig;
-
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- if (pPcieConfig->PortConfiguration[PortId].PortLinkMode == PcieLinkModeGen1) {
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGC0, AccessWidth32, (UINT32)~BIT13, BIT13, pConfig);
- } else {
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG88, AccessWidth8, (UINT32)~BIT4, BIT4, pConfig);
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get PCIe device type
- *
- *
- *
- * @param[in] Device PCI address of device.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- * @retval PCIe device type (see PCIE_DEVICE_TYPE)
- */
- /*----------------------------------------------------------------------------------------*/
-
-PCIE_DEVICE_TYPE
-PcieGetDeviceType (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT8 PcieCapPtr;
- UINT8 Value;
-
- PcieCapPtr = LibNbFindPciCapability (Device.AddressValue, PCIE_CAP_ID, pConfig);
- if (PcieCapPtr != 0) {
- LibNbPciRead (Device.AddressValue | (PcieCapPtr + 0x2) , AccessWidth8, &Value, pConfig);
- return Value >> 4;
- }
- return PcieNotPcieDevice;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get bitmap of cores that have active or potentially active ports
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- * @retval Bitmap of cores
- */
- /*----------------------------------------------------------------------------------------*/
-
-UINT8
-PcieLibGetActiveCoreMap (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PORT PortId;
- CORE CoreId;
- UINT8 ActiveCoreMap;
- PCIE_CONFIG *pPcieConfig;
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- ActiveCoreMap = 0;
- //Check through Ports
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON && PcieLibIsValidPortId (PortId, pConfig)) {
- if (pPcieConfig->PortConfiguration[PortId].PortCompliance == ON ||
- pPcieConfig->PortConfiguration[PortId].PortDetected == ON ||
- pPcieConfig->PortConfiguration[PortId].PortHotplug != OFF) {
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- ActiveCoreMap |= (1 << CoreId);
- }
- }
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Active Core Map = %x\n", ActiveCoreMap));
- return ActiveCoreMap;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieLinkWidth.c b/src/vendorcode/amd/cimx/rd890/nbPcieLinkWidth.c
deleted file mode 100644
index ec3ec80f7e..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieLinkWidth.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * @file
- *
- * PCIe link width control.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Set Pcie Link Width
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] LinkWidth New Link Width
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-AGESA_STATUS
-PcieLibSetLinkWidth (
- IN PORT PortId,
- IN PCIE_LINK_WIDTH LinkWidth,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PCIE_LINK_WIDTH NewLinkWidth;
- PCIE_LINK_WIDTH CurrentLinkWidth;
-
- Status = AGESA_SUCCESS;
- NewLinkWidth = LinkWidth;
- CurrentLinkWidth = PcieLibGetLinkWidth (PortId, pConfig);
- if (NewLinkWidth == 0 || NewLinkWidth > CurrentLinkWidth) {
- NewLinkWidth = CurrentLinkWidth;
- }
- if (NewLinkWidth == PcieLinkWidth_x12) {
- NewLinkWidth = PcieLinkWidth_x8;
- }
- if (NewLinkWidth < CurrentLinkWidth) {
- CORE CoreId;
- UINT32 Value;
- UINT32 CoreAddress;
- BOOLEAN PoolPortStatus;
- PCI_ADDR Port;
-
- CoreId = PcieLibGetCoreId (PortId, pConfig);
- CoreAddress = PcieLibGetCoreAddress (CoreId, pConfig);
- PoolPortStatus = TRUE;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- LibNbPciIndexRMW (NB_SBDFO | NB_BIF_INDEX, NB_BIFNB_REG40 | CoreAddress, AccessWidth32, (UINT32)~BIT0, BIT0, pConfig);
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, 0xfffffff8, (NewLinkWidth) | BIT8 | BIT7, pConfig);
- while (PoolPortStatus) {
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG6A, AccessWidth16, &Value, pConfig);
- if ((Value & BIT11) == 0) {
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, &Value, pConfig);
- if ((Value & BIT8) == 0) {
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG12A, AccessWidth16, &Value, pConfig);
- if ((Value & BIT1) == 0) {
- PoolPortStatus = FALSE;
- }
- }
- }
- }
- LibNbPciIndexRMW (NB_SBDFO | NB_BIF_INDEX, NB_BIFNB_REG40 | CoreAddress, AccessWidth32, (UINT32)~BIT0, 0 , pConfig);
- LibNbPciIndexRMW (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, (UINT32)~BIT7, 0, pConfig);
- }
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Return link with
- *
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-PCIE_LINK_WIDTH
-PcieLibGetLinkWidth (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_LINK_WIDTH LinkWidth;
- UINT32 Value;
- PCI_ADDR Port;
-
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
-// Read current link State
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA5, AccessWidth32, &Value, pConfig);
- if ((Value & 0x3f) == 0x10) {
- //Read current link width
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, &Value, pConfig);
- LinkWidth = (Value >> 4) & 0xf;
- } else {
- //Link not in L0
- LinkWidth = PcieLinkWidth_x0;
- }
- return LinkWidth;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieLinkWidth.h b/src/vendorcode/amd/cimx/rd890/nbPcieLinkWidth.h
deleted file mode 100644
index 8eab54172c..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieLinkWidth.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * @file
- *
- * PCIe link width control.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBPCIELINKWIDTH_H_
-#define _NBPCIELINKWIDTH_H_
-
-AGESA_STATUS
-PcieLibSetLinkWidth (
- IN PORT PortId,
- IN PCIE_LINK_WIDTH LinkWidth,
- IN AMD_NB_CONFIG *pConfig
- );
-
-PCIE_LINK_WIDTH
-PcieLibGetLinkWidth (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPciePllControl.c b/src/vendorcode/amd/cimx/rd890/nbPciePllControl.c
deleted file mode 100644
index ec2206bfca..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPciePllControl.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/**
- * @file
- *
- * PCIe Port device number remapping.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-SCAN_STATUS
-PciePllOffCheckFunction (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Function
- );
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check if EP allowed exit latency allowed PLL in L1 to be disabled on non hotplug ports.
- *
- *
- * @param[in] CoreId CoreId
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-BOOLEAN
-PciePllOffComatibilityTest (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PLLOFF_WORKSPACE PllOffWorkspace;
- PORT PortId;
- BOOLEAN Result;
- PCIE_CONFIG *pPcieConfig;
- BOOLEAN IsHotplugPorst;
- BOOLEAN IsNonHotplugPorts;
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PciePllOffInL1ComatibilityTest Enter Core [%d]\n", CoreId));
- LibAmdMemFill (&PllOffWorkspace, 0, sizeof (PllOffWorkspace), (AMD_CONFIG_PARAMS *)&(pConfig->sHeader));
- PllOffWorkspace.ScanPciePort.pConfig = pConfig;
- PllOffWorkspace.ScanPciePort.ScanBus = LibNbScanPciBus;
- PllOffWorkspace.ScanPciePort.ScanDevice = LibNbScanPciDevice;
- PllOffWorkspace.ScanPciePort.ScanFunction = PciePllOffCheckFunction;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PcieLibIsValidPortId (PortId, pConfig) && PcieLibGetCoreId (PortId, pConfig) == CoreId) {
- if (pPcieConfig->PortConfiguration[PortId].PortHotplug == ON) {
- IsHotplugPorst = TRUE;
- continue; // Skip hotplug ports . Will make decision later.
- }
- if (pPcieConfig->PortConfiguration[PortId].PortDetected == ON) {
- PCI_ADDR Port;
- IsNonHotplugPorts = TRUE;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- PllOffWorkspace.ScanPciePort.ScanFunction (&PllOffWorkspace.ScanPciePort, Port);
- }
- }
- }
- if (PllOffWorkspace.MaxL1Latency != 0 && PllOffWorkspace.MaxL1Latency < 34) {
- Result = FALSE;
- } else {
- Result = TRUE;
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PciePllOffInL1ComatibilityTest Exit [%d]\n", Result));
- return Result;
-}
-
-/**----------------------------------------------------------------------------------------*/
-/**
- * Scan PCIe topology
- *
- *
- *
- * @param[in] This Pointer to instance of scan protocol
- * @param[in] Function PCI address of found device/function.
- *
- * @retval SCAN_FINISHED Scan for device finished.
- */
- /*----------------------------------------------------------------------------------------*/
-SCAN_STATUS
-PciePllOffCheckFunction (
- IN PCI_SCAN_PROTOCOL *This,
- IN PCI_ADDR Function
- )
-{
- PLLOFF_WORKSPACE *WorkspacePtr;
- PCIE_DEVICE_TYPE DeviceType;
- UINT8 SecondaryBus;
- PCI_ADDR Port;
-
- WorkspacePtr = (PLLOFF_WORKSPACE*) This;
- DeviceType = PcieGetDeviceType (Function, This->pConfig);
- if (DeviceType == PcieDeviceRootComplex || DeviceType == PcieDeviceDownstreamPort) {
- WorkspacePtr->LinkCount++;
- //Lets enable Common clock
- LibNbPciRead (Function.AddressValue | 0x19, AccessWidth8, &SecondaryBus, This->pConfig);
- if (SecondaryBus == 0) {
- return SCAN_FINISHED;
- }
- Port.AddressValue = MAKE_SBDFO (0, SecondaryBus, 0, 0, 0);
- This->ScanBus (This, Port);
- WorkspacePtr->LinkCount--;
- } else if (DeviceType == PcieDeviceUpstreamPort ) {
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (This->pConfig), CIMX_NBPCIE_TRACE), " Reached upstream port\n"));
- LibNbPciRead (Function.AddressValue | 0x19, AccessWidth8, &SecondaryBus, This->pConfig);
- if (SecondaryBus == 0) {
- return SCAN_FINISHED;
- }
- Port.AddressValue = MAKE_SBDFO (0, SecondaryBus, 0, 0, 0);
- This->ScanBus (This, Port);
- } else if (DeviceType <= PcieDeviceLegacyEndPoint) {
- // We reach end of the link
- UINT8 PcieCapPtr;
- UINT32 Value;
- UINT8 L1AcceptableLatency;
- PcieCapPtr = LibNbFindPciCapability (Function.AddressValue, PCIE_CAP_ID, This->pConfig);
- if (PcieCapPtr != 0) {
- LibNbPciRead (Function.AddressValue | (PcieCapPtr + 0x0D) , AccessWidth8, &Value, This->pConfig);
- if (((Value >> 2) & ASPM_L1) != 0) {
- LibNbPciRead ((Function.AddressValue | (PcieCapPtr + 4)), AccessWidth32, &Value, This->pConfig);
- L1AcceptableLatency = ((UINT8) (1 << ((Value >> 9) & 0x7)) & 0x7F);
- if (WorkspacePtr->LinkCount > 1) {
- L1AcceptableLatency = L1AcceptableLatency + WorkspacePtr->LinkCount;
- }
- if (WorkspacePtr->MaxL1Latency < L1AcceptableLatency) {
- WorkspacePtr->MaxL1Latency = L1AcceptableLatency;
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (This->pConfig), CIMX_NBPCIE_TRACE), " Reached end of link at 0x%x with Acceptable Exit Latency %dus \n", Function.AddressValue, L1AcceptableLatency));
- }
- }
- }
- return SCAN_FINISHED;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbPciePllControl.h b/src/vendorcode/amd/cimx/rd890/nbPciePllControl.h
deleted file mode 100644
index 44193a528c..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPciePllControl.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * @file
- *
- * PLL off in L1 support.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-#ifndef _NBPLLCONTROL_H_
-#define _NBPLLCONTROL_H_
-
-BOOLEAN
-PciePllOffComatibilityTest (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-#pragma pack (push, 1)
-/// Framework for testing for ability to diable PLL in L1
-typedef struct {
- PCI_SCAN_PROTOCOL ScanPciePort; ///< PCI scan protocol
- PCI_ADDR DownstreamPort; ///< Downstream port to enable ASPM
- UINT8 MaxL1Latency; ///< TBD
- UINT8 LinkCount; ///< TBD
-} PLLOFF_WORKSPACE;
-
-#pragma pack (pop)
-#endif
diff --git a/src/vendorcode/amd/cimx/rd890/nbPciePortRemap.c b/src/vendorcode/amd/cimx/rd890/nbPciePortRemap.c
deleted file mode 100644
index 639f149565..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPciePortRemap.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * @file
- *
- * PCIe Port device number remapping.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-PORT
-STATIC
-PciePortRemapAllocateDeviceId (
- IN UINT8 *UnusedPortMap
-);
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Remap PCIe ports device number.
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-AGESA_STATUS
-PciePortRemapInit (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- PORT FinalDeviceIdList[MAX_PORT_ID + 1];
- UINT8 UsedDeviceIdMap[MAX_PORT_ID + 1];
- BOOLEAN IsDeviceRemapEnabled;
- PORT PortId;
- PCIE_CONFIG *pPcieConfig;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PciePortDeviceNumberRemap Enter \n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- Status = AGESA_SUCCESS;
- IsDeviceRemapEnabled = FALSE;
- // Remap Device
- LibAmdMemFill (&UsedDeviceIdMap, 0, sizeof (UsedDeviceIdMap), (AMD_CONFIG_PARAMS *)&(pConfig->sHeader));
- LibAmdMemFill (&FinalDeviceIdList, 0, sizeof (FinalDeviceIdList), (AMD_CONFIG_PARAMS *)&(pConfig->sHeader));
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (PcieLibIsValidPortId (PortId, pConfig)) {
- PORT NativePortId = PcieLibNativePortId (PortId, pConfig);
- if (pPcieConfig->PortConfiguration[PortId].PortPresent) {
- //FinalDeviceIdList[PortId] = PortId;
- if (pPcieConfig->ExtPortConfiguration[PortId].PortMapping != 0) {
- if (pPcieConfig->ExtPortConfiguration[PortId].PortMapping < MIN_PORT_ID ||
- pPcieConfig->ExtPortConfiguration[PortId].PortMapping > MAX_PORT_ID ||
- pPcieConfig->ExtPortConfiguration[PortId].PortMapping == 8) {
- return AGESA_ERROR;
- }
- FinalDeviceIdList[NativePortId] = pPcieConfig->ExtPortConfiguration[PortId].PortMapping;
- IsDeviceRemapEnabled = TRUE;
- } else {
- FinalDeviceIdList[NativePortId] = PortId;
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Requested Port Mapping %d -> %d\n", PortId, FinalDeviceIdList[PortId]));
- if (UsedDeviceIdMap[FinalDeviceIdList[NativePortId]] == 0 ) {
- UsedDeviceIdMap[FinalDeviceIdList[NativePortId]] = 1;
- } else {
- return AGESA_ERROR;
- }
- }
- }
- }
- if (!IsDeviceRemapEnabled) {
- return Status;
- }
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- PORT_STATIC_INFO *pStaticPortInfo;
- pStaticPortInfo = PcieLibGetStaticPortInfo (PortId, pConfig);
- if (pStaticPortInfo->MappingAddress == 0xFF) {
- continue;
- }
- if (FinalDeviceIdList[PortId] == 0) {
- FinalDeviceIdList[PortId] = PciePortRemapAllocateDeviceId (&UsedDeviceIdMap[0]);
- }
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Port Mapping %d -> %d\n", PortId, FinalDeviceIdList[PortId]));
- LibNbPciIndexRMW (
- NB_SBDFO | NB_MISC_INDEX,
- (PortId > 9)?NB_MISC_REG21:NB_MISC_REG20,
- AccessWidth32,
- 0xffffffff,
- FinalDeviceIdList [PortId] << pStaticPortInfo->MappingAddress,
- pConfig
- );
-
- }
- LibNbPciIndexRMW (NB_SBDFO | NB_MISC_INDEX, NB_MISC_REG20, AccessWidth32, 0xffffffff, 0x3, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PciePortDeviceNumberRemap Exit [0x%x] \n", Status));
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Allocate Device number from unused port array.
- *
- *
- *
- * @param[in] UnusedPortMap Unused port array.
- */
-
-PORT
-STATIC
-PciePortRemapAllocateDeviceId (
- IN UINT8 *UnusedPortMap
- )
-{
- PORT PortId;
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (UnusedPortMap[PortId] == 0) {
- UnusedPortMap[PortId] = 1;
- break;
- }
- }
- return PortId;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbPciePortRemap.h b/src/vendorcode/amd/cimx/rd890/nbPciePortRemap.h
deleted file mode 100644
index 32236f07a0..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPciePortRemap.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file
- *
-* PCIe Port device number remapping.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBPCIEPORTREMAP_H_
-#define _NBPCIEPORTREMAP_H_
-
-AGESA_STATUS
-PciePortRemapInit (
- IN AMD_NB_CONFIG *pConfig
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieRecovery.c b/src/vendorcode/amd/cimx/rd890/nbPcieRecovery.c
deleted file mode 100644
index 918fbd43f1..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieRecovery.c
+++ /dev/null
@@ -1,753 +0,0 @@
-/**
- * @file
- *
- * PCIe in recovery support
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-VOID
-PcieRecoveryCoreInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-VOID
-PcieRecoveryPortTraining (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- );
-
-VOID
-PcieRecoveryCommonPortInit (
- IN PORT PortId,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-PcieRecoveryCommonCoreInit (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-UINT32
-PcieRecoveryGetCoreAddress (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-PCI_ADDR
-PcieRecoveryGetPortPciAddress (
- IN PORT PortId,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-PcieRecoveryPcieCheckPorts (
- IN PORT PortId,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-VOID
-PcieRecoveryReleaseTraining (
- IN PORT PortId,
- IN AMD_NB_CONFIG *NbConfigPtr
- );
-
-PORT
-PcieRecoveryNativePortId (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * PCIE Recovery Init. Basic programming / EP training.
- * After this call EP are fully operational.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-AGESA_STATUS
-AmdPcieEarlyInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
-#ifdef PCIE_RECOVERY_SUPPORT
- PcieRecoveryCoreInit (ConfigPtr);
- PcieRecoveryPortTraining (ConfigPtr);
-#endif
- return AGESA_SUCCESS;
-}
-
-
-#ifdef PCIE_RECOVERY_SUPPORT
-
-INDIRECT_REG_ENTRY
-STATIC
-PcieRecoveryMiscInitTable[] = {
- {
- NB_MISC_REG0C,
- (UINT32)~0x001f00FC,
- 0x00000000
- },
- {
- NB_MISC_REG20,
- (UINT32)~BIT1,
- 0x0
- }, //enable static device remapping by default
- {
- NB_MISC_REG22,
- 0xffffffff,
- BIT27
- }, //[10]CMGOOD_OVERRIDE for all 5 pcie cores.
- {
- NB_MISC_REG6B,
- 0xffffffff,
- (UINT32) (0x1f << 27)
- }, //[13][12]Turn Off Offset Cancellation
- {
- NB_MISC_REG37,
- (UINT32)~(BIT11 + BIT12 + BIT13),
- 0x0
- }, //[14][13]Disables Rx Clock gating in CDR
- {
- NB_MISC_REG67,
- (UINT32)~(BIT26 + BIT10 + BIT11),
- BIT11
- }, //[13]Disables Rx Clock gating in CDR
- {
- NB_MISC_REG2C,
- (UINT32)~(BIT10),
- 0x0
- }, //[13]Disables Rx Clock gating in CDR
- {
- NB_MISC_REG2A,
- (UINT32)~(BIT17 + BIT16),
- BIT17
- }, //[16]Sets Electrical l Idle Threshold
- {
- NB_MISC_REG32,
- (UINT32)~(0x3F << 20),
- (UINT32) (0x2A << 20)
- }, //[17][16]Sets Electrical Idle Threshold
- {
- NB_MISC_REG28,
- 0xffffff00,
- 0x0
- },
- {
- NB_MISC_REG27,
- 0x3fffffff,
- 0x0
- },
- {
- NB_MISC_REG2D,
- (UINT32)~(BIT5),
- 0x0
- }
-};
-
-// 2 3 4 5 6 7 8 9 A B C D
-UINT8 PortToCoreMappingTable[] = { 0xff, 0xff, 0, 0, 3, 3, 3, 3, 4, 3, 3, 1, 1, 3 };
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Minimum core initialization
- *
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-VOID
-PcieRecoveryCoreInit (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- CORE CoreId;
- PORT PortId;
- AMD_NB_CONFIG *NbConfigPtr;
- PCIE_CONFIG *pPcieConfig;
-
- NbConfigPtr = &ConfigPtr->Northbridges[0];
- pPcieConfig = GET_PCIE_CONFIG_PTR (NbConfigPtr);
-//Init Misc registers
- LibNbIndirectTableInit (
- NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX,
- 0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&PcieRecoveryMiscInitTable[0],NULL),
- (sizeof (PcieRecoveryMiscInitTable) / sizeof (INDIRECT_REG_ENTRY)),
- NbConfigPtr
- );
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON) {
- pPcieConfig->CoreSetting[PortToCoreMappingTable[PortId]].CoreDisabled = OFF;
- }
- }
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
- if (pPcieConfig->CoreSetting[CoreId].CoreDisabled == OFF) {
- //Init core registers and configuration
- PcieRecoveryCommonCoreInit (CoreId, NbConfigPtr);
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Port link training initialization
- *
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-VOID
-PcieRecoveryPortTraining (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- PORT PortId;
- UINT32 PortToHideMap;
- AMD_NB_CONFIG *NbConfigPtr;
- PCIE_CONFIG *pPcieConfig;
-
- PortToHideMap = 0;
- NbConfigPtr = &ConfigPtr->Northbridges[0];
- pPcieConfig = GET_PCIE_CONFIG_PTR (NbConfigPtr);
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON) {
- PcieRecoveryCommonPortInit (PortId, NbConfigPtr);
- if (LibNbCallBack (PHCB_AmdPortResetDeassert, 1 << PortId, NbConfigPtr) == AGESA_SUCCESS) {
- STALL (GET_BLOCK_CONFIG_PTR (NbConfigPtr), pPcieConfig->ResetToTrainingDelay, 0);
- }
- if (PortId != 8) {
- PcieRecoveryReleaseTraining (PortId, NbConfigPtr);
- }
- }
- }
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), pPcieConfig->ReceiverDetectionPooling, 0);
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- PCI_ADDR Port;
- Port = PcieRecoveryGetPortPciAddress (PortId, NbConfigPtr);
- if (pPcieConfig->PortConfiguration[PortId].PortPresent == ON && PortId != 8) {
- PcieRecoveryPcieCheckPorts (PortId, NbConfigPtr);
-
- pPcieConfig->PortConfiguration[PortId].PortLinkMode = PcieLinkModeGen1;
-
- LibNbPciIndexWrite (
- Port.AddressValue | NB_BIF_INDEX,
- NB_BIFNBP_REG01,
- AccessWidth32,
- (UINT32*)&pPcieConfig->PortConfiguration[PortId],
- NbConfigPtr
- );
- }
- if (pPcieConfig->PortConfiguration[PortId].PortDetected == OFF) {
- PortToHideMap |= (1 << PortId);
- }
- }
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG0C, AccessWidth32, 0xffffffff, (PortToHideMap & 0xFC) | ((PortToHideMap & 0x3E00) << 7), NbConfigPtr);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check link training Status
- *
- *
- *
- *
- * @param[in] Config Northbridges configuration structure pointer.
- *
- */
-VOID
-PcieRecoveryPcieCheckPorts (
- IN PORT PortId,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCIE_CONFIG *pPcieConfig;
- PCI_ADDR Port;
- UINT32 LinkState;
- UINT32 LinkStatePooling;
- UINT32 Value;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (NbConfigPtr);
- Port = PcieRecoveryGetPortPciAddress (PortId, NbConfigPtr);
- LinkStatePooling = pPcieConfig->ReceiverDetectionPooling;
- do {
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA5, AccessWidth32, &LinkState, NbConfigPtr);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieRecoveryCoreInit PortId = %d LinkState 0x%x\n", PortId, LinkState));
- LinkState &= 0x3F;
- if (LinkState == 0x10) {
- UINT16 VcoStatus;
- BOOLEAN VcoNotCompleted;
- UINT32 VcoPooling;
- VcoNotCompleted = TRUE;
- VcoPooling = 6000;
- do {
- LibNbPciRead (Port.AddressValue | NB_PCIP_REG12A, AccessWidth16, &VcoStatus, NbConfigPtr);
- if (VcoStatus & BIT1) {
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, &Value, NbConfigPtr);
- Value = (Value & 0xfffffe80) | ((Value & 0x70) >> 4) | BIT8;
- LibNbPciIndexWrite (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA2, AccessWidth32, &Value, NbConfigPtr);
- STALL (GET_BLOCK_CONFIG_PTR (NbConfigPtr), 5000, 0);
- } else {
- VcoNotCompleted = FALSE;
- }
- } while (VcoNotCompleted || --VcoPooling != 0);
- if (!VcoNotCompleted) {
- pPcieConfig->PortConfiguration[PortId].PortDetected = ON;
- }
- } else {
- STALL (GET_BLOCK_CONFIG_PTR (NbConfigPtr), 1000, 0);
- }
- } while (LinkState != 0x10 && --LinkStatePooling != 0);
-}
-
-
-UINT8 PortTrainingOffset[] = {
- 4, 5, 21, 22, 23, 24, 20, 25, 26, 6, 7 , 4
-};
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check link training Status
- *
- *
- *
- *
- * @param[in] Config Northbridges configuration structure pointer.
- *
- */
-VOID
-PcieRecoveryReleaseTraining (
- IN PORT PortId,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PORT NativePortId;
-
- NativePortId = PcieRecoveryNativePortId (PortId, NbConfigPtr);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieRecoveryReleaseTraining PortId = %d NativeId %d BitOfset %d\n",
- PortId, NativePortId, ((UINT8*)FIX_PTR_ADDR (&PortTrainingOffset[0], NULL))[NativePortId - MIN_PORT_ID]));
- LibNbPciIndexRMW (
- NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX,
- (PortId == 13)? NB_MISC_REG2A:NB_MISC_REG08,
- AccessWidth32,
- ~(1 << ((UINT8*)FIX_PTR_ADDR (&PortTrainingOffset[0], NULL))[NativePortId - MIN_PORT_ID]),
- 0,
- NbConfigPtr
- );
-}
-
-INDIRECT_REG_ENTRY PcieRecoveryPortInitTable[] = {
- {
- NB_BIFNBP_REG02,
- (UINT32)~(BIT15),
- BIT15
- },
- {
- NB_BIFNBP_REGA1,
- (UINT32)~(BIT24),
- BIT11
- },
- {
- NB_BIFNBP_REGB1,
- 0xffffffff,
- BIT28 + BIT23 + BIT19 + BIT20
- },
- {
- NB_BIFNBP_REGA4,
- (UINT32)~(BIT0),
- 0x0
- },
- {
- NB_BIFNBP_REGA2,
- (UINT32)~(BIT13),
- BIT13
- },
- {
- NB_BIFNBP_REGA3,
- (UINT32)~(BIT9),
- BIT9
- },
- {
- NB_BIFNBP_REGA0,
- 0xffff00ff,
- 0x6130
- },
- {
- NB_BIFNBP_REG70,
- (UINT32)~(BIT16 + BIT17 + BIT18),
- BIT16 + BIT18
- },
- // Set Link for Gen1
- {
- NB_BIFNBP_REGC0,
- (UINT32)~(BIT15),
- BIT15
- },
- {
- NB_BIFNBP_REGA2,
- (UINT32)~(BIT13),
- BIT13
- },
- {
- NB_BIFNBP_REGA4,
- (UINT32)~(BIT0 + BIT29),
- 0x0
- }
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Port basic register init
- *
- *
- *
- *
- * @param[in] Config Northbridges configuration structure pointer.
- *
- */
-
-VOID
-PcieRecoveryCommonPortInit (
- IN PORT PortId,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCI_ADDR Port;
-
- Port = PcieRecoveryGetPortPciAddress (PortId, NbConfigPtr);
- LibNbIndirectTableInit (
- Port.AddressValue | NB_BIF_INDEX,
- 0x0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&PcieRecoveryPortInitTable[0],NULL),
- (sizeof (PcieRecoveryPortInitTable) / sizeof (INDIRECT_REG_ENTRY)),
- NbConfigPtr
- );
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG80, AccessWidth8, 0xF0, 0x6, NbConfigPtr);
- LibNbPciRMW (Port.AddressValue | NB_PCIP_REG88, AccessWidth8, 0xF0, 0x0, NbConfigPtr);
-}
-
-
-UINT8 GppConfigTable[] = {
- 0x0, 0x1, 0x2, 0xC, 0xA, 0x4, 0xB
-};
-
-INDIRECT_REG_ENTRY PcieRecoveryCoreInitTable[] = {
- {
- NB_BIFNB_REG10,
- (UINT32)~(BIT10 + BIT11 + BIT12),
- BIT12
- },
- {
- NB_BIFNB_REG20,
- (UINT32)~(BIT8 + BIT9),
- BIT9
- },
- {
- NB_BIFNB_REG02,
- (UINT32)~(BIT0),
- BIT0
- },
- {
- NB_BIFNB_REG40,
- (UINT32)~(BIT14 + BIT15),
- BIT15
- },
- {
- NB_BIFNB_REGC1,
- (UINT32)~(BIT0),
- (BIT0 + BIT1 + BIT2)
- },
- {
- NB_BIFNB_REG1C,
- 0x0,
- (4 << 6) + (4 << 1) + 1
- }
-};
-/*----------------------------------------------------------------------------------------*/
-/**
- * Core basic register init
- *
- *
- *
- *
- * @param[in] Config Northbridges configuration structure pointer.
- *
- */
-
-VOID
-PcieRecoveryCommonCoreInit (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 CoreAddress;
- PCIE_CONFIG *pPcieConfig;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieRecoveryCommonCoreInit CoreID = %d Enter\n", CoreId));
- CoreAddress = PcieRecoveryGetCoreAddress (CoreId, NbConfigPtr);
- pPcieConfig = GET_PCIE_CONFIG_PTR (NbConfigPtr);
- //Setup GPP1 core configuration
- if (CoreAddress == GPP1_CORE && (pPcieConfig->CoreConfiguration[0] == GFX_CONFIG_AABB || NbConfigPtr->pPcieConfig->PortConfiguration[3].PortPresent == ON)) {
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08 , AccessWidth32, 0xffffffff, BIT15, NbConfigPtr);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG26, AccessWidth32, (UINT32)~BIT28, BIT28, NbConfigPtr);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08, AccessWidth32, 0xffffffff, BIT8, NbConfigPtr);
- STALL (GET_BLOCK_CONFIG_PTR (NbConfigPtr), 2000, 0);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG26, AccessWidth32, (UINT32)~BIT28, 0x0, NbConfigPtr);
- }
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08 , AccessWidth32, (UINT32)~BIT15, 0x0, NbConfigPtr);
- //Setup GPP2 core configuration
- if (CoreAddress == GPP2_CORE && (pPcieConfig->CoreConfiguration[1] == GFX_CONFIG_AABB || NbConfigPtr->pPcieConfig->PortConfiguration[12].PortPresent == ON)) {
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08 , AccessWidth32, 0xffffffff, BIT13, NbConfigPtr);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG26, AccessWidth32, (UINT32)~BIT28, BIT29, NbConfigPtr);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08, AccessWidth32, 0xffffffff, BIT9, NbConfigPtr);
- STALL (GET_BLOCK_CONFIG_PTR (NbConfigPtr), 2000, 0);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG26, AccessWidth32, (UINT32)~BIT29, 0x0, NbConfigPtr);
- }
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08 , AccessWidth32, (UINT32)~BIT13, 0x0, NbConfigPtr);
- //Setup GPP core configuration
- if (CoreAddress == GPP3a_CORE) {
- UINT32 Mux;
- UINT8 *pGppConfigTable;
- Mux = 0;
- pGppConfigTable = (UINT8*)FIX_PTR_ADDR (&GppConfigTable[0], NULL);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08, AccessWidth32, 0xffffffff, BIT31, NbConfigPtr);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG26, AccessWidth32, (UINT32)~BIT30, BIT30, NbConfigPtr);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG67, AccessWidth32, 0xfffffff0, (UINT32)pGppConfigTable[pPcieConfig->CoreConfiguration[CoreId]], NbConfigPtr);
- switch (pPcieConfig->CoreConfiguration[CoreId]) {
- case GPP_CONFIG_GPP420000:
- Mux = (pPcieConfig->PortConfiguration[6].PortReversed == ON)?0xF05BA00:0x055B000;
- break;
- case GPP_CONFIG_GPP411000:
- Mux = 0x215B400;
- break;
- case GPP_CONFIG_GPP222000:
- case GPP_CONFIG_GPP211110:
- Mux = (pPcieConfig->PortConfiguration[4].PortReversed == ON)?0xFFF0AAA:0xFF0BAA0;
- break;
- case GPP_CONFIG_GPP221100:
- Mux = 0x215B400;
- break;
- case GPP_CONFIG_GPP111111:
- Mux = 0x2AA3554;
- break;
- }
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG26, AccessWidth32, 0xf0000000, Mux, NbConfigPtr);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG26, AccessWidth32, (UINT32)~BIT30, 0x0, NbConfigPtr);
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG08, AccessWidth32, (UINT32)~BIT31, 0x0, NbConfigPtr);
- }
- if (CoreAddress == GPP3b_CORE) {
- LibNbPciIndexRMW (NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG2A, AccessWidth32, (UINT32)~BIT15, 0, NbConfigPtr);
- }
- LibNbIndirectTableInit (
- NbConfigPtr->NbPciAddress.AddressValue | NB_BIF_INDEX,
- CoreAddress,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&PcieRecoveryCoreInitTable[0],NULL),
- (sizeof (PcieRecoveryCoreInitTable) / sizeof (INDIRECT_REG_ENTRY)),
- NbConfigPtr
- );
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieRecoveryCommonCoreInit Exitr\n"));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Core register selector.
- * Function return selector to access BIFNB register space for selected core
- *
- *
- * @param[in] CoreId PCI Express Core ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-UINT32
-PcieRecoveryGetCoreAddress (
- IN CORE CoreId,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 CoreAddress;
- CoreAddress = GPP1_CORE;
- switch (CoreId) {
- case 0x0:
- CoreAddress = GPP1_CORE;
- break;
- case 0x1:
- CoreAddress = GPP2_CORE;
- break;
- case 0x2:
- CoreAddress = GPP3a_CORE;
- break;
- case 0x3:
- CoreAddress = GPP3b_CORE;
- break;
- case 0x4:
- CoreAddress = SB_CORE;
- break;
- default:
- CIMX_ASSERT (FALSE);
- }
- return CoreAddress;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get PCI address of Port.
- * Function return pcie Address based on port mapping and core configuration.
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-PCI_ADDR
-PcieRecoveryGetPortPciAddress (
- IN PORT PortId,
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCI_ADDR Port;
- Port = NbConfigPtr->NbPciAddress;
- Port.Address.Device = PortId;
- return Port;
-}
-
-UINT32 GppNativeIdTable[] = {
- 0xff50fff4,
- 0xf650fff4,
- 0xff60f5f4,
- 0xf760f5f4,
- 0xf87065f4,
- 0xf9807654
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Native Port Id.
- * Native Port Id can be different from Port ID only on GPPSB core ports.
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-PORT
-PcieRecoveryNativePortId (
- IN PORT PortId,
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- UINT32 GppNativeIdMap;
- if (PortId > 3 && PortId < 11) {
- GppNativeIdMap = ((UINT32*)FIX_PTR_ADDR (&GppNativeIdTable[0], NULL))[NbConfigPtr->pPcieConfig->CoreConfiguration[0x2] - 1];
- return (GppNativeIdMap >> ((PortId - 4)*4)) & 0xF;
- } else {
- return PortId;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Initialize default PCIE_CONFIG setting
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-PcieRecoveryInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- PCIE_CONFIG *pPcieConfig;
- CORE CoreId;
- pPcieConfig = GET_PCIE_CONFIG_PTR (NbConfigPtr);
- if (pPcieConfig == NULL) {
- return AGESA_FATAL;
- }
- LibAmdMemFill (pPcieConfig, 0, sizeof (PCIE_CONFIG), (AMD_CONFIG_PARAMS *)NbConfigPtr);
- pPcieConfig->ReceiverDetectionPooling = 120;
- pPcieConfig->ResetToTrainingDelay = 4;
- for (CoreId = 0; CoreId <= MAX_CORE_ID; CoreId++) {
- pPcieConfig->CoreSetting[CoreId].CoreDisabled = ON;
- }
- return AGESA_SUCCESS;
-}
-
-#endif
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieSb.c b/src/vendorcode/amd/cimx/rd890/nbPcieSb.c
deleted file mode 100644
index 3ef6094432..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieSb.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/**
- * @file
- *
- * PCIe support for misc Southbridges.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdSbLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Set up NB-SB virtual channel for audio traffic
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Set up NB-SB virtual channel for audio traffic
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-AGESA_STATUS
-PcieSbSetupVc (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- UINT16 AlinkPort;
-
- Status = PcieSbAgetAlinkIoAddress (&AlinkPort, pConfig);
- if (Status != AGESA_SUCCESS) {
- return Status;
- }
-
- LibNbIoRMW (AlinkPort, AccessS3SaveWidth32, 0x0, 0x80000124, pConfig);
- LibNbIoRMW (AlinkPort + 4, AccessS3SaveWidth32, 0xffffff01, 0, pConfig);
- LibNbIoRMW (AlinkPort, AccessS3SaveWidth32 , 0x0, 0x80000130, pConfig);
- LibNbIoRMW (AlinkPort + 4, AccessS3SaveWidth32, (UINT32)~(BIT24 + BIT25 + BIT26), 0xFE + BIT24, pConfig);
- LibNbIoRMW (AlinkPort + 4, AccessS3SaveWidth32, 0xffffffff, BIT31, pConfig);
- return AGESA_SUCCESS;
-}
-/*----------------------------------------------------------------------------------------*/
-/*
- * Set up NB-SB virtual channel for audio traffic
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-VOID
-PcieSbEnableVc (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- UINT16 AlinkPort;
- Status = PcieSbAgetAlinkIoAddress (&AlinkPort, pConfig);
- if (Status != AGESA_SUCCESS) {
- return;
- }
- LibNbIoRMW (AlinkPort, AccessS3SaveWidth32, 0x0, 0xC0000050, pConfig);
- LibNbIoRMW (AlinkPort + 4, AccessS3SaveWidth32, 0xffffffff, BIT3, pConfig);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Init SB ASPM.
- * Enable ASPM states on SB
- *
- *
- * @param[in] Lx Lx ASPM bitmap. Lx[0] - L0s enable. Lx[1] - L1 enable.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieSbInitAspm (
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- UINT16 AlinkPort;
-
- Status = PcieSbAgetAlinkIoAddress (&AlinkPort, pConfig);
- if (Status != AGESA_SUCCESS) {
- return Status;
- }
- LibNbIoRMW (AlinkPort, AccessS3SaveWidth32, 0x0, 0x40000038, pConfig);
- LibNbIoRMW (AlinkPort + 4, AccessS3SaveWidth32, 0x0, 0xA0, pConfig);
- LibNbIoRMW (AlinkPort , AccessS3SaveWidth32, 0x0, 0x4000003c, pConfig);
- LibNbIoRMW (AlinkPort + 4, AccessS3SaveWidth32, 0xffff00ff, 0x6900, pConfig );
- LibNbIoRMW (AlinkPort , AccessS3SaveWidth32, 0x0, 0x80000068, pConfig);
- LibNbIoRMW (AlinkPort + 4, AccessS3SaveWidth32, 0xffffffff, Lx, pConfig);
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Alink config address
- *
- *
- */
-/*----------------------------------------------------------------------------------------*/
-AGESA_STATUS
-PcieSbAgetAlinkIoAddress (
- OUT UINT16 *AlinkPort,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- SB_INFO SbInfo;
- SbInfo = LibAmdSbGetRevisionInfo ((pConfig == NULL)?NULL:GET_BLOCK_CONFIG_PTR (pConfig));
- if (SbInfo.Type == SB_UNKNOWN) {
- return AGESA_UNSUPPORTED;
- }
- if (SbInfo.Type == SB_SB700) {
- LibNbPciRead (MAKE_SBDFO (0, 0, 0x14, 0, 0xf0), AccessWidth16, AlinkPort, pConfig);
- } else {
- LibAmdSbPmioRead (0xE0, AccessWidth16, AlinkPort, NULL);
- }
- if (*AlinkPort == 0) {
- return AGESA_UNSUPPORTED;
- }
- return AGESA_SUCCESS;
-} \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieSb.h b/src/vendorcode/amd/cimx/rd890/nbPcieSb.h
deleted file mode 100644
index 2b0914c4a1..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieSb.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * @file
- *
- * PCIe support for misc Southbridges.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBPCIESB_H_
-#define _NBPCIESB_H_
-
-
-AGESA_STATUS
-PcieSbInitAspm (
- IN UINT8 Lx,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieSbSetupVc (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieSbEnableVc (
- IN AMD_NB_CONFIG *pConfig
- );
-
-
-AGESA_STATUS
-PcieSbAgetAlinkIoAddress (
- OUT UINT16 *AlinkPort,
- IN AMD_NB_CONFIG *pConfig
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieWorkarounds.c b/src/vendorcode/amd/cimx/rd890/nbPcieWorkarounds.c
deleted file mode 100644
index 771c489ea0..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieWorkarounds.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/**
- * @file
- *
- * Routines to support misc PCIe workarounds.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdSbLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-AGESA_STATUS
-PcieConfigureBridgeResources (
- IN PCI_ADDR Port,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieFreeBridgeResources (
- IN PCI_ADDR Port,
- IN AMD_NB_CONFIG *pConfig
- );
-
- AGESA_STATUS
-PcieDeskewWorkaround (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- );
-
-AGESA_STATUS
-PcieNvWorkaround (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- );
-
-BOOLEAN
-PcieIsDeskewCardDetected (
- IN UINT16 DeviceId
- );
-
- /*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Misc GFX Card Workaround
- * RV3780/RV380 desk workaround. NV43 lost SSID workaround.
- *
- *
- *
- * @param[in] PortId PCI Express Port ID
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-AGESA_STATUS
-PcieGfxWorkarounds (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- AGESA_STATUS Status;
- UINT32 Count;
- UINT16 DeviceId;
- UINT16 VendorId;
- UINT8 DevClassCode;
- PCI_ADDR Port;
- PCI_ADDR Ep;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieGfxWorkarounds PortId %d Enter\n", PortId));
- Status = AGESA_SUCCESS;
- Port = PcieLibGetPortPciAddress (PortId, pConfig);
- Ep.AddressValue = MAKE_SBDFO (0, Port.Address.Bus + 5, 0, 0, 0);
- if (PcieConfigureBridgeResources (Port, pConfig) != AGESA_SUCCESS) {
- return AGESA_SUCCESS;
- }
- for (Count = 0; Count <= 5000; Count++) {
- LibNbPciRead (Ep.AddressValue | 0x02, AccessWidth16, &DeviceId, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), " Endpoint Device ID %x\n", DeviceId));
- if (DeviceId != 0xffff) {
- break;
- };
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 1000, 0);
- }
- if (Count >= 5000) {
- PcieLibRequestPciReset (pConfig);
- return AGESA_WARNING;
- }
- LibNbPciRead (Ep.AddressValue | 0x02, AccessWidth16, &DeviceId, pConfig);
- LibNbPciRead (Ep.AddressValue, AccessWidth16, &VendorId, pConfig);
- if (VendorId == 0xffff) {
- PcieLibRequestPciReset (pConfig);
- return AGESA_WARNING;
- }
- LibNbPciRead (Ep.AddressValue | 0x0B , AccessWidth8, &DevClassCode, pConfig);
- if (DevClassCode == 3) {
- if (VendorId == 0x1002 && PcieIsDeskewCardDetected (DeviceId)) {
- Status = PcieDeskewWorkaround (Ep, pConfig);
- } else {
- if (VendorId == 0x10DE) {
- Status = PcieNvWorkaround (Ep, pConfig);
- }
- }
- }
- PcieFreeBridgeResources (Port, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieGfxWorkarounds Exit [Status = 0x%x]\n", Status));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * RV370/RV380 Deskew workaround
- *
- *
- *
- * @param[in] Device Pcie Address of ATI RV370/RV380 card.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-AGESA_STATUS
-PcieDeskewWorkaround (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_CONFIG *pPcieConfig;
- UINTN MmioBase;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieDeskewWorkaround Enter\n"));
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- MmioBase = pPcieConfig->TempMmioBaseAddress << 20;
- if (MmioBase == 0) {
- return AGESA_SUCCESS;
- }
- LibNbPciWrite (Device.AddressValue | 0x18, AccessWidth32, &MmioBase, pConfig);
- LibNbPciRMW (Device.AddressValue | 0x04, AccessWidth8 , (UINT32)~BIT1, BIT1, pConfig);
- *(UINT16*)(MmioBase + 0x120) = 0xb700;
- if (*(UINT16*) (MmioBase + 0x120) == 0xb700) {
- *(UINT32*)(MmioBase + 0x124) = 0x13;
- if (*(UINT32*) (MmioBase + 0x124) == 0x13) {
- if (*(UINT32*) (MmioBase + 0x12C) & BIT8) {
-// TRACE((DMSG_PCIE_MISC,"Deskew ERROR Generate Reset\n"));
- PcieLibRequestPciReset (pConfig);
- return AGESA_WARNING;
- }
- }
- }
- LibNbPciRMW (Device.AddressValue | 0x04, AccessWidth8, (UINT32)~BIT1, 0x0, pConfig);
- LibNbPciRMW (Device.AddressValue | 0x18, AccessWidth32, 0x0, 0x0, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieDeskewWorkaround Exit\n"));
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NV43 card workaround (lost SSID)
- *
- *
- *
- * @param[in] Device Pcie Address of NV43 card.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-AGESA_STATUS
-PcieNvWorkaround (
- IN PCI_ADDR Device,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 DeviceSSID;
- PCIE_CONFIG *pPcieConfig;
- UINTN MmioBase;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieNvWorkaround Enter\n"));
- LibNbPciIndexRMW (pConfig->NbPciAddress.AddressValue | NB_MISC_INDEX, NB_MISC_REG0B, AccessS3SaveWidth32, 0xffffffff, BIT2 + BIT1, pConfig);
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- MmioBase = pPcieConfig->TempMmioBaseAddress << 20;
- if (MmioBase == 0) {
- return AGESA_SUCCESS;
- }
- LibNbPciRMW (Device.AddressValue | 0x30, AccessWidth32, 0x0, ((UINT32)MmioBase) | 1, pConfig);
- LibNbPciRMW (Device.AddressValue | 0x4, AccessWidth8, 0x0, 0x2, pConfig);
- LibNbPciRead (Device.AddressValue | 0x2c, AccessWidth32, &DeviceSSID, pConfig);
- if (DeviceSSID != *(UINT32*) (MmioBase + 0x54)) {
- LibNbPciRMW (Device.AddressValue | 0x40, AccessWidth32, 0x0, *(UINT32*) (MmioBase + 0x54), pConfig);
- }
- LibNbPciRMW (Device.AddressValue | 0x30, AccessWidth32, 0x0, 0x0, pConfig);
- LibNbPciRMW (Device.AddressValue | 0x4, AccessWidth8, 0x0, 0x0, pConfig);
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (pConfig), CIMX_NBPCIE_TRACE), "[NBPCIE]PcieNvWorkaround Exit\n"));
- return AGESA_SUCCESS;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Allocate temporary resources for Pcie P2P bridge
- *
- *
- *
- * @param[in] Port Pci Address of Port to initialize.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-AGESA_STATUS
-PcieConfigureBridgeResources (
- IN PCI_ADDR Port,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PCIE_CONFIG *pPcieConfig;
- UINT32 Value;
- UINT32 MmioBase;
-
- pPcieConfig = GET_PCIE_CONFIG_PTR (pConfig);
- MmioBase = pPcieConfig->TempMmioBaseAddress << 20;
- if (MmioBase == 0) {
- return AGESA_WARNING;
- }
- Value = Port.Address.Bus + ((Port.Address.Bus + 5) << 8) + ((Port.Address.Bus + 5) << 16);
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG18, AccessWidth32, &Value, pConfig);
- Value = MmioBase + (MmioBase >> 16);
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG20, AccessWidth32, &Value, pConfig);
- Value = 0x000fff0;
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG24, AccessWidth32, &Value, pConfig);
- Value = 0x2;
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG04, AccessWidth8, &Value, pConfig);
- return AGESA_SUCCESS;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Free temporary resources for Pcie P2P bridge
- *
- *
- *
- * @param[in] Port Pci Address of Port to clear resource allocation.
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-VOID
-PcieFreeBridgeResources (
- IN PCI_ADDR Port,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 Value;
-
- Value = 0;
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG04, AccessWidth8, &Value, pConfig);
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG18, AccessWidth32, &Value, pConfig);
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG20, AccessWidth32, &Value, pConfig);
- LibNbPciWrite (Port.AddressValue | NB_PCIP_REG24, AccessWidth32, &Value, pConfig);
-
-}
-
-/*----------------------------------------------------------------------------------------*/
-/*
- * Check if card required test for deskew workaround
- *
- *
- *
- *
- *
- */
-
-BOOLEAN
-PcieIsDeskewCardDetected (
- IN UINT16 DeviceId
- )
-{
- if ((DeviceId >= 0x3150 && DeviceId <= 0x3152) || (DeviceId == 0x3154) ||
- (DeviceId == 0x3E50) || (DeviceId == 0x3E54) ||
- ((DeviceId & 0xfff8) == 0x5460) || ((DeviceId & 0xfff8) == 0x5B60)) {
- return TRUE;
- }
- return FALSE;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Check if we can accsee to EP. Wait for up to 1 sec if EP requred extra time to initialize.
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-PcieEpReadyWorkaround (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- PORT PortId;
- UINT8 TempBus;
- PCI_ADDR Device;
- TempBus = (UINT8) (pConfig->NbPciAddress.Address.Bus + 5);
- Device.AddressValue = MAKE_SBDFO (0, TempBus, 0, 0, 0);
- for (PortId = MIN_PORT_ID; PortId <= MAX_PORT_ID; PortId++) {
- PCI_ADDR Port;
- Port.AddressValue = MAKE_SBDFO (0, pConfig->NbPciAddress.Address.Bus , PortId, 0, 0);
- if (LibNbIsDevicePresent (Port, pConfig)) {
- UINT32 LinkState;
- LibNbPciIndexRead (Port.AddressValue | NB_BIF_INDEX, NB_BIFNBP_REGA5, AccessWidth32, &LinkState, pConfig);
- LinkState &= 0x3F;
- if (LinkState == 0x10) {
- BOOLEAN IsDevicePresent;
- UINT32 PortBusConfiguration;
- UINT32 Count;
- Count = 1000;
- LibNbPciRead (Port.AddressValue | 0x18, AccessWidth32, &PortBusConfiguration, pConfig);
- LibNbPciRMW (Port.AddressValue | 0x18, AccessWidth32, 0x0, (TempBus << 8) | (TempBus << 16), pConfig);
- do {
- IsDevicePresent = LibNbIsDevicePresent (Device, pConfig);
- STALL (GET_BLOCK_CONFIG_PTR (pConfig), 1000, CIMX_S3_SAVE);
- } while (IsDevicePresent == FALSE && Count-- != 0 );
- LibNbPciWrite (Port.AddressValue | 0x18, AccessWidth32, &PortBusConfiguration, pConfig);
- }
- }
- }
-}
-
-UINT16 AspmBrDeviceTable[] = {
- 0x1002, 0x9441, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10B5, 0xFFFF, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x0402, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x0193, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x0422, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x0292, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x00F9, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x0141, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x0092, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01D0, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01D1, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01D2, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01D3, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01D5, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01D7, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01D8, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01DC, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01DE, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x01DF, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x016A, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x10DE, 0x0392, (UINT16)~(ASPM_L1 | ASPM_L0s),
- 0x168C, 0xFFFF, (UINT16)~(ASPM_L0s)
-};
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Misc PCIe ASPM workarounds
- *
- * @param[in] AspmLinkInfoPtr Pointer to link ASPM info.
- * @param[in] pConfig Northbridge configuration structure pointer.
- *
- */
-/*----------------------------------------------------------------------------------------*/
-VOID
-PcieAspmWorkarounds (
- IN OUT ASPM_LINK_INFO *AspmLinkInfoPtr,
- IN AMD_NB_CONFIG *pConfig
- )
-{
- UINT32 UpstreamDeviceId;
- UINT32 DownstreamDeviceId;
- UINTN i;
- LibNbPciRead (AspmLinkInfoPtr->UpstreamPort.AddressValue, AccessWidth32, &UpstreamDeviceId, pConfig);
- LibNbPciRead (AspmLinkInfoPtr->UpstreamPort.AddressValue, AccessWidth32, &DownstreamDeviceId, pConfig);
- for (i = 0; i < (sizeof (AspmBrDeviceTable) / sizeof (UINT16)); i = i + 3) {
- UINT32 DeviceId;
- UINT32 VendorId;
- VendorId = AspmBrDeviceTable[i];
- DeviceId = AspmBrDeviceTable[i + 1];
- if (VendorId == (UINT16)UpstreamDeviceId || VendorId == (UINT16)DownstreamDeviceId ) {
- if (DeviceId == 0xFFFF || DeviceId == (UpstreamDeviceId >> 16) || DeviceId == (DownstreamDeviceId >> 16)) {
- AspmLinkInfoPtr->UpstreamLx &= AspmBrDeviceTable[i + 2];
- AspmLinkInfoPtr->DownstreamLx &= AspmBrDeviceTable[i + 2];
- }
- }
- }
- if ((UINT16)UpstreamDeviceId == 0x168c) {
- // Atheros (Ignore dev capability enable L1 if requested)
- AspmLinkInfoPtr->UpstreamLx = AspmLinkInfoPtr->RequestedLx & ASPM_L1;
- AspmLinkInfoPtr->DownstreamLx = AspmLinkInfoPtr->UpstreamLx;
- LibNbPciRMW (AspmLinkInfoPtr->UpstreamPort.AddressValue | 0x70C, AccessS3SaveWidth32, 0x0, 0x0F003F01, pConfig);
- }
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbPcieWorkarounds.h b/src/vendorcode/amd/cimx/rd890/nbPcieWorkarounds.h
deleted file mode 100644
index 4d72386ea2..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPcieWorkarounds.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * @file
- *
- * PCIe support for misc Southbridges.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBPCIEWORKAROUNDS_H_
-#define _NBPCIEWORKAROUNDS_H_
-
-
-AGESA_STATUS
-PcieGfxWorkarounds (
- IN PORT PortId,
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieEpReadyWorkaround (
- IN AMD_NB_CONFIG *pConfig
- );
-
-VOID
-PcieAspmWorkarounds (
- IN OUT ASPM_LINK_INFO *AspmLinkInfoPtr,
- IN AMD_NB_CONFIG *pConfig
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbPowerOnReset.c b/src/vendorcode/amd/cimx/rd890/nbPowerOnReset.c
deleted file mode 100644
index cde7d06b18..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbPowerOnReset.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/**
- * @file
- *
- * Power on Reset register initialization.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-#include "amdDebugOutLib.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-AGESA_STATUS
-NbPorInitValidateInput (
- IN AMD_NB_CONFIG *pConfig
- );
-
-/*----------------------------------------------------------------------------------------
- * E X P O R T E D F U N C T I O N S
- *----------------------------------------------------------------------------------------
- */
-/// PCI registers init table
-CONST REGISTER_ENTRY NbPorPciTable[] = {
- {NB_PCI_REG04, 0xFD, 0x02},
-//Reg84h[4]=1 (EV6MODE) to allow decode of 640k-1MB
- {NB_PCI_REG84, 0xEF, 0x10},
-//Reg4Ch[1]=1 (APIC_ENABLE) force cpu request with address 0xFECx_xxxx to south-bridge
-//Reg4Ch[6]=1 (BMMsgEn) enable BM_Set message generation
- {NB_PCI_REG4C, 0x00, 0x42},
-//Reg4Ch[16]=1 (WakeC2En) enable Wake_from_C2 message generation.
-//Reg4Ch[18]=1 (P4IntEnable) Enable north-bridge to accept MSI with address 0xFEEx_xxxx from south-bridge
- {NB_PCI_REG4E, 0xFF, 0x05},
-//Set temporary NB TOM to 0xE0000000
- {NB_PCI_REG90 + 3, 0x00, 0xE0}
-};
-
-/// MISCIND registers init table
-CONST INDIRECT_REG_ENTRY NbPorMiscTable[] = {
-// NB_MISC_IND_WR_EN + IOC_PCIE_CNTL
-// Block non-snoop DMA request if PMArbDis is set.
-// Set BMSetDis
- {
- NB_MISC_REG0B,
- 0xFFFF0000,
- 0x00000180
- },
-// NBCFG (NBMISCIND 0x0): NB_CNTL -
-// HIDE_NB_AGP_CAP ([0], default=1)HIDE
-// HIDE_P2P_AGP_CAP ([1], default=1)HIDE
-// HIDE_NB_GART_BAR ([2], default=1)HIDE
-// HIDE_MMCFG_BAR ([3], default=1)HIDE
-// AGPMODE30 ([4], default=0)DISABLE
-// AGP30ENCHANCED ([5], default=0)DISABLE
-// HIDE_AGP_CAP ([8], default=1)ENABLE
- {
- NB_MISC_REG00,
- 0xFFFF0000,
- 0x0000010e
- },
-//NBMISIND:0x01 Bit[8]=1 IOC will forward the byte-enable (BE), which is 16'b0 for zero-byte reads, of the PCIE DMA request upstream to HTIU.
-//NBMISIND:0x01 Bit[9]=1 zero-byte reads.
- {
- NB_MISC_REG01,
- 0xFFFFFFFF,
- 0x00000310
- },
-//NBMISIND:0x40 Bit[8]=1 and Bit[10]=1 following bits are required to set in order to allow PWM features to work.
- {
- NB_MISC_REG40,
- 0xffffffff,
- 0x00000500
- },
-//Enable slot power message
- {
- NB_MISC_REG51,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG53,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG55,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG57,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG59,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG5B,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG5D,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG5F,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG61,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG63,
- 0x00000000,
- 0x00100106
- },
- {
- NB_MISC_REG1F,
- 0x00000000,
- 0x00100106
- },
-//NBMISCIND:0x0C[13]= 1 Enables GSM Mode.
- {
- NB_MISC_REG0C,
- 0xffffffff,
- BIT13 + BIT20
- },
-//NBMISCIND:0x12[16]= 1 ReqID for GPP1 and GPP2
-//NBMISCIND:0x12[17]= 1 ReqID for GPP3a, GPP3b, SB
-//NBMISCIND:0x12[18]= 0 ReqID override for SB
-//NBMISCIND:0x12[19]= 1 Enable INT accumulators
-//NBMISCIND:0x12[20, 21, 23]= 1 4103, 4125, 4155 4186 (A21).
-//NBMISCIND:0x12[22]=0 Prevent spurious DR of UMA request (RPR 5.9.3)
- {
- NB_MISC_REG12,
- (UINT32)~(BIT18 + BIT22),
- 0xBB0000
- },
-//NBMISCIND:0x75[15.13,16..18,21..19,24..22,25..25] = 0x4 Enable AER
-//NBMISCIND:0x75[29]= 1 Device ID for hotplug and PME message.
- {
- NB_MISC_REG75,
- (UINT32)~BIT28,
- (4 << 13) | (4 << 16) | (4 << 19) | (4 << 22) | (4 << 25) | BIT29
- },
-//PCIe CDR setting
- {
- NB_MISC_REG38,
- 0xffffffff,
- BIT6 + BIT7 + BIT14 + BIT15 + BIT22 + BIT23
- },
- {
- NB_MISC_REG67,
- 0xffffffff,
- BIT21 + BIT22
- },
- {
- NB_MISC_REG2C,
- (UINT32)~(BIT0 + BIT1 + BIT19),
- BIT0 + BIT1
- },
- {
- NB_MISC_REG6C,
- (UINT32)~(BIT10),
- 0x0
- },
- {
- NB_MISC_REG34,
- (UINT32)~(BIT7 + BIT15 + BIT23),
- 0x0
- },
- {
- NB_MISC_REG37,
- (UINT32)~(0xffful << 20),
- (0xdddul << 20)
- },
- {
- NB_MISC_REG68,
- (UINT32)~(0xful << 16),
- (0xd << 16)
- },
- {
- NB_MISC_REG2B,
- (UINT32)~(0xful << 24 ),
- (0xd << 24)
- },
- // Enable ACS capability
- {
- NB_MISC_REG6A,
- 0xffffffff,
- BIT2
- }
-};
-
-/// HTIUIND registers init table
-CONST INDIRECT_REG_ENTRY NbPorHtiuTable[] = {
-//HTIU x 05 [8] = 0x0 Enables PC checking for FCB release.
-//HTIU x 05 [13,13,3,14,10,12,17,18,15,4,6,19] = 0x1 Misc (A21)
- {NB_HTIU_REG05, 0xFFFFFEFF, BIT8 + BIT16 + BIT13 + BIT3 + BIT14 + BIT10 + BIT12 + BIT17 + BIT18 + BIT15 +
- BIT4 + BIT6 + BIT19 },
- //HTIU x 06 [0] = 0x0 Enables writes to pass in-progress reads
-//HTIU x 06 [1] = 0x1 Enables streaming of CPU writes
-//HTIU x 06 [9] = 0x1 Enables extended write buffer for CPU writes
-//HTIU x 06 [13] = 0x1 Enables additional response buffers
-//HTIU x 06 [17] = 0x1 Enables special reads to pass writes
-//HTIU x 06 [16:15] = 0x3 Enables decoding of C1e/C3 and FID cycles
-//HTIU x 06 [25] = 0x1 Enables HTIU-display handshake bypass.
-//HTIU x 06 [30] = 0x1 Enables tagging fix
- {NB_HTIU_REG06, 0xFFFFFFFE, 0x04203A202},
-//HTIU x 07 [0] = 0x1 Enables byte-write optimization for IOC requests
-//HTIU x 07 [1] = 0x0 Disables delaying STPCLK de-assert during FID sequence. Needed when enhanced UMA arbitration is used.
-//HTIU x 07 [2] = 0x0 Disables upstream system-management delay
- {NB_HTIU_REG07, 0xFFFFFFF9, 0x0001 },
-//HTIU x 1C [31:17]=0xfff i.e. 0001 1111 1111 111 or 1FFE Enables all traffic to be detected as GSM traffic.
- {NB_HTIU_REG1C, 0xFFFFFFFF, 0x1ffe0000 },
-//HTIU x 15 [27]=0x1 Powers down the chipset DLLs in the LS2 state.
- {NB_HTIU_REG15, 0xFFFFFFFF, BIT27 },
-//Enable transmit PHY to reinitialize in HT1 mode when tristate is enabled
-//HTIU x 16 [10]=0x1 enable proper DLL reset sequence.
- {NB_HTIU_REG16, 0xFFFFFFFF, BIT11 + BIT10},
-//HTIU x 2A [1:0]=0x1 Optimize chipset HT transmitter drive strength
- {NB_HTIU_REG2A, 0xfffffffc, 0x00000001 }
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Amd Power on Reset Initialization for all NB.
- *
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-
-AGESA_STATUS
-AmdPowerOnResetInit (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
-
- Status = LibNbApiCall (NbPowerOnResetInit, ConfigPtr);
- return Status;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * NB Power on Reset Initialization.
- * Basic registers initialization.
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-
-
-AGESA_STATUS
-NbPowerOnResetInit (
- IN AMD_NB_CONFIG *NbConfigPtr
- )
-{
- AGESA_STATUS Status;
- REGISTER_ENTRY *pTable;
- UINTN i;
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPOR_TRACE), "[NBPOR]NbPowerOnResetInit Enter\n"));
- Status = NbPorInitValidateInput (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- REPORT_EVENT (AGESA_FATAL, GENERAL_ERROR_BAD_CONFIGURATION, 0, 0, 0, 0, NbConfigPtr);
- CIMX_ASSERT (FALSE);
- return Status;
- }
- //Init Pci Registers
- pTable = (REGISTER_ENTRY*)FIX_PTR_ADDR (&NbPorPciTable[0], NULL);
- for (i = 0; i < (sizeof (NbPorPciTable) / sizeof (REGISTER_ENTRY)); i++) {
- LibNbPciRMW (NbConfigPtr->NbPciAddress.AddressValue | pTable->Register, AccessWidth8, pTable->Mask, pTable->Data, NbConfigPtr);
- ++pTable;
- }
- //Init Misc registers
- LibNbIndirectTableInit (
- NbConfigPtr->NbPciAddress.AddressValue | NB_MISC_INDEX,
- 0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&NbPorMiscTable[0], NULL),
- (sizeof (NbPorMiscTable) / sizeof (INDIRECT_REG_ENTRY)),
- NbConfigPtr
- );
-
- //Init Htiu registers
- LibNbIndirectTableInit (
- NbConfigPtr->NbPciAddress.AddressValue | NB_HTIU_INDEX,
- 0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&NbPorHtiuTable[0],NULL),
- (sizeof (NbPorHtiuTable) / sizeof (INDIRECT_REG_ENTRY)),
- NbConfigPtr
- );
-
- CIMX_TRACE ((TRACE_DATA (GET_BLOCK_CONFIG_PTR (NbConfigPtr), CIMX_NBPOR_TRACE), "[NBPOR]NbPowerOnResetInit Exit\n"));
- return Status;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Validate input parameters
- *
- *
- *
- *
- * @param[in] pConfig Northbridge configuration structure pointer.
- */
-
-
-AGESA_STATUS
-NbPorInitValidateInput (
- IN AMD_NB_CONFIG *pConfig
- )
-{
- return (LibNbGetRevisionInfo (pConfig).Type == NB_UNKNOWN)?AGESA_FATAL:AGESA_SUCCESS;
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbRecovery.c b/src/vendorcode/amd/cimx/rd890/nbRecovery.c
deleted file mode 100644
index 71c6959a25..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbRecovery.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
- * @file
- *
- * Recovery support
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-/// PCI registers init table
-CONST REGISTER_ENTRY NbRecoveryPorPciTable[] = {
- {NB_PCI_REG04,0xFD,0x02},
-//Reg84h[4]=1 (EV6MODE) to allow decode of 640k-1MB
- {NB_PCI_REG84,0xEF,0x10},
-//Reg4Ch[1]=1 (APIC_ENABLE) force cpu request with address 0xFECx_xxxx to south-bridge
-//Reg4Ch[6]=1 (BMMsgEn) enable BM_Set message generation
- {NB_PCI_REG4C,0x00,0x42},
-//Reg4Ch[16]=1 (WakeC2En) enable Wake_from_C2 message generation.
-//Reg4Ch[18]=1 (P4IntEnable) Enable north-bridge to accept MSI with address 0xFEEx_xxxx from south-bridge
- {NB_PCI_REG4E,0xFF,0x05},
-//Set temporary NB TOM to 0xE0000000
- {NB_PCI_REG90 + 3, 0x00, 0xE0}
-};
-
-/// MISCIND registers init table
-CONST INDIRECT_REG_ENTRY NbRecoveryPorMiscTable[] = {
-// NB_MISC_IND_WR_EN + IOC_PCIE_CNTL
-// Block non-snoop DMA request if PMArbDis is set.
-// Set BMSetDis
- {NB_MISC_REG0B, 0xFFFF0000, 0x00000180},
-// NBCFG (NBMISCIND 0x0): NB_CNTL -
-// HIDE_NB_AGP_CAP ([0], default=1)HIDE
-// HIDE_P2P_AGP_CAP ([1], default=1)HIDE
-// HIDE_NB_GART_BAR ([2], default=1)HIDE
-// HIDE_MMCFG_BAR ([3], default=1)HIDE
-// AGPMODE30 ([4], default=0)DISABLE
-// AGP30ENCHANCED ([5], default=0)DISABLE
-// HIDE_AGP_CAP ([8], default=1)ENABLE
- {NB_MISC_REG00, 0xFFFF0000, 0x0000010e},
- {NB_MISC_REG01, 0xFFFFFFFF, 0x00000010},
- {NB_MISC_REG0C, 0xFFFFFFFF, 0x001f00FC},
-//NBMISIND:0x40 Bit[8]=1 and Bit[10]=1 following bits are required to set in order to allow PWM features to work.
- {NB_MISC_REG40, 0xffffffff, 0x00000500},
-};
-
-/// HTIUIND registers init table
-INDIRECT_REG_ENTRY NbRecoveryPorHtiuTable[] = {
-//HTIU x 06 [0] = 0x0 Enables writes to pass in-progress reads
-//HTIU x 06 [1] = 0x1 Enables streaming of CPU writes
-//HTIU x 06 [9] = 0x1 Enables extended write buffer for CPU writes
-//HTIU x 06 [13] = 0x1 Enables additional response buffers
-//HTIU x 06 [17] = 0x1 Enables special reads to pass writes
-//HTIU x 06 [16:15] = 0x3 Enables decoding of C1e/C3 and FID cycles
-//HTIU x 06 [25] = 0x1 Enables HTIU-display handshake bypass.
-//HTIU x 06 [30] = 0x1 Enables tagging fix
- {NB_HTIU_REG06, 0xFFFFFFFE, 0x04203A202},
-//HTIU x 07 [0] = 0x1 Enables byte-write optimization for IOC requests
-//HTIU x 07 [1] = 0x0 Disables delaying STPCLK de-assert during FID sequence. Needed when enhanced UMA arbitration is used.
-//HTIU x 07 [2] = 0x0 Disables upstream system-management delay
- {NB_HTIU_REG07, 0xFFFFFFF9, 0x0001 },
-//HTIU x 1C [31:17]=0xfff i.e. 0001 1111 1111 111 or 1FFE Enables all traffic to be detected as GSM traffic.
- {NB_HTIU_REG1C, 0xFFFFFFFF, 0x1ffe0000 }, //vsj-2007-09-04
-//Enable transmit PHY to reinitialize in HT1 mode when tristate is enabled
- {NB_HTIU_REG16, 0xFFFFFFFF, BIT11 },
-//HTIU x 2A [1:0]=0x1 Optimize chipset HT transmitter drive strength
- {NB_HTIU_REG2A, 0xfffffffc, 0x00000001 }
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Northbridge Power on Reset Initialization for all NB in system.
- *
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-
-AGESA_STATUS
-AmdPowerOnResetInit (
- IN AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- REGISTER_ENTRY *pTable;
- AMD_NB_CONFIG *pConfig;
- UINTN i;
-
- pConfig = &ConfigPtr->Northbridges[0];
- pTable = (REGISTER_ENTRY*)FIX_PTR_ADDR (&NbRecoveryPorPciTable[0], NULL);
- for (i = 0; i < (sizeof (NbRecoveryPorPciTable) / sizeof (REGISTER_ENTRY)); i++) {
- LibNbPciRMW (pConfig->NbPciAddress.AddressValue | pTable->Register, AccessWidth8, pTable->Mask, pTable->Data, pConfig);
- ++pTable;
- }
- //Init Misc registers
- LibNbIndirectTableInit (
- ConfigPtr->Northbridges[0].NbPciAddress.AddressValue | NB_MISC_INDEX,
- 0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&NbRecoveryPorMiscTable[0],NULL),
- (sizeof (NbRecoveryPorMiscTable) / sizeof (INDIRECT_REG_ENTRY)),
- pConfig
- );
-
- //Init Htiu registers
- LibNbIndirectTableInit (
- ConfigPtr->Northbridges[0].NbPciAddress.AddressValue | NB_HTIU_INDEX,
- 0,
- (INDIRECT_REG_ENTRY*)FIX_PTR_ADDR (&NbRecoveryPorHtiuTable[0], NULL),
- (sizeof (NbRecoveryPorHtiuTable) / sizeof (INDIRECT_REG_ENTRY)),
- pConfig
- );
-
- return AGESA_SUCCESS;
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Initialize misc setting
- *
- *
- *
- * @param[in] NbConfigPtr Northbridge configuration structure pointer.
- *
- */
-
-AGESA_STATUS
-MiscRecoveryInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- )
-{
- return AGESA_SUCCESS;
-}
-
-
diff --git a/src/vendorcode/amd/cimx/rd890/nbRecovery.h b/src/vendorcode/amd/cimx/rd890/nbRecovery.h
deleted file mode 100644
index e6b04c0be4..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbRecovery.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file
- *
- * NB definitions
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBRECOVERY_H_
-#define _NBRECOVERY_H_
-
-
-AGESA_STATUS
-MiscRecoveryInitializer (
- IN OUT AMD_NB_CONFIG *NbConfigPtr
- );
-
-#endif \ No newline at end of file
diff --git a/src/vendorcode/amd/cimx/rd890/nbRecoveryInitializer.c b/src/vendorcode/amd/cimx/rd890/nbRecoveryInitializer.c
deleted file mode 100644
index f9b6132a14..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbRecoveryInitializer.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @file
- *
- * Recovery support
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------
- * M O D U L E S U S E D
- *----------------------------------------------------------------------------------------
- */
-
-#include "NbPlatform.h"
-
-/*----------------------------------------------------------------------------------------
- * D E F I N I T I O N S A N D M A C R O S
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------
- * 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
- *----------------------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * AMD structures initializer for recovery.
- *
- *
- *
- * @param[in] ConfigPtr Northbridges configuration block pointer.
- *
- */
-
-AGESA_STATUS
-AmdInitializer (
- IN OUT AMD_NB_CONFIG_BLOCK *ConfigPtr
- )
-{
- AGESA_STATUS Status;
- AMD_NB_CONFIG *NbConfigPtr;
- NbConfigPtr = &ConfigPtr->Northbridges[0];
- Status = MiscRecoveryInitializer (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- return Status;
- }
-#ifdef PCIE_RECOVERY_SUPPORT
- Status = PcieRecoveryInitializer (NbConfigPtr);
- if (Status == AGESA_FATAL) {
- return Status;
- }
-#endif
- return Status;
-
-}
diff --git a/src/vendorcode/amd/cimx/rd890/nbRegisters.h b/src/vendorcode/amd/cimx/rd890/nbRegisters.h
deleted file mode 100644
index 621f1e9602..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbRegisters.h
+++ /dev/null
@@ -1,420 +0,0 @@
-/**
- * @file
- *
- * Registers definition.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBREGISTERS_H_
-#define _NBREGISTERS_H_
-
-#define NB_PCI_REG04 0x04
-#define NB_PCI_REG1C 0x1C
-#define NB_PCI_REG44 0x44
-#define NB_PCI_REG4C 0x4C
-#define NB_PCI_REG4E 0x4E
-#define NB_PCI_REG50 0x50
-#define NB_PCI_REG54 0x54
-#define NB_PCI_REG58 0x58
-#define NB_PCI_REG5C 0x5c
-#define NB_PCI_REG60 0x60
-#define NB_PCI_REG78 0x78
-#define NB_PCI_REG7C 0x7C
-#define NB_PCI_REG7F 0x7f
-#define NB_PCI_REG95 0x95
-#define NB_PCI_REG97 0x97
-#define NB_PCI_REG80 0x80
-#define NB_PCI_REG84 0x84
-#define NB_PCI_REG8C 0x8C
-#define NB_PCI_REG8D 0x8D
-#define NB_PCI_REG90 0x90
-#define NB_PCI_REG94 0x94
-#define NB_PCI_REG98 0x98
-#define NB_PCI_REG9C 0x9C
-#define NB_PCI_REGA0 0xA0
-#define NB_PCI_REGA4 0xA4
-#define NB_PCI_REGA6 0xA6
-#define NB_PCI_REGA7 0xA7
-#define NB_PCI_REGA8 0xA8
-#define NB_PCI_REGAC 0xAC
-#define NB_PCI_REGC8 0xC8
-#define NB_PCI_REGCB 0xCB
-#define NB_PCI_REGD1 0xD1
-#define NB_PCI_REGD2 0xD2
-#define NB_PCI_REGE0 0xE0
-#define NB_PCI_REGE8 0xE8
-#define NB_PCI_REGF8 0xF8
-#define NB_PCI_REGFC 0xFC
-
-#define NB_APC_REG04 0x04
-#define NB_APC_REG18 0x18
-
-/******************************************************************************************
-; PCIE Port PCI config registers
-;******************************************************************************************/
-
-#define NB_PCIP_REG04 0x04
-#define NB_PCIP_REG18 0x18
-#define NB_PCIP_REG19 0x19
-#define NB_PCIP_REG20 0x20
-#define NB_PCIP_REG24 0x24
-#define NB_PCIP_REG3D 0x3D
-#define NB_PCIP_REG5A 0x5A
-#define NB_PCIP_REG64 0x64
-#define NB_PCIP_REG68 0x68
-#define NB_PCIP_REG6A 0x6A
-#define NB_PCIP_REG6B 0x6b
-#define NB_PCIP_REG6C 0x6c
-#define NB_PCIP_REG70 0x70
-#define NB_PCIP_REG72 0x72
-#define NB_PCIP_REG80 0x80
-#define NB_PCIP_REG88 0x88
-#define NB_PCIP_REGE0 0xE0
-#define NB_PCIP_REG108 0x108
-#define NB_PCIP_REG124 0x124
-#define NB_PCIP_REG12A 0x12A
-#define NB_PCIP_REG130 0x130
-#define NB_PCIP_REG134 0x134
-
-
-/******************************************************************************************
-; HTIUNBIND register definition
-;******************************************************************************************/
-
-#define NB_HTIU_INDEX NB_PCI_REG94
-#define HTIU_WRITE 0x100
-
-#define NB_HTIU_REG05 (0x05 | HTIU_WRITE)
-#define NB_HTIU_REG06 (0x06 | HTIU_WRITE)
-#define NB_HTIU_REG07 (0x07 | HTIU_WRITE)
-#define NB_HTIU_REG0C (0x0C | HTIU_WRITE)
-#define NB_HTIU_REG12 (0x12 | HTIU_WRITE)
-#define NB_HTIU_REG15 (0x15 | HTIU_WRITE)
-#define NB_HTIU_REG16 (0x16 | HTIU_WRITE)
-#define NB_HTIU_REG17 (0x17 | HTIU_WRITE)
-#define NB_HTIU_REG19 (0x19 | HTIU_WRITE)
-#define NB_HTIU_REG1A (0x1A | HTIU_WRITE)
-#define NB_HTIU_REG1C (0x1C | HTIU_WRITE)
-#define NB_HTIU_REG1D (0x1D | HTIU_WRITE)
-#define NB_HTIU_REG1E (0x1E | HTIU_WRITE)
-#define NB_HTIU_REG2A (0x2A | HTIU_WRITE)
-#define NB_HTIU_REG2D (0x2D | HTIU_WRITE)
-#define NB_HTIU_REG30 (0x30 | HTIU_WRITE)
-#define NB_HTIU_REG31 (0x31 | HTIU_WRITE)
-#define NB_HTIU_REG32 (0x32 | HTIU_WRITE)
-#define NB_HTIU_REG34 (0x34 | HTIU_WRITE)
-#define NB_HTIU_REG37 (0x37 | HTIU_WRITE)
-#define NB_HTIU_REG3A (0x3A | HTIU_WRITE)
-#define NB_HTIU_REG3B (0x3B | HTIU_WRITE)
-#define NB_HTIU_REG3C (0x3C | HTIU_WRITE)
-#define NB_HTIU_REG46 (0x46 | HTIU_WRITE)
-#define NB_HTIU_REG4B (0x4B | HTIU_WRITE)
-#define NB_HTIU_REG50 (0x50 | HTIU_WRITE)
-#define NB_HTIU_REG55 (0x55 | HTIU_WRITE)
-#define NB_HTIU_REG56 (0x56 | HTIU_WRITE)
-#define NB_HTIU_REG57 (0x57 | HTIU_WRITE)
-#define NB_HTIU_REG58 (0x58 | HTIU_WRITE)
-#define NB_HTIU_REG59 (0x59 | HTIU_WRITE)
-#define NB_HTIU_REG5A (0x5A | HTIU_WRITE)
-#define NB_HTIU_REG5C (0x5C | HTIU_WRITE)
-#define NB_HTIU_REG5D (0x5D | HTIU_WRITE)
-#define NB_HTIU_REG5E (0x5E | HTIU_WRITE)
-#define NB_HTIU_REG5F (0x5F | HTIU_WRITE)
-#define NB_HTIU_REG60 (0x60 | HTIU_WRITE)
-#define NB_HTIU_REG61 (0x61 | HTIU_WRITE)
-#define NB_HTIU_REG62 (0x62 | HTIU_WRITE)
-#define NB_HTIU_REG63 (0x63 | HTIU_WRITE)
-#define NB_HTIU_REG64 (0x64 | HTIU_WRITE)
-#define NB_HTIU_REG65 (0x65 | HTIU_WRITE)
-#define NB_HTIU_REG66 (0x66 | HTIU_WRITE)
-#define NB_HTIU_REG68 (0x68 | HTIU_WRITE)
-#define NB_HTIU_REG6B (0x6B | HTIU_WRITE)
-#define NB_HTIU_REG6D (0x6D | HTIU_WRITE)
-#define NB_HTIU_REG70 (0x70 | HTIU_WRITE)
-#define NB_HTIU_REG71 (0x71 | HTIU_WRITE)
-#define NB_HTIU_REG72 (0x72 | HTIU_WRITE)
-#define NB_HTIU_REG73 (0x73 | HTIU_WRITE)
-#define NB_HTIU_REG74 (0x74 | HTIU_WRITE)
-#define NB_HTIU_REG75 (0x75 | HTIU_WRITE)
-#define NB_HTIU_REG87 (0x87 | HTIU_WRITE)
-#define NB_HTIU_REG88 (0x88 | HTIU_WRITE)
-#define NB_HTIU_REGA8 (0xA8 | HTIU_WRITE)
-#define NB_HTIU_REGA9 (0xA9 | HTIU_WRITE)
-
-/******************************************************************************************
-; Clock Configuration register
-;******************************************************************************************/
-#define NB_CLK_REG48 0x48
-#define NB_CLK_REG4C 0x4C
-#define NB_CLK_REG5C 0x5C
-#define NB_CLK_REG60 0x60
-#define NB_CLK_REG78 0x78
-#define NB_CLK_REG84 0x84
-#define NB_CLK_REG8C 0x8C
-#define NB_CLK_REG90 0x90
-#define NB_CLK_REG94 0x94
-#define NB_CLK_REGB0 0xB0
-#define NB_CLK_REGB4 0xB4
-#define NB_CLK_REGCC 0xCC
-#define NB_CLK_REGD4 0xD4
-#define NB_CLK_REGD5 0xD5
-#define NB_CLK_REGD6 0xD6
-#define NB_CLK_REGD8 0xD8
-#define NB_CLK_REGE0 0xE0
-#define NB_CLK_REGE4 0xE4
-#define NB_CLK_REGE8 0xE8
-#define NB_CLK_REGF0 0xF0
-#define NB_CLK_REGF4 0xF4
-#define NB_CLK_REGF8 0xF8
-#define NB_CLK_REGF9 0xF9
-#define NB_CLK_REGFA 0xFA
-#define NB_CLK_REGFB 0xFB
-
-/******************************************************************************************
-; MISCIND/NBCFG register definition
-;******************************************************************************************/
-#define NB_MISC_INDEX NB_PCI_REG60
-#define MISC_WRITE 0x80
-
-#define NB_MISC_REG00 (0x00 | MISC_WRITE)
-#define NB_MISC_REG01 (0x01 | MISC_WRITE)
-#define NB_MISC_REG07 (0x07 | MISC_WRITE)
-#define NB_MISC_REG08 (0x08 | MISC_WRITE)
-#define NB_MISC_REG0B (0x0B | MISC_WRITE)
-#define NB_MISC_REG0C (0x0C | MISC_WRITE)
-#define NB_MISC_REG12 (0x12 | MISC_WRITE)
-#define NB_MISC_REG1E (0x1E | MISC_WRITE)
-#define NB_MISC_REG1F (0x1F | MISC_WRITE)
-#define NB_MISC_REG20 (0x20 | MISC_WRITE)
-#define NB_MISC_REG21 (0x21 | MISC_WRITE)
-#define NB_MISC_REG22 (0x22 | MISC_WRITE)
-#define NB_MISC_REG23 (0x23 | MISC_WRITE)
-#define NB_MISC_REG24 (0x24 | MISC_WRITE)
-#define NB_MISC_REG26 (0x26 | MISC_WRITE)
-#define NB_MISC_REG27 (0x27 | MISC_WRITE)
-#define NB_MISC_REG28 (0x28 | MISC_WRITE)
-#define NB_MISC_REG29 (0x29 | MISC_WRITE)
-#define NB_MISC_REG2A (0x2A | MISC_WRITE)
-#define NB_MISC_REG2B (0x2B | MISC_WRITE)
-#define NB_MISC_REG2C (0x2C | MISC_WRITE)
-#define NB_MISC_REG2D (0x2D | MISC_WRITE)
-#define NB_MISC_REG2E (0x2E | MISC_WRITE)
-#define NB_MISC_REG2F (0x2F | MISC_WRITE)
-#define NB_MISC_REG32 (0x32 | MISC_WRITE)
-#define NB_MISC_REG33 (0x33 | MISC_WRITE)
-#define NB_MISC_REG34 (0x34 | MISC_WRITE)
-#define NB_MISC_REG35 (0x35 | MISC_WRITE)
-#define NB_MISC_REG36 (0x36 | MISC_WRITE)
-#define NB_MISC_REG37 (0x37 | MISC_WRITE)
-#define NB_MISC_REG38 (0x38 | MISC_WRITE)
-#define NB_MISC_REG39 (0x39 | MISC_WRITE)
-#define NB_MISC_REG3A (0x3A | MISC_WRITE)
-#define NB_MISC_REG3B (0x3B | MISC_WRITE)
-#define NB_MISC_REG3C (0x3C | MISC_WRITE)
-#define NB_MISC_REG40 (0x40 | MISC_WRITE)
-#define NB_MISC_REG48 (0x48 | MISC_WRITE)
-#define NB_MISC_REG49 (0x49 | MISC_WRITE)
-#define NB_MISC_REG4A (0x4A | MISC_WRITE)
-#define NB_MISC_REG4B (0x4B | MISC_WRITE)
-#define NB_MISC_REG4E (0x4E | MISC_WRITE)
-#define NB_MISC_REG4F (0x4F | MISC_WRITE)
-#define NB_MISC_REG51 (0x51 | MISC_WRITE)
-#define NB_MISC_REG53 (0x53 | MISC_WRITE)
-#define NB_MISC_REG55 (0x55 | MISC_WRITE)
-#define NB_MISC_REG57 (0x57 | MISC_WRITE)
-#define NB_MISC_REG59 (0x59 | MISC_WRITE)
-#define NB_MISC_REG5B (0x5B | MISC_WRITE)
-#define NB_MISC_REG5D (0x5D | MISC_WRITE)
-#define NB_MISC_REG5F (0x5F | MISC_WRITE)
-#define NB_MISC_REG61 (0x61 | MISC_WRITE)
-#define NB_MISC_REG63 (0x63 | MISC_WRITE)
-#define NB_MISC_REG66 (0x66 | MISC_WRITE)
-#define NB_MISC_REG67 (0x67 | MISC_WRITE)
-#define NB_MISC_REG68 (0x68 | MISC_WRITE)
-#define NB_MISC_REG69 (0x69 | MISC_WRITE)
-#define NB_MISC_REG6A (0x6A | MISC_WRITE)
-#define NB_MISC_REG6B (0x6B | MISC_WRITE)
-#define NB_MISC_REG6C (0x6C | MISC_WRITE)
-#define NB_MISC_REG6F (0x6f | MISC_WRITE)
-#define NB_MISC_REG74 (0x74 | MISC_WRITE)
-#define NB_MISC_REG75 (0x75 | MISC_WRITE)
-#define NB_MISC_REG76 (0x76 | MISC_WRITE)
-#define NB_MISC_REG7D (0x7D | MISC_WRITE)
-
-/******************************************************************************************
-; MISCIND/NBCFG register definition
-;******************************************************************************************/
-#define NB_MC_INDEX NB_PCI_REGE8
-#define MC_WRITE 0x200
-
-#define NB_MC_REG01 (0x01 | MC_WRITE)
-#define NB_MC_REG02 (0x02 | MC_WRITE)
-#define NB_MC_REG04 (0x04 | MC_WRITE)
-#define NB_MC_REG05 (0x05 | MC_WRITE)
-#define NB_MC_REG06 (0x06 | MC_WRITE)
-#define NB_MC_REG07 (0x07 | MC_WRITE)
-#define NB_MC_REG08 (0x08 | MC_WRITE)
-#define NB_MC_REG09 (0x09 | MC_WRITE)
-#define NB_MC_REG0B (0x0B | MC_WRITE)
-#define NB_MC_REG0C (0x0C | MC_WRITE)
-#define NB_MC_REG0D (0x0D | MC_WRITE)
-#define NB_MC_REG0E (0x0E | MC_WRITE)
-#define NB_MC_REG0F (0x0F | MC_WRITE)
-#define NB_MC_REG10 (0x10 | MC_WRITE)
-#define NB_MC_REG11 (0x11 | MC_WRITE)
-#define NB_MC_REG12 (0x12 | MC_WRITE)
-#define NB_MC_REG13 (0x13 | MC_WRITE)
-#define NB_MC_REG14 (0x14 | MC_WRITE)
-#define NB_MC_REG16 (0x16 | MC_WRITE)
-#define NB_MC_REG23 (0x23 | MC_WRITE)
-#define NB_MC_REG25 (0x25 | MC_WRITE)
-#define NB_MC_REG29 (0x29 | MC_WRITE)
-#define NB_MC_REG2A (0x2A | MC_WRITE)
-#define NB_MC_REG2C (0x2C | MC_WRITE)
-#define NB_MC_REG30 (0x30 | MC_WRITE)
-#define NB_MC_REG3C (0x3C | MC_WRITE)
-#define NB_MC_REG3D (0x3D | MC_WRITE)
-#define NB_MC_REG49 (0x49 | MC_WRITE)
-#define NB_MC_REG4A (0x4A | MC_WRITE)
-#define NB_MC_REG4B (0x4B | MC_WRITE)
-#define NB_MC_REG4C (0x4C | MC_WRITE)
-#define NB_MC_REG4D (0x4D | MC_WRITE)
-#define NB_MC_REGA0 (0xA0 | MC_WRITE)
-#define NB_MC_REGA1 (0xA1 | MC_WRITE)
-#define NB_MC_REGA2 (0xA2 | MC_WRITE)
-#define NB_MC_REGA3 (0xA3 | MC_WRITE)
-#define NB_MC_REGA4 (0xA4 | MC_WRITE)
-#define NB_MC_REGA5 (0xA5 | MC_WRITE)
-#define NB_MC_REGA6 (0xA6 | MC_WRITE)
-#define NB_MC_REGA7 (0xA7 | MC_WRITE)
-#define NB_MC_REGA8 (0xA8 | MC_WRITE)
-#define NB_MC_REGAA (0xAA | MC_WRITE)
-#define NB_MC_REGAF (0xAF | MC_WRITE)
-#define NB_MC_REGB0 (0xB0 | MC_WRITE)
-#define NB_MC_REGB2 (0xB2 | MC_WRITE)
-#define NB_MC_REGB1 (0xB1 | MC_WRITE)
-#define NB_MC_REGB4 (0xB4 | MC_WRITE)
-#define NB_MC_REGB5 (0xB5 | MC_WRITE)
-#define NB_MC_REGB6 (0xB6 | MC_WRITE)
-#define NB_MC_REGB7 (0xB7 | MC_WRITE)
-#define NB_MC_REGB8 (0xB8 | MC_WRITE)
-#define NB_MC_REGB9 (0xB9 | MC_WRITE)
-#define NB_MC_REGBA (0xBA | MC_WRITE)
-#define NB_MC_REGC1 (0xC1 | MC_WRITE)
-#define NB_MC_REGC2 (0xC2 | MC_WRITE)
-#define NB_MC_REGC3 (0xC3 | MC_WRITE)
-#define NB_MC_REGC4 (0xC4 | MC_WRITE)
-#define NB_MC_REGC5 (0xC5 | MC_WRITE)
-#define NB_MC_REGC8 (0xC8 | MC_WRITE)
-#define NB_MC_REGC9 (0xC9 | MC_WRITE)
-#define NB_MC_REGCA (0xCA | MC_WRITE)
-#define NB_MC_REGCB (0xCB | MC_WRITE)
-#define NB_MC_REGCC (0xCC | MC_WRITE)
-#define NB_MC_REGCE (0xCE | MC_WRITE)
-#define NB_MC_REGD0 (0xD0 | MC_WRITE)
-#define NB_MC_REGD2 (0xD2 | MC_WRITE)
-#define NB_MC_REGD3 (0xD3 | MC_WRITE)
-#define NB_MC_REGD6 (0xD6 | MC_WRITE)
-#define NB_MC_REGD7 (0xD7 | MC_WRITE)
-#define NB_MC_REGD8 (0xD8 | MC_WRITE)
-#define NB_MC_REGD9 (0xD9 | MC_WRITE)
-#define NB_MC_REGE0 (0xE0 | MC_WRITE)
-#define NB_MC_REGE1 (0xE1 | MC_WRITE)
-#define NB_MC_REGE8 (0xE8 | MC_WRITE)
-#define NB_MC_REGE9 (0xE9 | MC_WRITE)
-#define NB_MC_REGF0 (0xF0 | MC_WRITE)
-
-/******************************************************************************************
-; PCIEIND_P(BIFNBP) register definition
-;******************************************************************************************/
-#define NB_BIF_INDEX NB_PCI_REGE0
-
-#define NB_BIFNBP_REG01 0x01
-#define NB_BIFNBP_REG02 0x02
-#define NB_BIFNBP_REG10 0x10
-#define NB_BIFNBP_REG20 0x20
-#define NB_BIFNBP_REG40 0x40
-#define NB_BIFNBP_REG50 0x50
-#define NB_BIFNBP_REG70 0x70
-#define NB_BIFNBP_REGA0 0xA0
-#define NB_BIFNBP_REGA1 0xA1
-#define NB_BIFNBP_REGA2 0xA2
-#define NB_BIFNBP_REGA3 0xA3
-#define NB_BIFNBP_REGA4 0xA4
-#define NB_BIFNBP_REGA5 0xA5
-#define NB_BIFNBP_REGB1 0xB1
-#define NB_BIFNBP_REGC0 0xC0
-#define NB_BIFNBP_REGC1 0xC1
-
-/******************************************************************************************
-; PCIEIND(BIFNB) register definition
-;******************************************************************************************/
-#define NB_BIFNB_REG01 0x01
-#define NB_BIFNB_REG02 0x02
-#define NB_BIFNB_REG10 0x10
-#define NB_BIFNB_REG11 0x11
-#define NB_BIFNB_REG1C 0x1C
-#define NB_BIFNB_REG20 0x20
-#define NB_BIFNB_REG40 0x40
-#define NB_BIFNB_REG65 0x65
-#define NB_BIFNB_REGC1 0xC1
-#define NB_BIFNB_REGC2 0xC2
-#define NB_BIFNB_REGF9 0xF9
-
-
-#define MC_CLK_INDEX 0x60
-
-/******************************************************************************************
-; IOAPICCFG register definition
-;******************************************************************************************/
-#define NB_IOAPICCFG_INDEX NB_PCI_REGF8
-
-#define NB_IOAPICCFG_REG00 0x00
-#define NB_IOAPICCFG_REG01 0x01
-#define NB_IOAPICCFG_REG02 0x02
-#define NB_IOAPICCFG_REG03 0x03
-#define NB_IOAPICCFG_REG04 0x04
-#define NB_IOAPICCFG_REG05 0x05
-#define NB_IOAPICCFG_REG06 0x06
-#define NB_IOAPICCFG_REG07 0x07
-#define NB_IOAPICCFG_REG08 0x08
-#define NB_IOAPICCFG_REG09 0x09
-#define NB_IOAPICCFG_REG0A 0x0A
-
-#endif
diff --git a/src/vendorcode/amd/cimx/rd890/nbType.h b/src/vendorcode/amd/cimx/rd890/nbType.h
deleted file mode 100644
index ef224c3cb2..0000000000
--- a/src/vendorcode/amd/cimx/rd890/nbType.h
+++ /dev/null
@@ -1,1075 +0,0 @@
-/*
- * @file
- *
- * Misc definitions.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: CIMx-NB
- * @e sub-project:
- * @e \$Revision:$ @e \$Date:$
- *
- */
-/*****************************************************************************
- *
- * Copyright (C) 2012 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *
- ***************************************************************************/
-
-#ifndef _NBTYPE_H_
-#define _NBTYPE_H_
-
-//#pragma pack(push, 1) //GCC ERROR
-
-#define CIMX_NB_REVISION "1.0.1.7"
-#define CIMX_NB_ID "SR5690"
-
-#ifndef MAX_NB_COUNT
- //#define MAX_NB_COUNT 4
- #error hi, MAX_NB_COUNT not define
-#endif
-
-#define MAX_PORT_ID 13
-#define MIN_PORT_ID 2
-
-#define MAX_CORE_ID 4
-
-
-typedef UINT32 PORT;
-typedef UINT32 CORE;
-
-
-
-/// The HT Path to Northbridge
-typedef struct {
- UINT8 NodeID; ///< Node ID
- UINT8 LinkID; /**< HT Link ID
- * @par
- * LinkID[3:0]- Link Id
- * @li <b>0</b> - Link 0
- * @li <b>1</b> - Link 1
- * @li <b>2</b> - Link 2
- * @li <b>3</b> - Link 3
- * @par
- * LinkID[7:4]- Sublink Id
- * @li <b>1</b> - Sublink 0
- * @li <b>2</b> - Sublink 1
- *
- * @PlatformDependant
- */
-} HT_PATH;
-
-/// The configuration structure common header.
-typedef struct {
- UINT16 Version; ///< Version of this structure
- UINT16 Reserved; ///< Reserved for future use
- UINT32 InitializerID; ///< Signature of initializer
-} AMD_COMMON_STRUCT_HEADER;
-
-/// The PCIE configuration parameters
-typedef struct {
- AMD_COMMON_STRUCT_HEADER sHeader; ///< Standard structure header
- PCIE_MISC_CONFIG PcieConfiguration; ///< General configuration option
- UINT32 ExtPcieConfiguration; ///< Extended General configuration option (Reserved for future use)
- UINT32 CoreConfiguration[5]; /**< Core configuration
- * @li <b>CoreConfiguration[0]</b> - GPP1 Core Configuration
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=120> Dual Port 2x8 </TD><TD class="indexvalue">if CoreConfiguration[0] == 0 && PortConfiguration[3].PortPresent == 1 </TD></TR>
- * <TR><TD class="indexkey" width=120> Dual Port 2x8 </TD><TD class="indexvalue">CoreConfiguration[0] == 0x02020101</TD></TR>
- * <TR><TD class="indexkey" width=120> Single Port 1x16 </TD><TD class="indexvalue">if CoreConfiguration[0] == 0 && PortConfiguration[3].PortPresent == 0</TD></TR>
- * <TR><TD class="indexkey" width=120> Single Port 1x16 </TD><TD class="indexvalue">CoreConfiguration[0] == 0x01010101</TD></TR>
- * </TABLE>
- * @li <b>CoreConfiguration[1]</b> - GPP2 Core Configuration
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=120> Dual Port 2x8 </TD><TD class="indexvalue">if CoreConfiguration[1] == 0 && PortConfiguration[12].PortPresent == 1 </TD></TR>
- * <TR><TD class="indexkey" width=120> Dual Port 2x8 </TD><TD class="indexvalue">CoreConfiguration[1] == 0x02020101</TD></TR>
- * <TR><TD class="indexkey" width=120> Single Port 1x16 </TD><TD class="indexvalue">if CoreConfiguration[1] == 0 && PortConfiguration[12].PortPresent == 0</TD></TR>
- * <TR><TD class="indexkey" width=120> Single Port 1x16 </TD><TD class="indexvalue">CoreConfiguration[1] == 0x01010101</TD></TR>
- * </TABLE>
- * @li <b>CoreConfiguration[2]</b> - GPP3a Core Configuration
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=120> 4:2:0:0:0:0 </TD><TD class="indexvalue">CoreConfiguration[2] == 0x1 </TD></TR>
- * <TR><TD class="indexkey" width=120> 4:1:1:0:0:0 </TD><TD class="indexvalue">CoreConfiguration[2] == 0x2</TD></TR>
- * <TR><TD class="indexkey" width=120> 2:2:2:0:0:0 </TD><TD class="indexvalue">CoreConfiguration[2] == 0x3</TD></TR>
- * <TR><TD class="indexkey" width=120> 2:2:1:1:0:0 </TD><TD class="indexvalue">CoreConfiguration[2] == 0x4</TD></TR>
- * <TR><TD class="indexkey" width=120> 2:1:1:1:1:0 </TD><TD class="indexvalue">CoreConfiguration[2] == 0x5</TD></TR>
- * <TR><TD class="indexkey" width=120> 1:1:1:1:1:1 </TD><TD class="indexvalue">CoreConfiguration[2] == 0x6</TD></TR>
- * </TABLE>
- * @li <b>CoreConfiguration[3]</b> - Reserved
- * @li <b>CoreConfiguration[4]</b> - Reserved
-
- * @PlatformDependant
- */
- PCIE_CORE_SETTING CoreSetting[5]; /**< Core setting
- * see PCIE_CORE_SETTING for details
- * @li <b>CoreSetting[0]</b> - GPP1 Core Settings
- * @li <b>CoreSetting[1]</b> - GPP2 Core Settings
- * @li <b>CoreSetting[2]</b> - GPP3a Core Settings
- * @li <b>CoreSetting[3]</b> - GPP3b Core Settings
- * @li <b>CoreSetting[4]</b> - SB Core setting
- */
- PCIE_PORT_CONFIG PortConfiguration[15]; /**< Port configuration
- * see PCIE_PORT_CONFIG for details
- * @li <b>PortConfiguration[0]</b> - Reserved
- * @li <b>PortConfiguration[1]</b> - Reserved
- * @li <b>PortConfiguration[2]</b> - PCIE Port Device 2 configuration
- * @li <b>PortConfiguration[3]</b> - PCIE Port Device 3 configuration
- * @li ...
- * @li <b>PortConfiguration[13]</b> - PCIE Port Device 13 configuration
- *
- * @PlatformDependant
- */
- PCIE_EXT_PORT_CONFIG ExtPortConfiguration[15]; /**< Extended Port configuration
- * see PCIE_EXT_PORT_CONFIG for details.
- * @li <b>ExtPortConfiguration[0]</b> - Reserved
- * @li <b>ExtPortConfiguration[1]</b> - Reserved
- * @li <b>ExtPortConfiguration[2]</b> - PCIE Port Device 2 configuration
- * @li <b>ExtPortConfiguration[3]</b> - PCIE Port Device 3 configuration
- * @li ...
- * @li <b>ExtPortConfiguration[13]</b> - PCIE Port Device 13 configuration
- *
- * @PlatformDependant
- */
-
- UINT16 PcieMmioBaseAddress; /**< PCIE Extended MMIO base address in 1MB Unit.
- * If PcieMmioBaseAddress == 0 assume MMIO setup already done.
- * PCIE MMIO range should be programmed in CPU F1x[BC:80] Memory Mapped IO Base/Limit Registers as Non Posted if enabled in NB.
- * <b>IMPORTANT!!! </b>Platform which use Rev10 and later CPU family should use PCIE MMIO functionality provided by CPU See "Configuration Space" in "BIOS and Kernel Developer's Guide For AMD Family 10h"
- *
- * @PlatformDependant
- */
-
- UINT16 PcieMmioSize; /**< PCIE Extended MMIO size in 1MB Unit.
- * if PcieMmioBaseAddress != 0 and PcieMmioSize == 0 ignore both parameters and assume MMIO setup already done
- * if PcieMmioBaseAddress == 0 and PcieMmioSize != 0 ignore both parameters and assume MMIO setup already done
- * PCIE MMIO range should be programmed in CPU F1x[BC:80] Memory Mapped IO Base/Limit Registers as Non Posted if enabled in NB.
- * <b>IMPORTANT!!!</b>Platform which use Rev10 and later CPU family should use PCIE MMIO functionality provided by CPU See "Configuration Space" in "BIOS and Kernel Developer's Guide For AMD Family 10h"
- *
- * @PlatformDependant
- */
- UINT16 TempMmioBaseAddress; /**< Temporary MMIO base in 1MB Unit
- * MMIO base address for temporary 256MB MMIO range.
- * Range should be programmed in CPU F1x[BC:80] Memory Mapped IO Base/Limit Registers as Posted
- *
- * @PlatformDependant
- */
- UINT16 DeviceInitMaskS1; ///< Bit mask of ports to be initialized at stage 1
- UINT16 DeviceInitMaskS2; ///< Bit mask of ports to be initialized at stage 2
- UINT16 ResetToTrainingDelay; ///< Delay (in 1ms) after reset deassert before training started
- UINT16 TrainingToLinkTestDelay; ///< Delay (in 1ms) after training started but before pooling link state
- UINT16 ReceiverDetectionPooling; ///< Total amount time (in 1ms of pooling for passing receiver detection stage
- UINT32 Reserved12[16]; ///< Reserved for internal use.
-} PCIE_CONFIG;
-
-
-
-/// The NB/IOMMU configuration
-typedef struct {
- AMD_COMMON_STRUCT_HEADER sHeader; ///< Standard structure header
- UINT8 UnitIdClumping; /**< Unit ID clamping.
- * UnitId clamping configuration base on PCIE port 3/12 presence.
- * @li <b>0</b> - Disable
- * @li <b>1</b> - Dev3
- * @li <b>2</b> - Dev12
- * @li <b>3</b> - Dev3 & Dev12
-
- * @FilledByInitializer
- */
- UINT8 P2PMode; /**< Peer-To-Peer (p2p) Modes
- * Peep-To-Peer mode selection
- * @li <b>0</b> - Default
- * @li <b>1</b> - Mode 1
- * @li <b>2</b> - Mode 2
- * @li <b>0x8x</b> - Skip Initialization
-
- * @FilledByInitializer
- */
- UINT8 Reserved2[2]; ///< Reserved for internal use.
- UINT16 SysMemoryTomBelow4G; /**< Top of System memory below 4G in 1MB unit
- * Top of physical memory including all reserved system memory etc.
- * @PlatformDependant
- */
- UINT32 SysMemoryTomAbove4G; /**< Top of System memory above 4G in 1MB unit
- * Top of physical memory including all reserved system memory etc.
- * @PlatformDependant
- */
- UINT16 Reserved; ///< Used for internally to save APIC ID of Core 0.
- UINT64 IommuBaseAddress; /**< IOMMU base address.
- * 16kb aligned base address for IOMMU control registers
- * @PlatformDependant
- */
- UINT64 BroadcastBaseAddress; /**< PCIE Broadcast MMIO base address.
- * This feature can be utilized broadcast address aware driver (AMD GFX driver)
- * If BroadcastBaseAddress == 0 MMIO will not be enabled
- * @PlatformDependant
- */
- UINT16 BroadcastSize; /**< PCIE Broadcast MMIO size in MB.
- * If BroadcastSize == 0 MMIO will not be enabled
- * @PlatformDependant
- */
- UINT16 Reserved3; ///< Reserved for internal use.
- UINT64 IoApicBaseAddress; /**< NB IO APIC Base address.
- * If IoApicBaseAddress == 0 IOAPIC will not be enabled
- * @PlatformDependant
- */
- UINT32 SSID; ///< NB Subsystem/Subvendor ID
- UINT32 IommuTpologyInfo; ///< For intrernal use only
- UINT32 Reserved4[8]; ///< Reserved for internal use.
-} NB_CONFIG;
-
-
-/// The NB Buffer Allocation/request parameters
-typedef struct {
- IN UINTN BufferLength; ///< Buffer length
- IN UINT32 BufferHandle; ///< Buffer handle
- OUT VOID* BufferPtr; ///< Pointer to the buffer
-} NB_BUFFER_PARAMS;
-
-
-/// The IOMMU exclusion range
-typedef struct {
- UINT64 Start; ///< Range Start address
- UINT64 Length; ///< Range length
-} IOMMU_EXCLUSIONRANGE;
-
-//#pragma warning (push)
-//#pragma warning (disable: 4200)
-
-/// The IOMMU exclusion table
-typedef struct {
- UINTN TableLength; ///< Exclusion table length
- IOMMU_EXCLUSIONRANGE ExclusionRange[]; ///< Array of exclusion range entries.
-} IOMMU_EXCLUSIONTABLE;
-//#pragma warning (pop)
-
-/// The HT configuration structure
-typedef struct {
- AMD_COMMON_STRUCT_HEADER sHeader; ///< Standard structure header
- UINT8 LSx; /**< HT link LS state enable
- * @li <b>0</b> - LS0
- * @li <b>1</b> - LS1
- * @li <b>2</b> - LS2
- * @li <b>3</b> - LS3
- * @li <b>4</b> - Same as CPU (use CPU setting setup by AGESA)
- * @li <b>0x8x</b> - Skip Setting
-
- * @FilledByInitializer
- */
- UINT8 Reserved; ///< Reserved for internal use.
- UINT8 LinkBufferOptimization; /**< CPU - NB HT link optimization.
- * @li <b>0</b> - Disabled
- * @li <b>1</b> - Enable
- * @li <b>2..7</b> - Reserved
- */
- UINT8 HtExtendedAddressSupport; /**<Extended HT Address Support
- * @li <b>0</b> - Disable
- * @li <b>1</b> - Enable
- * @li <b>0x8x</b> - Skip setting
-
- * @FilledByInitializer
- */
- UINT8 HtLinkTriState; /**< HT Link tristate control
- * @li <b>1</b> - Disable
- * @li <b>2</b> - CAD/CTL
- * @li <b>3</b> - CAD/CTL/CLK
- * @li <b>0x8x</b> - Skip setting
-
- * @FilledByInitializer
- */
- UINT8 NbTransmitterDeemphasis; /**< NB deemphasis level
- * @li <b>0</b> - Disabled
- * @li <b>1</b> - 1.32dB (0 to 4.5" trace length)
- * @li <b>2</b> - 2.08dB (4.5" to 8" trace length)
- * @li <b>3</b> - 3.10dB (8" to 11" trace length)
- * @li <b>4</b> - 4.22dB (11" to 14" trace length)
- * @li <b>5</b> - 5.50dB (14" to 18" trace length)
- * @li <b>6</b> - 7.05dB (18+" trace length)
-
- * @PlatformDependant
- */
- UINT16 HtReferenceClock; /**< HT Reference clock.
- *
- * @FilledByInitializer
- */
- UINT32 Reserved1[10]; ///< Reserved
-} HT_CONFIG;
-
-
-/// The NB configuration structure
-struct _AMD_NB_CONFIG_BLOCK;
-typedef struct _AMD_NB_CONFIG_BLOCK AMD_NB_CONFIG_BLOCK;
-
-/// The NB configuration structure
-typedef struct {
- AMD_COMMON_STRUCT_HEADER sHeader; ///< Standard structure header
- PCI_ADDR NbPciAddress; /**<PCI address of NB
- * PCI Address to Access NB. Depends on HT topology and configuration for multi NB platform.
- * Always 0:0:0 on single NB platform.
- * @PlatformDependant
- */
- HT_PATH NbHtPath; /**< HT path to NB.
- * Path to NB CPU->Ht Link Number->NB
- * @PlatformDependant
- */
- UINT16 Reserved21; ///< Reserved for internal use.
- NB_CONFIG *pNbConfig; ///< Pointer to NB configuration structure
- HT_CONFIG *pHtConfig; ///< Pointer to HT configuration structure
- PCIE_CONFIG *pPcieConfig; ///< Pointer to PCIE configuration structure
- AMD_NB_CONFIG_BLOCK **ConfigPtr; ///< Pointer to main config block structure
- VOID *ReservedPtr; ///< Reserved for internal use.
-} AMD_NB_CONFIG;
-
-
-/// The configuration block for all NB in system.
-struct _AMD_NB_CONFIG_BLOCK {
- AMD_CONFIG_PARAMS StandardHeader; ///< Standard structure header
- UINT8 NumberOfNorthbridges; /**< Number of AMD_NB_CONFIG configuration structures
- * @li <b>0</b> - One NB.
- * @li <b>1</b> - Two NB.
- * @li <b>2</b> - Three NB.
- * @li <b>3</b> - Four NB.
-
- * @PlatformDependant
- */
- UINT8 Scratch; /**< Variable for internal use
- * @li <b>Bit[0]</b> = 0 Enable DebugOut, = 1 Disable DebugOut(only applicable for DebugOut enabled binaries).
- */
- UINT8 PlatformType; /**< Platform Type (Server/Desktop).
- * @li<b>0</b> - Unknown
- * @li<b>1</b> - Desktop
- * @li<b>2</b> - Server
-
- * @PlatformDependant
- */
- UINT8 CurrentNorthbridge; /**< Northbridge ID which currently being initialized.
- * Variable filled by CIMx and can be used during callback
- * to identify to which NB callback belongs.
- */
- AMD_NB_CONFIG Northbridges[MAX_NB_COUNT]; ///< Array of configuration structures for one or more NB in system
-};
-
-/// The IO APIC Interrupt Mapping Info
-typedef struct {
- UINT8 Group; /**< Group mapping for slot or endpoint device (connected to PCIE port) interrupts .
- @li <b>0</b> - mapped to Grp 0 (pin 0..3 of IO APIC)
- @li <b>1</b> - mapped to Grp 1 (pin 4..7 of IO APIC)
- @li ...
- @li <b>7</b> - mapped to Grp 7 (pin 28..31 of IO APIC)
- */
- UINT8 Swizzle; /**< Swizzle interrupt in the Group.
- @li <b>0</b> - ABCD
- @li <b>1</b> - BCDA
- @li <b>2</b> - CDAB
- @li <b>3</b> - DABC
- */
- UINT8 Pin; /**<Interrupt pin for PCIE bridge
- @li <b>0</b> - Pin 0 of IO APIC
- @li <b>1</b> - Pin 1 of IO APIC
- @li ...
- @li <b>31</b> - Pin 31 of IO APIC
- */
-} APIC_DEVICE_INFO;
-
-typedef AGESA_STATUS (*SYSTEM_API) (AMD_NB_CONFIG_BLOCK *ConfigPtr);
-typedef AGESA_STATUS (*NB_API) (AMD_NB_CONFIG *NbConfigPtr);
-
-/// Northbridge info
-typedef struct {
- UINT8 Type; ///< NB Model (RS780/RD790/RD890...)
- UINT8 Revision; ///< NB Revision ID
-} NB_INFO;
-
-/// API workspace
-typedef struct {
- AMD_NB_CONFIG_BLOCK *ConfigPtr; ///< NB congiguration
- AGESA_STATUS Status; ///< return status
-} API_WORKSPACE;
-
-/// Indirect register entry
-typedef struct {
- UINT32 Register; ///< register
- UINT32 Mask; ///< AND mask
- UINT32 Data; ///< data
-} INDIRECT_REG_ENTRY;
-
-/// Register entry
-typedef struct {
- UINT8 Register; ///< register
- UINT8 Mask; ///< AND mask
- UINT8 Data; ///< data
-} REGISTER_ENTRY;
-
-/// Scratchpad
-typedef struct {
- UINT32 ResetCount :4; ///< PCIe reset count
- UINT32 PortGen2Disable :12; ///< PCIe Gen 2 disable
- UINT32 MaskMemoryInit :1; ///< Mask memory init complete
-} SCRATCH_1;
-
-/// Scratchpad
-typedef struct {
- UINT32 GlobalInterruptBase :8; ///< TBD
-} SCRATCH_4;
-
-
-/*--------------------------- Documentation Pages ---------------------------*/
-/**
- * @page LegacyInterfaceCalls Legacy Interface Calls
- * <TD>@subpage PH_Initializer_Page "PH_Initializer"</TD><TD></TD>
- * <TD>@subpage PH_AmdPowerOnResetInit_Page "PH_AmdPowerOnResetInit"</TD><TD></TD>
- * <TD>@subpage PH_AmdNbHtInit_Page "PH_AmdNbHtInit"</TD><TD></TD>
- * <TD>@subpage PH_AmdPcieEarlyInit_Page "PH_AmdPcieEarlyInit"</TD><TD></TD>
- * <TD>@subpage PH_AmdEarlyPostInit_Page "PH_AmdEarlyPostInit"</TD><TD></TD>
- * <TD>@subpage PH_AmdMidPostInit_Page "PH_AmdMidPostInit"</TD><TD></TD>
- * <TD>@subpage PH_AmdLatePostInit_Page "PH_AmdLatePostInit"</TD><TD></TD>
- * <TD>@subpage PH_AmdS3Init_Page "PH_AmdS3Init"</TD><TD></TD>
- *
-*/
-
-/*--------------------------- Documentation Pages ---------------------------*/
-/**
- * @page PH_Initializer_Page PH_AmdNbInitializer
- * @section PH_Initializer PH_AmdNbInitializer Interface Call
- * Initialize structure referenced by AMD_NB_CONFIG::pHtConfig, AMD_NB_CONFIG::pPcieConfig and AMD_NB_CONFIG::pNbConfig to default recommended value.(Except platform dependant parameters See @ref PlatformDependParam "Platform Dependant Parameters" )
- * @subsection PH_Initializer_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(ImageEntryPtr)(AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_Initializer_Callback Callback`s
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdReportEvent_Page "PHCB_AmdReportEvent"</TD></TR>
- * </TABLE>
- * @subsection PH_Initializer_Page_Initializer Initializer
- * @par
- * Not Applicable
- * @subsection PH_Initializer_Data Configuration Data.
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::StandardHeader </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::NumberOfNorthbridges </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::NbPciAddress </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * </TABLE>
- *
- */
-#define PH_AmdInitializer 0x100
-
-/*--------------------------- Documentation Pages ---------------------------*/
-/**
- * @page PH_AmdPowerOnResetInit_Page PH_AmdPowerOnResetInit
- * @section PH_AmdPowerOnResetInit PH_AmdPowerOnResetInit Interface Call
- * Initialize Northbridge registers on power-on reset.
- * @subsection PH_AmdPowerOnResetInit_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(ImageEntryPtr)(AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_AmdPowerOnResetInit_Callback Callback`s
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdReportEvent_Page "PHCB_AmdReportEvent"</TD></TR>
- * </TABLE>
- * @subsection PH_AmdPowerOnResetInit_Initializer Initializer
- * @par
- * Not Required
- * @subsection PH_AmdPowerOnResetInit_Data Configuration Data.
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::StandardHeader </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::NumberOfNorthbridges </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::NbPciAddress </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * </TABLE>
- *
- */
-#define PH_AmdPowerOnResetInit 0x00
-/**
- * @page PH_AmdNbHtInit_Page PH_AmdNbHtInit
- * @section PH_AmdNbHtInit PH_AmdNbHtInit Interface Call
- * Initialize NB HT subsystem.
- * @subsection PH_AmdNbHtInit_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(ImageEntryPtr)(AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_AmdNbHtInit_Callback Callback`s
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdReportEvent_Page "PHCB_AmdReportEvent"</TD></TR>
- * </TABLE>
- * @subsection PH_AmdNbHtInit_Initializer Initializer
- * @par
- * Required (see @ref PH_Initializer_Page "PH_Initializer")
- * @subsection PH_AmdNbHtInit_Data Configuration Data.
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::StandardHeader </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::NumberOfNorthbridges </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::NbPciAddress </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::NbHtPath </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::pHtConfig </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * </TABLE>
- *
- */
-#define PH_AmdNbHtInit 0x10
-/**
- * @page PH_AmdEarlyPostInit_Page PH_AmdEarlyPostInit
- * @section PH_AmdEarlyPostInit PH_AmdEarlyPostInit Interface Call
- * Initialize misc Northbridge feature at Early Post.
- * @subsection PH_AmdEarlyPostInit_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(ImageEntryPtr)(AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_AmdEarlyPostInit_Callback Callback`s
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdReportEvent_Page "PHCB_AmdReportEvent"</TD></TR>
- * </TABLE>
- * @subsection PH_AmdEarlyPostInit_Initializer Initializer
- * @par
- * Required. (see @ref PH_Initializer_Page)
- * PH_AmdEarlyPostInit/PH_AmdMidPostInit/PH_AmdLatePostInit/PH_AmdS3Init
- * must use same copy of AMD_NB_CONFIG_BLOCK
- * @subsection PH_AmdEarlyPostInit_Data Configuration Data.
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::StandardHeader </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::NumberOfNorthbridges </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::NbPciAddress </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::NbHtPath </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::pNbConfig </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::pPcieConfig </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> NB_CONFIG::SysMemoryTomBelow4G </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * <TR><TD class="indexkey" width=380> NB_CONFIG::SysMemoryTomAbove4G </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * </TABLE>
- *
- */
-#define PH_AmdEarlyPostInit 0x30
-/**
- * @page PH_AmdMidPostInit_Page PH_AmdMidPostInit
- * @section PH_AmdMidPostInit PH_AmdMidPostInit Interface Call
- * Initialize misc Northbridge feature at Mid Post.
- * @subsection PH_AmdMidPostInit_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(ImageEntryPtr)(AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_AmdMidPostInit_Callback Callback`s
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdUpdateApicInterruptMapping_Page "PHCB_AmdUpdateApicInterruptMapping"</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdAllocateBuffer_Page "PHCB_AmdAllocateBuffer "</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdGetExclusionTable_Page "PHCB_AmdGetExclusionTable "</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdReportEvent_Page "PHCB_AmdReportEvent"</TD></TR>
- * </TABLE>
- * @subsection PH_AmdMidPostInit_Initializer Initializer
- * @par
- * PH_AmdEarlyPostInit/PH_AmdMidPostInit/PH_AmdLatePostInit/PH_AmdS3Init must use same copy of AMD_NB_CONFIG_BLOCK structure.
- * @subsection PH_AmdMidPostInit_Data Configuration Data.
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::StandardHeader </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * <TR><TD class="indexkey" width=380> NB_CONFIG::IommuBaseAddress </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * <TR><TD class="indexkey" width=380> NB_CONFIG::IoApicBaseAddress </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * </TABLE>
- *
- */
-#define PH_AmdMidPostInit 0x40
-/**
- * @page PH_AmdLatePostInit_Page PH_AmdLatePostInit
- * @section PH_AmdLatePostInit PH_AmdLatePostInit Interface Call
- * Initialize misc Northbridge feature at Late Post.
- * @subsection PH_AmdLatePostInit_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(ImageEntryPtr)(AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_AmdLatePostInit_Callback Callback`s
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdReportEvent_Page "PHCB_AmdReportEvent"</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdPcieAsmpInfo "PHCB_AmdPcieAsmpInfo"</TD></TR>
- * </TABLE>
- * @subsection PH_AmdLatePostInit_Initializer Initializer
- * @par
- * PH_AmdEarlyPostInit/PH_AmdMidPostInit/PH_AmdLatePostInit/PH_AmdS3Init must use same copy of AMD_NB_CONFIG_BLOCK structure.
- * @subsection PH_AmdLatePostInit_Data Configuration Data.
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::StandardHeader</TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * </TABLE>
- *
- */
-#define PH_AmdLatePostInit 0x50
-
- /**
- * @page PH_AmdPcieEarlyInit_Page PH_AmdPcieEarlyInit
- * @section PH_AmdPcieEarlyInit PH_AmdPcieEarlyInit Interface Call
- * Init PCI Express Subsystem. Train link on all enabled Ports. Initialize hotplug.
- * @subsection PH_AmdPcieEarlyInit_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(ImageEntryPtr)(AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_AmdPcieEarlyInit_Callback Callback`s
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdPortTrainingCompleted_Page "PHCB_AmdPortTrainingCompleted"</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdPortResetSupported_Page "PHCB_AmdPortResetSupported"</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdPortResetAssert_Page "PHCB_AmdPortResetAssert"</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdPortResetDeassert_Page "PHCB_AmdPortResetDeassert"</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdReportEvent_Page "PHCB_AmdReportEvent"</TD></TR>
- * </TABLE>
- * @subsection PH_AmdPcieEarlyInit_Initializer Initializer
- * @par
- * Required.
- * @subsection PH_AmdPcieEarlyInit_Data Configuration Data.
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::StandardHeader </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::NumberOfNorthbridges </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::NbPciAddress </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG::pPcieConfig </TD><TD class="indexvalue"><B>Required</B></TD></TR>
- * </TABLE>
- *
- */
-#define PH_AmdPcieEarlyInit 0x20
-/**
- * @page PH_AmdS3Init_Page PH_AmdS3Init
- * @section PH_AmdS3Init PH_AmdS3Init Interface Call
- * Init misc. feature PCI Express Subsystem. Enable power management feature. Power off unused lanes/PLL etc.
- * @subsection PH_AmdPcieLateInit_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(ImageEntryPtr)(AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_AmdS3Init_Callback Callback`s
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdUpdateApicInterruptMapping_Page "PHCB_AmdUpdateApicInterruptMapping"</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdReportEvent_Page "PHCB_AmdReportEvent"</TD></TR>
- * <TR><TD class="indexkey" width=380> @ref PHCB_AmdPcieAsmpInfo "PHCB_AmdPcieAsmpInfo"</TD></TR>
- * </TABLE>
- * @subsection PH_AmdS3Init_Initializer Initializer
- * @par
- * PH_AmdEarlyPostInit/PH_AmdMidPostInit/PH_AmdLatePostInit/PH_AmdS3Init must use same copy of AMD_NB_CONFIG_BLOCK structure.
- * @subsection PH_AmdS3Init_Data Configuration Data.
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=380> AMD_NB_CONFIG_BLOCK::StandardHeader </TD><TD class="indexvalue"><B>Required </B></TD></TR>
- * </TABLE>
- *
- */
-#define PH_AmdS3Init 0x60
-
-/*
- Secondary level interface function
-*/
-#define PH_AmdPcieS3Init 0x61
-#define PH_AmdNbS3Init 0x62
-#define PH_AmdPcieLateInit 0x51
-#define PH_AmdNbLateInit 0x52
-
-/**
- *This function PH_AmdPcieValidatePortState must be called
- * after the PH_AmdPcieEarlyInit and before PH_AmdLatePostInit
- */
-#define PH_AmdPcieValidatePortState 0x70
-
-
-/**
- * @page PHCB_AmdPortTrainingCompleted_Page PHCB_AmdPortTrainingCompleted
- * @section PHCB_AmdPortTrainingCompleted PHCB_AmdPortTrainingCompleted Callback
- * PCIE Port Initialization Completed endpoint detected.
- * @subsection PHCB_AmdPortTrainingCompleted_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, UINTN PortId, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PH_AmdS3Init_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8000</TD></TR>
- * <TR><TD class="indexkey" width=160>PortId</TD><TD class="indexvalue" width=500>PCI Express Port Id</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdPortTrainingCompleted_Retrun Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_ERROR</TD><TD class="indexvalue" width=500>Disable Port</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdPortTrainingCompleted 0x8000
-/**
- * @page PHCB_AmdPortResetDeassert_Page PHCB_AmdPortResetDeassert
- * @section PHCB_AmdPortResetDeassert PHCB_AmdPortResetDeassert Callback
- * Deassert reset for device or slot connected to PCIE Port.
- * @subsection PHCB_AmdPortResetDeassert_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, UINTN PortIdBitMap, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdPortTrainingCompleted_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500> 0x8001</TD></TR>
- * <TR><TD class="indexkey" width=160>PortId</TD><TD class="indexvalue" width=500>bitmap of port id to deassert reset (0x4 - PortId 2, 0x8 PortId 3, ...)</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdPortTrainingCompleted_Retrun Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Reset successfully deasserted</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdPortResetDeassert 0x8001
-/**
- * @page PHCB_AmdPortResetAssert_Page PHCB_AmdPortResetAssert
- * @section PHCB_AmdPortResetAssert PHCB_AmdPortResetAssert Callback
- * Assert reset for device connected to PCIE Port.
- * @subsection PHCB_AmdPortResetDeassert_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, UINTN PortIdBitMap, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdPortResetAssert_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8002</TD></TR>
- * <TR><TD class="indexkey" width=160>PortIdBitMap</TD><TD class="indexvalue" width=500>Bitmap of port id to assert reset (0x4 - PortId 2, 0x8 PortId 3, ...)</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdPortResetAssert_Retrun Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Reset successfully asserted</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdPortResetAssert 0x8002
-/**
- * @page PHCB_AmdPortResetSupported_Page PHCB_AmdPortResetSupported
- * @section PHCB_AmdPortResetSupported PHCB_AmdPortResetSupported Callback
- * Test if controllable reset logic present for PCIE Port.
- * @subsection PHCB_AmdPortResetSupported_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, UINTN PortId, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdPortResetSupported_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8003</TD></TR>
- * <TR><TD class="indexkey" width=160>PortId</TD><TD class="indexvalue" width=500> Port ID to check GPIO controlled reset logic present for slot or endpoint connected to this port</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdPortResetSupported_Retrun Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Slot/Device connected to port has GPIO controlled reset logic</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdPortResetSupported 0x8003
-
-
-/**
- * @page PHCB_AmdGeneratePciReset_Page PHCB_AmdGeneratePciReset
- * @section PHCB_AmdPortResetSupported PHCB_AmdGeneratePciReset Callback
- * Request PCI reset generation.
- * @subsection PHCB_AmdGeneratePciReset_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, UINTN ResetType, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdGeneratePciReset_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8004</TD></TR>
- * <TR><TD class="indexkey" width=160>PortId</TD><TD class="indexvalue" width=500> Reset type. 0x01 - Warm Reset, 0x02 - Cold Reset</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdGeneratePciReset_Retrun Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>"Any"</TD><TD class="indexvalue" width=500>CIMx will generate reset by writing port 0xCF9</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Debug feature to completely avoid reset generation</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdGeneratePciReset 0x8004
-
-/**
- * @page PHCB_AmdGetExclusionTable_Page PHCB_AmdGetExclusionTable
- * @section PHCB_AmdGetExclusionTable PHCB_AmdGetExclusionTable Callback
- * Return the IOMMU exclusion table related to the current configuration block
- * @subsection PHCB_AmdGetExclusionTable_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, IOMMU_EXCLUSIONTABLE *ExclusionTable, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdGetExclusionTable_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8005</TD></TR>
- * <TR><TD class="indexkey" width=160>ExclusionTable</TD><TD class="indexvalue" width=500>Pointer to IOMMU exclusion table</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdGetExclusionTable_Return Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Valid table returned</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdGetExclusionTable 0x8005
-
-/**
- * @page PHCB_AmdAllocateBuffer_Page PHCB_AmdAllocateBuffer
- * @section PHCB_AmdAllocateBuffer PHCB_AmdAllocateBuffer Callback
- * Return the address of a memory buffer (size in bytes).
- *
- * ACPI handles used:
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>'SRVI'</TD><TD class="indexvalue" width=500>IO virtualization table</TD></TR>
- * </TABLE>
- * @par
- * Usage: Buffer can be be allocated via PMM function 0 with handle and size specified in BufferParamsPtr, and
- * the address must be returned in BufferParamsPtr.
- * @par
- * <b>Important Note:</b> Allocation for ACPI table will be requested during AmdEarlyPostInit or AmdMidPostInit and must be linked to
- * ACPI table structure prior AmdLatePostInit interface call.
- * @subsection PHCB_AmdAllocateBuffer_Callin Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, NB_BUFFER_PARAMS *BufferParamPtr, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdAllocateBuffer_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8006</TD></TR>
- * <TR><TD class="indexkey" width=160>BufferParamPtr</TD><TD class="indexvalue" width=500>Pointer to buffer parameters</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdAllocateBuffer_Return Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Buffer returned</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdAllocateBuffer 0x8006
-
-/**
- * @page PHCB_AmdUpdateApicInterruptMapping_Page PHCB_AmdUpdateApicInterruptMapping
- * @section PHCB_AmdUpdateApicInterruptMapping PHCB_AmdUpdateApicInterruptMapping Callback
- * Provide pointer to default IOAPIC interrupt mapping table
- * @subsection PHCB_AmdUpdateApicInterruptMapping_Callin Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, APIC_DEVICE_INFO *pApicPortInfo, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdUpdateApicInterruptMapping_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8007</TD></TR>
- * <TR><TD class="indexkey" width=160>pApicPortInfo</TD><TD class="indexvalue" width=500>Pointer to array of structures containing default IO APIC interrupt mapping info. For default interrupt mapping info see \ref gDefaultApicDeviceInfoTable</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdUpdateApicInterruptMapping_Return Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Interrupt mapping configuration completed</TD></TR>
- * </TABLE>
- *
- */
-
-#define PHCB_AmdUpdateApicInterruptMapping 0x8007
-
-/**
- * @page PHCB_AmdFreeBuffer_Page PHCB_AmdFreeBuffer
- * @section PHCB_AmdFreeBuffer PHCB_AmdFreeBuffer Callback
- * Free a specific memory buffer by handle.
- *
- * ACPI handles used:
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>'SRVI'</TD><TD class="indexvalue" width=500>IO virtualization table</TD></TR>
- * </TABLE>
- * @par
- * <b>Important Note:</b> ACPI tables as listed above will not be explicitly freed and must be linked into the system ACPI table structure.
- *
- * @subsection PHCB_AmdFreeBuffer_Callin Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, NB_BUFFER_PARAMS *BufferParamPtr, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdFreeBuffer_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8008</TD></TR>
- * <TR><TD class="indexkey" width=160>BufferParamPtr</TD><TD class="indexvalue" width=500>Pointer to buffer parameters</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdFreeBuffer_Return Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Buffer freed</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdFreeBuffer 0x8008
-
-/**
- * @page PHCB_AmdLocateBuffer_Page PHCB_AmdLocateBuffer
- * @section PHCB_AmdLocateBuffer PHCB_AmdLocateBuffer Callback
- * Locate a specific memory buffer by handle (See also @ref PHCB_AmdAllocateBuffer_Page "PHCB_AmdAllocateBuffer").
- *
- * @subsection PHCB_AmdLocateBuffer_Callin Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, NB_BUFFER_PARAMS *BufferParamPtr, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdLocateBuffer_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8009</TD></TR>
- * <TR><TD class="indexkey" width=160>BufferParamPtr</TD><TD class="indexvalue" width=500>Pointer to buffer parameters</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdLocateBuffer_Return Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Buffer Located</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdLocateBuffer 0x8009
-
-/**
- * @page PHCB_AmdReportEvent_Page PHCB_AmdReportEvent
- * @section PHCB_AmdReportEvent PHCB_AmdReportEvent Callback
- * Report event to platform firmware
- * To exclude an entry, set the value of DeviceId to 0xFFFF
- *
- * @subsection PHCB_AmdReportEvent_Callin Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, AGESA_EVENT *Event, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdReportEvent_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160> CallBackId</TD><TD class="indexvalue" width=500>0x8010</TD></TR>
- * <TR><TD class="indexkey" width=160> Event</TD><TD class="indexvalue" width=500>pointer to event structure</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdReportEvent_Events Events
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160> Event Class</TD><TD class="indexkey">Event Info </TD><TD class="indexkey">Description</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_ERROR</TD><TD class="indexvalue">0x20010100</TD><TD class="indexvalue" >Hotplug controller firmware initialization fail</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_ERROR</TD><TD class="indexvalue">0x20010200</TD><TD class="indexvalue">Link training fail</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_ERROR</TD><TD class="indexvalue">0x20010300</TD><TD class="indexvalue">Incorrect PCIE Core COnfiguration requested</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_WARNING</TD><TD class="indexvalue">0x20010400</TD><TD class="indexvalue">Link width downgraded </TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_WARNING</TD><TD class="indexvalue">0x20010500</TD><TD class="indexvalue">Link speed forced to Gen1.</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_WARNING</TD><TD class="indexvalue">0x20010600</TD><TD class="indexvalue">VCO negotiation fail.</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_WARNING</TD><TD class="indexvalue">0x20010700</TD><TD class="indexvalue">Incorrect port device number remapping configuration</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_FATAL</TD><TD class="indexvalue">0x20000100</TD><TD class="indexvalue" >Invalid configuration structure</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_WARRNING</TD><TD class="indexvalue">0x20000200</TD><TD class="indexvalue">NB not present</TD></TR>
- * <TR><TD class="indexvalue" width=160> AGESA_ERROR</TD><TD class="indexvalue">0x20000300</TD><TD class="indexvalue">Can not locate ACPI table</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdReportEvent_Return Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>AGESA_UNSUPPORTED</TD><TD class="indexvalue" width=500>Callback not supported</TD></TR>
- * <TR><TD class="indexkey" width=160>AGESA_SUCCESS</TD><TD class="indexvalue" width=500>Event successfully logged</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdReportEvent 0x8010
-/**
- * @page PHCB_AmdPcieAsmpInfo_Page PHCB_AmdPcieAsmpInfo
- * @section PHCB_AmdPcieAsmpInfo PHCB_AmdPcieAsmpInfo Callback
- * Give platform chance to update PCIe link ASPM setting.
- * @subsection PHCB_AmdPcieAsmpInfo_CallIn Call Prototype
- * @par
- * AGESA_STATUS *(CallBackPtr)(UINT32 CallBackId, ASPM_LINK_INFO *AspmLinkInfoPtr, AMD_NB_CONFIG_BLOCK *ConfigPtr)
- * @subsection PHCB_AmdPcieAsmpInfo_Parameters Parameters
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>CallBackId</TD><TD class="indexvalue" width=500>0x8011</TD></TR>
- * <TR><TD class="indexkey" width=160>AspmLinkInfoPtr</TD><TD class="indexvalue" width=500> ASPM link info see ASPM_LINK_INFO for details.</TD></TR>
- * </TABLE>
- * @subsection PHCB_AmdPcieAsmpInfo_Retrun Return Value
- * @par
- * <TABLE border="0">
- * <TR><TD class="indexkey" width=160>"Any"</TD><TD class="indexvalue" width=500>CIMx will use content on ASPM_LINK_INFO to enable ASPM</TD></TR>
- * </TABLE>
- *
- */
-#define PHCB_AmdPcieAsmpInfo 0x8011
-
-
-#define CB_AmdSetNbPorConfig 0x9000
-#define CB_AmdSetHtConfig 0x9001
-#define CB_AmdSetPcieEarlyConfig 0x9002
-#define CB_AmdSetEarlyPostConfig 0x9003
-#define CB_AmdSetMidPostConfig 0x9004
-#define CB_AmdSetLatePostConfig 0x9005
-#define CB_AmdSetRecoveryConfig 0x9006
-
-#define ON 0x1
-#define OFF 0x0
-
-#define NB_RD890TV 0x00
-#define NB_RD780 0x01
-#define NB_RX780 0x02
-#define NB_SR5690 0x10
-#define NB_SR5670 0x15
-#define NB_SR5650 0x20
-#define NB_RD890 0x25
-#define NB_990FX 0x25 //990FX= RD890
-#define NB_990X 0x30 //990X= SR5650
-#define NB_970 0x35
-
-#define NB_UNKNOWN 0xff
-
-#define NB_REV_A11 0x00
-#define NB_REV_A12 0x02
-
-#define DEV3_CLUMPING 1
-#define DEV12_CLUMPING 2
-
-#define INITIALIZED_BY_INITIALIZER 0xAA
-
-#define CPU_FAMILY_NPT 0x00000000
-#define CPU_FAMILY_GH 0x00100000
-
-#define GET_NB_CONFIG_PTR(x) x->pNbConfig
-#define GET_HT_CONFIG_PTR(x) x->pHtConfig
-#define GET_PCIE_CONFIG_PTR(x) x->pPcieConfig
-#define GET_BLOCK_CONFIG_PTR(x) (*(x->ConfigPtr))
-#define NB_SBDFO pConfig->NbPciAddress.AddressValue
-
-#define ABCD 0
-#define BCDA 1
-#define CDAB 2
-#define DABC 3
-
-/// Platform Type
-typedef enum {
- DetectPlatform, ///< Autodetect platform type based on NB skew
- DesktopPlatform, ///< Desktop platform
- ServerPlatform ///< Server platform
-} PLATFORM_TYPE;
-
-/// APIC register info
-typedef struct {
- UINT8 EpRoutingOffset; ///< Ep routing offset
- UINT8 EpRoutingRegister; ///< Ep routing reg
- UINT8 RcRoutingOffset; ///< Rc routing offset
- UINT8 RcRoutingRegister; ///< Rc routing reg
-} APIC_REGISTER_INFO;
-
-
-#define PortInterruptPinMap(Pin, Port) (Pin << Port)
-
-#define HtPinMapOffset 0
-#define IommuPinMapOffset 8
-
-
-#define CIMX_MIN(x, y) (((x) > (y)) ? (y) : (x))
-#define CIMX_MAX(x, y) (((x) > (y)) ? (x) : (y))
-//#pragma pack(pop)
-
-#endif