AGESA fam14: Add amd_initenv()
Not part of wrapper to AGESA, but workaround for enable_resources(). Also remove remains of comments in non-fam14 wrappers. Change-Id: I2526821ca283feb6a506b602b86f817f8b03b341 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/7816 Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
This commit is contained in:
@@ -97,3 +97,83 @@ void amd_initmmio(void)
|
||||
PciData = (AMD_APU_SSID << 0x10) | AMD_APU_SVID;
|
||||
LibAmdPciWrite(AccessWidth32, PciAddress, &PciData, &StdHeader);
|
||||
}
|
||||
|
||||
void amd_initenv(void)
|
||||
{
|
||||
AMD_INTERFACE_PARAMS AmdParamStruct;
|
||||
PCI_ADDR PciAddress;
|
||||
UINT32 PciValue;
|
||||
|
||||
/* Initialize Subordinate Bus Number and Secondary Bus Number
|
||||
* In platform BIOS this address is allocated by PCI enumeration code
|
||||
Modify D1F0x18
|
||||
*/
|
||||
PciAddress.Address.Bus = 0;
|
||||
PciAddress.Address.Device = 1;
|
||||
PciAddress.Address.Function = 0;
|
||||
PciAddress.Address.Register = 0x18;
|
||||
/* Write to D1F0x18 */
|
||||
LibAmdPciRead(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
PciValue |= 0x00010100;
|
||||
LibAmdPciWrite(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
|
||||
/* Initialize GMM Base Address for Legacy Bridge Mode
|
||||
* Modify B1D5F0x18
|
||||
*/
|
||||
PciAddress.Address.Bus = 1;
|
||||
PciAddress.Address.Device = 5;
|
||||
PciAddress.Address.Function = 0;
|
||||
PciAddress.Address.Register = 0x18;
|
||||
|
||||
LibAmdPciRead(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
PciValue |= 0x96000000;
|
||||
LibAmdPciWrite(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
|
||||
/* Initialize FB Base Address for Legacy Bridge Mode
|
||||
* Modify B1D5F0x10
|
||||
*/
|
||||
PciAddress.Address.Register = 0x10;
|
||||
LibAmdPciRead(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
PciValue |= 0x80000000;
|
||||
LibAmdPciWrite(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
|
||||
/* Initialize GMM Base Address for Pcie Mode
|
||||
* Modify B0D1F0x18
|
||||
*/
|
||||
PciAddress.Address.Bus = 0;
|
||||
PciAddress.Address.Device = 1;
|
||||
PciAddress.Address.Function = 0;
|
||||
PciAddress.Address.Register = 0x18;
|
||||
|
||||
LibAmdPciRead(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
PciValue |= 0x96000000;
|
||||
LibAmdPciWrite(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
|
||||
/* Initialize FB Base Address for Pcie Mode
|
||||
* Modify B0D1F0x10
|
||||
*/
|
||||
PciAddress.Address.Register = 0x10;
|
||||
LibAmdPciRead(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
PciValue |= 0x80000000;
|
||||
LibAmdPciWrite(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
|
||||
/* Initialize MMIO Base and Limit Address
|
||||
* Modify B0D1F0x20
|
||||
*/
|
||||
PciAddress.Address.Bus = 0;
|
||||
PciAddress.Address.Device = 1;
|
||||
PciAddress.Address.Function = 0;
|
||||
PciAddress.Address.Register = 0x20;
|
||||
|
||||
LibAmdPciRead(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
PciValue |= 0x96009600;
|
||||
LibAmdPciWrite(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
|
||||
/* Initialize MMIO Prefetchable Memory Limit and Base
|
||||
* Modify B0D1F0x24
|
||||
*/
|
||||
PciAddress.Address.Register = 0x24;
|
||||
LibAmdPciRead(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
PciValue |= 0x8FF18001;
|
||||
LibAmdPciWrite(AccessWidth32, PciAddress, &PciValue, &AmdParamStruct.StdHeader);
|
||||
}
|
||||
|
Reference in New Issue
Block a user