diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/northbridge/intel/x4x/dq_dqs.c | 72 | ||||
-rw-r--r-- | src/northbridge/intel/x4x/memmap.c | 5 | ||||
-rw-r--r-- | src/northbridge/intel/x4x/northbridge.c | 10 | ||||
-rw-r--r-- | src/northbridge/intel/x4x/raminit.c | 155 | ||||
-rw-r--r-- | src/northbridge/intel/x4x/raminit_ddr23.c | 105 | ||||
-rw-r--r-- | src/northbridge/intel/x4x/rcven.c | 40 |
6 files changed, 133 insertions, 254 deletions
diff --git a/src/northbridge/intel/x4x/dq_dqs.c b/src/northbridge/intel/x4x/dq_dqs.c index eab5365341..afb77424af 100644 --- a/src/northbridge/intel/x4x/dq_dqs.c +++ b/src/northbridge/intel/x4x/dq_dqs.c @@ -8,8 +8,7 @@ #include "raminit.h" #include "x4x.h" -static void print_dll_setting(const struct dll_setting *dll_setting, - u8 default_verbose) +static void print_dll_setting(const struct dll_setting *dll_setting, u8 default_verbose) { u8 debug_level = default_verbose ? BIOS_DEBUG : RAM_DEBUG; @@ -75,11 +74,9 @@ static void set_db(const struct sysinfo *s, struct dll_setting *dq_dqs_setting) static const u8 max_tap[3] = {12, 10, 13}; -static int increment_dq_dqs(const struct sysinfo *s, - struct dll_setting *dq_dqs_setting) +static int increment_dq_dqs(const struct sysinfo *s, struct dll_setting *dq_dqs_setting) { - u8 max_tap_val = max_tap[s->selected_timings.mem_clk - - MEM_CLOCK_800MHz]; + u8 max_tap_val = max_tap[s->selected_timings.mem_clk - MEM_CLOCK_800MHz]; if (dq_dqs_setting->pi < 6) { dq_dqs_setting->pi += 1; @@ -102,11 +99,9 @@ static int increment_dq_dqs(const struct sysinfo *s, return CB_SUCCESS; } -static int decrement_dq_dqs(const struct sysinfo *s, - struct dll_setting *dq_dqs_setting) +static int decrement_dq_dqs(const struct sysinfo *s, struct dll_setting *dq_dqs_setting) { - u8 max_tap_val = max_tap[s->selected_timings.mem_clk - - MEM_CLOCK_800MHz]; + u8 max_tap_val = max_tap[s->selected_timings.mem_clk - MEM_CLOCK_800MHz]; if (dq_dqs_setting->pi > 0) { dq_dqs_setting->pi -= 1; @@ -159,8 +154,7 @@ enum training_modes { FAILING = 1 }; -static u8 test_dq_aligned(const struct sysinfo *s, - const u8 channel) +static u8 test_dq_aligned(const struct sysinfo *s, const u8 channel) { u32 address; int rank, lane; @@ -174,17 +168,14 @@ static u8 test_dq_aligned(const struct sysinfo *s, for (count1 = 0; count1 < WT_PATTERN_SIZE; count1++) { if ((count1 % 16) == 0) MCHBAR32(0xf90) = 1; - const u32 pattern = - write_training_schedule[count1]; + const u32 pattern = write_training_schedule[count1]; write32((u32 *)address + 8 * count1, pattern); - write32((u32 *)address + 8 * count1 + 4, - pattern); + write32((u32 *)address + 8 * count1 + 4, pattern); } const u32 good = write_training_schedule[count]; write32(&data[0], read32((u32 *)address + 8 * count)); - write32(&data[4], - read32((u32 *)address + 8 * count + 4)); + write32(&data[4], read32((u32 *)address + 8 * count + 4)); FOR_EACH_BYTELANE(lane) { u8 expected = (good >> ((lane % 4) * 8)) & 0xff; if (data[lane] != expected) @@ -235,8 +226,8 @@ static int find_dq_limit(const struct sysinfo *s, const u8 channel, success_mask &= ~(1 << lane); } if (status == CB_ERR) { - printk(BIOS_CRIT, "Could not find a case of %s " - "writes on CH%d, lane %d\n", + printk(BIOS_CRIT, + "Could not find a case of %s writes on CH%d, lane %d\n", expected_result == FAILING ? "failing" : "succeeding", channel, lane); return CB_ERR; @@ -281,19 +272,15 @@ int do_write_training(struct sysinfo *s) /* Start from DQS settings */ memcpy(dq_setting, s->dqs_settings[channel], sizeof(dq_setting)); - if (find_dq_limit(s, channel, dq_setting, dq_lower, - SUCCEEDING)) { - printk(BIOS_CRIT, - "Could not find working lower limit DQ setting\n"); + if (find_dq_limit(s, channel, dq_setting, dq_lower, SUCCEEDING)) { + printk(BIOS_CRIT, "Could not find working lower limit DQ setting\n"); return CB_ERR; } memcpy(dq_upper, dq_lower, sizeof(dq_lower)); - if (find_dq_limit(s, channel, dq_setting, dq_upper, - FAILING)) { - printk(BIOS_WARNING, - "Could not find failing upper limit DQ setting\n"); + if (find_dq_limit(s, channel, dq_setting, dq_upper, FAILING)) { + printk(BIOS_WARNING, "Could not find failing upper limit DQ setting\n"); return CB_ERR; } @@ -302,8 +289,8 @@ int do_write_training(struct sysinfo *s) dq_upper[lane] -= CONSISTENCY - 1; u8 dq_center = (dq_upper[lane] + dq_lower[lane]) / 2; - printk(RAM_DEBUG, "Centered value for DQ DLL:" - " ch%d, lane %d, #steps = %d\n", + printk(RAM_DEBUG, + "Centered value for DQ DLL: ch%d, lane %d, #steps = %d\n", channel, lane, dq_center); for (i = 0; i < dq_center; i++) { /* Should never happen */ @@ -403,13 +390,10 @@ static int rt_find_dqs_limit(struct sysinfo *s, u8 channel, } if (expected_result == SUCCEEDING) { - printk(BIOS_CRIT, - "Could not find RT DQS setting\n"); + printk(BIOS_CRIT, "Could not find RT DQS setting\n"); return CB_ERR; } else { - printk(RAM_DEBUG, - "Read succeeded over all DQS" - " settings, continuing\n"); + printk(RAM_DEBUG, "Read succeeded over all DQS settings, continuing\n"); return CB_SUCCESS; } } @@ -664,8 +648,7 @@ static enum cb_err increment_to_dqs_edge(struct sysinfo *s, u8 channel, u8 rank) if (bytelane_ok & (1 << lane)) continue; - printk(RAM_SPEW, "%d, %d, %02d, %d," - " lane%d sample: %d\n", + printk(RAM_SPEW, "%d, %d, %02d, %d, lane%d sample: %d\n", dqs_setting[lane].coarse, dqs_setting[lane].clk_delay, dqs_setting[lane].tap, @@ -785,8 +768,7 @@ void search_write_leveling(struct sysinfo *s) printk(BIOS_DEBUG, "\tCH%d\n", ch); config = chanconfig_lut[s->dimm_config[ch]]; - MCHBAR8(0x5d8 + 0x400 * ch) = - MCHBAR8(0x5d8 + 0x400 * ch) & ~0x0e; + MCHBAR8(0x5d8 + 0x400 * ch) = MCHBAR8(0x5d8 + 0x400 * ch) & ~0x0e; MCHBAR16(0x5c4 + 0x400 * ch) = (MCHBAR16(0x5c4 + 0x400 * ch) & ~0x3fff) | 0x3fff; MCHBAR8(0x265 + 0x400 * ch) = @@ -803,12 +785,9 @@ void search_write_leveling(struct sysinfo *s) MCHBAR8(0x298 + 2 + 0x400 * ch) = (MCHBAR8(0x298 + 2 + 0x400 * ch) & ~0x0f) | odt_force[config][rank0]; - MCHBAR8(0x271 + 0x400 * ch) = (MCHBAR8(0x271 + 0x400 * ch) - & ~0x7e) | 0x4e; - MCHBAR8(0x5d9 + 0x400 * ch) = - (MCHBAR8(0x5d9 + 0x400 * ch) & ~0x04) | 0x04; - MCHBAR32(0x1a0) = (MCHBAR32(0x1a0) & ~0x07ffffff) - | 0x00014000; + MCHBAR8(0x271 + 0x400 * ch) = (MCHBAR8(0x271 + 0x400 * ch) & ~0x7e) | 0x4e; + MCHBAR8(0x5d9 + 0x400 * ch) = (MCHBAR8(0x5d9 + 0x400 * ch) & ~0x04) | 0x04; + MCHBAR32(0x1a0) = (MCHBAR32(0x1a0) & ~0x07ffffff) | 0x00014000; if (increment_to_dqs_edge(s, ch, rank0)) die("Write Leveling failed!"); @@ -827,8 +806,7 @@ void search_write_leveling(struct sysinfo *s) set_rank_write_level(s, ch, config, rank0, rank0, 0); send_jedec_cmd(s, rank0, ch, NORMALOP_CMD, 1 << 12); - MCHBAR8(0x5d8 + 0x400 * ch) = (MCHBAR8(0x5d8 + 0x400 * ch) - & ~0x0e) | 0x0e; + MCHBAR8(0x5d8 + 0x400 * ch) = (MCHBAR8(0x5d8 + 0x400 * ch) & ~0x0e) | 0x0e; MCHBAR16(0x5c4 + 0x400 * ch) = (MCHBAR16(0x5c4 + 0x400 * ch) & ~0x3fff) | 0x1807; MCHBAR8(0x265 + 0x400 * ch) = MCHBAR8(0x265 + 0x400 * ch) & ~0x1f; diff --git a/src/northbridge/intel/x4x/memmap.c b/src/northbridge/intel/x4x/memmap.c index 6170e41a3c..dced902919 100644 --- a/src/northbridge/intel/x4x/memmap.c +++ b/src/northbridge/intel/x4x/memmap.c @@ -18,8 +18,7 @@ /** Decodes used Graphics Mode Select (GMS) to kilobytes. */ u32 decode_igd_memory_size(const u32 gms) { - static const u16 ggc2uma[] = { 0, 1, 4, 8, 16, - 32, 48, 64, 128, 256, 96, 160, 224, 352 }; + static const u16 ggc2uma[] = {0, 1, 4, 8, 16, 32, 48, 64, 128, 256, 96, 160, 224, 352}; if (gms >= ARRAY_SIZE(ggc2uma)) die("Bad Graphics Mode Select (GMS) setting.\n"); @@ -30,7 +29,7 @@ u32 decode_igd_memory_size(const u32 gms) /** Decodes used GTT Graphics Memory Size (GGMS) to kilobytes. */ u32 decode_igd_gtt_size(const u32 gsm) { - static const u8 ggc2gtt[] = { 0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 3, 4}; + static const u8 ggc2gtt[] = {0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 3, 4}; if (gsm >= ARRAY_SIZE(ggc2gtt)) die("Bad GTT Graphics Memory Size (GGMS) setting.\n"); diff --git a/src/northbridge/intel/x4x/northbridge.c b/src/northbridge/intel/x4x/northbridge.c index de603386c3..2245f9656f 100644 --- a/src/northbridge/intel/x4x/northbridge.c +++ b/src/northbridge/intel/x4x/northbridge.c @@ -41,8 +41,7 @@ static void mch_domain_read_resources(struct device *dev) tom = pci_read_config16(mch, D0F0_TOM) & 0x01ff; tom <<= 26; - printk(BIOS_DEBUG, "TOUUD 0x%llx TOLUD 0x%08x TOM 0x%llx\n", - touud, tolud, tom); + printk(BIOS_DEBUG, "TOUUD 0x%llx TOLUD 0x%08x TOM 0x%llx\n", touud, tolud, tom); tomk = tolud >> 10; @@ -77,8 +76,7 @@ static void mch_domain_read_resources(struct device *dev) tomk -= delta_cbmem; uma_sizek += delta_cbmem; - printk(BIOS_DEBUG, "Unused RAM between cbmem_top and TOM: 0x%xK\n", - delta_cbmem); + printk(BIOS_DEBUG, "Unused RAM between cbmem_top and TOM: 0x%xK\n", delta_cbmem); printk(BIOS_INFO, "Available memory below 4GB: %uM\n", tomk >> 10); @@ -101,8 +99,8 @@ static void mch_domain_read_resources(struct device *dev) (touud - top32memk) >> 10); } - printk(BIOS_DEBUG, "Adding UMA memory area base=0x%08x " - "size=0x%08x\n", tomk << 10, uma_sizek << 10); + printk(BIOS_DEBUG, "Adding UMA memory area base=0x%08x size=0x%08x\n", + tomk << 10, uma_sizek << 10); uma_resource(dev, index++, tomk, uma_sizek); /* Reserve high memory where the NB BARs are up to 4GiB */ diff --git a/src/northbridge/intel/x4x/raminit.c b/src/northbridge/intel/x4x/raminit.c index c780071678..d94dd0af58 100644 --- a/src/northbridge/intel/x4x/raminit.c +++ b/src/northbridge/intel/x4x/raminit.c @@ -34,8 +34,7 @@ static u16 ddr3_get_crc(u8 device, u8 len) return spd_ddr3_calc_unique_crc(raw_spd, len); } -static enum cb_err verify_spds(const u8 *spd_map, - const struct sysinfo *ctrl_cached) +static enum cb_err verify_spds(const u8 *spd_map, const struct sysinfo *ctrl_cached) { int i; u16 crc; @@ -44,11 +43,9 @@ static enum cb_err verify_spds(const u8 *spd_map, if (!(spd_map[i])) continue; int len = smbus_read_byte(spd_map[i], 0); - if (len < 0 && ctrl_cached->dimms[i].card_type - == RAW_CARD_UNPOPULATED) + if (len < 0 && ctrl_cached->dimms[i].card_type == RAW_CARD_UNPOPULATED) continue; - if (len > 0 && ctrl_cached->dimms[i].card_type - == RAW_CARD_UNPOPULATED) + if (len > 0 && ctrl_cached->dimms[i].card_type == RAW_CARD_UNPOPULATED) return CB_ERR; if (ctrl_cached->spd_type == DDR2) @@ -79,8 +76,7 @@ struct abs_timings { #define CTRL_MIN_TCLK_DDR2 TCK_400MHZ -static void select_cas_dramfreq_ddr2(struct sysinfo *s, - const struct abs_timings *saved_timings) +static void select_cas_dramfreq_ddr2(struct sysinfo *s, const struct abs_timings *saved_timings) { u8 try_cas; /* Currently only these CAS are supported */ @@ -152,8 +148,7 @@ static int ddr2_save_dimminfo(u8 dimm_idx, u8 *raw_spd, if (!(decoded_dimm.width & (0x08 | 0x10))) { - printk(BIOS_ERR, - "DIMM%d Unsupported width: x%d. Disabling dimm\n", + printk(BIOS_ERR, "DIMM%d Unsupported width: x%d. Disabling dimm\n", dimm_idx, s->dimms[dimm_idx].width); return CB_ERR; } @@ -166,8 +161,7 @@ static int ddr2_save_dimminfo(u8 dimm_idx, u8 *raw_spd, * size." Micron, 'TN-47-16 Designing for High-Density DDR2 Memory' * The formula is pagesize in KiB = width * 2^col_bits / 8. */ - s->dimms[dimm_idx].page_size = decoded_dimm.width * - (1 << decoded_dimm.col_bits) / 8; + s->dimms[dimm_idx].page_size = decoded_dimm.width * (1 << decoded_dimm.col_bits) / 8; switch (decoded_dimm.banks) { case 4: @@ -177,8 +171,7 @@ static int ddr2_save_dimminfo(u8 dimm_idx, u8 *raw_spd, s->dimms[dimm_idx].n_banks = N_BANKS_8; break; default: - printk(BIOS_ERR, - "DIMM%d Unsupported #banks: x%d. Disabling dimm\n", + printk(BIOS_ERR, "DIMM%d Unsupported #banks: x%d. Disabling dimm\n", dimm_idx, decoded_dimm.banks); return CB_ERR; } @@ -189,22 +182,14 @@ static int ddr2_save_dimminfo(u8 dimm_idx, u8 *raw_spd, saved_timings->cas_supported &= decoded_dimm.cas_supported; - saved_timings->min_tRAS = - MAX(saved_timings->min_tRAS, decoded_dimm.tRAS); - saved_timings->min_tRP = - MAX(saved_timings->min_tRP, decoded_dimm.tRP); - saved_timings->min_tRCD = - MAX(saved_timings->min_tRCD, decoded_dimm.tRCD); - saved_timings->min_tWR = - MAX(saved_timings->min_tWR, decoded_dimm.tWR); - saved_timings->min_tRFC = - MAX(saved_timings->min_tRFC, decoded_dimm.tRFC); - saved_timings->min_tWTR = - MAX(saved_timings->min_tWTR, decoded_dimm.tWTR); - saved_timings->min_tRRD = - MAX(saved_timings->min_tRRD, decoded_dimm.tRRD); - saved_timings->min_tRTP = - MAX(saved_timings->min_tRTP, decoded_dimm.tRTP); + saved_timings->min_tRAS = MAX(saved_timings->min_tRAS, decoded_dimm.tRAS); + saved_timings->min_tRP = MAX(saved_timings->min_tRP, decoded_dimm.tRP); + saved_timings->min_tRCD = MAX(saved_timings->min_tRCD, decoded_dimm.tRCD); + saved_timings->min_tWR = MAX(saved_timings->min_tWR, decoded_dimm.tWR); + saved_timings->min_tRFC = MAX(saved_timings->min_tRFC, decoded_dimm.tRFC); + saved_timings->min_tWTR = MAX(saved_timings->min_tWTR, decoded_dimm.tWTR); + saved_timings->min_tRRD = MAX(saved_timings->min_tRRD, decoded_dimm.tRRD); + saved_timings->min_tRTP = MAX(saved_timings->min_tRTP, decoded_dimm.tRTP); for (i = 0; i < 8; i++) { if (!(saved_timings->cas_supported & (1 << i))) saved_timings->min_tCLK_cas[i] = 0; @@ -231,8 +216,7 @@ static void normalize_tCLK(u32 *tCLK) *tCLK = 0; } -static void select_cas_dramfreq_ddr3(struct sysinfo *s, - struct abs_timings *saved_timings) +static void select_cas_dramfreq_ddr3(struct sysinfo *s, struct abs_timings *saved_timings) { /* * various constraints must be fulfilled: @@ -278,9 +262,9 @@ static void select_cas_dramfreq_ddr3(struct sysinfo *s, min_tCLK = MAX(min_tCLK, saved_timings->min_tclk); if (min_tCLK == 0) { - printk(BIOS_ERR, "DRAM frequency is under lowest supported " - "frequency (400 MHz). Increasing to 400 MHz " - "as last resort"); + printk(BIOS_ERR, + "DRAM frequency is under lowest supported frequency (400 MHz). " + "Increasing to 400 MHz as last resort"); min_tCLK = TCK_400MHZ; } @@ -337,8 +321,7 @@ static void workaround_stacked_mode(struct sysinfo *s) if (s->spd_type == DDR2) return; /* Does not matter if only one channel is populated */ - if (!CHANNEL_IS_POPULATED(s->dimms, 0) - || !CHANNEL_IS_POPULATED(s->dimms, 1)) + if (!CHANNEL_IS_POPULATED(s->dimms, 0) || !CHANNEL_IS_POPULATED(s->dimms, 1)) return; if (s->selected_timings.mem_clk != MEM_CLOCK_1066MHz) return; @@ -373,8 +356,7 @@ static int ddr3_save_dimminfo(u8 dimm_idx, u8 *raw_spd, * for all densities except the 256Mb device, which has a 1KB page size." * Micron, 'TN-47-16 Designing for High-Density DDR2 Memory' */ - s->dimms[dimm_idx].page_size = decoded_dimm.width * - (1 << decoded_dimm.col_bits) / 8; + s->dimms[dimm_idx].page_size = decoded_dimm.width * (1 << decoded_dimm.col_bits) / 8; s->dimms[dimm_idx].n_banks = N_BANKS_8; /* Always 8 banks on ddr3?? */ @@ -382,61 +364,40 @@ static int ddr3_save_dimminfo(u8 dimm_idx, u8 *raw_spd, s->dimms[dimm_idx].rows = decoded_dimm.row_bits; s->dimms[dimm_idx].cols = decoded_dimm.col_bits; - saved_timings->min_tRAS = - MAX(saved_timings->min_tRAS, decoded_dimm.tRAS); - saved_timings->min_tRP = - MAX(saved_timings->min_tRP, decoded_dimm.tRP); - saved_timings->min_tRCD = - MAX(saved_timings->min_tRCD, decoded_dimm.tRCD); - saved_timings->min_tWR = - MAX(saved_timings->min_tWR, decoded_dimm.tWR); - saved_timings->min_tRFC = - MAX(saved_timings->min_tRFC, decoded_dimm.tRFC); - saved_timings->min_tWTR = - MAX(saved_timings->min_tWTR, decoded_dimm.tWTR); - saved_timings->min_tRRD = - MAX(saved_timings->min_tRRD, decoded_dimm.tRRD); - saved_timings->min_tRTP = - MAX(saved_timings->min_tRTP, decoded_dimm.tRTP); - saved_timings->min_tAA = - MAX(saved_timings->min_tAA, decoded_dimm.tAA); + saved_timings->min_tRAS = MAX(saved_timings->min_tRAS, decoded_dimm.tRAS); + saved_timings->min_tRP = MAX(saved_timings->min_tRP, decoded_dimm.tRP); + saved_timings->min_tRCD = MAX(saved_timings->min_tRCD, decoded_dimm.tRCD); + saved_timings->min_tWR = MAX(saved_timings->min_tWR, decoded_dimm.tWR); + saved_timings->min_tRFC = MAX(saved_timings->min_tRFC, decoded_dimm.tRFC); + saved_timings->min_tWTR = MAX(saved_timings->min_tWTR, decoded_dimm.tWTR); + saved_timings->min_tRRD = MAX(saved_timings->min_tRRD, decoded_dimm.tRRD); + saved_timings->min_tRTP = MAX(saved_timings->min_tRTP, decoded_dimm.tRTP); + saved_timings->min_tAA = MAX(saved_timings->min_tAA, decoded_dimm.tAA); saved_timings->cas_supported &= decoded_dimm.cas_supported; - s->dimms[dimm_idx].spd_crc = spd_ddr3_calc_unique_crc(raw_spd, - raw_spd[0]); + s->dimms[dimm_idx].spd_crc = spd_ddr3_calc_unique_crc(raw_spd, raw_spd[0]); s->dimms[dimm_idx].mirrored = decoded_dimm.flags.pins_mirrored; return CB_SUCCESS; } -static void select_discrete_timings(struct sysinfo *s, - const struct abs_timings *timings) +static void select_discrete_timings(struct sysinfo *s, const struct abs_timings *timings) { - s->selected_timings.tRAS = DIV_ROUND_UP(timings->min_tRAS, - s->selected_timings.tclk); - s->selected_timings.tRP = DIV_ROUND_UP(timings->min_tRP, - s->selected_timings.tclk); - s->selected_timings.tRCD = DIV_ROUND_UP(timings->min_tRCD, - s->selected_timings.tclk); - s->selected_timings.tWR = DIV_ROUND_UP(timings->min_tWR, - s->selected_timings.tclk); - s->selected_timings.tRFC = DIV_ROUND_UP(timings->min_tRFC, - s->selected_timings.tclk); - s->selected_timings.tWTR = DIV_ROUND_UP(timings->min_tWTR, - s->selected_timings.tclk); - s->selected_timings.tRRD = DIV_ROUND_UP(timings->min_tRRD, - s->selected_timings.tclk); - s->selected_timings.tRTP = DIV_ROUND_UP(timings->min_tRTP, - s->selected_timings.tclk); + s->selected_timings.tRAS = DIV_ROUND_UP(timings->min_tRAS, s->selected_timings.tclk); + s->selected_timings.tRP = DIV_ROUND_UP(timings->min_tRP, s->selected_timings.tclk); + s->selected_timings.tRCD = DIV_ROUND_UP(timings->min_tRCD, s->selected_timings.tclk); + s->selected_timings.tWR = DIV_ROUND_UP(timings->min_tWR, s->selected_timings.tclk); + s->selected_timings.tRFC = DIV_ROUND_UP(timings->min_tRFC, s->selected_timings.tclk); + s->selected_timings.tWTR = DIV_ROUND_UP(timings->min_tWTR, s->selected_timings.tclk); + s->selected_timings.tRRD = DIV_ROUND_UP(timings->min_tRRD, s->selected_timings.tclk); + s->selected_timings.tRTP = DIV_ROUND_UP(timings->min_tRTP, s->selected_timings.tclk); } static void print_selected_timings(struct sysinfo *s) { printk(BIOS_DEBUG, "Selected timings:\n"); - printk(BIOS_DEBUG, "\tFSB: %dMHz\n", - fsb_to_mhz(s->selected_timings.fsb_clk)); - printk(BIOS_DEBUG, "\tDDR: %dMHz\n", - ddr_to_mhz(s->selected_timings.mem_clk)); + printk(BIOS_DEBUG, "\tFSB: %dMHz\n", fsb_to_mhz(s->selected_timings.fsb_clk)); + printk(BIOS_DEBUG, "\tDDR: %dMHz\n", ddr_to_mhz(s->selected_timings.mem_clk)); printk(BIOS_DEBUG, "\tCAS: %d\n", s->selected_timings.CAS); printk(BIOS_DEBUG, "\ttRAS: %d\n", s->selected_timings.tRAS); @@ -505,8 +466,8 @@ static void decode_spd_select_timings(struct sysinfo *s) printk(BIOS_DEBUG, "Decoding dimm %d\n", i); if (i2c_eeprom_read(device, 0, 128, raw_spd) != 128) { - printk(BIOS_DEBUG, "i2c block operation failed," - " trying smbus byte operation.\n"); + printk(BIOS_DEBUG, + "i2c block operation failed, trying smbus byte operation.\n"); for (j = 0; j < 128; j++) raw_spd[j] = smbus_read_byte(device, j); } @@ -514,16 +475,14 @@ static void decode_spd_select_timings(struct sysinfo *s) if (s->spd_type == DDR2){ if (ddr2_save_dimminfo(i, raw_spd, &saved_timings, s)) { printk(BIOS_WARNING, - "Encountered problems with SPD, " - "skipping this DIMM.\n"); + "Encountered problems with SPD, skipping this DIMM.\n"); s->dimms[i].card_type = RAW_CARD_UNPOPULATED; continue; } } else { /* DDR3 */ if (ddr3_save_dimminfo(i, raw_spd, &saved_timings, s)) { printk(BIOS_WARNING, - "Encountered problems with SPD, " - "skipping this DIMM.\n"); + "Encountered problems with SPD, skipping this DIMM.\n"); /* something in decoded SPD was unsupported */ s->dimms[i].card_type = RAW_CARD_UNPOPULATED; continue; @@ -560,11 +519,9 @@ static void find_dimm_config(struct sysinfo *s) else die("Dual-rank x16 not supported\n"); } - s->dimm_config[chan] |= - dimm_config << (i % DIMMS_PER_CHANNEL) * 2; + s->dimm_config[chan] |= dimm_config << (i % DIMMS_PER_CHANNEL) * 2; } - printk(BIOS_DEBUG, " Config[CH%d] : %d\n", chan, - s->dimm_config[chan]); + printk(BIOS_DEBUG, " Config[CH%d] : %d\n", chan, s->dimm_config[chan]); } } @@ -577,11 +534,9 @@ static void checkreset_ddr2(int boot_path) if (boot_path >= 1) { pmsts = MCHBAR32(PMSTS_MCHBAR); if (!(pmsts & 1)) - printk(BIOS_DEBUG, - "Channel 0 possibly not in self refresh\n"); + printk(BIOS_DEBUG, "Channel 0 possibly not in self refresh\n"); if (!(pmsts & 2)) - printk(BIOS_DEBUG, - "Channel 1 possibly not in self refresh\n"); + printk(BIOS_DEBUG, "Channel 1 possibly not in self refresh\n"); } pmcon2 = pci_read_config8(PCI_DEV(0, 0x1f, 0), 0xa2); @@ -638,8 +593,8 @@ void sdram_initialize(int boot_path, const u8 *spd_map) /* check SPD checksum to make sure the DIMMs haven't been replaced */ fast_boot = verify_spds(spd_map, ctrl_cached) == CB_SUCCESS; if (!fast_boot) { - printk(BIOS_DEBUG, "SPD checksums don't match," - " dimm's have been replaced\n"); + printk(BIOS_DEBUG, + "SPD checksums don't match, dimm's have been replaced\n"); } else { find_fsb_speed(&s); fast_boot = s.max_fsb == ctrl_cached->max_fsb; @@ -667,8 +622,7 @@ void sdram_initialize(int boot_path, const u8 *spd_map) /* Detect dimms per channel */ reg8 = pci_read_config8(HOST_BRIDGE, 0xe9); - printk(BIOS_DEBUG, "Dimms per channel: %d\n", - (reg8 & 0x10) ? 1 : 2); + printk(BIOS_DEBUG, "Dimms per channel: %d\n", (reg8 & 0x10) ? 1 : 2); mchinfo_ddr2(&s); @@ -692,8 +646,7 @@ void sdram_initialize(int boot_path, const u8 *spd_map) cbmem_was_inited = !cbmem_recovery(s3resume); if (!fast_boot) - mrc_cache_stash_data(MRC_TRAINING_DATA, MRC_CACHE_VERSION, - &s, sizeof(s)); + mrc_cache_stash_data(MRC_TRAINING_DATA, MRC_CACHE_VERSION, &s, sizeof(s)); if (s3resume && !cbmem_was_inited) { /* Failed S3 resume, reset to come up cleanly */ diff --git a/src/northbridge/intel/x4x/raminit_ddr23.c b/src/northbridge/intel/x4x/raminit_ddr23.c index 1bfeaad5b0..84dbff5b0f 100644 --- a/src/northbridge/intel/x4x/raminit_ddr23.c +++ b/src/northbridge/intel/x4x/raminit_ddr23.c @@ -367,8 +367,7 @@ void dqset(u8 ch, u8 lane, const struct dll_setting *setting) } } -void rt_set_dqs(u8 channel, u8 lane, u8 rank, - struct rt_dqs_setting *dqs_setting) +void rt_set_dqs(u8 channel, u8 lane, u8 rank, struct rt_dqs_setting *dqs_setting) { u16 saved_tap = MCHBAR16(0x540 + 0x400 * channel + lane * 4); u16 saved_pi = MCHBAR16(0x542 + 0x400 * channel + lane * 4); @@ -525,12 +524,10 @@ static void program_timings(struct sysinfo *s) reg8 = (MCHBAR8(0x400*i + 0x26f) >> 1) & 1; if (s->spd_type == DDR2) reg32 |= ddr2_x252_tab[s->selected_timings.mem_clk - - MEM_CLOCK_667MHz][reg8][pagemod] - << 22; + - MEM_CLOCK_667MHz][reg8][pagemod] << 22; else reg32 |= ddr3_x252_tab[s->selected_timings.mem_clk - - MEM_CLOCK_800MHz][reg8][pagemod] - << 22; + - MEM_CLOCK_800MHz][reg8][pagemod] << 22; } MCHBAR32(0x400*i + 0x252) = reg32; @@ -675,8 +672,7 @@ static void program_dll(struct sysinfo *s) u16 reg16 = 0; u32 reg32 = 0; - const u8 rank2clken[8] = { 0x04, 0x01, 0x20, 0x08, 0x01, 0x04, - 0x08, 0x10 }; + const u8 rank2clken[8] = { 0x04, 0x01, 0x20, 0x08, 0x01, 0x04, 0x08, 0x10 }; MCHBAR16_AND_OR(0x180, ~0x7e06, 0xc04); MCHBAR16_AND_OR(0x182, ~0x3ff, 0xc8); @@ -718,8 +714,7 @@ static void program_dll(struct sysinfo *s) udelay(1); /* 533ns */ /* ME related */ - MCHBAR32_AND_OR(0x1a0, ~0x7ffffff, - s->spd_type == DDR2 ? 0x551803 : 0x555801); + MCHBAR32_AND_OR(0x1a0, ~0x7ffffff, s->spd_type == DDR2 ? 0x551803 : 0x555801); MCHBAR16_AND(0x1b4, ~0x800); if (s->spd_type == DDR2) { @@ -750,34 +745,25 @@ static void program_dll(struct sysinfo *s) if (s->spd_type == DDR2) { if (!CHANNEL_IS_POPULATED(s->dimms, i)) { - printk(BIOS_DEBUG, - "No dimms in channel %d\n", i); + printk(BIOS_DEBUG, "No dimms in channel %d\n", i); reg8 = 0x3f; } else if (ONLY_DIMMA_IS_POPULATED(s->dimms, i)) { - printk(BIOS_DEBUG, - "DimmA populated only in channel %d\n", - i); + printk(BIOS_DEBUG, "DimmA populated only in channel %d\n", i); reg8 = 0x38; } else if (ONLY_DIMMB_IS_POPULATED(s->dimms, i)) { - printk(BIOS_DEBUG, - "DimmB populated only in channel %d\n", - i); + printk(BIOS_DEBUG, "DimmB populated only in channel %d\n", i); reg8 = 0x7; } else if (BOTH_DIMMS_ARE_POPULATED(s->dimms, i)) { - printk(BIOS_DEBUG, - "Both dimms populated in channel %d\n", - i); + printk(BIOS_DEBUG, "Both dimms populated in channel %d\n", i); reg8 = 0; } else { die("Unhandled case\n"); } - MCHBAR32_AND_OR(0x400*i + 0x5a0, ~0x3f000000, - (u32)(reg8 << 24)); + MCHBAR32_AND_OR(0x400*i + 0x5a0, ~0x3f000000, (u32)(reg8 << 24)); } else { /* DDR3 */ FOR_EACH_POPULATED_RANK_IN_CHANNEL(s->dimms, i, r) { - MCHBAR8_AND(0x400 * i + 0x5a0 + 3, - ~rank2clken[r + i * 4]); + MCHBAR8_AND(0x400 * i + 0x5a0 + 3, ~rank2clken[r + i * 4]); } } } /* END EACH CHANNEL */ @@ -798,10 +784,8 @@ static void program_dll(struct sysinfo *s) FOR_EACH_POPULATED_CHANNEL(s->dimms, i) { MCHBAR16_AND_OR(0x400*i + 0x5f0, ~0x3fc, 0x3fc); MCHBAR32_AND(0x400*i + 0x5fc, ~0xcccccccc); - MCHBAR8_AND_OR(0x400*i + 0x5d9, ~0xf0, - s->spd_type == DDR2 ? 0x70 : 0x60); - MCHBAR16_AND_OR(0x400*i + 0x590, ~0xffff, - s->spd_type == DDR2 ? 0x5555 : 0xa955); + MCHBAR8_AND_OR(0x400*i + 0x5d9, ~0xf0, s->spd_type == DDR2 ? 0x70 : 0x60); + MCHBAR16_AND_OR(0x400*i + 0x590, 0, s->spd_type == DDR2 ? 0x5555 : 0xa955); } FOR_EACH_POPULATED_CHANNEL(s->dimms, i) { @@ -1025,8 +1009,7 @@ static void set_all_dq_dqs_dll_settings(struct sysinfo *s) FOR_EACH_POPULATED_CHANNEL(s->dimms, ch) { FOR_EACH_BYTELANE(lane) { FOR_EACH_RANK_IN_CHANNEL(rank) { - rt_set_dqs(ch, lane, rank, - &s->rt_dqs[ch][lane]); + rt_set_dqs(ch, lane, rank, &s->rt_dqs[ch][lane]); } dqsset(ch, lane, &s->dqs_settings[ch][lane]); dqset(ch, lane, &s->dq_settings[ch][lane]); @@ -1117,8 +1100,7 @@ static void prog_rcomp(struct sysinfo *s) MCHBAR32_AND_OR(0x400*i + addr[j] + 0x2a, ~0x3f3f3f3f, x39e[j]); /* Override command group strength multiplier */ - if (s->spd_type == DDR3 && - BOTH_DIMMS_ARE_POPULATED(s->dimms, i)) { + if (s->spd_type == DDR3 && BOTH_DIMMS_ARE_POPULATED(s->dimms, i)) { MCHBAR16_AND_OR(0x378 + 0x400 * i, ~0xffff, 0xcccc); } MCHBAR8_AND_OR(0x400*i + addr[j], ~1, bit[j]); @@ -1186,15 +1168,11 @@ static void program_odt(struct sysinfo *s) FOR_EACH_POPULATED_CHANNEL(s->dimms, i) { if (s->spd_type == DDR2) { - MCHBAR16(0x400 * i + 0x298) = - ddr2_odt[s->dimm_config[i]][1]; - MCHBAR16(0x400 * i + 0x294) = - ddr2_odt[s->dimm_config[i]][0]; + MCHBAR16(0x400 * i + 0x298) = ddr2_odt[s->dimm_config[i]][1]; + MCHBAR16(0x400 * i + 0x294) = ddr2_odt[s->dimm_config[i]][0]; } else { - MCHBAR16(0x400 * i + 0x298) = - ddr3_odt[s->dimm_config[i]][1]; - MCHBAR16(0x400 * i + 0x294) = - ddr3_odt[s->dimm_config[i]][0]; + MCHBAR16(0x400 * i + 0x298) = ddr3_odt[s->dimm_config[i]][1]; + MCHBAR16(0x400 * i + 0x294) = ddr3_odt[s->dimm_config[i]][0]; } u16 reg16 = MCHBAR16(0x400*i + 0x29c); reg16 &= ~0xfff; @@ -1445,11 +1423,9 @@ static void sdram_recover_receive_enable(const struct sysinfo *s) MCHBAR32(0x400 * channel + 0x248) = reg32; FOR_EACH_BYTELANE(lane) { - medium |= s->rcven_t[channel].medium[lane] - << (lane * 2); + medium |= s->rcven_t[channel].medium[lane] << (lane * 2); coarse_offset |= - (s->rcven_t[channel].coarse_offset[lane] & 0x3) - << (lane * 2); + (s->rcven_t[channel].coarse_offset[lane] & 0x3) << (lane * 2); pi_tap = MCHBAR8(0x400 * channel + 0x560 + lane * 4); pi_tap &= ~0x7f; @@ -1546,11 +1522,9 @@ static void set_dradrb(struct sysinfo *s) } } - if (ONLY_DIMMA_IS_POPULATED(s->dimms, 0) || - ONLY_DIMMB_IS_POPULATED(s->dimms, 0)) + if (ONLY_DIMMA_IS_POPULATED(s->dimms, 0) || ONLY_DIMMB_IS_POPULATED(s->dimms, 0)) MCHBAR8_OR(0x260, 1); - if (ONLY_DIMMA_IS_POPULATED(s->dimms, 1) || - ONLY_DIMMB_IS_POPULATED(s->dimms, 1)) + if (ONLY_DIMMA_IS_POPULATED(s->dimms, 1) || ONLY_DIMMB_IS_POPULATED(s->dimms, 1)) MCHBAR8_OR(0x660, 1); /* DRB */ @@ -1659,17 +1633,14 @@ static void set_dradrb(struct sysinfo *s) single_channel_offset = 0; } else if (size_me == 0) { if (size_ch0 > size_ch1) - single_channel_offset = dual_channel_size / 2 - + single_channel_size; + single_channel_offset = dual_channel_size / 2 + single_channel_size; else single_channel_offset = dual_channel_size / 2; } else { if ((size_ch0 > size_ch1) && ((map & 0x7) == 4)) - single_channel_offset = dual_channel_size / 2 - + single_channel_size; + single_channel_offset = dual_channel_size / 2 + single_channel_size; else - single_channel_offset = dual_channel_size / 2 - + size_me; + single_channel_offset = dual_channel_size / 2 + size_me; } MCHBAR16(0x108) = single_channel_offset; @@ -1683,8 +1654,7 @@ static void configure_mmap(struct sysinfo *s) u32 gfxbase, gttbase, tsegbase, reclaimbase, reclaimlimit; u32 mmiostart, umasizem; u16 ggc; - u16 ggc2uma[] = { 0, 1, 4, 8, 16, 32, 48, 64, 128, 256, 96, - 160, 224, 352 }; + u16 ggc2uma[] = { 0, 1, 4, 8, 16, 32, 48, 64, 128, 256, 96, 160, 224, 352 }; u8 ggc2gtt[] = { 0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 3, 4}; ggc = pci_read_config16(HOST_BRIDGE, 0x52); @@ -1721,10 +1691,8 @@ static void configure_mmap(struct sysinfo *s) pci_write_config16(HOST_BRIDGE, 0xb0, tolud << 4); pci_write_config16(HOST_BRIDGE, 0xa0, tom >> 6); if (reclaim) { - pci_write_config16(HOST_BRIDGE, 0x98, - (u16)(reclaimbase >> 6)); - pci_write_config16(HOST_BRIDGE, 0x9a, - (u16)(reclaimlimit >> 6)); + pci_write_config16(HOST_BRIDGE, 0x98, (u16)(reclaimbase >> 6)); + pci_write_config16(HOST_BRIDGE, 0x9a, (u16)(reclaimlimit >> 6)); } pci_write_config16(HOST_BRIDGE, 0xa2, touud); pci_write_config32(HOST_BRIDGE, 0xa4, gfxbase << 20); @@ -2091,18 +2059,15 @@ void do_raminit(struct sysinfo *s, int fast_boot) FOR_EACH_POPULATED_CHANNEL(s->dimms, ch) { reg32 = (2 << 18); reg32 |= post_jedec_tab[s->selected_timings.fsb_clk] - [s->selected_timings.mem_clk - MEM_CLOCK_667MHz][0] - << 13; + [s->selected_timings.mem_clk - MEM_CLOCK_667MHz][0] << 13; if (s->selected_timings.mem_clk == MEM_CLOCK_667MHz && s->selected_timings.fsb_clk == FSB_CLOCK_1066MHz && ch == 1) { reg32 |= (post_jedec_tab[s->selected_timings.fsb_clk] - [s->selected_timings.mem_clk - MEM_CLOCK_667MHz][1] - - 1) << 8; + [s->selected_timings.mem_clk - MEM_CLOCK_667MHz][1] - 1) << 8; } else { reg32 |= post_jedec_tab[s->selected_timings.fsb_clk] - [s->selected_timings.mem_clk - MEM_CLOCK_667MHz][1] - << 8; + [s->selected_timings.mem_clk - MEM_CLOCK_667MHz][1] << 8; } MCHBAR32_AND_OR(0x400*ch + 0x274, ~0xfff00, reg32); MCHBAR8_AND(0x400*ch + 0x274, ~0x80); @@ -2186,11 +2151,9 @@ void do_raminit(struct sysinfo *s, int fast_boot) * and is only needed in case of ME being used. */ if (ME_UMA_SIZEMB != 0) { - if (RANK_IS_POPULATED(s->dimms, 0, 0) - || RANK_IS_POPULATED(s->dimms, 1, 0)) + if (RANK_IS_POPULATED(s->dimms, 0, 0) || RANK_IS_POPULATED(s->dimms, 1, 0)) MCHBAR8_OR(0xa2f, 1 << 0); - if (RANK_IS_POPULATED(s->dimms, 0, 1) - || RANK_IS_POPULATED(s->dimms, 1, 1)) + if (RANK_IS_POPULATED(s->dimms, 0, 1) || RANK_IS_POPULATED(s->dimms, 1, 1)) MCHBAR8_OR(0xa2f, 1 << 1); MCHBAR32_OR(0xa30, 1 << 26); } diff --git a/src/northbridge/intel/x4x/rcven.c b/src/northbridge/intel/x4x/rcven.c index 1f49beb61c..c79fdc3b57 100644 --- a/src/northbridge/intel/x4x/rcven.c +++ b/src/northbridge/intel/x4x/rcven.c @@ -42,15 +42,13 @@ static u8 sampledqs(u32 addr, u8 lane, u8 channel) return (MCHBAR8(sample_offset) >> 6) & 1; } -static void program_timing(const struct rec_timing *timing, u8 channel, - u8 lane) +static void program_timing(const struct rec_timing *timing, u8 channel, u8 lane) { u32 reg32; u16 reg16; u8 reg8; - printk(RAM_SPEW, " Programming timings:" - "Coarse: %d, Medium: %d, TAP: %d, PI: %d\n", + printk(RAM_SPEW, " Programming timings:Coarse: %d, Medium: %d, TAP: %d, PI: %d\n", timing->coarse, timing->medium, timing->tap, timing->pi); reg32 = MCHBAR32(0x400 * channel + 0x248); @@ -122,15 +120,12 @@ static int decrease_tap(struct rec_timing *timing) return 0; } -static int decr_coarse_low(u8 channel, u8 lane, u32 addr, - struct rec_timing *timing) +static int decr_coarse_low(u8 channel, u8 lane, u32 addr, struct rec_timing *timing) { - printk(RAM_DEBUG, - " Decreasing coarse until high to low transition is found\n"); + printk(RAM_DEBUG, " Decreasing coarse until high to low transition is found\n"); while (sampledqs(addr, lane, channel) != DQS_LOW) { if (timing->coarse == 0) { - printk(BIOS_CRIT, - "Couldn't find DQS-high 0 indicator, halt\n"); + printk(BIOS_CRIT, "Couldn't find DQS-high 0 indicator, halt\n"); return -1; } timing->coarse--; @@ -141,11 +136,9 @@ static int decr_coarse_low(u8 channel, u8 lane, u32 addr, return 0; } -static int fine_search_dqs_high(u8 channel, u8 lane, u32 addr, - struct rec_timing *timing) +static int fine_search_dqs_high(u8 channel, u8 lane, u32 addr, struct rec_timing *timing) { - printk(RAM_DEBUG, - " Increasing TAP until low to high transition is found\n"); + printk(RAM_DEBUG, " Increasing TAP until low to high transition is found\n"); /* * We use a do while loop since it happens that the strobe read * is inconsistent, with the strobe already high. The current @@ -164,8 +157,7 @@ static int fine_search_dqs_high(u8 channel, u8 lane, u32 addr, } do { if (increase_tap(timing)) { - printk(BIOS_CRIT, - "Could not find DQS-high on fine search.\n"); + printk(BIOS_CRIT, "Could not find DQS-high on fine search.\n"); return -1; } program_timing(timing, channel, lane); @@ -176,15 +168,13 @@ static int fine_search_dqs_high(u8 channel, u8 lane, u32 addr, return 0; } -static int find_dqs_low(u8 channel, u8 lane, u32 addr, - struct rec_timing *timing) +static int find_dqs_low(u8 channel, u8 lane, u32 addr, struct rec_timing *timing) { /* Look for DQS low, using quarter steps. */ printk(RAM_DEBUG, " Increasing medium until DQS LOW is found\n"); while (sampledqs(addr, lane, channel) != DQS_LOW) { if (increase_medium(timing)) { - printk(BIOS_CRIT, - "Coarse > 15: DQS tuning failed, halt\n"); + printk(BIOS_CRIT, "Coarse > 15: DQS tuning failed, halt\n"); return -1; } program_timing(timing, channel, lane); @@ -200,8 +190,7 @@ static int find_dqs_high(u8 channel, u8 lane, u32 addr, printk(RAM_DEBUG, " Increasing medium until DQS HIGH is found\n"); while (sampledqs(addr, lane, channel) != DQS_HIGH) { if (increase_medium(timing)) { - printk(BIOS_CRIT, - "Coarse > 16: DQS tuning failed, halt\n"); + printk(BIOS_CRIT, "Coarse > 16: DQS tuning failed, halt\n"); return -1; } program_timing(timing, channel, lane); @@ -344,8 +333,7 @@ void rcven(struct sysinfo *s) timing[lane].tap = 0; timing[lane].pi = 0; - if (calibrate_receive_enable(channel, lane, addr, - &timing[lane])) + if (calibrate_receive_enable(channel, lane, addr, &timing[lane])) die("Receive enable calibration failed\n"); if (mincoarse > timing[lane].coarse) mincoarse = timing[lane].coarse; @@ -359,8 +347,8 @@ void rcven(struct sysinfo *s) reg8 = 0; else reg8 = timing[lane].coarse - mincoarse; - printk(BIOS_DEBUG, "ch %d lane %d: coarse offset: %d;" - "medium: %d; tap: %d\n", + printk(BIOS_DEBUG, + "ch %d lane %d: coarse offset: %d;medium: %d; tap: %d\n", channel, lane, reg8, timing[lane].medium, timing[lane].tap); s->rcven_t[channel].coarse_offset[lane] = reg8; |