<p>Richard Spiegel has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28742">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vendorcode/amd/pi/00670F00/Lib: Remove folder<br><br>Now that the last dependency was resolved, remove AmdLib folder.<br><br>BUG=b:112525011<br>TEST=Build and boot grunt.<br><br>Change-Id: Ibd9a20bc358742520138b9b01f76d7fd2fac92ab<br>Signed-off-by: Richard Spiegel <richard.spiegel@silverbackltd.com><br>---<br>D src/vendorcode/amd/pi/00670F00/Lib/amdlib.c<br>D src/vendorcode/amd/pi/00670F00/Lib/amdlib.h<br>M src/vendorcode/amd/pi/00670F00/Proc/Fch/FchPlatform.h<br>3 files changed, 0 insertions(+), 776 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/42/28742/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/vendorcode/amd/pi/00670F00/Lib/amdlib.c b/src/vendorcode/amd/pi/00670F00/Lib/amdlib.c</span><br><span>deleted file mode 100644</span><br><span>index 8a4113f..0000000</span><br><span>--- a/src/vendorcode/amd/pi/00670F00/Lib/amdlib.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,573 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* $NoKeywords:$ */</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * @file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * AMD Library</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Contains interface to the AMD AGESA library</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @xrefitem bom "File Content Label" "Release Content"</span><br><span style="color: hsl(0, 100%, 40%);">- * @e project: AGESA</span><br><span style="color: hsl(0, 100%, 40%);">- * @e sub-project: Lib</span><br><span style="color: hsl(0, 100%, 40%);">- * @e \$Revision: 48409 $ @e \$Date: 2011-03-08 11:19:40 -0600 (Tue, 08 Mar 2011) $</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- ******************************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (c) 2008 - 2011, Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- * 2013 - 2014, Sage Electronic Engineering, LLC</span><br><span style="color: hsl(0, 100%, 40%);">- * All rights reserved.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Redistribution and use in source and binary forms, with or without</span><br><span style="color: hsl(0, 100%, 40%);">- * modification, are permitted provided that the following conditions are met:</span><br><span style="color: hsl(0, 100%, 40%);">- * * Redistributions of source code must retain the above copyright</span><br><span style="color: hsl(0, 100%, 40%);">- * notice, this list of conditions and the following disclaimer.</span><br><span style="color: hsl(0, 100%, 40%);">- * * Redistributions in binary form must reproduce the above copyright</span><br><span style="color: hsl(0, 100%, 40%);">- * notice, this list of conditions and the following disclaimer in the</span><br><span style="color: hsl(0, 100%, 40%);">- * documentation and/or other materials provided with the distribution.</span><br><span style="color: hsl(0, 100%, 40%);">- * * Neither the name of Advanced Micro Devices, Inc. nor the names of</span><br><span style="color: hsl(0, 100%, 40%);">- * its contributors may be used to endorse or promote products derived</span><br><span style="color: hsl(0, 100%, 40%);">- * from this software without specific prior written permission.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span><br><span style="color: hsl(0, 100%, 40%);">- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span><br><span style="color: hsl(0, 100%, 40%);">- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span><br><span style="color: hsl(0, 100%, 40%);">- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY</span><br><span style="color: hsl(0, 100%, 40%);">- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span><br><span style="color: hsl(0, 100%, 40%);">- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span><br><span style="color: hsl(0, 100%, 40%);">- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span><br><span style="color: hsl(0, 100%, 40%);">- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span><br><span style="color: hsl(0, 100%, 40%);">- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span><br><span style="color: hsl(0, 100%, 40%);">- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span><br><span style="color: hsl(0, 100%, 40%);">- ******************************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <AGESA.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <cpuRegisters.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include "amdlib.h"</span><br><span style="color: hsl(0, 100%, 40%);">-CODE_GROUP (G1_PEICC)</span><br><span style="color: hsl(0, 100%, 40%);">-RDATA_GROUP (G1_PEICC)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#if !defined(AMDLIB_OPTIMIZE)</span><br><span style="color: hsl(0, 100%, 40%);">- #define AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-#endif</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-BOOLEAN</span><br><span style="color: hsl(0, 100%, 40%);">-STATIC</span><br><span style="color: hsl(0, 100%, 40%);">-GetPciMmioAddress (</span><br><span style="color: hsl(0, 100%, 40%);">- OUT UINT64 *MmioAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT UINT32 *MmioSize,</span><br><span style="color: hsl(0, 100%, 40%);">- IN AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-CpuidRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 CpuidFcnAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT CPUID_DATA *Value</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-UINT8</span><br><span style="color: hsl(0, 100%, 40%);">-ReadNumberOfCpuCores(</span><br><span style="color: hsl(0, 100%, 40%);">- void</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-UINT8</span><br><span style="color: hsl(0, 100%, 40%);">-ReadIo8 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return __inbyte (Address);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-UINT16</span><br><span style="color: hsl(0, 100%, 40%);">-ReadIo16 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return __inword (Address);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-UINT32</span><br><span style="color: hsl(0, 100%, 40%);">-ReadIo32 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return __indword (Address);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-WriteIo8 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 Data</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- __outbyte (Address, Data);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-WriteIo16 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Data</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- __outword (Address, Data);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-WriteIo32 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 Data</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- __outdword (Address, Data);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-STATIC</span><br><span style="color: hsl(0, 100%, 40%);">-UINT64 SetFsBase (</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 address</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 hwcr;</span><br><span style="color: hsl(0, 100%, 40%);">- hwcr = __readmsr (0xC0010015);</span><br><span style="color: hsl(0, 100%, 40%);">- __writemsr (0xC0010015, hwcr | 1 << 17);</span><br><span style="color: hsl(0, 100%, 40%);">- __writemsr (0xC0000100, address);</span><br><span style="color: hsl(0, 100%, 40%);">- return hwcr;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-STATIC</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-RestoreHwcr (</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64</span><br><span style="color: hsl(0, 100%, 40%);">- value</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- __writemsr (0xC0010015, value);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-UINT8</span><br><span style="color: hsl(0, 100%, 40%);">-Read64Mem8 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 dataRead;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 hwcrSave;</span><br><span style="color: hsl(0, 100%, 40%);">- if ((Address >> 32) == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- return *(volatile UINT8 *) (UINTN) Address;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- hwcrSave = SetFsBase (Address);</span><br><span style="color: hsl(0, 100%, 40%);">- dataRead = __readfsbyte (0);</span><br><span style="color: hsl(0, 100%, 40%);">- RestoreHwcr (hwcrSave);</span><br><span style="color: hsl(0, 100%, 40%);">- return dataRead;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-UINT16</span><br><span style="color: hsl(0, 100%, 40%);">-Read64Mem16 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT16 dataRead;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 hwcrSave;</span><br><span style="color: hsl(0, 100%, 40%);">- if ((Address >> 32) == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- return *(volatile UINT16 *) (UINTN) Address;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- hwcrSave = SetFsBase (Address);</span><br><span style="color: hsl(0, 100%, 40%);">- dataRead = __readfsword (0);</span><br><span style="color: hsl(0, 100%, 40%);">- RestoreHwcr (hwcrSave);</span><br><span style="color: hsl(0, 100%, 40%);">- return dataRead;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-UINT32</span><br><span style="color: hsl(0, 100%, 40%);">-Read64Mem32 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT32 dataRead;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 hwcrSave;</span><br><span style="color: hsl(0, 100%, 40%);">- if ((Address >> 32) == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- return *(volatile UINT32 *) (UINTN) Address;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- hwcrSave = SetFsBase (Address);</span><br><span style="color: hsl(0, 100%, 40%);">- dataRead = __readfsdword (0);</span><br><span style="color: hsl(0, 100%, 40%);">- RestoreHwcr (hwcrSave);</span><br><span style="color: hsl(0, 100%, 40%);">- return dataRead;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-Write64Mem8 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 Data</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- if ((Address >> 32) == 0){</span><br><span style="color: hsl(0, 100%, 40%);">- *(volatile UINT8 *) (UINTN) Address = Data;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- else {</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 hwcrSave;</span><br><span style="color: hsl(0, 100%, 40%);">- hwcrSave = SetFsBase (Address);</span><br><span style="color: hsl(0, 100%, 40%);">- __writefsbyte (0, Data);</span><br><span style="color: hsl(0, 100%, 40%);">- RestoreHwcr (hwcrSave);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-Write64Mem16 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Data</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- if ((Address >> 32) == 0){</span><br><span style="color: hsl(0, 100%, 40%);">- *(volatile UINT16 *) (UINTN) Address = Data;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- else {</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 hwcrSave;</span><br><span style="color: hsl(0, 100%, 40%);">- hwcrSave = SetFsBase (Address);</span><br><span style="color: hsl(0, 100%, 40%);">- __writefsword (0, Data);</span><br><span style="color: hsl(0, 100%, 40%);">- RestoreHwcr (hwcrSave);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-Write64Mem32 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 Data</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- if ((Address >> 32) == 0){</span><br><span style="color: hsl(0, 100%, 40%);">- *(volatile UINT32 *) (UINTN) Address = Data;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- else {</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 hwcrSave;</span><br><span style="color: hsl(0, 100%, 40%);">- hwcrSave = SetFsBase (Address);</span><br><span style="color: hsl(0, 100%, 40%);">- __writefsdword (0, Data);</span><br><span style="color: hsl(0, 100%, 40%);">- RestoreHwcr (hwcrSave);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdMsrRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 MsrAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT UINT64 *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *ConfigPtr</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- *Value = __readmsr (MsrAddress);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-AMDLIB_OPTIMIZE</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdMsrWrite (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 MsrAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *ConfigPtr</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- __writemsr (MsrAddress, *Value);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*---------------------------------------------------------------------------------------*/</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Read IO port</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] AccessWidth Access width</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] IoAddress IO port address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] Value Pointer to save data</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader Standard configuration header</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdIoRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 IoAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- switch (AccessWidth) {</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth8:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth8:</span><br><span style="color: hsl(0, 100%, 40%);">- *(UINT8 *) Value = ReadIo8 (IoAddress);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth16:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth16:</span><br><span style="color: hsl(0, 100%, 40%);">- *(UINT16 *) Value = ReadIo16 (IoAddress);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth32:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth32:</span><br><span style="color: hsl(0, 100%, 40%);">- *(UINT32 *) Value = ReadIo32 (IoAddress);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- default:</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT (FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*---------------------------------------------------------------------------------------*/</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Write IO port</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] AccessWidth Access width</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] IoAddress IO port address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] Value Pointer to data</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader Standard configuration header</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdIoWrite (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 IoAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- IN CONST VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- switch (AccessWidth) {</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth8:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth8:</span><br><span style="color: hsl(0, 100%, 40%);">- WriteIo8 (IoAddress, *(UINT8 *) Value);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth16:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth16:</span><br><span style="color: hsl(0, 100%, 40%);">- WriteIo16 (IoAddress, *(UINT16 *) Value);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth32:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth32:</span><br><span style="color: hsl(0, 100%, 40%);">- WriteIo32 (IoAddress, *(UINT32 *) Value);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- default:</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT (FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*---------------------------------------------------------------------------------------*/</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Read memory/MMIO</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] AccessWidth Access width</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] MemAddress Memory address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] Value Pointer to data</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader Standard configuration header</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdMemRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 MemAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- switch (AccessWidth) {</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth8:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth8:</span><br><span style="color: hsl(0, 100%, 40%);">- *(UINT8 *) Value = Read64Mem8 (MemAddress);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth16:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth16:</span><br><span style="color: hsl(0, 100%, 40%);">- *(UINT16 *) Value = Read64Mem16 (MemAddress);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth32:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth32:</span><br><span style="color: hsl(0, 100%, 40%);">- *(UINT32 *) Value = Read64Mem32 (MemAddress);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- default:</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT (FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*---------------------------------------------------------------------------------------*/</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Write memory/MMIO</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] AccessWidth Access width</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] MemAddress Memory address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] Value Pointer to data</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader Standard configuration header</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdMemWrite (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 MemAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- IN CONST VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- switch (AccessWidth) {</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth8:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth8:</span><br><span style="color: hsl(0, 100%, 40%);">- Write64Mem8 (MemAddress, *((UINT8 *) Value));</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth16:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth16:</span><br><span style="color: hsl(0, 100%, 40%);">- Write64Mem16 (MemAddress, *((UINT16 *) Value));</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessWidth32:</span><br><span style="color: hsl(0, 100%, 40%);">- case AccessS3SaveWidth32:</span><br><span style="color: hsl(0, 100%, 40%);">- Write64Mem32 (MemAddress, *((UINT32 *) Value));</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- default:</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT (FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*---------------------------------------------------------------------------------------*/</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Read PCI config space</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] AccessWidth Access width</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] PciAddress Pci address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] Value Pointer to data</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader Standard configuration header</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdPciRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN PCI_ADDR PciAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT32 LegacyPciAccess;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT32 MMIOSize;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 RMWrite;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 RMWritePrevious;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 MMIOAddress;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT (PciAddress.AddressValue != ILLEGAL_SBDFO);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!GetPciMmioAddress (&MMIOAddress, &MMIOSize, NULL)) {</span><br><span style="color: hsl(0, 100%, 40%);">- // We need to convert our "portable" PCI address into a "real" PCI access</span><br><span style="color: hsl(0, 100%, 40%);">- LegacyPciAccess = ((1 << 31) + (PciAddress.Address.Register & 0xFC) + (PciAddress.Address.Function << 8) + (PciAddress.Address.Device << 11) + (PciAddress.Address.Bus << 16) + ((PciAddress.Address.Register & 0xF00) << (24 - 8)));</span><br><span style="color: hsl(0, 100%, 40%);">- if (PciAddress.Address.Register <= 0xFF) {</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth32, IOCF8, &LegacyPciAccess, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoRead (AccessWidth, IOCFC + (UINT16) (PciAddress.Address.Register & 0x3), Value, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMsrRead (NB_CFG, &RMWritePrevious, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- RMWrite = RMWritePrevious | 0x0000400000000000;</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMsrWrite (NB_CFG, &RMWrite, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth32, IOCF8, &LegacyPciAccess, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoRead (AccessWidth, IOCFC + (UINT16) (PciAddress.Address.Register & 0x3), Value, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMsrWrite (NB_CFG, &RMWritePrevious, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- //IDS_HDT_CONSOLE (LIB_PCI_RD, "~PCI RD %08x = %08x\n", LegacyPciAccess, *(UINT32 *)Value);</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">- // Setup the MMIO address</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT ((MMIOAddress + MMIOSize) > (MMIOAddress + (PciAddress.AddressValue & 0x0FFFFFFF)));</span><br><span style="color: hsl(0, 100%, 40%);">- MMIOAddress += (PciAddress.AddressValue & 0x0FFFFFFF);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMemRead (AccessWidth, MMIOAddress, Value, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- //IDS_HDT_CONSOLE (LIB_PCI_RD, "~MMIO RD %08x = %08x\n", (UINT32) MMIOAddress, *(UINT32 *)Value);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*---------------------------------------------------------------------------------------*/</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Write PCI config space</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] AccessWidth Access width</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] PciAddress Pci address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] Value Pointer to data</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader Standard configuration header</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdPciWrite (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN PCI_ADDR PciAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- IN CONST VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- UINT32 LegacyPciAccess;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT32 MMIOSize;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 RMWrite;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 RMWritePrevious;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 MMIOAddress;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT (PciAddress.AddressValue != ILLEGAL_SBDFO);</span><br><span style="color: hsl(0, 100%, 40%);">- if (!GetPciMmioAddress (&MMIOAddress, &MMIOSize, NULL)) {</span><br><span style="color: hsl(0, 100%, 40%);">- // We need to convert our "portable" PCI address into a "real" PCI access</span><br><span style="color: hsl(0, 100%, 40%);">- LegacyPciAccess = ((1 << 31) + (PciAddress.Address.Register & 0xFC) + (PciAddress.Address.Function << 8) + (PciAddress.Address.Device << 11) + (PciAddress.Address.Bus << 16) + ((PciAddress.Address.Register & 0xF00) << (24 - 8)));</span><br><span style="color: hsl(0, 100%, 40%);">- if (PciAddress.Address.Register <= 0xFF) {</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth32, IOCF8, &LegacyPciAccess, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth, IOCFC + (UINT16) (PciAddress.Address.Register & 0x3), Value, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMsrRead (NB_CFG, &RMWritePrevious, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- RMWrite = RMWritePrevious | 0x0000400000000000;</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMsrWrite (NB_CFG, &RMWrite, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth32, IOCF8, &LegacyPciAccess, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdIoWrite (AccessWidth, IOCFC + (UINT16) (PciAddress.Address.Register & 0x3), Value, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMsrWrite (NB_CFG, &RMWritePrevious, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- //IDS_HDT_CONSOLE (LIB_PCI_WR, "~PCI WR %08x = %08x\n", LegacyPciAccess, *(UINT32 *)Value);</span><br><span style="color: hsl(0, 100%, 40%);">- //printk(BIOS_DEBUG, "~PCI WR %08x = %08x\n", LegacyPciAccess, *(UINT32 *)Value);</span><br><span style="color: hsl(0, 100%, 40%);">- //printk(BIOS_DEBUG, "LibAmdPciWrite\n");</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">- // Setup the MMIO address</span><br><span style="color: hsl(0, 100%, 40%);">- ASSERT ((MMIOAddress + MMIOSize) > (MMIOAddress + (PciAddress.AddressValue & 0x0FFFFFFF)));</span><br><span style="color: hsl(0, 100%, 40%);">- MMIOAddress += (PciAddress.AddressValue & 0x0FFFFFFF);</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMemWrite (AccessWidth, MMIOAddress, Value, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- //IDS_HDT_CONSOLE (LIB_PCI_WR, "~MMIO WR %08x = %08x\n", (UINT32) MMIOAddress, *(UINT32 *)Value);</span><br><span style="color: hsl(0, 100%, 40%);">- //printk(BIOS_DEBUG, "~MMIO WR %08x = %08x\n", (UINT32) MMIOAddress, *(UINT32 *)Value);</span><br><span style="color: hsl(0, 100%, 40%);">- //printk(BIOS_DEBUG, "LibAmdPciWrite mmio\n");</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/*---------------------------------------------------------------------------------------*/</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * Get MMIO base address for PCI accesses</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[out] MmioAddress PCI MMIO base address</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[out] MmioSize Size of region in bytes</span><br><span style="color: hsl(0, 100%, 40%);">- * @param[in] StdHeader Standard configuration header</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @retval TRUE MmioAddress/MmioSize are valid</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-BOOLEAN</span><br><span style="color: hsl(0, 100%, 40%);">-STATIC</span><br><span style="color: hsl(0, 100%, 40%);">-GetPciMmioAddress (</span><br><span style="color: hsl(0, 100%, 40%);">- OUT UINT64 *MmioAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT UINT32 *MmioSize,</span><br><span style="color: hsl(0, 100%, 40%);">- IN AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- )</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- BOOLEAN MmioIsEnabled;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT32 EncodedSize;</span><br><span style="color: hsl(0, 100%, 40%);">- UINT64 LocalMsrRegister;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- MmioIsEnabled = FALSE;</span><br><span style="color: hsl(0, 100%, 40%);">- LibAmdMsrRead (MSR_MMIO_Cfg_Base, &LocalMsrRegister, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">- if ((LocalMsrRegister & BIT0) != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- *MmioAddress = LocalMsrRegister & 0xFFFFFFFFFFF00000;</span><br><span style="color: hsl(0, 100%, 40%);">- EncodedSize = (UINT32) ((LocalMsrRegister & 0x3C) >> 2);</span><br><span style="color: hsl(0, 100%, 40%);">- *MmioSize = ((1 << EncodedSize) * 0x100000);</span><br><span style="color: hsl(0, 100%, 40%);">- MmioIsEnabled = TRUE;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- return MmioIsEnabled;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/vendorcode/amd/pi/00670F00/Lib/amdlib.h b/src/vendorcode/amd/pi/00670F00/Lib/amdlib.h</span><br><span>deleted file mode 100644</span><br><span>index fc97213..0000000</span><br><span>--- a/src/vendorcode/amd/pi/00670F00/Lib/amdlib.h</span><br><span>+++ /dev/null</span><br><span>@@ -1,202 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/* $NoKeywords:$ */</span><br><span style="color: hsl(0, 100%, 40%);">-/**</span><br><span style="color: hsl(0, 100%, 40%);">- * @file</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * AMD Library</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Contains interface to the AMD AGESA library</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * @xrefitem bom "File Content Label" "Release Content"</span><br><span style="color: hsl(0, 100%, 40%);">- * @e project: AGESA</span><br><span style="color: hsl(0, 100%, 40%);">- * @e sub-project: Lib</span><br><span style="color: hsl(0, 100%, 40%);">- * @e \$Revision: 85030 $ @e \$Date: 2012-12-26 00:20:10 -0600 (Wed, 26 Dec 2012) $</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- ******************************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (c) 2008 - 2013, Advanced Micro Devices, Inc.</span><br><span style="color: hsl(0, 100%, 40%);">- * 2013 - 2014, Sage Electronic Engineering, LLC</span><br><span style="color: hsl(0, 100%, 40%);">- * All rights reserved.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Redistribution and use in source and binary forms, with or without</span><br><span style="color: hsl(0, 100%, 40%);">- * modification, are permitted provided that the following conditions are met:</span><br><span style="color: hsl(0, 100%, 40%);">- * * Redistributions of source code must retain the above copyright</span><br><span style="color: hsl(0, 100%, 40%);">- * notice, this list of conditions and the following disclaimer.</span><br><span style="color: hsl(0, 100%, 40%);">- * * Redistributions in binary form must reproduce the above copyright</span><br><span style="color: hsl(0, 100%, 40%);">- * notice, this list of conditions and the following disclaimer in the</span><br><span style="color: hsl(0, 100%, 40%);">- * documentation and/or other materials provided with the distribution.</span><br><span style="color: hsl(0, 100%, 40%);">- * * Neither the name of Advanced Micro Devices, Inc. nor the names of</span><br><span style="color: hsl(0, 100%, 40%);">- * its contributors may be used to endorse or promote products derived</span><br><span style="color: hsl(0, 100%, 40%);">- * from this software without specific prior written permission.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND</span><br><span style="color: hsl(0, 100%, 40%);">- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span><br><span style="color: hsl(0, 100%, 40%);">- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span><br><span style="color: hsl(0, 100%, 40%);">- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY</span><br><span style="color: hsl(0, 100%, 40%);">- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span><br><span style="color: hsl(0, 100%, 40%);">- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span><br><span style="color: hsl(0, 100%, 40%);">- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span><br><span style="color: hsl(0, 100%, 40%);">- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span><br><span style="color: hsl(0, 100%, 40%);">- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span><br><span style="color: hsl(0, 100%, 40%);">- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span><br><span style="color: hsl(0, 100%, 40%);">- ******************************************************************************</span><br><span style="color: hsl(0, 100%, 40%);">- **/</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#ifndef _AMD_LIB_H_</span><br><span style="color: hsl(0, 100%, 40%);">-#define _AMD_LIB_H_</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <agesa_headers.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define IOCF8 0xCF8</span><br><span style="color: hsl(0, 100%, 40%);">-#define IOCFC 0xCFC</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-// Reg Values for ReadCpuReg and WriteCpuReg</span><br><span style="color: hsl(0, 100%, 40%);">-#define CR4_REG 0x04</span><br><span style="color: hsl(0, 100%, 40%);">-#define DR0_REG 0x10</span><br><span style="color: hsl(0, 100%, 40%);">-#define DR1_REG 0x11</span><br><span style="color: hsl(0, 100%, 40%);">-#define DR2_REG 0x12</span><br><span style="color: hsl(0, 100%, 40%);">-#define DR3_REG 0x13</span><br><span style="color: hsl(0, 100%, 40%);">-#define DR7_REG 0x17</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-// PROTOTYPES FOR amdlib32.asm</span><br><span style="color: hsl(0, 100%, 40%);">-UINT8</span><br><span style="color: hsl(0, 100%, 40%);">-ReadIo8 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-UINT16</span><br><span style="color: hsl(0, 100%, 40%);">-ReadIo16 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-UINT32</span><br><span style="color: hsl(0, 100%, 40%);">-ReadIo32 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-WriteIo8 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 Data</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-WriteIo16 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Data</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-WriteIo32 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 Data</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-UINT8</span><br><span style="color: hsl(0, 100%, 40%);">-Read64Mem8 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-UINT16</span><br><span style="color: hsl(0, 100%, 40%);">-Read64Mem16 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-UINT32</span><br><span style="color: hsl(0, 100%, 40%);">-Read64Mem32 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-Write64Mem8 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT8 Data</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-Write64Mem16 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 Data</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-Write64Mem32 (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 Address,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 Data</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-// MSR</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdMsrRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 MsrAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT UINT64 *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdMsrWrite (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 MsrAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-// IO</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdIoRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 IoAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdIoWrite (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT16 IoAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- IN CONST VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-// Memory or MMIO</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdMemRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 MemAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdMemWrite (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT64 MemAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- IN CONST VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-// PCI</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdPciRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN PCI_ADDR PciAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdPciWrite (</span><br><span style="color: hsl(0, 100%, 40%);">- IN ACCESS_WIDTH AccessWidth,</span><br><span style="color: hsl(0, 100%, 40%);">- IN PCI_ADDR PciAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- IN CONST VOID *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-// CPUID</span><br><span style="color: hsl(0, 100%, 40%);">-VOID</span><br><span style="color: hsl(0, 100%, 40%);">-LibAmdCpuidRead (</span><br><span style="color: hsl(0, 100%, 40%);">- IN UINT32 CpuidFcnAddress,</span><br><span style="color: hsl(0, 100%, 40%);">- OUT CPUID_DATA *Value,</span><br><span style="color: hsl(0, 100%, 40%);">- IN OUT AMD_CONFIG_PARAMS *StdHeader</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-#endif // _AMD_LIB_H_</span><br><span>diff --git a/src/vendorcode/amd/pi/00670F00/Proc/Fch/FchPlatform.h b/src/vendorcode/amd/pi/00670F00/Proc/Fch/FchPlatform.h</span><br><span>index 118473c..2d5de64 100644</span><br><span>--- a/src/vendorcode/amd/pi/00670F00/Proc/Fch/FchPlatform.h</span><br><span>+++ b/src/vendorcode/amd/pi/00670F00/Proc/Fch/FchPlatform.h</span><br><span>@@ -108,7 +108,6 @@</span><br><span> #endif</span><br><span> </span><br><span> #include "Fch.h"</span><br><span style="color: hsl(0, 100%, 40%);">-#include "amdlib.h"</span><br><span> #include "FchCommonCfg.h"</span><br><span> #include "AmdFch.h"</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28742">change 28742</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/28742"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ibd9a20bc358742520138b9b01f76d7fd2fac92ab </div>
<div style="display:none"> Gerrit-Change-Number: 28742 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Richard Spiegel <richard.spiegel@silverbackltd.com> </div>