Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}