summaryrefslogtreecommitdiff
path: root/src/northbridge
diff options
context:
space:
mode:
Diffstat (limited to 'src/northbridge')
-rw-r--r--src/northbridge/intel/nehalem/raminit.c101
1 files changed, 6 insertions, 95 deletions
diff --git a/src/northbridge/intel/nehalem/raminit.c b/src/northbridge/intel/nehalem/raminit.c
index dcf9b7b51f..403af7864b 100644
--- a/src/northbridge/intel/nehalem/raminit.c
+++ b/src/northbridge/intel/nehalem/raminit.c
@@ -14,13 +14,6 @@
* GNU General Public License for more details.
*/
-/* Please don't remove this. It's needed for debugging and reverse
- * engineering more nehalem variants in the future. */
-#ifndef REAL
-#define REAL 1
-#endif
-
-#if REAL
#include <stdlib.h>
#include <compiler.h>
#include <console/console.h>
@@ -45,22 +38,11 @@
#include <cpu/intel/turbo.h>
#include <mrc_cache.h>
#include <arch/early_variables.h>
-#endif
-
-#if !REAL
-typedef unsigned char u8;
-typedef unsigned short u16;
-typedef unsigned int u32;
-typedef u32 device_t;
-#endif
#include "nehalem.h"
#include <southbridge/intel/ibexpeak/me.h>
-
-#if REAL
#include <delay.h>
-#endif
#define NORTHBRIDGE PCI_DEV(0, 0, 0)
#define SOUTHBRIDGE PCI_DEV(0, 0x1f, 0)
@@ -112,10 +94,6 @@ struct ram_training {
u32 reg_6e8;
};
-#if !REAL
-#include "raminit_fake.c"
-#else
-
#include <lib.h> /* Prototypes */
static inline void write_mchbar32(u32 addr, u32 val)
@@ -171,8 +149,6 @@ static void read128(u32 addr, u64 * out)
out[1] = ret.hi;
}
-#endif
-
/* OK */
static void write_1d0(u32 val, u16 addr, int bits, int flag)
{
@@ -215,9 +191,7 @@ static uint32_t read32p(uintptr_t addr)
static void sfence(void)
{
-#if REAL
asm volatile ("sfence");
-#endif
}
static inline u16 get_lane_offset(int slot, int rank, int lane)
@@ -232,7 +206,6 @@ static inline u16 get_timing_register_addr(int lane, int tm, int slot, int rank)
return get_lane_offset(slot, rank, lane) + offs[(tm + 3) % 4];
}
-#if REAL
static u32 gav_real(int line, u32 in)
{
// printk (BIOS_DEBUG, "%d: GAV: %x\n", line, in);
@@ -240,7 +213,7 @@ static u32 gav_real(int line, u32 in)
}
#define gav(x) gav_real (__LINE__, (x))
-#endif
+
struct raminfo {
u16 clock_speed_index; /* clock_speed (REAL, not DDR) / 133.(3) - 3 */
u16 fsb_frequency; /* in 1.(1)/2 MHz. */
@@ -1497,7 +1470,6 @@ static void program_total_memory_map(struct raminfo *info)
memset(memory_map, 0, sizeof(memory_map));
-#if REAL
if (info->uma_enabled) {
u16 t = pci_read_config16(NORTHBRIDGE, D0F0_GGC);
gav(t);
@@ -1512,7 +1484,6 @@ static void program_total_memory_map(struct raminfo *info)
uma_size_igd = uma_sizes_igd[(t >> 4) & 0xF];
uma_size_gtt = uma_sizes_gtt[(t >> 8) & 0xF];
}
-#endif
mmio_size = get_mmio_size();
@@ -1543,23 +1514,6 @@ static void program_total_memory_map(struct raminfo *info)
if (memory_remap)
TOUUD -= quickpath_reserved;
-#if !REAL
- if (info->uma_enabled) {
- u16 t = pci_read_config16(NORTHBRIDGE, D0F0_GGC);
- gav(t);
- const int uma_sizes_gtt[16] =
- { 0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 3, 4, 42, 42, 42, 42 };
- /* Igd memory */
- const int uma_sizes_igd[16] = {
- 0, 0, 0, 0, 0, 32, 48, 64, 128, 256, 96, 160, 224, 352,
- 256, 512
- };
-
- uma_size_igd = uma_sizes_igd[(t >> 4) & 0xF];
- uma_size_gtt = uma_sizes_gtt[(t >> 8) & 0xF];
- }
-#endif
-
uma_base_igd = TOLUD - uma_size_igd;
uma_base_gtt = uma_base_igd - uma_size_gtt;
tseg_base = ALIGN_DOWN(uma_base_gtt, 64) - (CONFIG_SMM_TSEG_SIZE >> 20);
@@ -1685,7 +1639,6 @@ static void write_training_data(struct raminfo *info)
static void dump_timings(struct raminfo *info)
{
-#if REAL
int channel, slot, rank, lane, i;
printk(BIOS_DEBUG, "Timings:\n");
FOR_POPULATED_RANKS {
@@ -1710,7 +1663,6 @@ static void dump_timings(struct raminfo *info)
info->training.reg_178);
printk(BIOS_DEBUG, "[10b] = %x (%x)\n", read_1d0(0x10b, 6),
info->training.reg_10b);
-#endif
}
/* Read timings and other registers that need to be restored verbatim and
@@ -1750,7 +1702,6 @@ static void save_timings(struct raminfo *info)
&train, sizeof(train));
}
-#if REAL
static const struct ram_training *get_cached_training(void)
{
struct region_device rdev;
@@ -1759,7 +1710,6 @@ static const struct ram_training *get_cached_training(void)
return 0;
return (void *)rdev_mmap_full(&rdev);
}
-#endif
/* FIXME: add timeout. */
static void wait_heci_ready(void)
@@ -1842,10 +1792,6 @@ recv_heci_packet(struct raminfo *info, struct mei_header *head, u32 *packet,
write32(DEFAULT_HECIBAR + 0x4, read32(DEFAULT_HECIBAR + 0x4) | 2);
do {
csr.raw = read32(DEFAULT_HECIBAR + 0xc);
-#if !REAL
- if (i++ > 346)
- return -1;
-#endif
}
while (csr.csr.buffer_write_ptr == csr.csr.buffer_read_ptr);
*(u32 *) head = read32(DEFAULT_HECIBAR + 0x8);
@@ -3789,7 +3735,6 @@ static void restore_274265(struct raminfo *info)
write_mchbar8(0x2ca9, read_mchbar8(0x2ca9) & ~1);
}
-#if REAL
static void dmi_setup(void)
{
gav(read8(DEFAULT_DMIBAR + 0x254));
@@ -3804,7 +3749,6 @@ static void dmi_setup(void)
DEFAULT_GPIOBASE | 0x38);
gav(inb(DEFAULT_GPIOBASE | 0xe)); // = 0xfdcaff6e
}
-#endif
void chipset_init(const int s3resume)
{
@@ -3817,14 +3761,9 @@ void chipset_init(const int s3resume)
printk(BIOS_DEBUG, "soft reset detected, rebooting properly\n");
write_mchbar8(0x2ca8, 0);
outb(0x6, 0xcf9);
-#if REAL
halt();
-#else
- printf("CP5\n");
- exit(0);
-#endif
}
-#if !REAL
+#if 0
if (!s3resume) {
pre_raminit_3(x2ca8);
}
@@ -3911,15 +3850,13 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
/* before SPD */
timestamp_add_now(101);
- if (!s3resume || REAL) {
+ if (!s3resume || 1) { // possible error
pci_read_config8(SOUTHBRIDGE, GEN_PMCON_2); // = 0x80
collect_system_info(&info);
-#if REAL
/* Enable SMBUS. */
enable_smbus();
-#endif
memset(&info.populated_ranks, 0, sizeof(info.populated_ranks));
@@ -4024,14 +3961,11 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
timestamp_add_now(102);
write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) & 0xfc);
-#if !REAL
- rdmsr (MTRR_PHYS_MASK (3));
-#endif
collect_system_info(&info);
calculate_timings(&info);
-#if !REAL
+#if 0
pci_write_config8(NORTHBRIDGE, 0xdf, 0x82);
#endif
@@ -4051,14 +3985,9 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
printk(BIOS_INFO,
"Interrupted RAM init, reset required.\n");
outb(0x6, 0xcf9);
-#if REAL
halt();
-#endif
}
}
-#if !REAL
- gav(read_mchbar8(0x2ca8)); ///!!!!
-#endif
if (!s3resume && x2ca8 == 0)
pci_write_config8(SOUTHBRIDGE, GEN_PMCON_2,
@@ -4415,12 +4344,7 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) & ~3);
write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) + 4);
write_mchbar32(0x1af0, read_mchbar32(0x1af0) | 0x10);
-#if REAL
halt();
-#else
- printf("CP5\n");
- exit(0);
-#endif
}
write_mchbar8(0x2ca8, read_mchbar8(0x2ca8));
@@ -4515,13 +4439,7 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
reg32 = inl(DEFAULT_PMBASE + 0x04);
outl(reg32 & ~(7 << 10), DEFAULT_PMBASE + 0x04);
outb(0xe, 0xcf9);
-
-#if REAL
halt();
-#else
- printf("CP5\n");
- exit(0);
-#endif
}
int tm;
info.training = *info.cached_training;
@@ -4781,10 +4699,6 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
write_mchbar32(0xfa4, read_mchbar32(0xfa4) & ~0x01000002);
write_mchbar32(0xfb0, 0x2000e019);
-#if !REAL
- printf("CP16\n");
-#endif
-
/* Before training. */
timestamp_add_now(103);
@@ -4823,7 +4737,7 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
write_mchbar8(0xff4, read_mchbar8(0xff4) | 0x2); // OK
write_mchbar32(0xff8, (read_mchbar32(0xff8) & ~0xe008) | 0x1020); // OK
-#if REAL
+#if 1
write_mchbar32(0xd00, IOMMU_BASE2 | 1);
write_mchbar32(0xd40, IOMMU_BASE1 | 1);
write_mchbar32(0xdc0, IOMMU_BASE4 | 1);
@@ -4963,9 +4877,8 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
ax = read_mchbar16(0x1190) & 0xf00; // = 0x480a // OK
write_mchbar16(0x1170, ax | (read_mchbar16(0x1170) & 0x107f) | 0x4080); // OK
write_mchbar16(0x1170, read_mchbar16(0x1170) | 0x1000); // OK
-#if REAL
udelay(1000);
-#endif
+
u16 ecx;
for (ecx = 0xffff; ecx && (read_mchbar16(0x1170) & 0x1000); ecx--); // OK
write_mchbar16(0x1190, read_mchbar16(0x1190) & ~0x4000); // OK
@@ -4976,7 +4889,6 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
udelay(10000);
write_mchbar16(0x2ca8, 0x8);
-#if REAL
udelay(1000);
dump_timings(&info);
cbmem_wasnot_inited = cbmem_recovery(s3resume);
@@ -4996,5 +4908,4 @@ void raminit(const int s3resume, const u8 *spd_addrmap)
outb(0xe, 0xcf9);
halt();
}
-#endif
}