From 34531e02621774fe7edc0840f11dfb7afce90e58 Mon Sep 17 00:00:00 2001 From: "Ronald G. Minnich" Date: Mon, 24 Sep 2001 23:18:45 +0000 Subject: [PATCH] Simple fix for the incorrect sizing problem. This actually can result in bad RPS sizes in register 74.w (RPS) for slots where there is no DRAM installed. This really does not matter since the actual access to DRAM is controlled elsewhere. If there is not DRAM in a slot, then that piece of the RPS register will never be used. --- src/northbridge/intel/440gx/raminit.inc | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/northbridge/intel/440gx/raminit.inc b/src/northbridge/intel/440gx/raminit.inc index 2b683eae2a..cf1c3446a8 100644 --- a/src/northbridge/intel/440gx/raminit.inc +++ b/src/northbridge/intel/440gx/raminit.inc @@ -753,9 +753,24 @@ spd_set_dramc_out: /* next block is for Ron's attempt to get registered to work. */ #ifdef INTEL_RAM_TEST_REGISTERED /* BIOS makes weird page size for registered! */ - movl $2, %edx + /* what we have found is you need to set the EVEN banks to + * twice the size. Fortunately there is a very easy way to + * do this. First, read the WORD value of register 0x74. + */ movl $0x74, %eax - PCI_WRITE_CONFIG_BYTE + PCI_READ_CONFIG_WORD + /* mask out the sizes for the ODD banks. + * we do this because we only handle symmetric DRAM + * so the sizes in odd and even banks are the same. + */ + andw $0x3333, %ax + /* now to double the size of the EVEN banks we only need to add 1 */ + /* because the size is log2 + */ + addw $0x1111, %ax + movw %ax, %cx + movl $0x74, %eax + PCI_WRITE_CONFIG_WORD #endif /* now set the bit value for registered sdram into %eax */ movl $0x10, %eax