/** * Copy memory content to FB * * * @param[in] SystemInfoTableV3Ptr Pointer to integrated info table * @param[in] Gfx Pointer to global GFX configuration * */ VOID GfxIntInfoTablePostToFbV3 ( IN ATOM_FUSION_SYSTEM_INFO_V3 *SystemInfoTableV3Ptr, IN GFX_PLATFORM_CONFIG *Gfx ) { UINT32 Index; UINT32 TableOffset; UINT32 FbAddress; TableOffset = (UINT32) (Gfx->UmaInfo.UmaSize - sizeof (ATOM_FUSION_SYSTEM_INFO_V3)) | 0x80000000; for (Index = 0; Index < sizeof (ATOM_FUSION_SYSTEM_INFO_V3); Index = Index + 4 ) { FbAddress = TableOffset + Index; GnbLibMemWrite (Gfx->GmmBase + GMMx00_ADDRESS, AccessWidth32, &FbAddress, GnbLibGetHeader (Gfx)); GnbLibMemWrite (Gfx->GmmBase + GMMx04_ADDRESS, AccessWidth32, (UINT8*) SystemInfoTableV3Ptr + Index, GnbLibGetHeader (Gfx)); } }
VOID exec803 /* GfxAzWorkaroundTN */ ( IN GFX_PLATFORM_CONFIG *Gfx ) { UINT32 i; UINT32 Address; UINT32 Data; Data = 0x156; for (i = 0; i < 6; i++) { Address = 0x5E00 + (i * 0x18); GnbLibMemWrite (Gfx->GmmBase + Address, AccessS3SaveWidth32, &Data, GnbLibGetHeader (Gfx)); GnbLibMemRMW (Gfx->GmmBase + Address + 4, AccessS3SaveWidth32, 0xFFFFFF00, 0xF0, GnbLibGetHeader (Gfx)); } return; }