[coreboot-gerrit] Change in coreboot[master]: nb/intel/i945: For test
Elyes HAOUAS (Code Review)
gerrit at coreboot.org
Sat Jul 21 22:03:20 CEST 2018
Elyes HAOUAS has uploaded this change for review. ( https://review.coreboot.org/27590
Change subject: nb/intel/i945: For test
......................................................................
nb/intel/i945: For test
With this changes 945G-M4 board boots fine
when DIMM0 is not populated.
Still not boot:
When channel0 is not populated.
When 533MHz RAM is used.
Change-Id: Iff1705788fdffeacd94fe5e50507733ff7c0f96b
Signed-off-by: Elyes HAOUAS <ehaouas at noos.fr>
---
M src/northbridge/intel/i945/raminit.c
1 file changed, 59 insertions(+), 52 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/90/27590/1
diff --git a/src/northbridge/intel/i945/raminit.c b/src/northbridge/intel/i945/raminit.c
index c259530..074214a 100644
--- a/src/northbridge/intel/i945/raminit.c
+++ b/src/northbridge/intel/i945/raminit.c
@@ -695,45 +695,45 @@
};
static const u32 dq2330[] = {
- 0x08070706, 0x0a090908, 0x0d0c0b0a, 0x12100f0e,
- 0x1a181614, 0x22201e1c, 0x2a282624, 0x3934302d,
- 0x0a090908, 0x0c0b0b0a, 0x0e0d0d0c, 0x1211100f,
- 0x19171513, 0x211f1d1b, 0x2d292623, 0x3f393531
+ 0x01000000, 0x02010101, 0x08060403, 0x0c0b0a09,
+ 0x1512100e, 0x1c1a1816, 0x1f1f1f1e, 0x1f1f1f1f,
+ 0x02020101, 0x04040303, 0x07060505, 0x110e0b09,
+ 0x18161412, 0x1f1e1c1a, 0x1f1f1f1f, 0x1f1f1f1f
};
static const u32 cmd2710[] = {
0x07060605, 0x0f0d0b09, 0x19171411, 0x1f1f1d1b,
0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f,
- 0x1110100f, 0x0f0d0b09, 0x19171411, 0x1f1f1d1b,
+ 0x1110100f, 0x14121111, 0x1c1a1816, 0x1f1f1f1e,
0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f
};
static const u32 cmd3210[] = {
- 0x0f0d0b0a, 0x17151311, 0x1f1d1b19, 0x1f1f1f1f,
- 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f,
- 0x18171615, 0x1f1f1c1a, 0x1f1f1f1f, 0x1f1f1f1f,
- 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f
+ 0x04030302, 0x07060504, 0x0f0d0b09, 0x18151311,
+ 0x1f1f1d1b, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f,
+ 0x09090808, 0x0b0b0a0a, 0x110f0d0c, 0x1b191714,
+ 0x1f1f1f1d, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f
};
static const u32 clk2030[] = {
- 0x0e0d0d0c, 0x100f0f0e, 0x100f0e0d, 0x15131211,
+ 0x0c0b0b0b, 0x0d0d0c0c, 0x100f0e0d, 0x15131211,
0x1d1b1917, 0x2523211f, 0x2a282927, 0x32302e2c,
- 0x17161514, 0x1b1a1918, 0x1f1e1d1c, 0x23222120,
- 0x27262524, 0x2d2b2928, 0x3533312f, 0x3d3b3937
+ 0x09090808, 0x0c0b0b0a, 0x100f0e0d, 0x14131211,
+ 0x18171615, 0x1e1c1a19, 0x26242220, 0x2e2c2a28
};
static const u32 ctl3215[] = {
- 0x01010000, 0x03020101, 0x07060504, 0x0b0a0908,
- 0x100f0e0d, 0x14131211, 0x18171615, 0x1c1b1a19,
- 0x05040403, 0x07060605, 0x0a090807, 0x0f0d0c0b,
- 0x14131211, 0x18171615, 0x1c1b1a19, 0x201f1e1d
+ 0x07070606, 0x0e0c0a08, 0x17141210, 0x201e1c1a,
+ 0x28262422, 0x302e2c2a, 0x38363432, 0x3f3e3c3a,
+ 0x13131212, 0x16151414, 0x211d1a18, 0x28262422,
+ 0x302e2c2a, 0x38363432, 0x3f3e3c3a, 0x3f3f3f3f
};
static const u32 ctl3220[] = {
- 0x05040403, 0x07060505, 0x0e0c0a08, 0x1a171411,
- 0x2825221f, 0x35322f2b, 0x3e3e3b38, 0x3e3e3e3e,
- 0x09080807, 0x0b0a0a09, 0x0f0d0c0b, 0x1b171311,
- 0x2825221f, 0x35322f2b, 0x3e3e3b38, 0x3e3e3e3e
+ 0x05050404, 0x0b090706, 0x13110f0d, 0x1d1b1915,
+ 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f,
+ 0x0e0e0d0d, 0x100f0f0f, 0x1b191310, 0x1f1f1f1d,
+ 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f, 0x1f1f1f1f
};
static const u32 nc[] = {
@@ -762,27 +762,28 @@
DQ2030, CMD3210, NC, CTL3215, NC, CLK2030, NC, NC,
DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,
- DQ2030, CMD3210, CTL3215, NC, CLK2030, NC, DQ2030, CMD3210,
+ DQ2030, DQ2330, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,
DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,
- DQ2030, CMD3210, CTL3215, NC, CLK2030, NC, DQ2030, CMD2710,
- DQ2030, CMD3210, CTL3215, NC, CLK2030, NC, NC, NC,
+ DQ2030, DQ2330, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,
+ DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,
DQ2030, CMD3210, NC, CTL3215, NC, CLK2030, DQ2030, CMD3210,
DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,
- DQ2030, CMD3210, NC, CTL3215, NC, CLK2030, DQ2030, CMD3210,
- DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,
- DQ2030, CMD3210, NC, CTL3215, NC, CLK2030, NC, NC,
+ DQ2030, CTL3220, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CTL3220,
+ DQ2030, DQ2330, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,
+ DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,
DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,
- DQ2030, CMD2710, CTL3215, NC, CLK2030, NC, DQ2030, CMD3210,
- DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210,
- DQ2030, CMD2710, CTL3215, NC, CLK2030, NC, DQ2030, CMD2710,
- DQ2030, CMD2710, CTL3215, NC, CLK2030, NC, NC, NC,
+ DQ2030, DQ2330, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,
+ DQ2030, DQ2330, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,
+ DQ2030, DQ2330, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, DQ2330,
+ DQ2030, CTL3220, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CTL3220,
NC, NC, NC, CTL3215, NC, CLK2030, DQ2030, CMD3210,
- NC, NC, CTL3215, NC, CLK2030, NC, DQ2030, CMD3210,
- NC, NC, NC, CTL3215, NC, CLK2030, DQ2030, CMD3210,
- NC, NC, CTL3215, NC, CLK2030, CLK2030, DQ2030, CMD2710
+ DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,
+ DQ2030, CMD2710, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD2710,
+ DQ2030, CTL3220, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CTL3220,
+ DQ2030, CMD3210, CTL3215, CTL3215, CLK2030, CLK2030, DQ2030, CMD3210
};
static const u8 single_channel_slew_group_lookup[] = {
@@ -902,24 +903,25 @@
0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,
0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x00,
0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
+ 0x44, 0x55, 0x00, 0x00, 0x44, 0x44, 0x44, 0x55,
+ 0x44, 0x44, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44,
+ 0x44, 0x88, 0x00, 0x00, 0x44, 0x44, 0x44, 0x88,
0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,
- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x00,
- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,
- 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x00,
- 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
+ 0x44, 0x44, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44,
0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,
- 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x00,
+ 0x44, 0x55, 0x00, 0x00, 0x44, 0x44, 0x44, 0x55,
+ 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
+ 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
+ 0x44, 0x88, 0x00, 0x00, 0x44, 0x44, 0x44, 0x88,
+ 0x44, 0x55, 0x00, 0x00, 0x44, 0x44, 0x44, 0x55,
+ 0x44, 0x88, 0x00, 0x00, 0x44, 0x44, 0x44, 0x88,
+ 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33,
0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
- 0x44, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33
+ 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
+ 0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
+ 0x44, 0x33, 0x00, 0x00, 0x44, 0x44, 0x44, 0x33
+
};
static const u8 single_channel_strength_multiplier[] = {
@@ -953,21 +955,20 @@
static void sdram_rcomp_buffer_strength_and_slew(struct sys_info *sysinfo)
{
const u8 *strength_multiplier;
- int idx, dual_channel;
+ int idx, idx_channel1, dual_channel;
/* Set Strength Multipliers */
+ idx = 5 * sysinfo->dimm[0] + sysinfo->dimm[1];
/* Dual Channel needs different tables. */
if (sdram_capabilities_dual_channel()) {
printk(BIOS_DEBUG, "Programming Dual Channel RCOMP\n");
strength_multiplier = dual_channel_strength_multiplier;
dual_channel = 1;
- idx = 5 * sysinfo->dimm[0] + sysinfo->dimm[2];
} else {
printk(BIOS_DEBUG, "Programming Single Channel RCOMP\n");
strength_multiplier = single_channel_strength_multiplier;
dual_channel = 0;
- idx = 5 * sysinfo->dimm[0] + sysinfo->dimm[1];
}
printk(BIOS_DEBUG, "Table Index: %d\n", idx);
@@ -979,7 +980,12 @@
MCHBAR8(G5SC) = strength_multiplier[idx * 8 + 4];
MCHBAR8(G6SC) = strength_multiplier[idx * 8 + 5];
MCHBAR8(G7SC) = strength_multiplier[idx * 8 + 6];
- MCHBAR8(G8SC) = strength_multiplier[idx * 8 + 7];
+ if (dual_channel) {
+ idx_channel1 = 5 * sysinfo->dimm[2] + sysinfo->dimm[3];
+ MCHBAR8(G8SC) = strength_multiplier[idx_channel1 * 8 + 7];
+ } else {
+ MCHBAR8(G8SC) = strength_multiplier[idx * 8 + 7];
+ }
/* Channel 0 */
sdram_write_slew_rates(G1SRPUT, slew_group_lookup(dual_channel, idx * 8 + 0));
@@ -995,8 +1001,9 @@
sdram_write_slew_rates(G6SRPUT, slew_group_lookup(dual_channel, idx * 8 + 5));
/* Channel 1 */
- if (sysinfo->dual_channel) {
+ if (dual_channel) {
sdram_write_slew_rates(G7SRPUT, slew_group_lookup(dual_channel, idx * 8 + 6));
+ idx = 5 * sysinfo->dimm[2] + sysinfo->dimm[3];
sdram_write_slew_rates(G8SRPUT, slew_group_lookup(dual_channel, idx * 8 + 7));
} else {
sdram_write_slew_rates(G7SRPUT, nc);
--
To view, visit https://review.coreboot.org/27590
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iff1705788fdffeacd94fe5e50507733ff7c0f96b
Gerrit-Change-Number: 27590
Gerrit-PatchSet: 1
Gerrit-Owner: Elyes HAOUAS <ehaouas at noos.fr>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180721/380ee4cb/attachment-0001.html>
More information about the coreboot-gerrit
mailing list