/* * This file is part of the coreboot project. * * Copyright (C) 2007 Advanced Micro Devices, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ static const u8 Tab_GRCLKDis[] = { 8,0,8,8,0,0,8,0 }; u32 mct_AdjustMemClkDis_GR(struct DCTStatStruc *pDCTstat, u32 dct, u32 DramTimingLo) { /* Greayhound format -> Griffin format */ u32 NewDramTimingLo; u32 dev = pDCTstat->dev_dct; u32 reg; u32 reg_off = 0x100 * dct; u32 val; int i; DramTimingLo = val; /* Dram Timing Low (owns Clock Enable bits) */ NewDramTimingLo = Get_NB32(dev, 0x88 + reg_off); if (mctGet_NVbits(NV_AllMemClks) == 0) { /*Special Jedec SPD diagnostic bit - "enable all clocks"*/ if (!(pDCTstat->Status & (1<DIMMValidDCT[dct] & (1< Griffin format */ /*FIXME - BurstLength32 must be 0 when F3x44[DramEccEn]=1. */ /* ; mov cx,PA_NBMISC+44h ;MCA NB Configuration ; call Get_NB32n_D ; bt eax,22 ;EccEn ; .if (CARRY?) ; btr eax,BurstLength32 ; .endif */ return val; } void mct_AdjustMemHoist_GR(struct DCTStatStruc *pDCTstat, u32 base, u32 HoleSize) { u32 val; if (base >= pDCTstat->DCTHoleBase) { u32 dev = pDCTstat->dev_dct; base += HoleSize; base >>= 27 - 8; val = Get_NB32(dev, 0x110); val &= ~(0xfff<<11); val |= (base & 0xfff)<<11; Set_NB32(dev, 0x110, val); } }