AGESA_STATUS GfxMidInterfaceTN ( IN AMD_CONFIG_PARAMS *StdHeader ) { AGESA_STATUS Status; AGESA_STATUS AgesaStatus; GFX_PLATFORM_CONFIG *Gfx; IDS_HDT_CONSOLE (GNB_TRACE, "GfxMidInterfaceTN Enter\n"); AgesaStatus = AGESA_SUCCESS; Status = GfxLocateConfigData (StdHeader, &Gfx); ASSERT (Status == AGESA_SUCCESS); AGESA_STATUS_UPDATE (Status, AgesaStatus); if (Status == AGESA_FATAL) { GfxFmDisableController (StdHeader); } else { if (Gfx->UmaInfo.UmaMode != UMA_NONE) { Status = GfxEnableGmmAccess (Gfx); ASSERT (Status == AGESA_SUCCESS); AGESA_STATUS_UPDATE (Status, AgesaStatus); if (Status != AGESA_SUCCESS) { // Can not initialize GMM registers going to disable GFX controller IDS_HDT_CONSOLE (GNB_TRACE, " Fail to establish GMM access\n"); Gfx->UmaInfo.UmaMode = UMA_NONE; GfxFmDisableController (StdHeader); } else { Status = GfxGmcInitTN (Gfx); AGESA_STATUS_UPDATE (Status, AgesaStatus); Status = GfxSetBootUpVoltageTN (Gfx); AGESA_STATUS_UPDATE (Status, AgesaStatus); Status = GfxInitSsid (Gfx); AGESA_STATUS_UPDATE (Status, AgesaStatus); Status = GfxIntegratedEnumerateAudioConnectors (Gfx); AGESA_STATUS_UPDATE (Status, AgesaStatus); exec803 /* GfxAzWorkaroundTN */ (Gfx); } } } IDS_HDT_CONSOLE (GNB_TRACE, "GfxMidInterfaceTN Exit [0x%x]\n", AgesaStatus); return AgesaStatus; }
AGESA_STATUS GfxInitSview ( IN AMD_CONFIG_PARAMS *StdHeader ) { AGESA_STATUS Status; AGESA_STATUS AgesaStatus; GFX_PLATFORM_CONFIG *Gfx; UINT32 OriginalCmdReg; IDS_HDT_CONSOLE (GNB_TRACE, "GfxInitSview Enter\n"); AgesaStatus = AGESA_SUCCESS; Status = GfxLocateConfigData (StdHeader, &Gfx); AGESA_STATUS_UPDATE (Status, AgesaStatus); if (Status == AGESA_SUCCESS) { if (GfxLibIsControllerPresent (StdHeader)) { if (!GfxFmIsVbiosPosted (Gfx)) { GFX_VBIOS_IMAGE_INFO VbiosImageInfo; LibAmdMemCopy (&VbiosImageInfo.StdHeader, StdHeader, sizeof (AMD_CONFIG_PARAMS), StdHeader); VbiosImageInfo.ImagePtr = NULL; VbiosImageInfo.GfxPciAddress = Gfx->GfxPciAddress; VbiosImageInfo.Flags = GFX_VBIOS_IMAGE_FLAG_SPECIAL_POST; GnbLibPciRead (Gfx->GfxPciAddress.AddressValue | 0x4, AccessS3SaveWidth8, &OriginalCmdReg, StdHeader); GnbLibPciRMW (Gfx->GfxPciAddress.AddressValue | 0x4, AccessS3SaveWidth8, 0xff, BIT1 | BIT2 | BIT0, StdHeader); Status = AgesaGetVbiosImage (0, &VbiosImageInfo); if (Status == AGESA_SUCCESS && VbiosImageInfo.ImagePtr != NULL) { GfxLibCopyMemToFb (VbiosImageInfo.ImagePtr, 0, (*((UINT8*) VbiosImageInfo.ImagePtr + 2)) << 9, Gfx); } else { GfxFmDisableController (StdHeader); AgesaStatus = AGESA_ERROR; } GnbLibPciRMW (Gfx->GfxPciAddress.AddressValue | 0x4, AccessS3SaveWidth8, 0x00, OriginalCmdReg, StdHeader); } } } IDS_HDT_CONSOLE (GNB_TRACE, "GfxInitSview Exit [0x%x]\n", AgesaStatus); return AgesaStatus; }
AGESA_STATUS GfxMidInterfaceML ( IN AMD_CONFIG_PARAMS *StdHeader ) { AGESA_STATUS Status; AGESA_STATUS AgesaStatus; GFX_PLATFORM_CONFIG *Gfx; UINT8 AudioEPCount; GMMx5F50_STRUCT GMMx5F50; AMD_MID_PARAMS *MidParamsPtr; UINT8 MaxAudioEndpoints; IDS_HDT_CONSOLE (GNB_TRACE, "GfxMidInterfaceML Enter\n"); AgesaStatus = AGESA_SUCCESS; Status = GfxLocateConfigData (StdHeader, &Gfx); ASSERT (Status == AGESA_SUCCESS); AGESA_STATUS_UPDATE (Status, AgesaStatus); if (Status == AGESA_FATAL) { GfxFmDisableController (StdHeader); } else { if (Gfx->UmaInfo.UmaMode != UMA_NONE) { Status = GfxEnableGmmAccessV3 (Gfx); ASSERT (Status == AGESA_SUCCESS); AGESA_STATUS_UPDATE (Status, AgesaStatus); if (Status != AGESA_SUCCESS) { // Can not initialize GMM registers going to disable GFX controller IDS_HDT_CONSOLE (GNB_TRACE, " Fail to establish GMM access\n"); Gfx->UmaInfo.UmaMode = UMA_NONE; GfxFmDisableController (StdHeader); } else { MidParamsPtr = (AMD_MID_PARAMS *) StdHeader; MaxAudioEndpoints = MidParamsPtr->GnbMidConfiguration.MaxNumAudioEndpoints; Status = GfxGmcInitML (Gfx); AGESA_STATUS_UPDATE (Status, AgesaStatus); Status = GfxSamuInit (Gfx); AGESA_STATUS_UPDATE (Status, AgesaStatus); Status = GfxInitSsid (Gfx); AGESA_STATUS_UPDATE (Status, AgesaStatus); AudioEPCount = 0; Status = GfxIntAudioEPEnumV3 (Gfx, &AudioEPCount); AGESA_STATUS_UPDATE (Status, AgesaStatus); if (AudioEPCount > MaxAudioEndpoints) { AudioEPCount = MaxAudioEndpoints; } if (AudioEPCount > GnbBuildOptionsML.GnbCommonOptions.CfgGnbNumDisplayStreamPipes) { AudioEPCount = GnbBuildOptionsML.GnbCommonOptions.CfgGnbNumDisplayStreamPipes; } AudioEPCount = 7 - AudioEPCount; GnbRegisterReadML (GnbGetHandle (StdHeader), GMMx5F50_TYPE, GMMx5F50_ADDRESS, &GMMx5F50.Value, 0, StdHeader); GMMx5F50.Field.PORT_CONNECTIVITY = AudioEPCount; GMMx5F50.Field.PORT_CONNECTIVITY_OVERRIDE_ENABLE = 1; GnbRegisterWriteML (GnbGetHandle (StdHeader), GMMx5F50_TYPE, GMMx5F50_ADDRESS, &GMMx5F50.Value, GNB_REG_ACC_FLAG_S3SAVE, StdHeader); } } } IDS_HDT_CONSOLE (GNB_TRACE, "GfxMidInterfaceML Exit [0x%x]\n", AgesaStatus); return AgesaStatus; }