[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