nb/intel/gm45: Use new fixed BAR accessors
Tested with BUILD_TIMELESS=1, Roda RK9 remains identical.
Change-Id: I18f40d1bc3172b3c1b6b4828cefdb91aea679ba2
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/51880
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/northbridge/intel/gm45/early_reset.c b/src/northbridge/intel/gm45/early_reset.c
index 1783880..15591c1 100644
--- a/src/northbridge/intel/gm45/early_reset.c
+++ b/src/northbridge/intel/gm45/early_reset.c
@@ -12,8 +12,7 @@
/* Reset DRAM power-up settings in CLKCFG (they are not
affected by system reset but may disrupt raminit). */
- MCHBAR32(CLKCFG_MCHBAR) =
- (MCHBAR32(CLKCFG_MCHBAR) & ~(3 << 21)) | (1 << 3);
+ mchbar_clrsetbits32(CLKCFG_MCHBAR, 3 << 21, 1 << 3);
/*\ Next settings are the real purpose of this function:
If these steps are not performed, reset results in power off. \*/
@@ -21,33 +20,31 @@
/* Initialize some DRAM settings to 1 populated rank of 128MB. */
FOR_EACH_CHANNEL(ch) {
/* Configure DRAM control mode. */
- MCHBAR32(CxDRC0_MCHBAR(ch)) =
- (MCHBAR32(CxDRC0_MCHBAR(ch)) & ~CxDRC0_RANKEN_MASK) |
- (ch ? 0 : CxDRC0_RANKEN(0));
- MCHBAR32(CxDRC1_MCHBAR(ch)) =
- (MCHBAR32(CxDRC1_MCHBAR(ch)) | CxDRC1_NOTPOP_MASK) &
- ~(ch ? 0 : CxDRC1_NOTPOP(0));
- MCHBAR32(CxDRC2_MCHBAR(ch)) =
- (MCHBAR32(CxDRC2_MCHBAR(ch)) | CxDRC2_NOTPOP_MASK) &
- ~(ch ? 0 : CxDRC2_NOTPOP(0));
+ mchbar_clrsetbits32(CxDRC0_MCHBAR(ch), CxDRC0_RANKEN_MASK,
+ (ch ? 0 : CxDRC0_RANKEN(0)));
+ mchbar_write32(CxDRC1_MCHBAR(ch),
+ (mchbar_read32(CxDRC1_MCHBAR(ch)) | CxDRC1_NOTPOP_MASK) &
+ ~(ch ? 0 : CxDRC1_NOTPOP(0)));
+ mchbar_write32(CxDRC2_MCHBAR(ch),
+ (mchbar_read32(CxDRC2_MCHBAR(ch)) | CxDRC2_NOTPOP_MASK) &
+ ~(ch ? 0 : CxDRC2_NOTPOP(0)));
/*if (timings && (timings->mem_clock == MEM_CLOCK_1067MT))
- MCHBAR32(CxDRC2_MCHBAR(ch)) |= CxDRC2_CLK1067MT;*/
+ mchbar_setbits32(CxDRC2_MCHBAR(ch), CxDRC2_CLK1067MT);*/
/* Program rank boundaries (CxDRBy). */
for (r = 0; r < RANKS_PER_CHANNEL; r += 2)
- MCHBAR32(CxDRBy_MCHBAR(ch, r)) =
- CxDRBy_BOUND_MB(r, 128) |
- CxDRBy_BOUND_MB(r+1, 128);
+ mchbar_write32(CxDRBy_MCHBAR(ch, r),
+ CxDRBy_BOUND_MB(r, 128) | CxDRBy_BOUND_MB(r + 1, 128));
}
/* Set DCC mode to no operation and do magic 0xf0 thing. */
- MCHBAR32(DCC_MCHBAR) = (MCHBAR32(DCC_MCHBAR) & ~DCC_CMD_MASK) | DCC_CMD_NOP;
+ mchbar_clrsetbits32(DCC_MCHBAR, DCC_CMD_MASK, DCC_CMD_NOP);
pci_and_config8(PCI_DEV(0, 0, 0), 0xf0, ~(1 << 2));
pci_or_config8(PCI_DEV(0, 0, 0), 0xf0, (1 << 2));
/* Normally, we would set this after successful raminit. */
- MCHBAR32(DCC_MCHBAR) |= (1 << 19);
+ mchbar_setbits32(DCC_MCHBAR, 1 << 19);
system_reset();
}
diff --git a/src/northbridge/intel/gm45/gma.c b/src/northbridge/intel/gm45/gma.c
index c771ea2..178149d 100644
--- a/src/northbridge/intel/gm45/gma.c
+++ b/src/northbridge/intel/gm45/gma.c
@@ -33,7 +33,7 @@
{
const u16 cdclk_sel = pci_read_config16(dev, GCFGC_OFFSET) & GCFGC_CD_MASK;
- switch (MCHBAR8(HPLLVCO_MCHBAR) & 0x7) {
+ switch (mchbar_read8(HPLLVCO_MCHBAR) & 0x7) {
case VCO_2666:
case VCO_4000:
case VCO_5333:
diff --git a/src/northbridge/intel/gm45/igd.c b/src/northbridge/intel/gm45/igd.c
index 102af1c..f4a0e0c 100644
--- a/src/northbridge/intel/gm45/igd.c
+++ b/src/northbridge/intel/gm45/igd.c
@@ -22,8 +22,8 @@
printk(BIOS_DEBUG, "Enabling IGD.\n");
/* HSync/VSync */
- MCHBAR8(0xbd0 + 3) = 0x5a;
- MCHBAR8(0xbd0 + 4) = 0x5a;
+ mchbar_write8(0xbd0 + 3, 0x5a);
+ mchbar_write8(0xbd0 + 4, 0x5a);
static const u16 display_clock_from_f0_and_vco[][4] = {
/* VCO 2666 VCO 3200 VCO 4000 VCO 5333 */
@@ -58,7 +58,7 @@
/* Disable PEG finally. */
printk(BIOS_DEBUG, "Finally disabling "
"PEG in favor of IGD.\n");
- MCHBAR8(0xc14) |= (1 << 5) | (1 << 0);
+ mchbar_setbits8(0xc14, 1 << 5 | 1 << 0);
pci_or_config32(peg_dev, 0x200, 1 << 18);
@@ -70,7 +70,7 @@
;
pci_write_config32(mch_dev, D0F0_DEVEN, deven & ~2);
- MCHBAR8(0xc14) &= ~((1 << 5) | (1 << 0));
+ mchbar_clrbits8(0xc14, 1 << 5 | 1 << 0);
}
}
}
@@ -84,12 +84,12 @@
/* Disable Graphics Stolen Memory. */
pci_update_config16(mch_dev, D0F0_GGC, 0xff0f, 0x0002);
- MCHBAR8(0xf10) |= (1 << 0);
+ mchbar_setbits8(0xf10, 1 << 0);
if (!(pci_read_config8(mch_dev, D0F0_CAPID0 + 4) & (1 << (33 - 32)))) {
- MCHBAR16(0x1190) |= (1 << 14);
- MCHBAR16(0x119e) = (MCHBAR16(0x119e) & ~(7 << 13)) | (4 << 13);
- MCHBAR16(0x119e) |= (1 << 12);
+ mchbar_setbits16(0x1190, 1 << 14);
+ mchbar_clrsetbits16(0x119e, 7 << 13, 4 << 13);
+ mchbar_setbits16(0x119e, 1 << 12);
}
/* Hide IGD. */
diff --git a/src/northbridge/intel/gm45/iommu.c b/src/northbridge/intel/gm45/iommu.c
index 09df12d..a961481 100644
--- a/src/northbridge/intel/gm45/iommu.c
+++ b/src/northbridge/intel/gm45/iommu.c
@@ -14,21 +14,21 @@
int me_active = pci_read_config8(PCI_DEV(0, 3, 0), PCI_CLASS_REVISION) != 0xff;
int stepping = pci_read_config8(PCI_DEV(0, 0, 0), PCI_CLASS_REVISION);
- MCHBAR32(0x28) = IOMMU_BASE1 | 1; /* HDA @ 0:1b.0 */
+ mchbar_write32(0x28, IOMMU_BASE1 | 1); /* HDA @ 0:1b.0 */
if (stepping != STEPPING_B2) {
/* The official workaround is to run SMM every 64ms.
The only winning move is not to play. */
- MCHBAR32(0x18) = IOMMU_BASE2 | 1; /* IGD @ 0:2.0-1 */
+ mchbar_write32(0x18, IOMMU_BASE2 | 1); /* IGD @ 0:2.0-1 */
} else {
/* write-once, so lock it down */
- MCHBAR32(0x18) = 0; /* disable IOMMU for IGD @ 0:2.0-1 */
+ mchbar_write32(0x18, 0); /* disable IOMMU for IGD @ 0:2.0-1 */
}
if (me_active) {
- MCHBAR32(0x10) = IOMMU_BASE3 | 1; /* ME @ 0:3.0-3 */
+ mchbar_write32(0x10, IOMMU_BASE3 | 1); /* ME @ 0:3.0-3 */
} else {
- MCHBAR32(0x10) = 0; /* disable IOMMU for ME */
+ mchbar_write32(0x10, 0); /* disable IOMMU for ME */
}
- MCHBAR32(0x20) = IOMMU_BASE4 | 1; /* all other DMA sources */
+ mchbar_write32(0x20, IOMMU_BASE4 | 1); /* all other DMA sources */
/* clear GTT */
u16 gtt = pci_read_config16(PCI_DEV(0, 0, 0), D0F0_GGC);
@@ -48,7 +48,7 @@
}
if (stepping == STEPPING_B3) {
- MCHBAR8(0xffc) |= 1 << 4;
+ mchbar_setbits8(0xffc, 1 << 4);
const pci_devfn_t peg = PCI_DEV(0, 1, 0);
/* FIXME: proper test? */
@@ -57,5 +57,5 @@
}
/* final */
- MCHBAR8(0x94) |= 1 << 3;
+ mchbar_setbits8(0x94, 1 << 3);
}
diff --git a/src/northbridge/intel/gm45/pcie.c b/src/northbridge/intel/gm45/pcie.c
index 4ccd2d6..295bf5b 100644
--- a/src/northbridge/intel/gm45/pcie.c
+++ b/src/northbridge/intel/gm45/pcie.c
@@ -11,34 +11,34 @@
static void init_egress(void)
{
/* VC0: TC0 only */
- EPBAR8(EPVC0RCTL) &= 1;
- EPBAR8(EPPVCCAP1) = (EPBAR8(EPPVCCAP1) & ~7) | 1;
+ epbar_clrbits8(EPVC0RCTL, ~1);
+ epbar_clrsetbits8(EPPVCCAP1, 7, 1);
/* VC1: isoch */
- EPBAR32(EPVC1MTS) = 0x0a0a0a0a;
- EPBAR32(EPVC1RCAP) = (EPBAR32(EPVC1RCAP) & ~(127 << 16)) | (0x0a << 16);
+ epbar_write32(EPVC1MTS, 0x0a0a0a0a);
+ epbar_clrsetbits32(EPVC1RCAP, 127 << 16, 0x0a << 16);
/* VC1: ID1, TC7 */
- EPBAR32(EPVC1RCTL) = (EPBAR32(EPVC1RCTL) & ~(7 << 24)) | (1 << 24);
- EPBAR8(EPVC1RCTL) = (EPBAR8(EPVC1RCTL) & 1) | (1 << 7);
+ epbar_clrsetbits32(EPVC1RCTL, 7 << 24, 1 << 24);
+ epbar_clrsetbits8(EPVC1RCTL, ~1, 1 << 7);
/* VC1 ARB table: setup and enable */
- EPBAR32(EP_PORTARB(0)) = 0x55555555;
- EPBAR32(EP_PORTARB(1)) = 0x55555555;
- EPBAR32(EP_PORTARB(2)) = 0x55555555;
- EPBAR32(EP_PORTARB(3)) = 0x55555555;
- EPBAR32(EP_PORTARB(4)) = 0x55555555;
- EPBAR32(EP_PORTARB(5)) = 0x55555555;
- EPBAR32(EP_PORTARB(6)) = 0x55555555;
- EPBAR32(EP_PORTARB(7)) = 0x00005555;
- EPBAR32(EPVC1RCTL) |= 1 << 16;
+ epbar_write32(EP_PORTARB(0), 0x55555555);
+ epbar_write32(EP_PORTARB(1), 0x55555555);
+ epbar_write32(EP_PORTARB(2), 0x55555555);
+ epbar_write32(EP_PORTARB(3), 0x55555555);
+ epbar_write32(EP_PORTARB(4), 0x55555555);
+ epbar_write32(EP_PORTARB(5), 0x55555555);
+ epbar_write32(EP_PORTARB(6), 0x55555555);
+ epbar_write32(EP_PORTARB(7), 0x00005555);
+ epbar_setbits32(EPVC1RCTL, 1 << 16);
- while ((EPBAR8(EPVC1RSTS) & 1) != 0);
+ while ((epbar_read8(EPVC1RSTS) & 1) != 0);
/* VC1: enable */
- EPBAR32(EPVC1RCTL) |= 1 << 31;
+ epbar_setbits32(EPVC1RCTL, 1 << 31);
- while ((EPBAR8(EPVC1RSTS) & 2) != 0);
+ while ((epbar_read8(EPVC1RSTS) & 2) != 0);
}
/* MCH side */
@@ -46,47 +46,47 @@
static void init_dmi(int b2step)
{
/* VC0: TC0 only */
- DMIBAR8(DMIVC0RCTL) &= 1;
- DMIBAR8(DMIPVCCAP1) = (DMIBAR8(DMIPVCCAP1) & ~7) | 1;
+ dmibar_clrbits8(DMIVC0RCTL, ~1);
+ dmibar_clrsetbits8(DMIPVCCAP1, 7, 1);
/* VC1: ID1, TC7 */
- DMIBAR32(DMIVC1RCTL) = (DMIBAR32(DMIVC1RCTL) & ~(7 << 24)) | (1 << 24);
- DMIBAR8(DMIVC1RCTL) = (DMIBAR8(DMIVC1RCTL) & 1) | (1 << 7);
+ dmibar_clrsetbits32(DMIVC1RCTL, 7 << 24, 1 << 24);
+ dmibar_clrsetbits8(DMIVC1RCTL, ~1, 1 << 7);
/* VC1: enable */
- DMIBAR32(DMIVC1RCTL) |= 1 << 31;
+ dmibar_setbits32(DMIVC1RCTL, 1 << 31);
- while ((DMIBAR8(DMIVC1RSTS) & VC1NP) != 0);
+ while ((dmibar_read8(DMIVC1RSTS) & VC1NP) != 0);
/* additional configuration. */
- DMIBAR32(0x200) |= 3 << 13;
- DMIBAR32(0x200) &= ~(1 << 21);
- DMIBAR32(0x200) = (DMIBAR32(0x200) & ~(3 << 26)) | (2 << 26);
- DMIBAR32(0x2c) = 0x86000040;
- DMIBAR32(0xfc) |= 1 << 0;
- DMIBAR32(0xfc) |= 1 << 1;
- DMIBAR32(0xfc) |= 1 << 4;
+ dmibar_setbits32(0x200, 3 << 13);
+ dmibar_clrbits32(0x200, 1 << 21);
+ dmibar_clrsetbits32(0x200, 3 << 26, 2 << 26);
+ dmibar_write32(0x2c, 0x86000040);
+ dmibar_setbits32(0xfc, 1 << 0);
+ dmibar_setbits32(0xfc, 1 << 1);
+ dmibar_setbits32(0xfc, 1 << 4);
if (!b2step) {
- DMIBAR32(0xfc) |= 1 << 11;
+ dmibar_setbits32(0xfc, 1 << 11);
} else {
- DMIBAR32(0xfc) &= ~(1 << 11);
+ dmibar_clrbits32(0xfc, 1 << 11);
}
- DMIBAR32(0x204) &= ~(3 << 10);
- DMIBAR32(0xf4) &= ~(1 << 4);
- DMIBAR32(0xf0) |= 3 << 24;
- DMIBAR32(0xf04) = 0x07050880;
- DMIBAR32(0xf44) = 0x07050880;
- DMIBAR32(0xf84) = 0x07050880;
- DMIBAR32(0xfc4) = 0x07050880;
+ dmibar_clrbits32(0x204, 3 << 10);
+ dmibar_clrbits32(0xf4, 1 << 4);
+ dmibar_setbits32(0xf0, 3 << 24);
+ dmibar_write32(0xf04, 0x07050880);
+ dmibar_write32(0xf44, 0x07050880);
+ dmibar_write32(0xf84, 0x07050880);
+ dmibar_write32(0xfc4, 0x07050880);
/* lock down write-once registers
DMIBAR32(0x84) will be set in setup_aspm(). */
- DMIBAR32(0x308) = DMIBAR32(0x308);
- DMIBAR32(0x314) = DMIBAR32(0x314);
- DMIBAR32(0x324) = DMIBAR32(0x324);
- DMIBAR32(0x328) = DMIBAR32(0x328);
- DMIBAR32(0x334) = DMIBAR32(0x334);
- DMIBAR32(0x338) = DMIBAR32(0x338);
+ dmibar_setbits32(0x308, 0);
+ dmibar_setbits32(0x314, 0);
+ dmibar_setbits32(0x324, 0);
+ dmibar_setbits32(0x328, 0);
+ dmibar_setbits32(0x334, 0);
+ dmibar_setbits32(0x338, 0);
}
static void init_pcie(const int peg_enabled,
@@ -185,16 +185,14 @@
tmp32 &= ~(1 << 13);
pci_write_config32(pciex, 0x0fc, tmp32);
}
- DMIBAR8 (0x0e1c) |= (1 << 0);
- DMIBAR16(0x0f00) |= (3 << 8);
- DMIBAR16(0x0f00) |= (7 << 3);
- DMIBAR32(0x0f14) &= ~(1 << 17);
- DMIBAR16(0x0e1c) &= ~(1 << 8);
+ dmibar_setbits8(0x0e1c, 1 << 0);
+ dmibar_setbits16(0x0f00, 3 << 8);
+ dmibar_setbits16(0x0f00, 7 << 3);
+ dmibar_clrbits32(0x0f14, 1 << 17);
+ dmibar_clrbits16(0x0e1c, 1 << 8);
if (stepping >= STEPPING_B0) {
- DMIBAR32(0x0e28 + 4) = (DMIBAR32(0x0e28 + 4) &
- ~(0xf << (52 - 32))) |
- (0xd << (52 - 32));
- DMIBAR32(0x0e2c) = 0x88d07333;
+ dmibar_clrsetbits32(0x0e28 + 4, 0xf << (52 - 32), 0xd << (52 - 32));
+ dmibar_write32(0x0e2c, 0x88d07333);
}
if (peg_enabled) {
pci_and_config32(pciex, 0xa08, ~(1 << 15));
@@ -224,13 +222,13 @@
the endpoint (ICH), but ICH doesn't give any limits. */
if (LPC_IS_MOBILE(PCI_DEV(0, 0x1f, 0)))
- DMIBAR8(DMILCTL) |= (3 << 0); // enable ASPM L0s, L1 (write-once)
+ dmibar_setbits8(DMILCTL, 3 << 0); // enable ASPM L0s, L1 (write-once)
else
- DMIBAR8(DMILCTL) |= (1 << 0); // enable ASPM L0s (write-once)
+ dmibar_setbits8(DMILCTL, 1 << 0); // enable ASPM L0s (write-once)
/* timing */
- DMIBAR32(DMILCAP) = (DMIBAR32(DMILCAP) & ~(63 << 12)) | (2 << 12) | (2 << 15);
- DMIBAR8(0x208 + 3) = 0;
- DMIBAR32(0x208) &= ~(3 << 20);
+ dmibar_clrsetbits32(DMILCAP, 63 << 12, 2 << 12 | 2 << 15);
+ dmibar_write8(0x208 + 3, 0);
+ dmibar_clrbits32(0x208, 3 << 20);
/*\ Setup ASPM on PEG \*/
/*
@@ -247,36 +245,35 @@
/*\ RCRB setup: Egress Port \*/
/* Set component ID of MCH (1). */
- EPBAR8(EPESD + 2) = 1;
+ epbar_write8(EPESD + 2, 1);
/* Link1: component ID 1, link valid. */
- EPBAR32(EPLE1D) = (EPBAR32(EPLE1D) & 0xff000000) | (1 << 16) | (1 << 0);
- EPBAR32(EPLE1A) = CONFIG_FIXED_DMIBAR_MMIO_BASE;
+ epbar_clrsetbits32(EPLE1D, 0xffffff, 1 << 16 | 1 << 0);
+ epbar_write32(EPLE1A, CONFIG_FIXED_DMIBAR_MMIO_BASE);
if (peg_enabled)
/* Link2: link_valid. */
- EPBAR8(EPLE2D) |= (1 << 0); /* link valid */
+ epbar_setbits8(EPLE2D, 1 << 0); /* link valid */
/*\ RCRB setup: DMI Port \*/
/* Set component ID of MCH (1). */
- DMIBAR8(DMIESD + 2) = 1;
+ dmibar_write8(DMIESD + 2, 1);
/* Link1: target port 0, component id 2 (ICH), link valid. */
- DMIBAR32(DMILE1D) = (0 << 24) | (2 << 16) | (1 << 0);
- DMIBAR32(DMILE1A) = CONFIG_FIXED_RCBA_MMIO_BASE;
+ dmibar_write32(DMILE1D, 0 << 24 | 2 << 16 | 1 << 0);
+ dmibar_write32(DMILE1A, CONFIG_FIXED_RCBA_MMIO_BASE);
/* Link2: component ID 1 (MCH), link valid */
- DMIBAR32(DMILE2D) =
- (DMIBAR32(DMILE2D) & 0xff000000) | (1 << 16) | (1 << 0);
- DMIBAR32(DMILE2A) = CONFIG_FIXED_MCHBAR_MMIO_BASE;
+ dmibar_clrsetbits32(DMILE2D, 0xffffff, 1 << 16 | 1 << 0);
+ dmibar_write32(DMILE2A, CONFIG_FIXED_MCHBAR_MMIO_BASE);
}
void gm45_late_init(const stepping_t stepping)
{
const pci_devfn_t mch = PCI_DEV(0, 0, 0);
const int peg_enabled = (pci_read_config8(mch, D0F0_DEVEN) >> 1) & 1;
- const int sdvo_enabled = (MCHBAR16(0x40) >> 8) & 1;
+ const int sdvo_enabled = mchbar_read16(0x40) >> 8 & 1;
const int peg_x16 = (peg_enabled && !sdvo_enabled);
init_egress();
diff --git a/src/northbridge/intel/gm45/pm.c b/src/northbridge/intel/gm45/pm.c
index 680435b..f1b7abc 100644
--- a/src/northbridge/intel/gm45/pm.c
+++ b/src/northbridge/intel/gm45/pm.c
@@ -28,7 +28,7 @@
{
int i;
- MCHBAR32(0x11cc) = (MCHBAR32(0x11cc) & ~(0x1f)) | 0x17;
+ mchbar_clrsetbits32(0x11cc, 0x1f, 0x17);
switch (sku) {
case GMCH_GM45:
case GMCH_GE45:
@@ -43,14 +43,14 @@
static const u32 voltage_mask =
(0x1f << 24) | (0x1f << 16) | (0x1f << 8) | 0x1f;
- MCHBAR32(0x1120) = (MCHBAR32(0x1120) & ~voltage_mask) | 0x10111213;
- MCHBAR32(0x1124) = (MCHBAR32(0x1124) & ~voltage_mask) | 0x14151617;
- MCHBAR32(0x1128) = (MCHBAR32(0x1128) & ~voltage_mask) | 0x18191a1b;
- MCHBAR32(0x112c) = (MCHBAR32(0x112c) & ~voltage_mask) | 0x1c1d1e1f;
- MCHBAR32(0x1130) = (MCHBAR32(0x1130) & ~voltage_mask) | 0x00010203;
- MCHBAR32(0x1134) = (MCHBAR32(0x1134) & ~voltage_mask) | 0x04050607;
- MCHBAR32(0x1138) = (MCHBAR32(0x1138) & ~voltage_mask) | 0x08090a0b;
- MCHBAR32(0x113c) = (MCHBAR32(0x113c) & ~voltage_mask) | 0x0c0d0e0f;
+ mchbar_clrsetbits32(0x1120, voltage_mask, 0x10111213);
+ mchbar_clrsetbits32(0x1124, voltage_mask, 0x14151617);
+ mchbar_clrsetbits32(0x1128, voltage_mask, 0x18191a1b);
+ mchbar_clrsetbits32(0x112c, voltage_mask, 0x1c1d1e1f);
+ mchbar_clrsetbits32(0x1130, voltage_mask, 0x00010203);
+ mchbar_clrsetbits32(0x1134, voltage_mask, 0x04050607);
+ mchbar_clrsetbits32(0x1138, voltage_mask, 0x08090a0b);
+ mchbar_clrsetbits32(0x113c, voltage_mask, 0x0c0d0e0f);
/* Program frequencies. */
static const u32 frequencies_from_sku_vco[][4][8] = {
@@ -82,43 +82,40 @@
const int vco_index = raminit_read_vco_index();
const int reg_limit = low_power_mode ? 1 : 4;
if (sku == GMCH_GM49)
- MCHBAR8(0x1110+3) = 0x1b;
+ mchbar_write8(0x1110 + 3, 0x1b);
else
- MCHBAR8(0x1110+3) = 0x17;
- MCHBAR8(0x1110+1) = 0x17;
+ mchbar_write8(0x1110 + 3, 0x17);
+ mchbar_write8(0x1110 + 1, 0x17);
if (!low_power_mode) {
- MCHBAR8(0x1114+3) = 0x17;
- MCHBAR8(0x1114+1) = 0x17;
- MCHBAR8(0x1118+3) = 0x17;
- MCHBAR8(0x1118+1) = 0x17;
- MCHBAR8(0x111c+3) = 0x17;
- MCHBAR8(0x111c+1) = 0x17;
+ mchbar_write8(0x1114 + 3, 0x17);
+ mchbar_write8(0x1114 + 1, 0x17);
+ mchbar_write8(0x1118 + 3, 0x17);
+ mchbar_write8(0x1118 + 1, 0x17);
+ mchbar_write8(0x111c + 3, 0x17);
+ mchbar_write8(0x111c + 1, 0x17);
}
for (i = 0; i < reg_limit; ++i) {
const int mchbar = 0x1110 + (i * 4);
- MCHBAR8(mchbar + 2) = frequencies_from_sku_vco
- [sku_index][vco_index][i * 2 + 0];
- MCHBAR8(mchbar + 0) = frequencies_from_sku_vco
- [sku_index][vco_index][i * 2 + 1];
+ mchbar_write8(mchbar + 2, frequencies_from_sku_vco
+ [sku_index][vco_index][i * 2 + 0]);
+ mchbar_write8(mchbar + 0, frequencies_from_sku_vco
+ [sku_index][vco_index][i * 2 + 1]);
}
if (low_power_mode) {
- MCHBAR16(0x1190) =
- (MCHBAR16(0x1190) & ~((7 << 8) | (7 << 4) | 7)) |
- (1 << 8) | (1 << 4) | 1;
+ mchbar_clrsetbits16(0x1190, 7 << 8 | 7 << 4 | 7, 1 << 8 | 1 << 4 | 1);
} else {
- MCHBAR16(0x1190) =
- (MCHBAR16(0x1190) & ~((7 << 8) | (7 << 4))) | 7;
+ mchbar_clrsetbits16(0x1190, 7 << 8 | 7 << 4, 7);
if (sku == GMCH_GS45) /* performance mode */
- MCHBAR32(0x0ffc) &= ~(1 << 31);
+ mchbar_clrbits32(0x0ffc, 1 << 31);
}
- MCHBAR16(0x0fc0) |= (1 << 11);
- MCHBAR16(0x11b8) = 0x333c;
- MCHBAR16(0x11c0 + 2) = 0x0303;
- MCHBAR32(0x11c4) = 0x0a030a03;
- MCHBAR16(0x1100) = (MCHBAR16(0x1100) & ~(0x1f << 8)) | (3 << 8);
- MCHBAR16(0x11b8 + 2) = 0x4000;
+ mchbar_setbits16(0x0fc0, 1 << 11);
+ mchbar_write16(0x11b8, 0x333c);
+ mchbar_write16(0x11c0 + 2, 0x0303);
+ mchbar_write32(0x11c4, 0x0a030a03);
+ mchbar_clrsetbits16(0x1100, 0x1f << 8, 3 << 8);
+ mchbar_write16(0x11b8 + 2, 0x4000);
}
void init_pm(const sysinfo_t *const sysinfo, int do_freq_scaling_cfg)
@@ -127,138 +124,138 @@
const fsb_clock_t fsb = sysinfo->selected_timings.fsb_clock;
const mem_clock_t memclk = sysinfo->selected_timings.mem_clock;
- MCHBAR16(0xc14) = 0;
- MCHBAR16(0xc20) = 0;
- MCHBAR32(0xfc0) = 0x001f00fd;
- MCHBAR32(0xfc0) |= 3 << 25;
- MCHBAR32(0xfc0) |= 1 << 11;
- MCHBAR8(0xfb0) = 3;
- MCHBAR8(0xf10) |= 1 << 1;
+ mchbar_write16(0xc14, 0);
+ mchbar_write16(0xc20, 0);
+ mchbar_write32(0xfc0, 0x001f00fd);
+ mchbar_setbits32(0xfc0, 3 << 25);
+ mchbar_setbits32(0xfc0, 1 << 11);
+ mchbar_write8(0xfb0, 3);
+ mchbar_setbits8(0xf10, 1 << 1);
if (fsb == FSB_CLOCK_667MHz) {
- MCHBAR16(0xc3a) = 0xea6;
- MCHBAR8(0xc16) = (MCHBAR8(0xc16) & 0x80) | 0x0e;
+ mchbar_write16(0xc3a, 0x0ea6);
+ mchbar_clrsetbits8(0xc16, 0x7f, 0x0e);
} else if (fsb == FSB_CLOCK_800MHz) {
- MCHBAR16(0xc3a) = 0x1194;
- MCHBAR8(0xc16) = (MCHBAR8(0xc16) & 0x80) | 0x10;
+ mchbar_write16(0xc3a, 0x1194);
+ mchbar_clrsetbits8(0xc16, 0x7f, 0x10);
} else if (fsb == FSB_CLOCK_1067MHz) {
- MCHBAR16(0xc3a) = 0x1777;
- MCHBAR8(0xc16) = (MCHBAR8(0xc16) & 0x80) | 0x15;
+ mchbar_write16(0xc3a, 0x1777);
+ mchbar_clrsetbits8(0xc16, 0x7f, 0x15);
}
- MCHBAR8(0xfb8) = 3;
+ mchbar_write8(0xfb8, 3);
if (fsb == FSB_CLOCK_667MHz)
- MCHBAR16(0xc38) = 0x0ea6;
+ mchbar_write16(0xc38, 0x0ea6);
else if (fsb == FSB_CLOCK_800MHz)
- MCHBAR16(0xc38) = 0x1194;
+ mchbar_write16(0xc38, 0x1194);
else if (fsb == FSB_CLOCK_1067MHz)
- MCHBAR16(0xc38) = 0x1777;
- MCHBAR8(0xf10) |= 1 << 5;
- MCHBAR16(0xc16) |= 3 << 12;
- MCHBAR32(0xf60) = 0x01030419;
+ mchbar_write16(0xc38, 0x1777);
+ mchbar_setbits8(0xf10, 1 << 5);
+ mchbar_setbits16(0xc16, 3 << 12);
+ mchbar_write32(0xf60, 0x01030419);
if (fsb == FSB_CLOCK_667MHz) {
- MCHBAR32(0xf00) = 0x00000600;
- MCHBAR32(0xf04) = 0x00001d80;
+ mchbar_write32(0xf00, 0x00000600);
+ mchbar_write32(0xf04, 0x00001d80);
} else if (fsb == FSB_CLOCK_800MHz) {
- MCHBAR32(0xf00) = 0x00000700;
- MCHBAR32(0xf04) = 0x00002380;
+ mchbar_write32(0xf00, 0x00000700);
+ mchbar_write32(0xf04, 0x00002380);
} else if (fsb == FSB_CLOCK_1067MHz) {
- MCHBAR32(0xf00) = 0x00000900;
- MCHBAR32(0xf04) = 0x00002e80;
+ mchbar_write32(0xf00, 0x00000900);
+ mchbar_write32(0xf04, 0x00002e80);
}
- MCHBAR16(0xf08) = 0x730f;
+ mchbar_write16(0xf08, 0x730f);
if (fsb == FSB_CLOCK_667MHz)
- MCHBAR16(0xf0c) = 0x0b96;
+ mchbar_write16(0xf0c, 0x0b96);
else if (fsb == FSB_CLOCK_800MHz)
- MCHBAR16(0xf0c) = 0x0c99;
+ mchbar_write16(0xf0c, 0x0c99);
else if (fsb == FSB_CLOCK_1067MHz)
- MCHBAR16(0xf0c) = 0x10a4;
- MCHBAR32(0xf80) |= 1 << 31;
+ mchbar_write16(0xf0c, 0x10a4);
+ mchbar_setbits32(0xf80, 1 << 31);
- MCHBAR32(0x40) = (MCHBAR32(0x40) & ~(0x3f << 24)) |
- (sysinfo->cores == 4) ? (1 << 24) : 0;
+ mchbar_write32(0x40, (mchbar_read32(0x40) & ~(0x3f << 24)) |
+ (sysinfo->cores == 4) ? (1 << 24) : 0);
- MCHBAR32(0x40) &= ~(1 << 19);
- MCHBAR32(0x40) |= 1 << 13;
- MCHBAR32(0x40) |= 1 << 21;
- MCHBAR32(0x40) |= 1 << 9;
+ mchbar_clrbits32(0x40, 1 << 19);
+ mchbar_setbits32(0x40, 1 << 13);
+ mchbar_setbits32(0x40, 1 << 21);
+ mchbar_setbits32(0x40, 1 << 9);
if (stepping > STEPPING_B1) {
if (fsb != FSB_CLOCK_1067MHz) {
- MCHBAR32(0x70) |= 1 << 30;
+ mchbar_setbits32(0x70, 1 << 30);
} else {
- MCHBAR32(0x70) &= ~(1 << 30);
+ mchbar_clrbits32(0x70, 1 << 30);
}
}
if (stepping < STEPPING_B1)
- MCHBAR32(0x70) |= 1 << 29;
+ mchbar_setbits32(0x70, 1 << 29);
else
- MCHBAR32(0x70) &= ~(1 << 29);
+ mchbar_clrbits32(0x70, 1 << 29);
if (stepping > STEPPING_B1) {
- MCHBAR32(0x70) |= 1 << 28;
- MCHBAR32(0x70) |= 1 << 25;
+ mchbar_setbits32(0x70, 1 << 28);
+ mchbar_setbits32(0x70, 1 << 25);
}
if (stepping > STEPPING_B0) {
if (fsb != FSB_CLOCK_667MHz)
- MCHBAR32(0x70) = (MCHBAR32(0x70) & ~(3<<21)) | (1 << 21);
+ mchbar_clrsetbits32(0x70, 3 << 21, 1 << 21);
else
- MCHBAR32(0x70) = (MCHBAR32(0x70) & ~(3<<21));
+ mchbar_clrbits32(0x70, 3 << 21);
}
if (stepping > STEPPING_B2)
- MCHBAR32(0x44) |= 1 << 30;
- MCHBAR32(0x44) |= 1 << 31;
+ mchbar_setbits32(0x44, 1 << 30);
+ mchbar_setbits32(0x44, 1 << 31);
if (sysinfo->cores == 2)
- MCHBAR32(0x44) |= 1 << 26;
- MCHBAR32(0x44) |= 1 << 21;
- MCHBAR32(0x44) = (MCHBAR32(0x44) & ~(3 << 24)) | (2 << 24);
- MCHBAR32(0x44) |= 1 << 5;
- MCHBAR32(0x44) |= 1 << 4;
- MCHBAR32(0x90) = (MCHBAR32(0x90) & ~7) | 4;
- MCHBAR32(0x94) |= 1 << 29;
- MCHBAR32(0x94) |= 1 << 11;
+ mchbar_setbits32(0x44, 1 << 26);
+ mchbar_setbits32(0x44, 1 << 21);
+ mchbar_clrsetbits32(0x44, 3 << 24, 2 << 24);
+ mchbar_setbits32(0x44, 1 << 5);
+ mchbar_setbits32(0x44, 1 << 4);
+ mchbar_clrsetbits32(0x90, 7, 4);
+ mchbar_setbits32(0x94, 1 << 29);
+ mchbar_setbits32(0x94, 1 << 11);
if (stepping < STEPPING_B0)
- MCHBAR32(0x94) = (MCHBAR32(0x94) & ~(3 << 19)) | (2 << 19);
+ mchbar_clrsetbits32(0x94, 3 << 19, 2 << 19);
if (stepping > STEPPING_B2)
- MCHBAR32(0x94) |= 1 << 21;
- MCHBAR8(0xb00) &= ~1;
- MCHBAR8(0xb00) |= 1 << 7;
+ mchbar_setbits32(0x94, 1 << 21);
+ mchbar_clrbits8(0xb00, 1 << 0);
+ mchbar_setbits8(0xb00, 1 << 7);
if (fsb != FSB_CLOCK_1067MHz)
- MCHBAR8(0x75) |= 1 << 6;
+ mchbar_setbits8(0x75, 1 << 6);
else
- MCHBAR8(0x75) &= 1 << 1;
- MCHBAR8(0x77) |= 3;
+ mchbar_clrbits8(0x75, ~(1 << 1));
+ mchbar_setbits8(0x77, 3);
if (stepping >= STEPPING_B1)
- MCHBAR8(0x77) |= 1 << 2;
+ mchbar_setbits8(0x77, 1 << 2);
if (stepping > STEPPING_B2)
- MCHBAR8(0x77) |= 1 << 4;
- if (MCHBAR16(0x90) & 0x100)
- MCHBAR8(0x90) &= ~(7 << 4);
+ mchbar_setbits8(0x77, 1 << 4);
+ if (mchbar_read16(0x90) & (1 << 8))
+ mchbar_clrbits8(0x90, 7 << 4);
if (stepping >= STEPPING_B0)
- MCHBAR8(0xd0) |= 1 << 1;
- MCHBAR8(0xbd8) |= 3 << 2;
+ mchbar_setbits8(0xd0, 1 << 1);
+ mchbar_setbits8(0xbd8, 3 << 2);
if (stepping >= STEPPING_B3)
- MCHBAR32(0x70) |= 1 << 0;
- MCHBAR32(0x70) |= 1 << 3;
+ mchbar_setbits32(0x70, 1 << 0);
+ mchbar_setbits32(0x70, 1 << 3);
if (stepping >= STEPPING_B0)
- MCHBAR32(0x70) &= ~(1 << 16);
+ mchbar_clrbits32(0x70, 1 << 16);
else
- MCHBAR32(0x70) |= 1 << 16;
+ mchbar_setbits32(0x70, 1 << 16);
if (stepping >= STEPPING_B3)
- MCHBAR8(0xc14) |= 1 << 1;
+ mchbar_setbits8(0xc14, 1 << 1);
if (stepping >= STEPPING_B1)
- MCHBAR16(0xffc) = (MCHBAR16(0xffc) & ~0x7ff) | 0x7c0;
- MCHBAR16(0x48) = (MCHBAR16(0x48) & ~(0xff << 2)) | (0xaa << 2);
+ mchbar_clrsetbits16(0xffc, 0x7ff, 0x7c0);
+ mchbar_clrsetbits16(0x48, 0xff << 2, 0xaa << 2);
if (stepping == STEPPING_CONVERSION_A1) {
- MCHBAR16(0x40) |= 1 << 12;
- MCHBAR32(0x94) |= 3 << 22;
+ mchbar_setbits16(0x40, 1 << 12);
+ mchbar_setbits32(0x94, 3 << 22);
}
const int cpu_supports_super_lfm =
rdmsr(MSR_EXTENDED_CONFIG).lo & (1 << 27);
if ((stepping >= STEPPING_B0) && cpu_supports_super_lfm) {
- MCHBAR16(CLKCFG_MCHBAR) &= ~(1 << 7);
- MCHBAR16(CLKCFG_MCHBAR) |= 1 << 14;
+ mchbar_clrbits16(CLKCFG_MCHBAR, 1 << 7);
+ mchbar_setbits16(CLKCFG_MCHBAR, 1 << 14);
} else {
- MCHBAR16(CLKCFG_MCHBAR) &= ~(1 << 14);
- MCHBAR16(CLKCFG_MCHBAR) |= 1 << 7;
- MCHBAR32(0x44) &= ~(1 << 31); /* Was set above. */
+ mchbar_clrbits16(CLKCFG_MCHBAR, 1 << 14);
+ mchbar_setbits16(CLKCFG_MCHBAR, 1 << 7);
+ mchbar_clrbits32(0x44, 1 << 31); /* Was set above. */
}
if ((sysinfo->gfx_type != GMCH_PM45) && do_freq_scaling_cfg &&
@@ -268,5 +265,5 @@
/* This has to be the last write to CLKCFG. */
if ((fsb == FSB_CLOCK_1067MHz) && (memclk == MEM_CLOCK_667MT))
- MCHBAR32(CLKCFG_MCHBAR) &= ~(1 << 17);
+ mchbar_clrbits32(CLKCFG_MCHBAR, 1 << 17);
}
diff --git a/src/northbridge/intel/gm45/raminit.c b/src/northbridge/intel/gm45/raminit.c
index f9d7c8f..d990497 100644
--- a/src/northbridge/intel/gm45/raminit.c
+++ b/src/northbridge/intel/gm45/raminit.c
@@ -348,7 +348,7 @@
static fsb_clock_t read_fsb_clock(void)
{
- switch (MCHBAR32(CLKCFG_MCHBAR) & CLKCFG_FSBCLK_MASK) {
+ switch (mchbar_read32(CLKCFG_MCHBAR) & CLKCFG_FSBCLK_MASK) {
case 6:
return FSB_CLOCK_1067MHz;
case 2:
@@ -666,9 +666,9 @@
static void reset_on_bad_warmboot(void)
{
/* Check self refresh channel status. */
- const u32 reg = MCHBAR32(PMSTS_MCHBAR);
+ const u32 reg = mchbar_read32(PMSTS_MCHBAR);
/* Clear status bits. R/WC */
- MCHBAR32(PMSTS_MCHBAR) = reg;
+ mchbar_write32(PMSTS_MCHBAR, reg);
if ((reg & PMSTS_WARM_RESET) && !(reg & PMSTS_BOTH_SELFREFRESH)) {
printk(BIOS_INFO, "DRAM was not in self refresh "
"during warm boot, reset required.\n");
@@ -678,62 +678,62 @@
static void set_system_memory_frequency(const timings_t *const timings)
{
- MCHBAR16(CLKCFG_MCHBAR + 0x60) &= ~(1 << 15);
- MCHBAR16(CLKCFG_MCHBAR + 0x48) &= ~(1 << 15);
+ mchbar_clrbits16(CLKCFG_MCHBAR + 0x60, 1 << 15);
+ mchbar_clrbits16(CLKCFG_MCHBAR + 0x48, 1 << 15);
/* Calculate wanted frequency setting. */
const int want_freq = 6 - timings->mem_clock;
/* Read current memory frequency. */
- const u32 clkcfg = MCHBAR32(CLKCFG_MCHBAR);
+ const u32 clkcfg = mchbar_read32(CLKCFG_MCHBAR);
int cur_freq = (clkcfg & CLKCFG_MEMCLK_MASK) >> CLKCFG_MEMCLK_SHIFT;
if (0 == cur_freq) {
/* Try memory frequency from scratchpad. */
printk(BIOS_DEBUG, "Reading current memory frequency from scratchpad.\n");
- cur_freq = (MCHBAR16(SSKPD_MCHBAR) & SSKPD_CLK_MASK) >> SSKPD_CLK_SHIFT;
+ cur_freq = (mchbar_read16(SSKPD_MCHBAR) & SSKPD_CLK_MASK) >> SSKPD_CLK_SHIFT;
}
if (cur_freq != want_freq) {
printk(BIOS_DEBUG, "Changing memory frequency: old %x, new %x.\n", cur_freq, want_freq);
/* When writing new frequency setting, reset, then set update bit. */
- MCHBAR32(CLKCFG_MCHBAR) = (MCHBAR32(CLKCFG_MCHBAR) & ~(CLKCFG_UPDATE | CLKCFG_MEMCLK_MASK)) |
- (want_freq << CLKCFG_MEMCLK_SHIFT);
- MCHBAR32(CLKCFG_MCHBAR) = (MCHBAR32(CLKCFG_MCHBAR) & ~CLKCFG_MEMCLK_MASK) |
- (want_freq << CLKCFG_MEMCLK_SHIFT) | CLKCFG_UPDATE;
+ mchbar_clrsetbits32(CLKCFG_MCHBAR, CLKCFG_UPDATE | CLKCFG_MEMCLK_MASK,
+ want_freq << CLKCFG_MEMCLK_SHIFT);
+ mchbar_clrsetbits32(CLKCFG_MCHBAR, CLKCFG_MEMCLK_MASK,
+ want_freq << CLKCFG_MEMCLK_SHIFT | CLKCFG_UPDATE);
/* Reset update bit. */
- MCHBAR32(CLKCFG_MCHBAR) &= ~CLKCFG_UPDATE;
+ mchbar_clrbits32(CLKCFG_MCHBAR, CLKCFG_UPDATE);
}
if ((timings->fsb_clock == FSB_CLOCK_1067MHz) && (timings->mem_clock == MEM_CLOCK_667MT)) {
- MCHBAR32(CLKCFG_MCHBAR + 0x16) = 0x000030f0;
- MCHBAR32(CLKCFG_MCHBAR + 0x64) = 0x000050c1;
+ mchbar_write32(CLKCFG_MCHBAR + 0x16, 0x000030f0);
+ mchbar_write32(CLKCFG_MCHBAR + 0x64, 0x000050c1);
- MCHBAR32(CLKCFG_MCHBAR) = (MCHBAR32(CLKCFG_MCHBAR) & ~(1 << 12)) | (1 << 17);
- MCHBAR32(CLKCFG_MCHBAR) |= (1 << 17) | (1 << 12);
- MCHBAR32(CLKCFG_MCHBAR) &= ~(1 << 12);
+ mchbar_clrsetbits32(CLKCFG_MCHBAR, 1 << 12, 1 << 17);
+ mchbar_setbits32(CLKCFG_MCHBAR, 1 << 17 | 1 << 12);
+ mchbar_clrbits32(CLKCFG_MCHBAR, 1 << 12);
- MCHBAR32(CLKCFG_MCHBAR + 0x04) = 0x9bad1f1f;
- MCHBAR8(CLKCFG_MCHBAR + 0x08) = 0xf4;
- MCHBAR8(CLKCFG_MCHBAR + 0x0a) = 0x43;
- MCHBAR8(CLKCFG_MCHBAR + 0x0c) = 0x10;
- MCHBAR8(CLKCFG_MCHBAR + 0x0d) = 0x80;
- MCHBAR32(CLKCFG_MCHBAR + 0x50) = 0x0b0e151b;
- MCHBAR8(CLKCFG_MCHBAR + 0x54) = 0xb4;
- MCHBAR8(CLKCFG_MCHBAR + 0x55) = 0x10;
- MCHBAR8(CLKCFG_MCHBAR + 0x56) = 0x08;
+ mchbar_write32(CLKCFG_MCHBAR + 0x04, 0x9bad1f1f);
+ mchbar_write8(CLKCFG_MCHBAR + 0x08, 0xf4);
+ mchbar_write8(CLKCFG_MCHBAR + 0x0a, 0x43);
+ mchbar_write8(CLKCFG_MCHBAR + 0x0c, 0x10);
+ mchbar_write8(CLKCFG_MCHBAR + 0x0d, 0x80);
+ mchbar_write32(CLKCFG_MCHBAR + 0x50, 0x0b0e151b);
+ mchbar_write8(CLKCFG_MCHBAR + 0x54, 0xb4);
+ mchbar_write8(CLKCFG_MCHBAR + 0x55, 0x10);
+ mchbar_write8(CLKCFG_MCHBAR + 0x56, 0x08);
- MCHBAR32(CLKCFG_MCHBAR) |= (1 << 10);
- MCHBAR32(CLKCFG_MCHBAR) |= (1 << 11);
- MCHBAR32(CLKCFG_MCHBAR) &= ~(1 << 10);
- MCHBAR32(CLKCFG_MCHBAR) &= ~(1 << 11);
+ mchbar_setbits32(CLKCFG_MCHBAR, 1 << 10);
+ mchbar_setbits32(CLKCFG_MCHBAR, 1 << 11);
+ mchbar_clrbits32(CLKCFG_MCHBAR, 1 << 10);
+ mchbar_clrbits32(CLKCFG_MCHBAR, 1 << 11);
}
- MCHBAR32(CLKCFG_MCHBAR + 0x48) |= 0x3f << 24;
+ mchbar_setbits32(CLKCFG_MCHBAR + 0x48, 0x3f << 24);
}
int raminit_read_vco_index(void)
{
- switch (MCHBAR8(HPLLVCO_MCHBAR) & 0x7) {
+ switch (mchbar_read8(HPLLVCO_MCHBAR) & 0x7) {
case VCO_2666:
return 0;
case VCO_3200:
@@ -778,10 +778,10 @@
return;
}
- MCHBAR16(0x119e) = 0xa800;
- MCHBAR16(0x11c0) = (MCHBAR16(0x11c0) & ~0xff00) | (0x01 << 8);
- MCHBAR16(0x119e) = 0xb800;
- MCHBAR8(0x0f10) |= 1 << 7;
+ mchbar_write16(0x119e, 0xa800);
+ mchbar_clrsetbits16(0x11c0, 0xff << 8, 0x01 << 8);
+ mchbar_write16(0x119e, 0xb800);
+ mchbar_setbits8(0x0f10, 1 << 7);
/* Read VCO. */
const int vco_idx = raminit_read_vco_index();
@@ -820,32 +820,32 @@
FOR_EACH_CHANNEL(ch) {
unsigned int mchbar = CxDRC0_MCHBAR(ch);
- u32 cxdrc = MCHBAR32(mchbar);
+ u32 cxdrc = mchbar_read32(mchbar);
cxdrc &= ~CxDRC0_RANKEN_MASK;
FOR_EACH_POPULATED_RANK_IN_CHANNEL(dimms, ch, r)
cxdrc |= CxDRC0_RANKEN(r);
cxdrc = (cxdrc & ~CxDRC0_RMS_MASK) |
/* Always 7.8us for DDR3: */
CxDRC0_RMS_78US;
- MCHBAR32(mchbar) = cxdrc;
+ mchbar_write32(mchbar, cxdrc);
mchbar = CxDRC1_MCHBAR(ch);
- cxdrc = MCHBAR32(mchbar);
+ cxdrc = mchbar_read32(mchbar);
cxdrc |= CxDRC1_NOTPOP_MASK;
FOR_EACH_POPULATED_RANK_IN_CHANNEL(dimms, ch, r)
cxdrc &= ~CxDRC1_NOTPOP(r);
cxdrc |= CxDRC1_MUSTWR;
- MCHBAR32(mchbar) = cxdrc;
+ mchbar_write32(mchbar, cxdrc);
mchbar = CxDRC2_MCHBAR(ch);
- cxdrc = MCHBAR32(mchbar);
+ cxdrc = mchbar_read32(mchbar);
cxdrc |= CxDRC2_NOTPOP_MASK;
FOR_EACH_POPULATED_RANK_IN_CHANNEL(dimms, ch, r)
cxdrc &= ~CxDRC2_NOTPOP(r);
cxdrc |= CxDRC2_MUSTWR;
if (timings->mem_clock == MEM_CLOCK_1067MT)
cxdrc |= CxDRC2_CLK1067MT;
- MCHBAR32(mchbar) = cxdrc;
+ mchbar_write32(mchbar, cxdrc);
}
}
@@ -855,61 +855,61 @@
if (sff)
die("SFF platform unsupported in RCOMP initialization.\n");
/* Values are for DDR3. */
- MCHBAR8(0x6ac) &= ~0x0f;
- MCHBAR8(0x6b0) = 0x55;
- MCHBAR8(0x6ec) &= ~0x0f;
- MCHBAR8(0x6f0) = 0x66;
- MCHBAR8(0x72c) &= ~0x0f;
- MCHBAR8(0x730) = 0x66;
- MCHBAR8(0x76c) &= ~0x0f;
- MCHBAR8(0x770) = 0x66;
- MCHBAR8(0x7ac) &= ~0x0f;
- MCHBAR8(0x7b0) = 0x66;
- MCHBAR8(0x7ec) &= ~0x0f;
- MCHBAR8(0x7f0) = 0x66;
- MCHBAR8(0x86c) &= ~0x0f;
- MCHBAR8(0x870) = 0x55;
- MCHBAR8(0x8ac) &= ~0x0f;
- MCHBAR8(0x8b0) = 0x66;
+ mchbar_clrbits8(0x6ac, 0x0f);
+ mchbar_write8(0x6b0, 0x55);
+ mchbar_clrbits8(0x6ec, 0x0f);
+ mchbar_write8(0x6f0, 0x66);
+ mchbar_clrbits8(0x72c, 0x0f);
+ mchbar_write8(0x730, 0x66);
+ mchbar_clrbits8(0x76c, 0x0f);
+ mchbar_write8(0x770, 0x66);
+ mchbar_clrbits8(0x7ac, 0x0f);
+ mchbar_write8(0x7b0, 0x66);
+ mchbar_clrbits8(0x7ec, 0x0f);
+ mchbar_write8(0x7f0, 0x66);
+ mchbar_clrbits8(0x86c, 0x0f);
+ mchbar_write8(0x870, 0x55);
+ mchbar_clrbits8(0x8ac, 0x0f);
+ mchbar_write8(0x8b0, 0x66);
/* ODT multiplier bits. */
- MCHBAR32(0x04d0) = (MCHBAR32(0x04d0) & ~((7 << 3) | (7 << 0))) | (2 << 3) | (2 << 0);
+ mchbar_clrsetbits32(0x04d0, 7 << 3 | 7 << 0, 2 << 3 | 2 << 0);
/* Perform RCOMP calibration for DDR3. */
raminit_rcomp_calibration(stepping);
/* Run initial RCOMP. */
- MCHBAR32(0x418) |= 1 << 17;
- MCHBAR32(0x40c) &= ~(1 << 23);
- MCHBAR32(0x41c) &= ~((1 << 7) | (1 << 3));
- MCHBAR32(0x400) |= 1;
- while (MCHBAR32(0x400) & 1) {}
+ mchbar_setbits32(0x418, 1 << 17);
+ mchbar_clrbits32(0x40c, 1 << 23);
+ mchbar_clrbits32(0x41c, 1 << 7 | 1 << 3);
+ mchbar_setbits32(0x400, 1);
+ while (mchbar_read32(0x400) & 1) {}
/* Run second RCOMP. */
- MCHBAR32(0x40c) |= 1 << 19;
- MCHBAR32(0x400) |= 1;
- while (MCHBAR32(0x400) & 1) {}
+ mchbar_setbits32(0x40c, 1 << 19);
+ mchbar_setbits32(0x400, 1);
+ while (mchbar_read32(0x400) & 1) {}
/* Cleanup and start periodic RCOMP. */
- MCHBAR32(0x40c) &= ~(1 << 19);
- MCHBAR32(0x40c) |= 1 << 23;
- MCHBAR32(0x418) &= ~(1 << 17);
- MCHBAR32(0x41c) |= (1 << 7) | (1 << 3);
- MCHBAR32(0x400) |= (1 << 1);
+ mchbar_clrbits32(0x40c, 1 << 19);
+ mchbar_setbits32(0x40c, 1 << 23);
+ mchbar_clrbits32(0x418, 1 << 17);
+ mchbar_setbits32(0x41c, 1 << 7 | 1 << 3);
+ mchbar_setbits32(0x400, 1 << 1);
}
static void dram_powerup(const int resume)
{
udelay(200);
- MCHBAR32(CLKCFG_MCHBAR) = (MCHBAR32(CLKCFG_MCHBAR) & ~(1 << 3)) | (3 << 21);
+ mchbar_clrsetbits32(CLKCFG_MCHBAR, 1 << 3, 3 << 21);
if (!resume) {
- MCHBAR32(0x1434) |= (1 << 10);
+ mchbar_setbits32(0x1434, 1 << 10);
udelay(1);
}
- MCHBAR32(0x1434) |= (1 << 6);
+ mchbar_setbits32(0x1434, 1 << 6);
if (!resume) {
udelay(1);
- MCHBAR32(0x1434) |= (1 << 9);
- MCHBAR32(0x1434) &= ~(1 << 10);
+ mchbar_setbits32(0x1434, 1 << 9);
+ mchbar_clrbits32(0x1434, 1 << 10);
udelay(500);
}
}
@@ -921,7 +921,7 @@
int i;
FOR_EACH_CHANNEL(i) {
- u32 reg = MCHBAR32(CxDRT0_MCHBAR(i));
+ u32 reg = mchbar_read32(CxDRT0_MCHBAR(i));
const int btb_wtp = timings->tWL + burst_length/2 + timings->tWR;
const int btb_wtr = timings->tWL + burst_length/2 + tWTR;
reg = (reg & ~(CxDRT0_BtB_WtP_MASK | CxDRT0_BtB_WtR_MASK)) |
@@ -936,17 +936,17 @@
}
reg = (reg & ~(0x7 << 5)) | (3 << 5);
reg = (reg & ~(0x7 << 0)) | (1 << 0);
- MCHBAR32(CxDRT0_MCHBAR(i)) = reg;
+ mchbar_write32(CxDRT0_MCHBAR(i), reg);
- reg = MCHBAR32(CxDRT1_MCHBAR(i));
+ reg = mchbar_read32(CxDRT1_MCHBAR(i));
reg = (reg & ~(0x03 << 28)) | ((tRTP & 0x03) << 28);
reg = (reg & ~(0x1f << 21)) | ((timings->tRAS & 0x1f) << 21);
reg = (reg & ~(0x07 << 10)) | (((timings->tRRD - 2) & 0x07) << 10);
reg = (reg & ~(0x07 << 5)) | (((timings->tRCD - 2) & 0x07) << 5);
reg = (reg & ~(0x07 << 0)) | (((timings->tRP - 2) & 0x07) << 0);
- MCHBAR32(CxDRT1_MCHBAR(i)) = reg;
+ mchbar_write32(CxDRT1_MCHBAR(i), reg);
- reg = MCHBAR32(CxDRT2_MCHBAR(i));
+ reg = mchbar_read32(CxDRT2_MCHBAR(i));
reg = (reg & ~(0x1f << 17)) | ((timings->tFAW & 0x1f) << 17);
if (timings->mem_clock != MEM_CLOCK_1067MT) {
reg = (reg & ~(0x7 << 12)) | (0x2 << 12);
@@ -956,17 +956,17 @@
reg = (reg & ~(0xf << 6)) | (0xc << 6);
}
reg = (reg & ~(0x1f << 0)) | (0x13 << 0);
- MCHBAR32(CxDRT2_MCHBAR(i)) = reg;
+ mchbar_write32(CxDRT2_MCHBAR(i), reg);
- reg = MCHBAR32(CxDRT3_MCHBAR(i));
+ reg = mchbar_read32(CxDRT3_MCHBAR(i));
reg |= 0x3 << 28;
reg = (reg & ~(0x03 << 26));
reg = (reg & ~(0x07 << 23)) | (((timings->CAS - 3) & 0x07) << 23);
reg = (reg & ~(0xff << 13)) | ((timings->tRFC & 0xff) << 13);
reg = (reg & ~(0x07 << 0)) | (((timings->tWL - 2) & 0x07) << 0);
- MCHBAR32(CxDRT3_MCHBAR(i)) = reg;
+ mchbar_write32(CxDRT3_MCHBAR(i), reg);
- reg = MCHBAR32(CxDRT4_MCHBAR(i));
+ reg = mchbar_read32(CxDRT4_MCHBAR(i));
static const u8 timings_by_clock[4][3] = {
/* 333MHz 400MHz 533MHz
667MT 800MT 1067MT */
@@ -980,9 +980,9 @@
reg = (reg & ~(0x3ff << 17)) | (timings_by_clock[1][clk_idx] << 17);
reg = (reg & ~(0x03f << 10)) | (timings_by_clock[2][clk_idx] << 10);
reg = (reg & ~(0x1ff << 0)) | (timings_by_clock[3][clk_idx] << 0);
- MCHBAR32(CxDRT4_MCHBAR(i)) = reg;
+ mchbar_write32(CxDRT4_MCHBAR(i), reg);
- reg = MCHBAR32(CxDRT5_MCHBAR(i));
+ reg = mchbar_read32(CxDRT5_MCHBAR(i));
if (timings->mem_clock == MEM_CLOCK_1067MT)
reg = (reg & ~(0xf << 28)) | (0x8 << 28);
reg = (reg & ~(0x00f << 22)) | ((burst_length/2 + timings->CAS + 2) << 22);
@@ -990,12 +990,12 @@
reg = (reg & ~(0x00f << 4)) | ((timings->CAS - 2) << 4);
reg = (reg & ~(0x003 << 2)) | (0x001 << 2);
reg = (reg & ~(0x003 << 0));
- MCHBAR32(CxDRT5_MCHBAR(i)) = reg;
+ mchbar_write32(CxDRT5_MCHBAR(i), reg);
- reg = MCHBAR32(CxDRT6_MCHBAR(i));
+ reg = mchbar_read32(CxDRT6_MCHBAR(i));
reg = (reg & ~(0xffff << 16)) | (0x066a << 16); /* always 7.8us refresh rate for DDR3 */
reg |= (1 << 2);
- MCHBAR32(CxDRT6_MCHBAR(i)) = reg;
+ mchbar_write32(CxDRT6_MCHBAR(i), reg);
}
}
@@ -1006,16 +1006,16 @@
FOR_EACH_CHANNEL(ch) {
const int tRPALL = dimms[ch].banks == 8;
- u32 reg = MCHBAR32(CxDRT1_MCHBAR(ch)) & ~(0x01 << 15);
+ u32 reg = mchbar_read32(CxDRT1_MCHBAR(ch)) & ~(0x01 << 15);
IF_CHANNEL_POPULATED(dimms, ch)
reg |= tRPALL << 15;
- MCHBAR32(CxDRT1_MCHBAR(ch)) = reg;
+ mchbar_write32(CxDRT1_MCHBAR(ch), reg);
- reg = MCHBAR32(CxDRA_MCHBAR(ch)) & ~CxDRA_BANKS_MASK;
+ reg = mchbar_read32(CxDRA_MCHBAR(ch)) & ~CxDRA_BANKS_MASK;
FOR_EACH_POPULATED_RANK_IN_CHANNEL(dimms, ch, r) {
reg |= CxDRA_BANKS(r, dimms[ch].banks);
}
- MCHBAR32(CxDRA_MCHBAR(ch)) = reg;
+ mchbar_write32(CxDRA_MCHBAR(ch), reg);
}
}
@@ -1025,7 +1025,7 @@
int ch;
FOR_EACH_CHANNEL(ch) {
- u32 reg = MCHBAR32(CxODT_HIGH(ch));
+ u32 reg = mchbar_read32(CxODT_HIGH(ch));
if (sff && (timings->mem_clock != MEM_CLOCK_1067MT))
reg &= ~(0x3 << (61 - 32));
else
@@ -1041,9 +1041,9 @@
reg = (reg & ~(0xf << (36 - 32))) | (( 1 + timings->CAS) << (36 - 32));
}
reg = (reg & ~(0xf << (32 - 32))) | (0x7 << (32 - 32));
- MCHBAR32(CxODT_HIGH(ch)) = reg;
+ mchbar_write32(CxODT_HIGH(ch), reg);
- reg = MCHBAR32(CxODT_LOW(ch));
+ reg = mchbar_read32(CxODT_LOW(ch));
reg = (reg & ~(0x7 << 28)) | (0x2 << 28);
reg = (reg & ~(0x3 << 22)) | (0x2 << 22);
reg = (reg & ~(0x7 << 12)) | (0x2 << 12);
@@ -1059,27 +1059,27 @@
reg = (reg & ~0x7) | 0x5;
break;
}
- MCHBAR32(CxODT_LOW(ch)) = reg;
+ mchbar_write32(CxODT_LOW(ch), reg);
}
}
static void misc_settings(const timings_t *const timings,
const stepping_t stepping)
{
- MCHBAR32(0x1260) = (MCHBAR32(0x1260) & ~((1 << 24) | 0x1f)) | timings->tRD;
- MCHBAR32(0x1360) = (MCHBAR32(0x1360) & ~((1 << 24) | 0x1f)) | timings->tRD;
+ mchbar_clrsetbits32(0x1260, 1 << 24 | 0x1f, timings->tRD);
+ mchbar_clrsetbits32(0x1360, 1 << 24 | 0x1f, timings->tRD);
- MCHBAR8(0x1268) = (MCHBAR8(0x1268) & ~(0xf)) | timings->tWL;
- MCHBAR8(0x1368) = (MCHBAR8(0x1368) & ~(0xf)) | timings->tWL;
- MCHBAR8(0x12a0) = (MCHBAR8(0x12a0) & ~(0xf)) | 0xa;
- MCHBAR8(0x13a0) = (MCHBAR8(0x13a0) & ~(0xf)) | 0xa;
+ mchbar_clrsetbits8(0x1268, 0xf, timings->tWL);
+ mchbar_clrsetbits8(0x1368, 0xf, timings->tWL);
+ mchbar_clrsetbits8(0x12a0, 0xf, 0xa);
+ mchbar_clrsetbits8(0x13a0, 0xf, 0xa);
- MCHBAR32(0x218) = (MCHBAR32(0x218) & ~((7 << 29) | (7 << 25) | (3 << 22) | (3 << 10))) |
- (4 << 29) | (3 << 25) | (0 << 22) | (1 << 10);
- MCHBAR32(0x220) = (MCHBAR32(0x220) & ~(7 << 16)) | (1 << 21) | (1 << 16);
- MCHBAR32(0x224) = (MCHBAR32(0x224) & ~(7 << 8)) | (3 << 8);
+ mchbar_clrsetbits32(0x218, 7 << 29 | 7 << 25 | 3 << 22 | 3 << 10,
+ 4 << 29 | 3 << 25 | 0 << 22 | 1 << 10);
+ mchbar_clrsetbits32(0x220, 7 << 16, 1 << 21 | 1 << 16);
+ mchbar_clrsetbits32(0x224, 7 << 8, 3 << 8);
if (stepping >= STEPPING_B1)
- MCHBAR8(0x234) |= (1 << 3);
+ mchbar_setbits8(0x234, 1 << 3);
}
static void clock_crossing_setup(const fsb_clock_t fsb,
@@ -1107,10 +1107,10 @@
};
const u32 *data = values_from_fsb_and_mem[fsb][ddr3clock];
- MCHBAR32(0x0208) = data[3];
- MCHBAR32(0x020c) = data[2];
+ mchbar_write32(0x0208, data[3]);
+ mchbar_write32(0x020c, data[2]);
if (((fsb == FSB_CLOCK_1067MHz) || (fsb == FSB_CLOCK_800MHz)) && (ddr3clock == MEM_CLOCK_667MT))
- MCHBAR32(0x0210) = data[1];
+ mchbar_write32(0x0210, data[1]);
static const u32 from_fsb_and_mem[][3] = {
/* DDR3-1067 DDR3-800 DDR3-667 */
@@ -1121,10 +1121,10 @@
FOR_EACH_CHANNEL(ch) {
const unsigned int mchbar = 0x1258 + (ch * 0x0100);
if ((fsb == FSB_CLOCK_1067MHz) && (ddr3clock == MEM_CLOCK_800MT) && CHANNEL_IS_CARDF(dimms, ch))
- MCHBAR32(mchbar) = 0x08040120;
+ mchbar_write32(mchbar, 0x08040120);
else
- MCHBAR32(mchbar) = from_fsb_and_mem[fsb][ddr3clock];
- MCHBAR32(mchbar + 4) = 0x00000000;
+ mchbar_write32(mchbar, from_fsb_and_mem[fsb][ddr3clock]);
+ mchbar_write32(mchbar + 4, 0);
}
}
@@ -1136,9 +1136,9 @@
/* FSB 800MHz */ { 0x14, 0x00f000f0 },
/* FSB 667MHz */ { 0x10, 0x00c000c0 },
};
- EPBAR8(EPVC1ITC) = timings_by_fsb[fsb][0];
- EPBAR32(EPVC1IST + 0) = timings_by_fsb[fsb][1];
- EPBAR32(EPVC1IST + 4) = timings_by_fsb[fsb][1];
+ epbar_write8(EPVC1ITC, timings_by_fsb[fsb][0]);
+ epbar_write32(EPVC1IST + 0, timings_by_fsb[fsb][1]);
+ epbar_write32(EPVC1IST + 4, timings_by_fsb[fsb][1]);
}
#define DEFAULT_PCI_MMIO_SIZE 2048
@@ -1190,13 +1190,13 @@
}
reg |= CxDRBy_BOUND_MB(r+1, base);
- MCHBAR32(CxDRBy_MCHBAR(ch, r)) = reg;
+ mchbar_write32(CxDRBy_MCHBAR(ch, r), reg);
}
}
/* Program page size (CxDRA). */
FOR_EACH_CHANNEL(ch) {
- u32 reg = MCHBAR32(CxDRA_MCHBAR(ch)) & ~CxDRA_PAGESIZE_MASK;
+ u32 reg = mchbar_read32(CxDRA_MCHBAR(ch)) & ~CxDRA_PAGESIZE_MASK;
FOR_EACH_POPULATED_RANK_IN_CHANNEL(dimms, ch, r) {
/* Fixed page size for pre-jedec config. */
const unsigned int page_size = /* dimm page size in bytes */
@@ -1204,7 +1204,7 @@
reg |= CxDRA_PAGESIZE(r, log2(page_size));
/* deferred to f5_27: reg |= CxDRA_BANKS(r, dimms[ch].banks); */
}
- MCHBAR32(CxDRA_MCHBAR(ch)) = reg;
+ mchbar_write32(CxDRA_MCHBAR(ch), reg);
}
/* Calculate memory mapping, all values in MB. */
@@ -1271,16 +1271,16 @@
switch (mode) {
case CHANNEL_MODE_SINGLE:
printk(BIOS_DEBUG, "Memory configured in single-channel mode.\n");
- MCHBAR32(DCC_MCHBAR) &= ~DCC_INTERLEAVED;
+ mchbar_clrbits32(DCC_MCHBAR, DCC_INTERLEAVED);
break;
case CHANNEL_MODE_DUAL_ASYNC:
printk(BIOS_DEBUG, "Memory configured in dual-channel asymmetric mode.\n");
- MCHBAR32(DCC_MCHBAR) &= ~DCC_INTERLEAVED;
+ mchbar_clrbits32(DCC_MCHBAR, DCC_INTERLEAVED);
break;
case CHANNEL_MODE_DUAL_INTERLEAVED:
printk(BIOS_DEBUG, "Memory configured in dual-channel interleaved mode.\n");
- MCHBAR32(DCC_MCHBAR) &= ~(DCC_NO_CHANXOR | (1 << 9));
- MCHBAR32(DCC_MCHBAR) |= DCC_INTERLEAVED;
+ mchbar_clrbits32(DCC_MCHBAR, DCC_NO_CHANXOR | 1 << 9);
+ mchbar_setbits32(DCC_MCHBAR, DCC_INTERLEAVED);
break;
}
@@ -1300,7 +1300,7 @@
mode = CHANNEL_MODE_DUAL_ASYNC;
program_memory_map(dimms, mode, 1, 0);
- MCHBAR32(DCC_MCHBAR) |= DCC_NO_CHANXOR;
+ mchbar_setbits32(DCC_MCHBAR, DCC_NO_CHANXOR);
}
static void ddr3_select_clock_mux(const mem_clock_t ddr3clock,
@@ -1320,21 +1320,21 @@
if ((1 == ch) && (!CHANNEL_IS_POPULATED(dimms, 0) || (cardF[0] != cardF[1])))
mixed = 4 << 11;
const unsigned int b = 0x14b0 + (ch * 0x0100);
- MCHBAR32(b+0x1c) = (MCHBAR32(b+0x1c) & ~(7 << 11)) |
- ((( cardF[ch])?1:0) << 11) | mixed;
- MCHBAR32(b+0x18) = (MCHBAR32(b+0x18) & ~(7 << 11)) | mixed;
- MCHBAR32(b+0x14) = (MCHBAR32(b+0x14) & ~(7 << 11)) |
- (((!clk1067 && !cardF[ch])?0:1) << 11) | mixed;
- MCHBAR32(b+0x10) = (MCHBAR32(b+0x10) & ~(7 << 11)) |
- ((( clk1067 && !cardF[ch])?1:0) << 11) | mixed;
- MCHBAR32(b+0x0c) = (MCHBAR32(b+0x0c) & ~(7 << 11)) |
- ((( cardF[ch])?3:2) << 11) | mixed;
- MCHBAR32(b+0x08) = (MCHBAR32(b+0x08) & ~(7 << 11)) |
- (2 << 11) | mixed;
- MCHBAR32(b+0x04) = (MCHBAR32(b+0x04) & ~(7 << 11)) |
- (((!clk1067 && !cardF[ch])?2:3) << 11) | mixed;
- MCHBAR32(b+0x00) = (MCHBAR32(b+0x00) & ~(7 << 11)) |
- ((( clk1067 && !cardF[ch])?3:2) << 11) | mixed;
+ mchbar_write32(b + 0x1c, (mchbar_read32(b + 0x1c) & ~(7 << 11)) |
+ ((( cardF[ch])?1:0) << 11) | mixed);
+ mchbar_write32(b + 0x18, (mchbar_read32(b + 0x18) & ~(7 << 11)) | mixed);
+ mchbar_write32(b + 0x14, (mchbar_read32(b + 0x14) & ~(7 << 11)) |
+ (((!clk1067 && !cardF[ch])?0:1) << 11) | mixed);
+ mchbar_write32(b + 0x10, (mchbar_read32(b + 0x10) & ~(7 << 11)) |
+ ((( clk1067 && !cardF[ch])?1:0) << 11) | mixed);
+ mchbar_write32(b + 0x0c, (mchbar_read32(b + 0x0c) & ~(7 << 11)) |
+ ((( cardF[ch])?3:2) << 11) | mixed);
+ mchbar_write32(b + 0x08, (mchbar_read32(b + 0x08) & ~(7 << 11)) |
+ (2 << 11) | mixed);
+ mchbar_write32(b + 0x04, (mchbar_read32(b + 0x04) & ~(7 << 11)) |
+ (((!clk1067 && !cardF[ch])?2:3) << 11) | mixed);
+ mchbar_write32(b + 0x00, (mchbar_read32(b + 0x00) & ~(7 << 11)) |
+ ((( clk1067 && !cardF[ch])?3:2) << 11) | mixed);
}
}
static void ddr3_write_io_init(const mem_clock_t ddr3clock,
@@ -1392,16 +1392,16 @@
const u32 *const data = (ddr3clock != MEM_CLOCK_1067MT)
? ddr3_667_800_by_stepping_ddr3_and_card[a1step][2 - ddr3clock][cardF[ch]]
: ddr3_1067_by_channel_and_card[ch][cardF[ch]];
- MCHBAR32(CxWRTy_MCHBAR(ch, 0)) = data[0];
- MCHBAR32(CxWRTy_MCHBAR(ch, 1)) = data[1];
- MCHBAR32(CxWRTy_MCHBAR(ch, 2)) = data[2];
- MCHBAR32(CxWRTy_MCHBAR(ch, 3)) = data[3];
+ mchbar_write32(CxWRTy_MCHBAR(ch, 0), data[0]);
+ mchbar_write32(CxWRTy_MCHBAR(ch, 1), data[1]);
+ mchbar_write32(CxWRTy_MCHBAR(ch, 2), data[2]);
+ mchbar_write32(CxWRTy_MCHBAR(ch, 3), data[3]);
}
- MCHBAR32(0x1490) = 0x00e70067;
- MCHBAR32(0x1494) = 0x000d8000;
- MCHBAR32(0x1590) = 0x00e70067;
- MCHBAR32(0x1594) = 0x000d8000;
+ mchbar_write32(0x1490, 0x00e70067);
+ mchbar_write32(0x1494, 0x000d8000);
+ mchbar_write32(0x1590, 0x00e70067);
+ mchbar_write32(0x1594, 0x000d8000);
}
static void ddr3_read_io_init(const mem_clock_t ddr3clock,
const dimminfo_t *const dimms,
@@ -1413,7 +1413,7 @@
u32 addr, tmp;
const unsigned int base = 0x14b0 + (ch * 0x0100);
for (addr = base + 0x1c; addr >= base; addr -= 4) {
- tmp = MCHBAR32(addr);
+ tmp = mchbar_read32(addr);
tmp &= ~((3 << 25) | (1 << 8) | (7 << 16) | (0xf << 20) | (1 << 27));
tmp |= (1 << 27);
switch (ddr3clock) {
@@ -1432,7 +1432,7 @@
default:
die("Wrong clock");
}
- MCHBAR32(addr) = tmp;
+ mchbar_write32(addr, tmp);
}
}
}
@@ -1448,12 +1448,12 @@
die("Stepping <B1 unsupported in "
"system-memory i/o initialization.\n");
- tmp = MCHBAR32(0x1400);
+ tmp = mchbar_read32(0x1400);
tmp &= ~(3<<13);
tmp |= (1<<9) | (1<<13);
- MCHBAR32(0x1400) = tmp;
+ mchbar_write32(0x1400, tmp);
- tmp = MCHBAR32(0x140c);
+ tmp = mchbar_read32(0x140c);
tmp &= ~(0xff | (1<<11) | (1<<12) |
(1<<16) | (1<<18) | (1<<27) | (0xf<<28));
tmp |= (1<<7) | (1<<11) | (1<<16);
@@ -1468,11 +1468,11 @@
tmp |= 8 << 28;
break;
}
- MCHBAR32(0x140c) = tmp;
+ mchbar_write32(0x140c, tmp);
- MCHBAR32(0x1440) &= ~1;
+ mchbar_clrbits32(0x1440, 1);
- tmp = MCHBAR32(0x1414);
+ tmp = mchbar_read32(0x1414);
tmp &= ~((1<<20) | (7<<11) | (0xf << 24) | (0xf << 16));
tmp |= (3<<11);
switch (ddr3clock) {
@@ -1486,15 +1486,15 @@
tmp |= (4 << 24) | (4 << 16);
break;
}
- MCHBAR32(0x1414) = tmp;
+ mchbar_write32(0x1414, tmp);
- MCHBAR32(0x1418) &= ~((1<<3) | (1<<11) | (1<<19) | (1<<27));
+ mchbar_clrbits32(0x1418, 1 << 3 | 1 << 11 | 1 << 19 | 1 << 27);
- MCHBAR32(0x141c) &= ~((1<<3) | (1<<11) | (1<<19) | (1<<27));
+ mchbar_clrbits32(0x141c, 1 << 3 | 1 << 11 | 1 << 19 | 1 << 27);
- MCHBAR32(0x1428) |= 1<<14;
+ mchbar_setbits32(0x1428, 1 << 14);
- tmp = MCHBAR32(0x142c);
+ tmp = mchbar_read32(0x142c);
tmp &= ~((0xf << 8) | (0x7 << 20) | 0xf | (0xf << 24));
tmp |= (0x3 << 20) | (5 << 24);
switch (ddr3clock) {
@@ -1508,26 +1508,26 @@
tmp |= (4 << 8) | 0x7;
break;
}
- MCHBAR32(0x142c) = tmp;
+ mchbar_write32(0x142c, tmp);
- tmp = MCHBAR32(0x400);
+ tmp = mchbar_read32(0x400);
tmp &= ~((3 << 4) | (3 << 16) | (3 << 30));
tmp |= (2 << 4) | (2 << 16);
- MCHBAR32(0x400) = tmp;
+ mchbar_write32(0x400, tmp);
- MCHBAR32(0x404) &= ~(0xf << 20);
+ mchbar_clrbits32(0x404, 0xf << 20);
- MCHBAR32(0x40c) &= ~(1 << 6);
+ mchbar_clrbits32(0x40c, 1 << 6);
- tmp = MCHBAR32(0x410);
+ tmp = mchbar_read32(0x410);
tmp &= ~(7 << 28);
tmp |= 2 << 28;
- MCHBAR32(0x410) = tmp;
+ mchbar_write32(0x410, tmp);
- tmp = MCHBAR32(0x41c);
+ tmp = mchbar_read32(0x41c);
tmp &= ~0x77;
tmp |= 0x11;
- MCHBAR32(0x41c) = tmp;
+ mchbar_write32(0x41c, tmp);
ddr3_select_clock_mux(ddr3clock, dimms, stepping);
@@ -1543,16 +1543,16 @@
die("tWR value unsupported in Jedec initialization.\n");
/* Pre-jedec settings */
- MCHBAR32(0x40) |= (1 << 1);
- MCHBAR32(0x230) |= (3 << 1);
- MCHBAR32(0x238) |= (3 << 24);
- MCHBAR32(0x23c) |= (3 << 24);
+ mchbar_setbits32(0x40, 1 << 1);
+ mchbar_setbits32(0x230, 3 << 1);
+ mchbar_setbits32(0x238, 3 << 24);
+ mchbar_setbits32(0x23c, 3 << 24);
/* Normal write pointer operation */
- MCHBAR32(0x14f0) |= (1 << 9);
- MCHBAR32(0x15f0) |= (1 << 9);
+ mchbar_setbits32(0x14f0, 1 << 9);
+ mchbar_setbits32(0x15f0, 1 << 9);
- MCHBAR32(DCC_MCHBAR) = (MCHBAR32(DCC_MCHBAR) & ~DCC_CMD_MASK) | DCC_CMD_NOP;
+ mchbar_clrsetbits32(DCC_MCHBAR, DCC_CMD_MASK, DCC_CMD_NOP);
pci_and_config8(PCI_DEV(0, 0, 0), 0xf0, ~(1 << 2));
@@ -1577,15 +1577,15 @@
Mirrored ranks aren't taken into account here. */
const u32 rankaddr = raminit_get_rank_addr(ch, r);
printk(BIOS_DEBUG, "JEDEC init @0x%08x\n", rankaddr);
- MCHBAR32(DCC_MCHBAR) = (MCHBAR32(DCC_MCHBAR) & ~DCC_SET_EREG_MASK) | DCC_SET_EREGx(2);
+ mchbar_clrsetbits32(DCC_MCHBAR, DCC_SET_EREG_MASK, DCC_SET_EREGx(2));
read32((u32 *)(rankaddr | WL));
- MCHBAR32(DCC_MCHBAR) = (MCHBAR32(DCC_MCHBAR) & ~DCC_SET_EREG_MASK) | DCC_SET_EREGx(3);
+ mchbar_clrsetbits32(DCC_MCHBAR, DCC_SET_EREG_MASK, DCC_SET_EREGx(3));
read32((u32 *)rankaddr);
- MCHBAR32(DCC_MCHBAR) = (MCHBAR32(DCC_MCHBAR) & ~DCC_SET_EREG_MASK) | DCC_SET_EREGx(1);
+ mchbar_clrsetbits32(DCC_MCHBAR, DCC_SET_EREG_MASK, DCC_SET_EREGx(1));
read32((u32 *)(rankaddr | ODT_120OHMS | ODS_34OHMS));
- MCHBAR32(DCC_MCHBAR) = (MCHBAR32(DCC_MCHBAR) & ~DCC_CMD_MASK) | DCC_SET_MREG;
+ mchbar_clrsetbits32(DCC_MCHBAR, DCC_CMD_MASK, DCC_SET_MREG);
read32((u32 *)(rankaddr | WR | DLL1 | CAS | INTERLEAVED));
- MCHBAR32(DCC_MCHBAR) = (MCHBAR32(DCC_MCHBAR) & ~DCC_CMD_MASK) | DCC_SET_MREG;
+ mchbar_clrsetbits32(DCC_MCHBAR, DCC_CMD_MASK, DCC_SET_MREG);
read32((u32 *)(rankaddr | WR | CAS | INTERLEAVED));
}
}
@@ -1593,51 +1593,51 @@
static void ddr3_calibrate_zq(void) {
udelay(2);
- u32 tmp = MCHBAR32(DCC_MCHBAR);
+ u32 tmp = mchbar_read32(DCC_MCHBAR);
tmp &= ~(7 << 16);
tmp |= (5 << 16); /* ZQ calibration mode */
- MCHBAR32(DCC_MCHBAR) = tmp;
+ mchbar_write32(DCC_MCHBAR, tmp);
- MCHBAR32(CxDRT6_MCHBAR(0)) |= (1 << 3);
- MCHBAR32(CxDRT6_MCHBAR(1)) |= (1 << 3);
+ mchbar_setbits32(CxDRT6_MCHBAR(0), 1 << 3);
+ mchbar_setbits32(CxDRT6_MCHBAR(1), 1 << 3);
udelay(1);
- MCHBAR32(CxDRT6_MCHBAR(0)) &= ~(1 << 3);
- MCHBAR32(CxDRT6_MCHBAR(1)) &= ~(1 << 3);
+ mchbar_clrbits32(CxDRT6_MCHBAR(0), 1 << 3);
+ mchbar_clrbits32(CxDRT6_MCHBAR(1), 1 << 3);
- MCHBAR32(DCC_MCHBAR) |= (7 << 16); /* Normal operation */
+ mchbar_setbits32(DCC_MCHBAR, 7 << 16); /* Normal operation */
}
static void post_jedec_sequence(const int cores) {
const int quadcore = cores == 4;
- MCHBAR32(0x0040) &= ~(1 << 1);
- MCHBAR32(0x0230) &= ~(3 << 1);
- MCHBAR32(0x0230) |= 1 << 15;
- MCHBAR32(0x0230) &= ~(1 << 19);
- MCHBAR32(0x1250) = 0x6c4;
- MCHBAR32(0x1350) = 0x6c4;
- MCHBAR32(0x1254) = 0x871a066d;
- MCHBAR32(0x1354) = 0x871a066d;
- MCHBAR32(0x0238) |= 1 << 26;
- MCHBAR32(0x0238) &= ~(3 << 24);
- MCHBAR32(0x0238) |= 1 << 23;
- MCHBAR32(0x0238) = (MCHBAR32(0x238) & ~(7 << 20)) | (3 << 20);
- MCHBAR32(0x0238) = (MCHBAR32(0x238) & ~(7 << 17)) | (6 << 17);
- MCHBAR32(0x0238) = (MCHBAR32(0x238) & ~(7 << 14)) | (6 << 14);
- MCHBAR32(0x0238) = (MCHBAR32(0x238) & ~(7 << 11)) | (6 << 11);
- MCHBAR32(0x0238) = (MCHBAR32(0x238) & ~(7 << 8)) | (6 << 8);
- MCHBAR32(0x023c) &= ~(3 << 24);
- MCHBAR32(0x023c) &= ~(1 << 23);
- MCHBAR32(0x023c) = (MCHBAR32(0x23c) & ~(7 << 20)) | (3 << 20);
- MCHBAR32(0x023c) = (MCHBAR32(0x23c) & ~(7 << 17)) | (6 << 17);
- MCHBAR32(0x023c) = (MCHBAR32(0x23c) & ~(7 << 14)) | (6 << 14);
- MCHBAR32(0x023c) = (MCHBAR32(0x23c) & ~(7 << 11)) | (6 << 11);
- MCHBAR32(0x023c) = (MCHBAR32(0x23c) & ~(7 << 8)) | (6 << 8);
+ mchbar_clrbits32(0x0040, 1 << 1);
+ mchbar_clrbits32(0x0230, 3 << 1);
+ mchbar_setbits32(0x0230, 1 << 15);
+ mchbar_clrbits32(0x0230, 1 << 19);
+ mchbar_write32(0x1250, 0x6c4);
+ mchbar_write32(0x1350, 0x6c4);
+ mchbar_write32(0x1254, 0x871a066d);
+ mchbar_write32(0x1354, 0x871a066d);
+ mchbar_setbits32(0x0238, 1 << 26);
+ mchbar_clrbits32(0x0238, 3 << 24);
+ mchbar_setbits32(0x0238, 1 << 23);
+ mchbar_clrsetbits32(0x0238, 7 << 20, 3 << 20);
+ mchbar_clrsetbits32(0x0238, 7 << 17, 6 << 17);
+ mchbar_clrsetbits32(0x0238, 7 << 14, 6 << 14);
+ mchbar_clrsetbits32(0x0238, 7 << 11, 6 << 11);
+ mchbar_clrsetbits32(0x0238, 7 << 8, 6 << 8);
+ mchbar_clrbits32(0x023c, 3 << 24);
+ mchbar_clrbits32(0x023c, 1 << 23);
+ mchbar_clrsetbits32(0x023c, 7 << 20, 3 << 20);
+ mchbar_clrsetbits32(0x023c, 7 << 17, 6 << 17);
+ mchbar_clrsetbits32(0x023c, 7 << 14, 6 << 14);
+ mchbar_clrsetbits32(0x023c, 7 << 11, 6 << 11);
+ mchbar_clrsetbits32(0x023c, 7 << 8, 6 << 8);
if (quadcore) {
- MCHBAR32(0xb14) |= (0xbfbf << 16);
+ mchbar_setbits32(0xb14, 0xbfbf << 16);
}
}
@@ -1648,13 +1648,13 @@
FOR_EACH_POPULATED_CHANNEL(dimms, ch) {
const unsigned int mchbar = CxDRC1_MCHBAR(ch);
- u32 cxdrc1 = MCHBAR32(mchbar);
+ u32 cxdrc1 = mchbar_read32(mchbar);
cxdrc1 &= ~CxDRC1_SSDS_MASK;
if (dimms[ch].ranks == 1)
cxdrc1 |= CxDRC1_SS;
else
cxdrc1 |= CxDRC1_DS;
- MCHBAR32(mchbar) = cxdrc1;
+ mchbar_write32(mchbar, cxdrc1);
}
}
@@ -1670,22 +1670,23 @@
rank = 3; /* Highest rank per channel */
channel--;
}
- const u32 reg = MCHBAR32(CxDRBy_MCHBAR(channel, rank));
+ const u32 reg = mchbar_read32(CxDRBy_MCHBAR(channel, rank));
/* Bound is in 32MB. */
return ((reg & CxDRBy_BOUND_MASK(rank)) >> CxDRBy_BOUND_SHIFT(rank)) << 25;
}
-void raminit_reset_readwrite_pointers(void) {
- MCHBAR32(0x1234) |= (1 << 6);
- MCHBAR32(0x1234) &= ~(1 << 6);
- MCHBAR32(0x1334) |= (1 << 6);
- MCHBAR32(0x1334) &= ~(1 << 6);
- MCHBAR32(0x14f0) &= ~(1 << 9);
- MCHBAR32(0x14f0) |= (1 << 9);
- MCHBAR32(0x14f0) |= (1 << 10);
- MCHBAR32(0x15f0) &= ~(1 << 9);
- MCHBAR32(0x15f0) |= (1 << 9);
- MCHBAR32(0x15f0) |= (1 << 10);
+void raminit_reset_readwrite_pointers(void)
+{
+ mchbar_setbits32(0x1234, 1 << 6);
+ mchbar_clrbits32(0x1234, 1 << 6);
+ mchbar_setbits32(0x1334, 1 << 6);
+ mchbar_clrbits32(0x1334, 1 << 6);
+ mchbar_clrbits32(0x14f0, 1 << 9);
+ mchbar_setbits32(0x14f0, 1 << 9);
+ mchbar_setbits32(0x14f0, 1 << 10);
+ mchbar_clrbits32(0x15f0, 1 << 9);
+ mchbar_setbits32(0x15f0, 1 << 9);
+ mchbar_setbits32(0x15f0, 1 << 10);
}
void raminit(sysinfo_t *const sysinfo, const int s3resume)
@@ -1713,10 +1714,10 @@
/* Program DRAM type. */
switch (sysinfo->spd_type) {
case DDR2:
- MCHBAR8(0x1434) |= (1 << 7);
+ mchbar_setbits8(0x1434, 1 << 7);
break;
case DDR3:
- MCHBAR8(0x1434) |= (3 << 0);
+ mchbar_setbits8(0x1434, 3 << 0);
break;
}
@@ -1739,7 +1740,7 @@
dram_program_banks(dimms);
/* Enable DRAM clock pairs for populated DIMMs. */
FOR_EACH_POPULATED_CHANNEL(dimms, ch)
- MCHBAR32(CxDCLKDIS_MCHBAR(ch)) |= CxDCLKDIS_ENABLE;
+ mchbar_setbits32(CxDCLKDIS_MCHBAR(ch), CxDCLKDIS_ENABLE);
/* Enable On-Die Termination. */
odt_setup(timings, sysinfo->sff);
@@ -1763,7 +1764,7 @@
post_jedec_sequence(sysinfo->cores);
/* Announce normal operation, initialization completed. */
- MCHBAR32(DCC_MCHBAR) |= (0x7 << 16) | (0x1 << 19);
+ mchbar_setbits32(DCC_MCHBAR, 0x7 << 16 | 0x1 << 19);
pci_or_config8(PCI_DEV(0, 0, 0), 0xf0, 1 << 2);
@@ -1778,12 +1779,10 @@
/* Perform receive-enable calibration. */
raminit_receive_enable_calibration(timings, dimms);
/* Lend clock values from receive-enable calibration. */
- MCHBAR32(CxDRT5_MCHBAR(0)) =
- (MCHBAR32(CxDRT5_MCHBAR(0)) & ~(0xf0)) |
- ((((MCHBAR32(CxDRT3_MCHBAR(0)) >> 7) - 1) & 0xf) << 4);
- MCHBAR32(CxDRT5_MCHBAR(1)) =
- (MCHBAR32(CxDRT5_MCHBAR(1)) & ~(0xf0)) |
- ((((MCHBAR32(CxDRT3_MCHBAR(1)) >> 7) - 1) & 0xf) << 4);
+ mchbar_clrsetbits32(CxDRT5_MCHBAR(0), 0xf0,
+ (((mchbar_read32(CxDRT3_MCHBAR(0)) >> 7) - 1) & 0xf) << 4);
+ mchbar_clrsetbits32(CxDRT5_MCHBAR(1), 0xf0,
+ (((mchbar_read32(CxDRT3_MCHBAR(1)) >> 7) - 1) & 0xf) << 4);
/* Perform read/write training for high clock rate. */
if (timings->mem_clock == MEM_CLOCK_1067MT) {
diff --git a/src/northbridge/intel/gm45/raminit_rcomp_calibration.c b/src/northbridge/intel/gm45/raminit_rcomp_calibration.c
index 94da2dc..aef863f 100644
--- a/src/northbridge/intel/gm45/raminit_rcomp_calibration.c
+++ b/src/northbridge/intel/gm45/raminit_rcomp_calibration.c
@@ -153,11 +153,11 @@
/* Write 4 32-bit registers, 4 values each. */
for (i = row; i < row + 16; i += 4) {
- MCHBAR32(mchbar) =
- ((ddr3_lut[a1step][i + 0][col] & 0x3f) << 0) |
- ((ddr3_lut[a1step][i + 1][col] & 0x3f) << 8) |
- ((ddr3_lut[a1step][i + 2][col] & 0x3f) << 16) |
- ((ddr3_lut[a1step][i + 3][col] & 0x3f) << 24);
+ mchbar_write32(mchbar,
+ (ddr3_lut[a1step][i + 0][col] & 0x3f) << 0 |
+ (ddr3_lut[a1step][i + 1][col] & 0x3f) << 8 |
+ (ddr3_lut[a1step][i + 2][col] & 0x3f) << 16 |
+ (ddr3_lut[a1step][i + 3][col] & 0x3f) << 24);
mchbar += 4;
}
}
@@ -175,33 +175,33 @@
for (i = 0; i < 2 * 6 * 2; ++i)
((char *)lut_idx)[i] = -1;
- MCHBAR32(0x400) |= (1 << 2);
- MCHBAR32(0x418) |= (1 << 17);
- MCHBAR32(0x40c) &= ~(1 << 23);
- MCHBAR32(0x41c) &= ~((1 << 7) | (1 << 3));
- MCHBAR32(0x400) |= 1;
+ mchbar_setbits32(0x400, 1 << 2);
+ mchbar_setbits32(0x418, 1 << 17);
+ mchbar_clrbits32(0x40c, 1 << 23);
+ mchbar_clrbits32(0x41c, 1 << 7 | 1 << 3);
+ mchbar_setbits32(0x400, 1 << 0);
/* Read lookup indices. */
for (i = 0; i < 12; ++i) {
do {
- MCHBAR32(0x400) |= (1 << 3);
+ mchbar_setbits32(0x400, 1 << 3);
udelay(10);
- MCHBAR32(0x400) &= ~(1 << 3);
- } while ((MCHBAR32(0x530) & 0x7) != 0x4);
- u32 reg = MCHBAR32(0x400);
+ mchbar_clrbits32(0x400, 1 << 3);
+ } while ((mchbar_read32(0x530) & 0x7) != 0x4);
+ u32 reg = mchbar_read32(0x400);
const unsigned int group = (reg >> 13) & 0x7;
const unsigned int channel = (reg >> 12) & 0x1;
if (group > 5)
break;
- reg = MCHBAR32(0x518);
+ reg = mchbar_read32(0x518);
lut_idx[channel][group][PULL_UP] = (reg >> 24) & 0x7f;
lut_idx[channel][group][PULL_DOWN] = (reg >> 16) & 0x7f;
}
/* Cleanup? */
- MCHBAR32(0x400) |= (1 << 3);
+ mchbar_setbits32(0x400, 1 << 3);
udelay(10);
- MCHBAR32(0x400) &= ~(1 << 3);
- MCHBAR32(0x400) &= ~(1 << 2);
+ mchbar_clrbits32(0x400, 1 << 3);
+ mchbar_clrbits32(0x400, 1 << 2);
/* Check for consistency. */
for (i = 0; i < 2 * 6 * 2; ++i) {
diff --git a/src/northbridge/intel/gm45/raminit_read_write_training.c b/src/northbridge/intel/gm45/raminit_read_write_training.c
index e8d719f..544c523 100644
--- a/src/northbridge/intel/gm45/raminit_read_write_training.c
+++ b/src/northbridge/intel/gm45/raminit_read_write_training.c
@@ -77,10 +77,10 @@
if (normalize_read_timing(timing) < 0)
return -1;
- u32 reg = MCHBAR32(CxRDTy_MCHBAR(ch, lane));
+ u32 reg = mchbar_read32(CxRDTy_MCHBAR(ch, lane));
reg &= ~(CxRDTy_T_MASK | CxRDTy_P_MASK);
reg |= CxRDTy_T(timing->t) | CxRDTy_P(timing->p);
- MCHBAR32(CxRDTy_MCHBAR(ch, lane)) = reg;
+ mchbar_write32(CxRDTy_MCHBAR(ch, lane), reg);
return 0;
}
@@ -164,7 +164,7 @@
{
read_timing_t lower, upper;
- MCHBAR32(CxRDTy_MCHBAR(channel, lane)) |= 3 << 25;
+ mchbar_setbits32(CxRDTy_MCHBAR(channel, lane), 3 << 25);
/*** Search lower bound. ***/
@@ -227,7 +227,7 @@
/* Store one timing pair in one byte each. */
FOR_EACH_CHANNEL(ch) {
for (i = 0; i < 8; ++i) {
- const u32 bl_reg = MCHBAR32(CxRDTy_MCHBAR(ch, i));
+ const u32 bl_reg = mchbar_read32(CxRDTy_MCHBAR(ch, i));
bytes[(ch * 8) + i] =
(((bl_reg & CxRDTy_T_MASK) >> CxRDTy_T_SHIFT)
<< 4) |
@@ -253,10 +253,10 @@
for (i = 0; i < 8; ++i) {
const int t = bytes[(ch * 8) + i] >> 4;
const int p = bytes[(ch * 8) + i] & 7;
- u32 bl_reg = MCHBAR32(CxRDTy_MCHBAR(ch, i));
+ u32 bl_reg = mchbar_read32(CxRDTy_MCHBAR(ch, i));
bl_reg &= ~(CxRDTy_T_MASK | CxRDTy_P_MASK);
bl_reg |= (3 << 25) | CxRDTy_T(t) | CxRDTy_P(p);
- MCHBAR32(CxRDTy_MCHBAR(ch, i)) = bl_reg;
+ mchbar_write32(CxRDTy_MCHBAR(ch, i), bl_reg);
printk(BIOS_DEBUG, "Restored timings for byte lane "
"%d on channel %d: %d.%d\n", i, ch, t, p);
}
@@ -395,11 +395,11 @@
(t <= d_bounds[memclk1067][0]) ? CxWRTy_BELOW_D :
((t > d_bounds[memclk1067][1]) ? CxWRTy_ABOVE_D : 0);
- u32 reg = MCHBAR32(CxWRTy_MCHBAR(ch, group));
+ u32 reg = mchbar_read32(CxWRTy_MCHBAR(ch, group));
reg &= ~(CxWRTy_T_MASK | CxWRTy_P_MASK | CxWRTy_F_MASK);
reg &= ~CxWRTy_D_MASK;
reg |= CxWRTy_T(t) | CxWRTy_P(p) | CxWRTy_F(f) | d;
- MCHBAR32(CxWRTy_MCHBAR(ch, group)) = reg;
+ mchbar_write32(CxWRTy_MCHBAR(ch, group), reg);
return 0;
}
@@ -409,10 +409,10 @@
{
int i, ret = 0;
- const u32 mmarb0 = MCHBAR32(0x0220);
- const u8 wrcctl = MCHBAR8(0x0218);
- MCHBAR32(0x0220) |= 0xf << 28;
- MCHBAR8(0x0218) |= 0x1 << 4;
+ const u32 mmarb0 = mchbar_read32(0x0220);
+ const u8 wrcctl = mchbar_read8(0x0218);
+ mchbar_setbits32(0x0220, 0xf << 28);
+ mchbar_setbits8(0x0218, 0x1 << 4);
for (i = 0; i < addresses->count; ++i) {
const unsigned int addr = addresses->addr[i];
@@ -423,7 +423,7 @@
write32((u32 *)(addr + off + 4), pattern);
}
- MCHBAR8(0x78) |= 1;
+ mchbar_setbits8(0x78, 1);
for (off = 0; off < 640; off += 8) {
const u32 good = write_training_schedule[off >> 3];
@@ -438,8 +438,8 @@
ret = 1;
_bad_timing_out:
- MCHBAR32(0x0220) = mmarb0;
- MCHBAR8(0x0218) = wrcctl;
+ mchbar_write32(0x0220, mmarb0);
+ mchbar_write8(0x0218, wrcctl);
return ret;
}
@@ -510,7 +510,7 @@
/*** Search lower bound. ***/
/* Start at -1f from current values. */
- const u32 reg = MCHBAR32(CxWRTy_MCHBAR(ch, group));
+ const u32 reg = mchbar_read32(CxWRTy_MCHBAR(ch, group));
lower.t = (reg >> 12) & 0xf;
lower.p = (reg >> 8) & 0x7;
lower.f = ((reg >> 2) & 0x3) - 1;
@@ -592,7 +592,7 @@
/* We could save six bytes by putting all F values in two bytes. */
FOR_EACH_CHANNEL(ch) {
for (i = 0; i < 4; ++i) {
- const u32 reg = MCHBAR32(CxWRTy_MCHBAR(ch, i));
+ const u32 reg = mchbar_read32(CxWRTy_MCHBAR(ch, i));
bytes[(ch * 8) + (i * 2)] =
(((reg & CxWRTy_T_MASK)
>> CxWRTy_T_SHIFT) << 4) |
diff --git a/src/northbridge/intel/gm45/raminit_receive_enable_calibration.c b/src/northbridge/intel/gm45/raminit_receive_enable_calibration.c
index 6d95b34..0b1c789 100644
--- a/src/northbridge/intel/gm45/raminit_receive_enable_calibration.c
+++ b/src/northbridge/intel/gm45/raminit_receive_enable_calibration.c
@@ -110,29 +110,28 @@
/* C value is per channel. */
unsigned int mchbar = CxDRT3_MCHBAR(channel);
- MCHBAR32(mchbar) = (MCHBAR32(mchbar) & ~CxDRT3_C_MASK) |
- CxDRT3_C(timing->c);
+ mchbar_clrsetbits32(mchbar, CxDRT3_C_MASK, CxDRT3_C(timing->c));
/* All other per group. */
mchbar = CxRECy_MCHBAR(channel, group);
- u32 reg = MCHBAR32(mchbar);
+ u32 reg = mchbar_read32(mchbar);
reg &= ~CxRECy_TIMING_MASK;
reg |= CxRECy_T(timing->t) | CxRECy_P(timing->p) |
CxRECy_PH(timing->ph) | CxRECy_PM(timing->pre);
- MCHBAR32(mchbar) = reg;
+ mchbar_write32(mchbar, reg);
}
static int read_dqs_level(const int channel, const int lane)
{
unsigned int mchbar = 0x14f0 + (channel * 0x0100);
- MCHBAR32(mchbar) &= ~(1 << 9);
- MCHBAR32(mchbar) |= (1 << 9);
+ mchbar_clrbits32(mchbar, 1 << 9);
+ mchbar_setbits32(mchbar, 1 << 9);
/* Read from this channel. */
read32((u32 *)raminit_get_rank_addr(channel, 0));
mchbar = 0x14b0 + (channel * 0x0100) + ((7 - lane) * 4);
- return MCHBAR32(mchbar) & (1 << 30);
+ return mchbar_read32(mchbar) & (1 << 30);
}
static void find_dqs_low(const int channel, const int group,
@@ -272,22 +271,22 @@
unsigned int group;
for (group = 0; group < 4; ++group) {
const unsigned int mchbar = CxRECy_MCHBAR(ch, group);
- u32 reg = MCHBAR32(mchbar);
+ u32 reg = mchbar_read32(mchbar);
reg &= ~((3 << 16) | (1 << 8) | 3);
reg |= (map[group][0] - group);
reg |= (map[group][1] - group - 1) << 16;
- MCHBAR32(mchbar) = reg;
+ mchbar_write32(mchbar, reg);
}
}
- MCHBAR32(0x12a4) |= 1 << 31;
- MCHBAR32(0x13a4) |= 1 << 31;
- MCHBAR32(0x14f0) = (MCHBAR32(0x14f0) & ~(3 << 9)) | (1 << 9);
- MCHBAR32(0x15f0) = (MCHBAR32(0x15f0) & ~(3 << 9)) | (1 << 9);
+ mchbar_setbits32(0x12a4, 1 << 31);
+ mchbar_setbits32(0x13a4, 1 << 31);
+ mchbar_clrsetbits32(0x14f0, 3 << 9, 1 << 9);
+ mchbar_clrsetbits32(0x15f0, 3 << 9, 1 << 9);
receive_enable_calibration(timings, dimms);
- MCHBAR32(0x12a4) &= ~(1 << 31);
- MCHBAR32(0x13a4) &= ~(1 << 31);
+ mchbar_clrbits32(0x12a4, 1 << 31);
+ mchbar_clrbits32(0x13a4, 1 << 31);
raminit_reset_readwrite_pointers();
}
diff --git a/src/northbridge/intel/gm45/romstage.c b/src/northbridge/intel/gm45/romstage.c
index 22aaee6..b87380a 100644
--- a/src/northbridge/intel/gm45/romstage.c
+++ b/src/northbridge/intel/gm45/romstage.c
@@ -50,13 +50,13 @@
reg16 = pci_read_config16(LPC_DEV, D31F0_GEN_PMCON_3);
pci_write_config16(LPC_DEV, D31F0_GEN_PMCON_3, reg16);
- if ((MCHBAR16(SSKPD_MCHBAR) == 0xCAFE) && !(reg16 & (1 << 9))) {
+ if ((mchbar_read16(SSKPD_MCHBAR) == 0xcafe) && !(reg16 & (1 << 9))) {
printk(BIOS_DEBUG, "soft reset detected, rebooting properly\n");
gm45_early_reset();
}
/* ASPM related setting, set early by original BIOS. */
- DMIBAR16(0x204) &= ~(3 << 10);
+ dmibar_clrbits16(0x204, 3 << 10);
/* Check for S3 resume. */
s3resume = southbridge_detect_s3_resume();
@@ -89,7 +89,7 @@
gm45_late_init(sysinfo.stepping);
i82801ix_dmi_poll_vc1();
- MCHBAR16(SSKPD_MCHBAR) = 0xCAFE;
+ mchbar_write16(SSKPD_MCHBAR, 0xcafe);
init_iommu();
diff --git a/src/northbridge/intel/gm45/thermal.c b/src/northbridge/intel/gm45/thermal.c
index a5d9820..3be674a 100644
--- a/src/northbridge/intel/gm45/thermal.c
+++ b/src/northbridge/intel/gm45/thermal.c
@@ -15,65 +15,65 @@
const chip_width_t width = sysinfo->dimms[x].chip_width;
const chip_capacity_t size = sysinfo->dimms[x].chip_capacity;
if ((freq == MEM_CLOCK_1067MT) && (width == CHIP_WIDTH_x16)) {
- MCHBAR32(CxDTPEW(x)) = 0x0d0b0403;
- MCHBAR32(CxDTPEW(x)+4) = 0x060d;
- MCHBAR32(CxDTAEW(x)) = 0x2d0b221a;
- MCHBAR32(CxDTAEW(x)+4) = 0xc779956e;
+ mchbar_write32(CxDTPEW(x), 0x0d0b0403);
+ mchbar_write32(CxDTPEW(x) + 4, 0x060d);
+ mchbar_write32(CxDTAEW(x), 0x2d0b221a);
+ mchbar_write32(CxDTAEW(x) + 4, 0xc779956e);
} else
if ((freq == MEM_CLOCK_1067MT) && (width == CHIP_WIDTH_x8)) {
- MCHBAR32(CxDTPEW(x)) = 0x06040101;
- MCHBAR32(CxDTPEW(x)+4) = 0x0506;
+ mchbar_write32(CxDTPEW(x), 0x06040101);
+ mchbar_write32(CxDTPEW(x) + 4, 0x0506);
if (size == CHIP_CAP_2G)
- MCHBAR32(CxDTAEW(x)) = 0xa1071416;
+ mchbar_write32(CxDTAEW(x), 0xa1071416);
else
- MCHBAR32(CxDTAEW(x)) = 0x1a071416;
- MCHBAR32(CxDTAEW(x)+4) = 0x7246643f;
+ mchbar_write32(CxDTAEW(x), 0x1a071416);
+ mchbar_write32(CxDTAEW(x) + 4, 0x7246643f);
} else
if ((freq == MEM_CLOCK_800MT) && (width == CHIP_WIDTH_x16)) {
- MCHBAR32(CxDTPEW(x)) = 0x06030100;
- MCHBAR32(CxDTPEW(x)+4) = 0x0506;
- MCHBAR32(CxDTAEW(x)) = 0x3e081714;
- MCHBAR32(CxDTAEW(x)+4) = 0xbb79a171;
+ mchbar_write32(CxDTPEW(x), 0x06030100);
+ mchbar_write32(CxDTPEW(x) + 4, 0x0506);
+ mchbar_write32(CxDTAEW(x), 0x3e081714);
+ mchbar_write32(CxDTAEW(x) + 4, 0xbb79a171);
} else
if ((freq == MEM_CLOCK_800MT) && (width == CHIP_WIDTH_x8)) {
if (size <= CHIP_CAP_512M)
- MCHBAR32(CxDTPEW(x)) = 0x05050101;
+ mchbar_write32(CxDTPEW(x), 0x05050101);
else
- MCHBAR32(CxDTPEW(x)) = 0x05060101;
- MCHBAR32(CxDTPEW(x)+4) = 0x0503;
+ mchbar_write32(CxDTPEW(x), 0x05060101);
+ mchbar_write32(CxDTPEW(x) + 4, 0x0503);
if (size == CHIP_CAP_2G) {
- MCHBAR32(CxDTAEW(x)) = 0x57051010;
- MCHBAR32(CxDTAEW(x)+4) = 0x5fd15dde;
+ mchbar_write32(CxDTAEW(x), 0x57051010);
+ mchbar_write32(CxDTAEW(x) + 4, 0x5fd15dde);
} else
if (size == CHIP_CAP_1G) {
- MCHBAR32(CxDTAEW(x)) = 0x3306130e;
- MCHBAR32(CxDTAEW(x)+4) = 0x5763485d;
+ mchbar_write32(CxDTAEW(x), 0x3306130e);
+ mchbar_write32(CxDTAEW(x) + 4, 0x5763485d);
} else
if (size <= CHIP_CAP_512M) {
- MCHBAR32(CxDTAEW(x)) = 0x1e08170d;
- MCHBAR32(CxDTAEW(x)+4) = 0x502f3827;
+ mchbar_write32(CxDTAEW(x), 0x1e08170d);
+ mchbar_write32(CxDTAEW(x) + 4, 0x502f3827);
}
} else
if ((freq == MEM_CLOCK_667MT) && (width == CHIP_WIDTH_x16)) {
- MCHBAR32(CxDTPEW(x)) = 0x02000000;
- MCHBAR32(CxDTPEW(x)+4) = 0x0402;
- MCHBAR32(CxDTAEW(x)) = 0x46061111;
- MCHBAR32(CxDTAEW(x)+4) = 0xb579a772;
+ mchbar_write32(CxDTPEW(x), 0x02000000);
+ mchbar_write32(CxDTPEW(x) + 4, 0x0402);
+ mchbar_write32(CxDTAEW(x), 0x46061111);
+ mchbar_write32(CxDTAEW(x) + 4, 0xb579a772);
} else
if ((freq == MEM_CLOCK_667MT) && (width == CHIP_WIDTH_x8)) {
- MCHBAR32(CxDTPEW(x)) = 0x04070101;
- MCHBAR32(CxDTPEW(x)+4) = 0x0501;
+ mchbar_write32(CxDTPEW(x), 0x04070101);
+ mchbar_write32(CxDTPEW(x) + 4, 0x0501);
if (size == CHIP_CAP_2G) {
- MCHBAR32(CxDTAEW(x)) = 0x32040e0d;
- MCHBAR32(CxDTAEW(x)+4) = 0x55ff59ff;
+ mchbar_write32(CxDTAEW(x), 0x32040e0d);
+ mchbar_write32(CxDTAEW(x) + 4, 0x55ff59ff);
} else
if (size == CHIP_CAP_1G) {
- MCHBAR32(CxDTAEW(x)) = 0x3f05120a;
- MCHBAR32(CxDTAEW(x)+4) = 0x49713a6c;
+ mchbar_write32(CxDTAEW(x), 0x3f05120a);
+ mchbar_write32(CxDTAEW(x) + 4, 0x49713a6c);
} else
if (size <= CHIP_CAP_512M) {
- MCHBAR32(CxDTAEW(x)) = 0x20081808;
- MCHBAR32(CxDTAEW(x)+4) = 0x3f23221b;
+ mchbar_write32(CxDTAEW(x), 0x20081808);
+ mchbar_write32(CxDTAEW(x) + 4, 0x3f23221b);
}
}
@@ -81,95 +81,95 @@
if (sysinfo->selected_timings.channel_mode ==
CHANNEL_MODE_DUAL_INTERLEAVED) {
if (freq == MEM_CLOCK_1067MT) {
- MCHBAR32(CxGTEW(x)) = 0xc8f81717;
+ mchbar_write32(CxGTEW(x), 0xc8f81717);
} else
if (freq == MEM_CLOCK_800MT) {
- MCHBAR32(CxGTEW(x)) = 0x96ba1717;
+ mchbar_write32(CxGTEW(x), 0x96ba1717);
} else
if (freq == MEM_CLOCK_667MT) {
- MCHBAR32(CxGTEW(x)) = 0x7d9b1717;
+ mchbar_write32(CxGTEW(x), 0x7d9b1717);
}
} else {
if (freq == MEM_CLOCK_1067MT) {
- MCHBAR32(CxGTEW(x)) = 0x53661717;
+ mchbar_write32(CxGTEW(x), 0x53661717);
} else
if (freq == MEM_CLOCK_800MT) {
- MCHBAR32(CxGTEW(x)) = 0x886e1717;
+ mchbar_write32(CxGTEW(x), 0x886e1717);
} else
if (freq == MEM_CLOCK_667MT) {
- MCHBAR32(CxGTEW(x)) = 0x38621717;
+ mchbar_write32(CxGTEW(x), 0x38621717);
}
}
}
// always?
- MCHBAR32(CxDTC(0)) = 0x00004020;
- MCHBAR32(CxDTC(1)) = 0x00004020;
- MCHBAR32(CxGTC(0)) = 0x00304848;
- MCHBAR32(CxGTC(1)) = 0x00304848;
+ mchbar_write32(CxDTC(0), 0x00004020);
+ mchbar_write32(CxDTC(1), 0x00004020);
+ mchbar_write32(CxGTC(0), 0x00304848);
+ mchbar_write32(CxGTC(1), 0x00304848);
/* enable thermal sensors */
u32 tmp;
- tmp = MCHBAR32(0x1290) & 0xfff8;
- MCHBAR32(0x1290) = tmp | 0xa4810007;
- tmp = MCHBAR32(0x1390) & 0xfff8;
- MCHBAR32(0x1390) = tmp | 0xa4810007;
- tmp = MCHBAR32(0x12b4) & 0xfff8;
- MCHBAR32(0x12b4) = tmp | 0xa2810007;
- tmp = MCHBAR32(0x13b4) & 0xfff8;
- MCHBAR32(0x13b4) = tmp | 0xa2810007;
- MCHBAR8(0x1070) = 1;
- MCHBAR8(0x1080) = 6;
+ tmp = mchbar_read32(0x1290) & 0xfff8;
+ mchbar_write32(0x1290, tmp | 0xa4810007);
+ tmp = mchbar_read32(0x1390) & 0xfff8;
+ mchbar_write32(0x1390, tmp | 0xa4810007);
+ tmp = mchbar_read32(0x12b4) & 0xfff8;
+ mchbar_write32(0x12b4, tmp | 0xa2810007);
+ tmp = mchbar_read32(0x13b4) & 0xfff8;
+ mchbar_write32(0x13b4, tmp | 0xa2810007);
+ mchbar_write8(0x1070, 1);
+ mchbar_write8(0x1080, 6);
if (sysinfo->gfx_type == GMCH_PM45) {
- MCHBAR16(0x1001) = 0;
- MCHBAR8(0x1007) = 0;
- MCHBAR32(0x1010) = 0;
- MCHBAR32(0x1014) = 0;
- MCHBAR8(0x101c) = 0x98;
- MCHBAR16(0x1041) = 0x9200;
- MCHBAR8(0x1047) = 0;
- MCHBAR32(0x1050) = 0x2309;
- MCHBAR32(0x1054) = 0;
- MCHBAR8(0x105c) = 0x98;
+ mchbar_write16(0x1001, 0);
+ mchbar_write8(0x1007, 0);
+ mchbar_write32(0x1010, 0);
+ mchbar_write32(0x1014, 0);
+ mchbar_write8(0x101c, 0x98);
+ mchbar_write16(0x1041, 0x9200);
+ mchbar_write8(0x1047, 0);
+ mchbar_write32(0x1050, 0x2309);
+ mchbar_write32(0x1054, 0);
+ mchbar_write8(0x105c, 0x98);
} else {
- MCHBAR16(0x1001) = 0x9200;
- MCHBAR8(0x1007) = 0;
- MCHBAR32(0x1010) = 0x2309;
- MCHBAR32(0x1014) = 0;
- MCHBAR8(0x101c) = 0x98;
- MCHBAR16(0x1041) = 0;
- MCHBAR8(0x1047) = 0;
- MCHBAR32(0x1050) = 0;
- MCHBAR32(0x1054) = 0;
- MCHBAR8(0x105c) = 0x98;
+ mchbar_write16(0x1001, 0x9200);
+ mchbar_write8(0x1007, 0);
+ mchbar_write32(0x1010, 0x2309);
+ mchbar_write32(0x1014, 0);
+ mchbar_write8(0x101c, 0x98);
+ mchbar_write16(0x1041, 0);
+ mchbar_write8(0x1047, 0);
+ mchbar_write32(0x1050, 0);
+ mchbar_write32(0x1054, 0);
+ mchbar_write8(0x105c, 0x98);
}
- MCHBAR32(0x1010) |= 1 << 31;
- MCHBAR32(0x1050) |= 1 << 31;
- MCHBAR32(CxGTC(0)) |= 1 << 31;
- MCHBAR32(CxGTC(1)) |= 1 << 31;
+ mchbar_setbits32(0x1010, 1 << 31);
+ mchbar_setbits32(0x1050, 1 << 31);
+ mchbar_setbits32(CxGTC(0), 1 << 31);
+ mchbar_setbits32(CxGTC(1), 1 << 31);
if (sysinfo->gs45_low_power_mode) {
- MCHBAR32(0x11b0) = 0xa000083a;
+ mchbar_write32(0x11b0, 0xa000083a);
} else if (sysinfo->gfx_type == GMCH_GM49) {
- MCHBAR32(0x11b0) = 0x2000383a;
- MCHBAR16(0x1190) &= ~(1 << 15);
+ mchbar_write32(0x11b0, 0x2000383a);
+ mchbar_clrbits16(0x1190, 1 << 15);
} else if ((sysinfo->gfx_type != GMCH_PM45) &&
(sysinfo->gfx_type != GMCH_UNKNOWN)) {
- MCHBAR32(0x11b0) = 0xa000383a;
+ mchbar_write32(0x11b0, 0xa000383a);
}
switch (sysinfo->selected_timings.fsb_clock) {
case FSB_CLOCK_667MHz:
- MCHBAR32(0x11d0) = 0x0fd88000;
+ mchbar_write32(0x11d0, 0x0fd88000);
break;
case FSB_CLOCK_800MHz:
- MCHBAR32(0x11d0) = 0x1303c000;
+ mchbar_write32(0x11d0, 0x1303c000);
break;
case FSB_CLOCK_1067MHz:
- MCHBAR32(0x11d0) = 0x194a0000;
+ mchbar_write32(0x11d0, 0x194a0000);
break;
}
- tmp = MCHBAR32(0x11d4) & ~0x1f;
- MCHBAR32(0x11d4) = tmp | 4;
+ tmp = mchbar_read32(0x11d4) & ~0x1f;
+ mchbar_write32(0x11d4, tmp | 4);
}