nb/intel/sandybridge: Make MCHBAR arithmetics consistent

Ensure that the operation order is always the same. This results in
changes to the binary, but the effective result is the same.

Change-Id: I9772832c60089b35889df7298e20a2bd02b35b00
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/38206
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
diff --git a/src/northbridge/intel/sandybridge/raminit_common.c b/src/northbridge/intel/sandybridge/raminit_common.c
index 4d1c748..da12718 100644
--- a/src/northbridge/intel/sandybridge/raminit_common.c
+++ b/src/northbridge/intel/sandybridge/raminit_common.c
@@ -58,7 +58,7 @@
  *  Controls the idle time after issuing this DRAM command
  *  Bit 16-32: number of clock-cylces to idle
  *
- * DEFAULT_MCHBAR + 0x4284 + 0x400 * channel: execute command queue
+ * DEFAULT_MCHBAR + 0x4284 + channel * 0x400: execute command queue
  *  Starts to execute all queued commands
  *  Bit 0    : start DRAM command execution
  *  Bit 18-19 : number of queued commands - 1
@@ -179,15 +179,15 @@
 	FOR_ALL_CHANNELS {
 		// enable xover clk
 		reg = get_XOVER_CLK(ctrl->rankmap[channel]);
-		printram("XOVER CLK [%x] = %x\n", channel * 0x100 + 0xc14,
+		printram("XOVER CLK [%x] = %x\n", 0xc14 + channel * 0x100,
 			 reg);
-		MCHBAR32(channel * 0x100 + 0xc14) = reg;
+		MCHBAR32(0xc14 + channel * 0x100) = reg;
 
 		// enable xover ctl & xover cmd
 		reg = get_XOVER_CMD(ctrl->rankmap[channel]);
-		printram("XOVER CMD [%x] = %x\n", 0x100 * channel + 0x320c,
+		printram("XOVER CMD [%x] = %x\n", 0x320c + channel * 0x100,
 			 reg);
-		MCHBAR32(0x100 * channel + 0x320c) = reg;
+		MCHBAR32(0x320c + channel * 0x100) = reg;
 	}
 }
 
@@ -202,14 +202,14 @@
 	if (IS_SANDY_CPU(cpu) && IS_SANDY_CPU_C(cpu)) {
 		if (stretch == 2)
 			stretch = 3;
-		addr = 0x401c + 0x400 * channel;
+		addr = 0x401c + channel * 0x400;
 		MCHBAR32_AND_OR(addr, 0xffffc3ff,
 			(stretch << 12) | (stretch << 10));
 		printk(RAM_DEBUG, "OTHP Workaround [%x] = %x\n", addr,
 			MCHBAR32(addr));
 	} else {
 		// OTHP
-		addr = 0x400c + 0x400 * channel;
+		addr = 0x400c + channel * 0x400;
 		MCHBAR32_AND_OR(addr, 0xfff0ffff,
 			(stretch << 16) | (stretch << 18));
 		printk(RAM_DEBUG, "OTHP [%x] = %x\n", addr, MCHBAR32(addr));
@@ -229,8 +229,8 @@
 		reg |= (ctrl->CAS << 8);
 		reg |= (ctrl->CWL << 12);
 		reg |= (ctrl->tRAS << 16);
-		printram("DBP [%x] = %x\n", TC_DBP_C0 + 0x400 * channel, reg);
-		MCHBAR32(TC_DBP_C0 + 0x400 * channel) = reg;
+		printram("DBP [%x] = %x\n", TC_DBP_C0 + channel * 0x400, reg);
+		MCHBAR32(TC_DBP_C0 + channel * 0x400) = reg;
 
 		// RAP
 		reg = 0;
@@ -241,11 +241,11 @@
 		reg |= (ctrl->tFAW << 16);
 		reg |= (ctrl->tWR << 24);
 		reg |= (3 << 30);
-		printram("RAP [%x] = %x\n", TC_RAP_C0 + 0x400 * channel, reg);
-		MCHBAR32(TC_RAP_C0 + 0x400 * channel) = reg;
+		printram("RAP [%x] = %x\n", TC_RAP_C0 + channel * 0x400, reg);
+		MCHBAR32(TC_RAP_C0 + channel * 0x400) = reg;
 
 		// OTHP
-		addr = 0x400 * channel + 0x400c;
+		addr = 0x400c + channel * 0x400;
 		reg = 0;
 		reg |= ctrl->tXPDLL;
 		reg |= (ctrl->tXP << 5);
@@ -254,7 +254,7 @@
 		printram("OTHP [%x] = %x\n", addr, reg);
 		MCHBAR32(addr) = reg;
 
-		MCHBAR32(0x400 * channel + 0x4014) = 0;
+		MCHBAR32(0x4014 + channel * 0x400) = 0;
 
 		MCHBAR32_OR(addr, 0x00020000);
 
@@ -271,10 +271,10 @@
 		reg = ((ctrl->tREFI & 0xffff) << 0) |
 			((ctrl->tRFC & 0x1ff) << 16) |
 			(((val32 / 1024) & 0x7f) << 25);
-		printram("REFI [%x] = %x\n", TC_RFTP_C0 + 0x400 * channel, reg);
-		MCHBAR32(TC_RFTP_C0 + 0x400 * channel) = reg;
+		printram("REFI [%x] = %x\n", TC_RFTP_C0 + channel * 0x400, reg);
+		MCHBAR32(TC_RFTP_C0 + channel * 0x400) = reg;
 
-		MCHBAR32_OR(TC_RFP_C0 + 0x400 * channel,  0xff);
+		MCHBAR32_OR(TC_RFP_C0 + channel * 0x400,  0xff);
 
 		// SRFTP
 		reg = 0;
@@ -286,9 +286,9 @@
 		reg = (reg & ~0x3ff0000) | (val32 << 16);
 		val32 = ctrl->tMOD - 8;
 		reg = (reg & ~0xf0000000) | (val32 << 28);
-		printram("SRFTP [%x] = %x\n", 0x400 * channel + 0x42a4,
+		printram("SRFTP [%x] = %x\n", 0x42a4 + channel * 0x400,
 		       reg);
-		MCHBAR32(0x400 * channel + 0x42a4) = reg;
+		MCHBAR32(0x42a4 + channel * 0x400) = reg;
 	}
 }
 
@@ -618,7 +618,7 @@
 static void wait_428c(int channel)
 {
 	while (1) {
-		if (MCHBAR32(0x428c + (channel << 10)) & 0x50)
+		if (MCHBAR32(0x428c + channel * 0x400) & 0x50)
 			return;
 	}
 }
@@ -636,13 +636,13 @@
 	slotrank = (ctrl->rankmap[channel] & 1) ? 0 : 2;
 
 	/* DRAM command ZQCS */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x0f003;
-	MCHBAR32(0x4230 + 0x400 * channel) = 0x80c01;
-	MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-	MCHBAR32(0x4210 + 0x400 * channel) = 0;
+	MCHBAR32(0x4220 + channel * 0x400) = 0x0f003;
+	MCHBAR32(0x4230 + channel * 0x400) = 0x80c01;
+	MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x60000;
+	MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 	// execute command queue - why is bit 22 set here?!
-	MCHBAR32(0x4284 + 0x400 * channel) = (1 << 22) | RUN_QUEUE_4284(1);
+	MCHBAR32(0x4284 + channel * 0x400) = (1 << 22) | RUN_QUEUE_4284(1);
 
 	wait_428c(channel);
 }
@@ -685,13 +685,13 @@
 	FOR_ALL_CHANNELS {
 		// Set valid rank CKE
 		reg = ctrl->rankmap[channel];
-		MCHBAR32(0x42a0 + 0x400 * channel) = reg;
+		MCHBAR32(0x42a0 + channel * 0x400) = reg;
 
 		// Wait 10ns for ranks to settle
 		//udelay(0.01);
 
 		reg = (reg & ~0xf0) | (ctrl->rankmap[channel] << 4);
-		MCHBAR32(0x42a0 + 0x400 * channel) = reg;
+		MCHBAR32(0x42a0 + channel * 0x400) = reg;
 
 		// Write reset using a NOP
 		write_reset(ctrl);
@@ -726,28 +726,28 @@
 	}
 
 	/* DRAM command MRS */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x0f000;
-	MCHBAR32(0x4230 + 0x400 * channel) = 0x41001;
-	MCHBAR32(0x4200 + 0x400 * channel) =
+	MCHBAR32(0x4220 + channel * 0x400) = 0x0f000;
+	MCHBAR32(0x4230 + channel * 0x400) = 0x41001;
+	MCHBAR32(0x4200 + channel * 0x400) =
 		(slotrank << 24) | (reg << 20) | val | 0x60000;
-	MCHBAR32(0x4210 + 0x400 * channel) = 0;
+	MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 	/* DRAM command MRS */
-	MCHBAR32(0x4224 + 0x400 * channel) = 0x1f000;
-	MCHBAR32(0x4234 + 0x400 * channel) = 0x41001;
-	MCHBAR32(0x4204 + 0x400 * channel) =
+	MCHBAR32(0x4224 + channel * 0x400) = 0x1f000;
+	MCHBAR32(0x4234 + channel * 0x400) = 0x41001;
+	MCHBAR32(0x4204 + channel * 0x400) =
 		(slotrank << 24) | (reg << 20) | val | 0x60000;
-	MCHBAR32(0x4214 + 0x400 * channel) = 0;
+	MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 	/* DRAM command MRS */
-	MCHBAR32(0x4228 + 0x400 * channel) = 0x0f000;
-	MCHBAR32(0x4238 + 0x400 * channel) = 0x1001 | (ctrl->tMOD << 16);
-	MCHBAR32(0x4208 + 0x400 * channel) =
+	MCHBAR32(0x4228 + channel * 0x400) = 0x0f000;
+	MCHBAR32(0x4238 + channel * 0x400) = 0x1001 | (ctrl->tMOD << 16);
+	MCHBAR32(0x4208 + channel * 0x400) =
 		(slotrank << 24) | (reg << 20) | val | 0x60000;
-	MCHBAR32(0x4218 + 0x400 * channel) = 0;
+	MCHBAR32(0x4218 + channel * 0x400) = 0;
 
 	// execute command queue
-	MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(3);
+	MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(3);
 }
 
 static u32 make_mr0(ramctr_timing * ctrl, u8 rank)
@@ -894,7 +894,7 @@
 	MCHBAR32_OR(0x5030, 8);
 
 	FOR_ALL_POPULATED_CHANNELS {
-		MCHBAR32_AND(0x4020 + 0x400 * channel, ~0x200000);
+		MCHBAR32_AND(0x4020 + channel * 0x400, ~0x200000);
 
 		wait_428c(channel);
 
@@ -904,14 +904,14 @@
 		wait_428c(channel);
 
 		/* DRAM command ZQCS */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x0f003;
-		MCHBAR32(0x4230 + 0x400 * channel) = 0x659001;
-		MCHBAR32(0x4200 + 0x400 * channel) =
+		MCHBAR32(0x4220 + channel * 0x400) = 0x0f003;
+		MCHBAR32(0x4230 + channel * 0x400) = 0x659001;
+		MCHBAR32(0x4200 + channel * 0x400) =
 			(slotrank << 24) | 0x60000;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0x3e0;
+		MCHBAR32(0x4210 + channel * 0x400) = 0x3e0;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(1);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(1);
 
 		// Drain
 		wait_428c(channel);
@@ -967,7 +967,7 @@
 	reg32 |= (slot320c[1] & 0x7f) << 18;
 	reg32 |= (full_shift & 0x3f) | ((full_shift & 0x40) << 6);
 
-	MCHBAR32(0x320c + 0x100 * channel) = reg32;
+	MCHBAR32(0x320c + channel * 0x100) = reg32;
 
 	/* enable CLK XOVER */
 	reg_c14 = get_XOVER_CLK(ctrl->rankmap[channel]);
@@ -988,7 +988,7 @@
 	MCHBAR32(0xc14 + channel * 0x100) = reg_c14;
 	MCHBAR32(0xc18 + channel * 0x100) = reg_c18;
 
-	reg_io_latency = MCHBAR32(SC_IO_LATENCY_C0 + 0x400 * channel);
+	reg_io_latency = MCHBAR32(SC_IO_LATENCY_C0 + channel * 0x400);
 	reg_io_latency &= 0xffff0000;
 
 	reg_4024 = 0;
@@ -1033,7 +1033,7 @@
 		     shift_402x) << (8 * slotrank);
 
 		FOR_ALL_LANES {
-			MCHBAR32(lane_registers[lane] + 0x10 + 0x100 * channel +
+			MCHBAR32(lane_registers[lane] + 0x10 + channel * 0x100 +
 				 4 * slotrank)
 			    =
 			    (((ctrl->timings[channel][slotrank].lanes[lane].
@@ -1048,7 +1048,7 @@
 			     | ((ctrl->timings[channel][slotrank].lanes[lane].
 				falling + shift) << 20));
 
-			MCHBAR32(lane_registers[lane] + 0x20 + 0x100 * channel +
+			MCHBAR32(lane_registers[lane] + 0x20 + channel * 0x100 +
 				 4 * slotrank)
 			    =
 			    (((ctrl->timings[channel][slotrank].lanes[lane].
@@ -1064,8 +1064,8 @@
 				timC + shift) & 0x40) << 13));
 		}
 	}
-	MCHBAR32(0x4024 + 0x400 * channel) = reg_4024;
-	MCHBAR32(SC_IO_LATENCY_C0 + 0x400 * channel) = reg_io_latency;
+	MCHBAR32(0x4024 + channel * 0x400) = reg_4024;
+	MCHBAR32(SC_IO_LATENCY_C0 + channel * 0x400) = reg_io_latency;
 }
 
 static void test_timA(ramctr_timing * ctrl, int channel, int slotrank)
@@ -1076,32 +1076,32 @@
 	 * write MR3 MPR enable
 	 * in this mode only RD and RDA are allowed
 	 * all reads return a predefined pattern */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x1f000;
-	MCHBAR32(0x4230 + 0x400 * channel) = (0xc01 | (ctrl->tMOD << 16));
-	MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x360004;
-	MCHBAR32(0x4210 + 0x400 * channel) = 0;
+	MCHBAR32(0x4220 + channel * 0x400) = 0x1f000;
+	MCHBAR32(0x4230 + channel * 0x400) = (0xc01 | (ctrl->tMOD << 16));
+	MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x360004;
+	MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 	/* DRAM command RD */
-	MCHBAR32(0x4224 + 0x400 * channel) = 0x1f105;
-	MCHBAR32(0x4234 + 0x400 * channel) = 0x4040c01;
-	MCHBAR32(0x4204 + 0x400 * channel) = (slotrank << 24);
-	MCHBAR32(0x4214 + 0x400 * channel) = 0;
+	MCHBAR32(0x4224 + channel * 0x400) = 0x1f105;
+	MCHBAR32(0x4234 + channel * 0x400) = 0x4040c01;
+	MCHBAR32(0x4204 + channel * 0x400) = (slotrank << 24);
+	MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 	/* DRAM command RD */
-	MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-	MCHBAR32(0x4238 + 0x400 * channel) = 0x100f | ((ctrl->CAS + 36) << 16);
-	MCHBAR32(0x4208 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-	MCHBAR32(0x4218 + 0x400 * channel) = 0;
+	MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+	MCHBAR32(0x4238 + channel * 0x400) = 0x100f | ((ctrl->CAS + 36) << 16);
+	MCHBAR32(0x4208 + channel * 0x400) = (slotrank << 24) | 0x60000;
+	MCHBAR32(0x4218 + channel * 0x400) = 0;
 
 	/* DRAM command MRS
 	 * write MR3 MPR disable */
-	MCHBAR32(0x422c + 0x400 * channel) = 0x1f000;
-	MCHBAR32(0x423c + 0x400 * channel) = 0xc01 | (ctrl->tMOD << 16);
-	MCHBAR32(0x420c + 0x400 * channel) = (slotrank << 24) | 0x360000;
-	MCHBAR32(0x421c + 0x400 * channel) = 0;
+	MCHBAR32(0x422c + channel * 0x400) = 0x1f000;
+	MCHBAR32(0x423c + channel * 0x400) = 0xc01 | (ctrl->tMOD << 16);
+	MCHBAR32(0x420c + channel * 0x400) = (slotrank << 24) | 0x360000;
+	MCHBAR32(0x421c + channel * 0x400) = 0;
 
 	// execute command queue
-	MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+	MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 	wait_428c(channel);
 }
@@ -1357,13 +1357,13 @@
 		wait_428c(channel);
 
 		/* DRAM command PREA */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x1f002;
-		MCHBAR32(0x4230 + 0x400 * channel) = 0xc01 | (ctrl->tRP << 16);
-		MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x60400;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0;
+		MCHBAR32(0x4220 + channel * 0x400) = 0x1f002;
+		MCHBAR32(0x4230 + channel * 0x400) = 0xc01 | (ctrl->tRP << 16);
+		MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x60400;
+		MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(1);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(1);
 
 		MCHBAR32(0x3400) = (slotrank << 2) | 0x8001;
 
@@ -1442,7 +1442,7 @@
 		program_timings(ctrl, channel);
 	}
 	FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS FOR_ALL_LANES {
-		MCHBAR32(0x4080 + 0x400 * channel + 4 * lane) = 0;
+		MCHBAR32(0x4080 + channel * 0x400 + lane * 4) = 0;
 	}
 	return 0;
 }
@@ -1452,73 +1452,73 @@
 	int lane;
 
 	FOR_ALL_LANES {
-		MCHBAR32(0x4340 + 0x400 * channel + 4 * lane) = 0;
-		MCHBAR32(0x4140 + 0x400 * channel + 4 * lane);
+		MCHBAR32(0x4340 + channel * 0x400 + lane * 4) = 0;
+		MCHBAR32(0x4140 + channel * 0x400 + lane * 4);
 	}
 
 	wait_428c(channel);
 
 	/* DRAM command ACT */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x1f006;
-	MCHBAR32(0x4230 + 0x400 * channel) =
+	MCHBAR32(0x4220 + channel * 0x400) = 0x1f006;
+	MCHBAR32(0x4230 + channel * 0x400) =
 		(MAX((ctrl->tFAW >> 2) + 1, ctrl->tRRD) << 10)
 		| 4 | (ctrl->tRCD << 16);
-	MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | (6 << 16);
-	MCHBAR32(0x4210 + 0x400 * channel) = 0x244;
+	MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | (6 << 16);
+	MCHBAR32(0x4210 + channel * 0x400) = 0x244;
 
 	/* DRAM command NOP */
-	MCHBAR32(0x4224 + 0x400 * channel) = 0x1f207;
-	MCHBAR32(0x4234 + 0x400 * channel) = 0x8041001;
-	MCHBAR32(0x4204 + 0x400 * channel) = (slotrank << 24) | 8;
-	MCHBAR32(0x4214 + 0x400 * channel) = 0x3e0;
+	MCHBAR32(0x4224 + channel * 0x400) = 0x1f207;
+	MCHBAR32(0x4234 + channel * 0x400) = 0x8041001;
+	MCHBAR32(0x4204 + channel * 0x400) = (slotrank << 24) | 8;
+	MCHBAR32(0x4214 + channel * 0x400) = 0x3e0;
 
 	/* DRAM command WR */
-	MCHBAR32(0x4228 + 0x400 * channel) = 0x1f201;
-	MCHBAR32(0x4238 + 0x400 * channel) = 0x80411f4;
-	MCHBAR32(0x4208 + 0x400 * channel) = slotrank << 24;
-	MCHBAR32(0x4218 + 0x400 * channel) = 0x242;
+	MCHBAR32(0x4228 + channel * 0x400) = 0x1f201;
+	MCHBAR32(0x4238 + channel * 0x400) = 0x80411f4;
+	MCHBAR32(0x4208 + channel * 0x400) = slotrank << 24;
+	MCHBAR32(0x4218 + channel * 0x400) = 0x242;
 
 	/* DRAM command NOP */
-	MCHBAR32(0x422c + 0x400 * channel) = 0x1f207;
-	MCHBAR32(0x423c + 0x400 * channel) =
+	MCHBAR32(0x422c + channel * 0x400) = 0x1f207;
+	MCHBAR32(0x423c + channel * 0x400) =
 		0x8000c01 | ((ctrl->CWL + ctrl->tWTR + 5) << 16);
-	MCHBAR32(0x420c + 0x400 * channel) = (slotrank << 24) | 8;
-	MCHBAR32(0x421c + 0x400 * channel) = 0x3e0;
+	MCHBAR32(0x420c + channel * 0x400) = (slotrank << 24) | 8;
+	MCHBAR32(0x421c + channel * 0x400) = 0x3e0;
 
 	// execute command queue
-	MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+	MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 	wait_428c(channel);
 
 	/* DRAM command PREA */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x1f002;
-	MCHBAR32(0x4230 + 0x400 * channel) = 0xc01 | (ctrl->tRP << 16);
-	MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x60400;
-	MCHBAR32(0x4210 + 0x400 * channel) = 0x240;
+	MCHBAR32(0x4220 + channel * 0x400) = 0x1f002;
+	MCHBAR32(0x4230 + channel * 0x400) = 0xc01 | (ctrl->tRP << 16);
+	MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x60400;
+	MCHBAR32(0x4210 + channel * 0x400) = 0x240;
 
 	/* DRAM command ACT */
-	MCHBAR32(0x4224 + 0x400 * channel) = 0x1f006;
-	MCHBAR32(0x4234 + 0x400 * channel) =
+	MCHBAR32(0x4224 + channel * 0x400) = 0x1f006;
+	MCHBAR32(0x4234 + channel * 0x400) =
 		(MAX(ctrl->tRRD, (ctrl->tFAW >> 2) + 1) << 10)
 		| 8 | (ctrl->CAS << 16);
-	MCHBAR32(0x4204 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-	MCHBAR32(0x4214 + 0x400 * channel) = 0x244;
+	MCHBAR32(0x4204 + channel * 0x400) = (slotrank << 24) | 0x60000;
+	MCHBAR32(0x4214 + channel * 0x400) = 0x244;
 
 	/* DRAM command RD */
-	MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-	MCHBAR32(0x4238 + 0x400 * channel) =
+	MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+	MCHBAR32(0x4238 + channel * 0x400) =
 		0x40011f4 | (MAX(ctrl->tRTP, 8) << 16);
-	MCHBAR32(0x4208 + 0x400 * channel) = (slotrank << 24);
-	MCHBAR32(0x4218 + 0x400 * channel) = 0x242;
+	MCHBAR32(0x4208 + channel * 0x400) = (slotrank << 24);
+	MCHBAR32(0x4218 + channel * 0x400) = 0x242;
 
 	/* DRAM command PREA */
-	MCHBAR32(0x422c + 0x400 * channel) = 0x1f002;
-	MCHBAR32(0x423c + 0x400 * channel) = 0xc01 | (ctrl->tRP << 16);
-	MCHBAR32(0x420c + 0x400 * channel) = (slotrank << 24) | 0x60400;
-	MCHBAR32(0x421c + 0x400 * channel) = 0x240;
+	MCHBAR32(0x422c + channel * 0x400) = 0x1f002;
+	MCHBAR32(0x423c + channel * 0x400) = 0xc01 | (ctrl->tRP << 16);
+	MCHBAR32(0x420c + channel * 0x400) = (slotrank << 24) | 0x60400;
+	MCHBAR32(0x421c + channel * 0x400) = 0x240;
 
 	// execute command queue
-	MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+	MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 	wait_428c(channel);
 }
@@ -1550,13 +1550,13 @@
 	wait_428c(channel);
 
 	/* DRAM command PREA */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x1f002;
-	MCHBAR32(0x4230 + 0x400 * channel) = 0xc01 | (ctrl->tRP << 16);
-	MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x60400;
-	MCHBAR32(0x4210 + 0x400 * channel) = 0x240;
+	MCHBAR32(0x4220 + channel * 0x400) = 0x1f002;
+	MCHBAR32(0x4230 + channel * 0x400) = 0xc01 | (ctrl->tRP << 16);
+	MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x60400;
+	MCHBAR32(0x4210 + channel * 0x400) = 0x240;
 
 	// execute command queue
-	MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(1);
+	MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(1);
 
 	for (timC = 0; timC <= MAX_TIMC; timC++) {
 		FOR_ALL_LANES ctrl->timings[channel][slotrank].lanes[lane].
@@ -1567,7 +1567,7 @@
 
 		FOR_ALL_LANES {
 			statistics[lane][timC] =
-				MCHBAR32(0x4340 + 4 * lane + 0x400 * channel);
+				MCHBAR32(0x4340 + channel * 0x400 + lane * 4);
 		}
 	}
 	FOR_ALL_LANES {
@@ -1656,39 +1656,39 @@
 			 * write MR3 MPR enable
 			 * in this mode only RD and RDA are allowed
 			 * all reads return a predefined pattern */
-			MCHBAR32(0x4220 + 0x400 * channel) = 0x1f000;
-			MCHBAR32(0x4230 + 0x400 * channel) =
+			MCHBAR32(0x4220 + channel * 0x400) = 0x1f000;
+			MCHBAR32(0x4230 + channel * 0x400) =
 				0xc01 | (ctrl->tMOD << 16);
-			MCHBAR32(0x4200 + 0x400 * channel) =
+			MCHBAR32(0x4200 + channel * 0x400) =
 				(slotrank << 24) | 0x360004;
-			MCHBAR32(0x4210 + 0x400 * channel) = 0;
+			MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 			/* DRAM command RD */
-			MCHBAR32(0x4224 + 0x400 * channel) = 0x1f105;
-			MCHBAR32(0x4234 + 0x400 * channel) = 0x4041003;
-			MCHBAR32(0x4204 + 0x400 * channel) =
+			MCHBAR32(0x4224 + channel * 0x400) = 0x1f105;
+			MCHBAR32(0x4234 + channel * 0x400) = 0x4041003;
+			MCHBAR32(0x4204 + channel * 0x400) =
 				(slotrank << 24) | 0;
-			MCHBAR32(0x4214 + 0x400 * channel) = 0;
+			MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 			/* DRAM command RD */
-			MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-			MCHBAR32(0x4238 + 0x400 * channel) =
+			MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+			MCHBAR32(0x4238 + channel * 0x400) =
 				0x1001 | ((ctrl->CAS + 8) << 16);
-			MCHBAR32(0x4208 + 0x400 * channel) =
+			MCHBAR32(0x4208 + channel * 0x400) =
 				(slotrank << 24) | 0x60000;
-			MCHBAR32(0x4218 + 0x400 * channel) = 0;
+			MCHBAR32(0x4218 + channel * 0x400) = 0;
 
 			/* DRAM command MRS
 			 * write MR3 MPR disable */
-			MCHBAR32(0x422c + 0x400 * channel) = 0x1f000;
-			MCHBAR32(0x423c + 0x400 * channel) =
+			MCHBAR32(0x422c + channel * 0x400) = 0x1f000;
+			MCHBAR32(0x423c + channel * 0x400) =
 				0xc01 | (ctrl->tMOD << 16);
-			MCHBAR32(0x420c + 0x400 * channel) =
+			MCHBAR32(0x420c + channel * 0x400) =
 				(slotrank << 24) | 0x360000;
-			MCHBAR32(0x421c + 0x400 * channel) = 0;
+			MCHBAR32(0x421c + channel * 0x400) = 0;
 
 			// execute command queue
-			MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+			MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 			wait_428c(channel);
 		}
@@ -1708,39 +1708,39 @@
 			 * write MR3 MPR enable
 			 * in this mode only RD and RDA are allowed
 			 * all reads return a predefined pattern */
-			MCHBAR32(0x4220 + 0x400 * channel) = 0x1f000;
-			MCHBAR32(0x4230 + 0x400 * channel) =
+			MCHBAR32(0x4220 + channel * 0x400) = 0x1f000;
+			MCHBAR32(0x4230 + channel * 0x400) =
 				0xc01 | (ctrl->tMOD << 16);
-			MCHBAR32(0x4200 + 0x400 * channel) =
+			MCHBAR32(0x4200 + channel * 0x400) =
 				(slotrank << 24) | 0x360004;
-			MCHBAR32(0x4210 + 0x400 * channel) = 0;
+			MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 			/* DRAM command RD */
-			MCHBAR32(0x4224 + 0x400 * channel) = 0x1f105;
-			MCHBAR32(0x4234 + 0x400 * channel) = 0x4041003;
-			MCHBAR32(0x4204 + 0x400 * channel) =
+			MCHBAR32(0x4224 + channel * 0x400) = 0x1f105;
+			MCHBAR32(0x4234 + channel * 0x400) = 0x4041003;
+			MCHBAR32(0x4204 + channel * 0x400) =
 				(slotrank << 24) | 0;
-			MCHBAR32(0x4214 + 0x400 * channel) = 0;
+			MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 			/* DRAM command RD */
-			MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-			MCHBAR32(0x4238 + 0x400 * channel) =
+			MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+			MCHBAR32(0x4238 + channel * 0x400) =
 				0x1001 | ((ctrl->CAS + 8) << 16);
-			MCHBAR32(0x4208 + 0x400 * channel) =
+			MCHBAR32(0x4208 + channel * 0x400) =
 				(slotrank << 24) | 0x60000;
-			MCHBAR32(0x4218 + 0x400 * channel) = 0;
+			MCHBAR32(0x4218 + channel * 0x400) = 0;
 
 			/* DRAM command MRS
 			 * write MR3 MPR disable */
-			MCHBAR32(0x422c + 0x400 * channel) = 0x1f000;
-			MCHBAR32(0x423c + 0x400 * channel) =
+			MCHBAR32(0x422c + channel * 0x400) = 0x1f000;
+			MCHBAR32(0x423c + channel * 0x400) =
 				0xc01 | (ctrl->tMOD << 16);
-			MCHBAR32(0x420c + 0x400 * channel) =
+			MCHBAR32(0x420c + channel * 0x400) =
 				(slotrank << 24) | 0x360000;
-			MCHBAR32(0x421c + 0x400 * channel) = 0;
+			MCHBAR32(0x421c + channel * 0x400) = 0;
 
 			// execute command queue
-			MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+			MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 			wait_428c(channel);
 		}
@@ -1755,21 +1755,21 @@
 
 	wait_428c(channel);
 	/* DRAM command NOP */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x1f207;
-	MCHBAR32(0x4230 + 0x400 * channel) =
+	MCHBAR32(0x4220 + channel * 0x400) = 0x1f207;
+	MCHBAR32(0x4230 + channel * 0x400) =
 		0x8000c01 | ((ctrl->CWL + ctrl->tWLO) << 16);
-	MCHBAR32(0x4200 + 0x400 * channel) = 8 | (slotrank << 24);
-	MCHBAR32(0x4210 + 0x400 * channel) = 0;
+	MCHBAR32(0x4200 + channel * 0x400) = 8 | (slotrank << 24);
+	MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 	/* DRAM command NOP */
-	MCHBAR32(0x4224 + 0x400 * channel) = 0x1f107;
-	MCHBAR32(0x4234 + 0x400 * channel) =
+	MCHBAR32(0x4224 + channel * 0x400) = 0x1f107;
+	MCHBAR32(0x4234 + channel * 0x400) =
 		0x4000c01 | ((ctrl->CAS + 38) << 16);
-	MCHBAR32(0x4204 + 0x400 * channel) = (slotrank << 24) | 4;
-	MCHBAR32(0x4214 + 0x400 * channel) = 0;
+	MCHBAR32(0x4204 + channel * 0x400) = (slotrank << 24) | 4;
+	MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 	// execute command queue
-	MCHBAR32(0x400 * channel + 0x4284) = RUN_QUEUE_4284(2);
+	MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(2);
 
 	wait_428c(channel);
 
@@ -1856,76 +1856,76 @@
 	MCHBAR32(0x3400) = 0x200;
 	FOR_ALL_POPULATED_CHANNELS {
 		fill_pattern1(ctrl, channel);
-		MCHBAR32(0x4288 + (channel << 10)) = 1;
+		MCHBAR32(0x4288 + channel * 0x400) = 1;
 	}
 	FOR_ALL_POPULATED_CHANNELS FOR_ALL_POPULATED_RANKS {
 
-		MCHBAR32(0x4288 + 0x400 * channel) = 0x10001;
+		MCHBAR32(0x4288 + channel * 0x400) = 0x10001;
 
 		wait_428c(channel);
 
 		/* DRAM command ACT */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x1f006;
-		MCHBAR32(0x4230 + 0x400 * channel) = 0xc01 | (ctrl->tRCD << 16);
-		MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0;
+		MCHBAR32(0x4220 + channel * 0x400) = 0x1f006;
+		MCHBAR32(0x4230 + channel * 0x400) = 0xc01 | (ctrl->tRCD << 16);
+		MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x60000;
+		MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 		/* DRAM command NOP */
-		MCHBAR32(0x4224 + 0x400 * channel) = 0x1f207;
-		MCHBAR32(0x4234 + 0x400 * channel) = 0x8040c01;
-		MCHBAR32(0x4204 + 0x400 * channel) = (slotrank << 24) | 0x8;
-		MCHBAR32(0x4214 + 0x400 * channel) = 0x3e0;
+		MCHBAR32(0x4224 + channel * 0x400) = 0x1f207;
+		MCHBAR32(0x4234 + channel * 0x400) = 0x8040c01;
+		MCHBAR32(0x4204 + channel * 0x400) = (slotrank << 24) | 0x8;
+		MCHBAR32(0x4214 + channel * 0x400) = 0x3e0;
 
 		/* DRAM command WR */
-		MCHBAR32(0x4228 + 0x400 * channel) = 0x1f201;
-		MCHBAR32(0x4238 + 0x400 * channel) = 0x8041003;
-		MCHBAR32(0x4208 + 0x400 * channel) = (slotrank << 24);
-		MCHBAR32(0x4218 + 0x400 * channel) = 0x3e2;
+		MCHBAR32(0x4228 + channel * 0x400) = 0x1f201;
+		MCHBAR32(0x4238 + channel * 0x400) = 0x8041003;
+		MCHBAR32(0x4208 + channel * 0x400) = (slotrank << 24);
+		MCHBAR32(0x4218 + channel * 0x400) = 0x3e2;
 
 		/* DRAM command NOP */
-		MCHBAR32(0x422c + 0x400 * channel) = 0x1f207;
-		MCHBAR32(0x423c + 0x400 * channel) =
+		MCHBAR32(0x422c + channel * 0x400) = 0x1f207;
+		MCHBAR32(0x423c + channel * 0x400) =
 			0x8000c01 | ((ctrl->CWL + ctrl->tWTR + 5) << 16);
-		MCHBAR32(0x420c + 0x400 * channel) = (slotrank << 24) | 0x8;
-		MCHBAR32(0x421c + 0x400 * channel) = 0x3e0;
+		MCHBAR32(0x420c + channel * 0x400) = (slotrank << 24) | 0x8;
+		MCHBAR32(0x421c + channel * 0x400) = 0x3e0;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 		wait_428c(channel);
 
 		/* DRAM command PREA */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x1f002;
-		MCHBAR32(0x4230 + 0x400 * channel) =
+		MCHBAR32(0x4220 + channel * 0x400) = 0x1f002;
+		MCHBAR32(0x4230 + channel * 0x400) =
 			0xc01 | ((ctrl->tRP) << 16);
-		MCHBAR32(0x4200 + 0x400 * channel) =
+		MCHBAR32(0x4200 + channel * 0x400) =
 			(slotrank << 24) | 0x60400;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0x240;
+		MCHBAR32(0x4210 + channel * 0x400) = 0x240;
 
 		/* DRAM command ACT */
-		MCHBAR32(0x4224 + 0x400 * channel) = 0x1f006;
-		MCHBAR32(0x4234 + 0x400 * channel) =
+		MCHBAR32(0x4224 + channel * 0x400) = 0x1f006;
+		MCHBAR32(0x4234 + channel * 0x400) =
 			0xc01 | ((ctrl->tRCD) << 16);
-		MCHBAR32(0x4204 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-		MCHBAR32(0x4214 + 0x400 * channel) = 0;
+		MCHBAR32(0x4204 + channel * 0x400) = (slotrank << 24) | 0x60000;
+		MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 		/* DRAM command RD */
-		MCHBAR32(0x4228 + 0x400 * channel) = 0x3f105;
-		MCHBAR32(0x4238 + 0x400 * channel) = 0x4000c01 | ((ctrl->tRP +
+		MCHBAR32(0x4228 + channel * 0x400) = 0x3f105;
+		MCHBAR32(0x4238 + channel * 0x400) = 0x4000c01 | ((ctrl->tRP +
 			  ctrl->timings[channel][slotrank].val_4024 +
 			  ctrl->timings[channel][slotrank].io_latency) << 16);
-		MCHBAR32(0x4208 + 0x400 * channel) = (slotrank << 24) | 0x60008;
-		MCHBAR32(0x4218 + 0x400 * channel) = 0;
+		MCHBAR32(0x4208 + channel * 0x400) = (slotrank << 24) | 0x60008;
+		MCHBAR32(0x4218 + channel * 0x400) = 0;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(3);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(3);
 
 		wait_428c(channel);
 		FOR_ALL_LANES {
 			u64 res = MCHBAR32(lane_registers[lane] +
-				0x100 * channel + 4);
+				channel * 0x100 + 4);
 			res |= ((u64) MCHBAR32(lane_registers[lane] +
-				0x100 * channel + 8)) << 32;
+				channel * 0x100 + 8)) << 32;
 			old = ctrl->timings[channel][slotrank].lanes[lane].timB;
 			ctrl->timings[channel][slotrank].lanes[lane].timB +=
 				get_timB_high_adjust(res) * 64;
@@ -1950,13 +1950,13 @@
 	slotrank = !(ctrl->rankmap[channel] & 1) ? 2 : 0;
 
 	/* DRAM command ACT */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x0f003;
-	MCHBAR32(0x4230 + 0x400 * channel) = 0x41001;
-	MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-	MCHBAR32(0x4210 + 0x400 * channel) = 0x3e0;
+	MCHBAR32(0x4220 + channel * 0x400) = 0x0f003;
+	MCHBAR32(0x4230 + channel * 0x400) = 0x41001;
+	MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x60000;
+	MCHBAR32(0x4210 + channel * 0x400) = 0x3e0;
 
 	// execute command queue
-	MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(1);
+	MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(1);
 
 	wait_428c(channel);
 }
@@ -1979,11 +1979,11 @@
 	int err;
 
 	FOR_ALL_POPULATED_CHANNELS
-		MCHBAR32_OR(0x4008 + 0x400 * channel, 0x8000000);
+		MCHBAR32_OR(0x4008 + channel * 0x400, 0x8000000);
 
 	FOR_ALL_POPULATED_CHANNELS {
 		write_op(ctrl, channel);
-		MCHBAR32_OR(0x4020 + 0x400 * channel, 0x200000);
+		MCHBAR32_OR(0x4020 + channel * 0x400, 0x200000);
 	}
 
 	/* refresh disable */
@@ -2025,18 +2025,18 @@
 	MCHBAR32_OR(0x5030, 8);
 
 	FOR_ALL_POPULATED_CHANNELS {
-		MCHBAR32_AND(0x4020 + 0x400 * channel, ~0x00200000);
-		MCHBAR32(0x428c + 0x400 * channel);
+		MCHBAR32_AND(0x4020 + channel * 0x400, ~0x00200000);
+		MCHBAR32(0x428c + channel * 0x400);
 		wait_428c(channel);
 
 		/* DRAM command ZQCS */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x0f003;
-		MCHBAR32(0x4230 + 0x400 * channel) = 0x659001;
-		MCHBAR32(0x4200 + 0x400 * channel) = 0x60000;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0x3e0;
+		MCHBAR32(0x4220 + channel * 0x400) = 0x0f003;
+		MCHBAR32(0x4230 + channel * 0x400) = 0x659001;
+		MCHBAR32(0x4200 + channel * 0x400) = 0x60000;
+		MCHBAR32(0x4210 + channel * 0x400) = 0x3e0;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(1);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(1);
 
 		wait_428c(channel);
 	}
@@ -2048,12 +2048,12 @@
 	printram("CPF\n");
 
 	FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS FOR_ALL_LANES {
-		MCHBAR32_AND(0x4080 + 0x400 * channel + 4 * lane, 0);
+		MCHBAR32_AND(0x4080 + channel * 0x400 + lane * 4, 0);
 	}
 
 	FOR_ALL_POPULATED_CHANNELS {
 		fill_pattern0(ctrl, channel, 0xaaaaaaaa, 0x55555555);
-		MCHBAR32(0x4288 + (channel << 10)) = 0;
+		MCHBAR32(0x4288 + channel * 0x400) = 0;
 	}
 
 	FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS {
@@ -2072,7 +2072,7 @@
 		program_timings(ctrl, channel);
 
 	FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS FOR_ALL_LANES {
-		MCHBAR32_AND(0x4080 + 0x400 * channel + 4 * lane, 0);
+		MCHBAR32_AND(0x4080 + channel * 0x400 + lane * 4, 0);
 	}
 	return 0;
 }
@@ -2095,46 +2095,46 @@
 			MCHBAR32(4 * lane + 0x4f40) = 0;
 		}
 
-		MCHBAR32(0x4288 + 0x400 * channel) = 0x1f;
+		MCHBAR32(0x4288 + channel * 0x400) = 0x1f;
 
 		wait_428c(channel);
 		/* DRAM command ACT */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x1f006;
-		MCHBAR32(0x4230 + 0x400 * channel) =
+		MCHBAR32(0x4220 + channel * 0x400) = 0x1f006;
+		MCHBAR32(0x4230 + channel * 0x400) =
 			((MAX(ctrl->tRRD, (ctrl->tFAW >> 2) + 1)) << 10)
 			| 8 | (ctrl->tRCD << 16);
-		MCHBAR32(0x4200 + 0x400 * channel) =
+		MCHBAR32(0x4200 + channel * 0x400) =
 			(slotrank << 24) | ctr | 0x60000;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0x244;
+		MCHBAR32(0x4210 + channel * 0x400) = 0x244;
 
 		/* DRAM command WR */
-		MCHBAR32(0x4224 + 0x400 * channel) = 0x1f201;
-		MCHBAR32(0x4234 + 0x400 * channel) =
+		MCHBAR32(0x4224 + channel * 0x400) = 0x1f201;
+		MCHBAR32(0x4234 + channel * 0x400) =
 			0x8001020 | ((ctrl->CWL + ctrl->tWTR + 8) << 16);
-		MCHBAR32(0x4204 + 0x400 * channel) = (slotrank << 24);
-		MCHBAR32(0x4244 + 0x400 * channel) = 0x389abcd;
-		MCHBAR32(0x4214 + 0x400 * channel) = 0x20e42;
+		MCHBAR32(0x4204 + channel * 0x400) = (slotrank << 24);
+		MCHBAR32(0x4244 + channel * 0x400) = 0x389abcd;
+		MCHBAR32(0x4214 + channel * 0x400) = 0x20e42;
 
 		/* DRAM command RD */
-		MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-		MCHBAR32(0x4238 + 0x400 * channel) =
+		MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+		MCHBAR32(0x4238 + channel * 0x400) =
 			0x4001020 | (MAX(ctrl->tRTP, 8) << 16);
-		MCHBAR32(0x4208 + 0x400 * channel) = (slotrank << 24);
-		MCHBAR32(0x4248 + 0x400 * channel) = 0x389abcd;
-		MCHBAR32(0x4218 + 0x400 * channel) = 0x20e42;
+		MCHBAR32(0x4208 + channel * 0x400) = (slotrank << 24);
+		MCHBAR32(0x4248 + channel * 0x400) = 0x389abcd;
+		MCHBAR32(0x4218 + channel * 0x400) = 0x20e42;
 
 		/* DRAM command PRE */
-		MCHBAR32(0x422c + 0x400 * channel) = 0x1f002;
-		MCHBAR32(0x423c + 0x400 * channel) = 0xf1001;
-		MCHBAR32(0x420c + 0x400 * channel) = (slotrank << 24) | 0x60400;
-		MCHBAR32(0x421c + 0x400 * channel) = 0x240;
+		MCHBAR32(0x422c + channel * 0x400) = 0x1f002;
+		MCHBAR32(0x423c + channel * 0x400) = 0xf1001;
+		MCHBAR32(0x420c + channel * 0x400) = (slotrank << 24) | 0x60400;
+		MCHBAR32(0x421c + channel * 0x400) = 0x240;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 		wait_428c(channel);
 		FOR_ALL_LANES {
-			u32 r32 = MCHBAR32(0x4340 + 4 * lane + 0x400 * channel);
+			u32 r32 = MCHBAR32(0x4340 + channel * 0x400 + lane * 4);
 
 			if (r32 == 0)
 				lanes_ok |= 1 << lane;
@@ -2192,16 +2192,16 @@
 		slotrank = !(ctrl->rankmap[channel] & 1) ? 2 : 0;
 
 		/* DRAM command ZQCS */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x0f003;
-		MCHBAR32(0x4230 + 0x400 * channel) = 0x41001;
-		MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0x3e0;
+		MCHBAR32(0x4220 + channel * 0x400) = 0x0f003;
+		MCHBAR32(0x4230 + channel * 0x400) = 0x41001;
+		MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x60000;
+		MCHBAR32(0x4210 + channel * 0x400) = 0x3e0;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(1);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(1);
 
 		wait_428c(channel);
-		MCHBAR32_OR(0x4020 + 0x400 * channel, 0x200000);
+		MCHBAR32_OR(0x4020 + channel * 0x400, 0x200000);
 	}
 
 	/* refresh disable */
@@ -2213,13 +2213,13 @@
 		slotrank = !(ctrl->rankmap[channel] & 1) ? 2 : 0;
 
 		/* DRAM command ZQCS */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x0f003;
-		MCHBAR32(0x4230 + 0x400 * channel) = 0x41001;
-		MCHBAR32(0x4200 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0x3e0;
+		MCHBAR32(0x4220 + channel * 0x400) = 0x0f003;
+		MCHBAR32(0x4230 + channel * 0x400) = 0x41001;
+		MCHBAR32(0x4200 + channel * 0x400) = (slotrank << 24) | 0x60000;
+		MCHBAR32(0x4210 + channel * 0x400) = 0x3e0;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(1);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(1);
 
 		wait_428c(channel);
 	}
@@ -2251,7 +2251,7 @@
 
 	ctrl->cmd_stretch[channel] = cmd_stretch;
 
-	MCHBAR32(0x4004 + 0x400 * channel) =
+	MCHBAR32(0x4004 + channel * 0x400) =
 		ctrl->tRRD
 		| (ctrl->tRTP << 4)
 		| (ctrl->tCKE << 8)
@@ -2307,7 +2307,7 @@
 
 	FOR_ALL_POPULATED_CHANNELS {
 		fill_pattern5(ctrl, channel, 0);
-		MCHBAR32(0x4288 + 0x400 * channel) = 0x1f;
+		MCHBAR32(0x4288 + channel * 0x400) = 0x1f;
 	}
 
 	FOR_ALL_POPULATED_CHANNELS {
@@ -2371,8 +2371,8 @@
 		program_timings(ctrl, channel);
 
 		FOR_ALL_LANES {
-			MCHBAR32(0x4340 + 0x400 * channel + 4 * lane) = 0;
-			MCHBAR32(0x400 * channel + 4 * lane + 0x4140);
+			MCHBAR32(0x4340 + channel * 0x400 + lane * 4) = 0;
+			MCHBAR32(0x4140 + channel * 0x400 + lane * 4);
 		}
 
 		wait_428c(channel);
@@ -2380,41 +2380,41 @@
 		 * write MR3 MPR enable
 		 * in this mode only RD and RDA are allowed
 		 * all reads return a predefined pattern */
-		MCHBAR32(0x4220 + 0x400 * channel) = 0x1f000;
-		MCHBAR32(0x4230 + 0x400 * channel) = 0xc01 | (ctrl->tMOD << 16);
-		MCHBAR32(0x4200 + 0x400 * channel) =
+		MCHBAR32(0x4220 + channel * 0x400) = 0x1f000;
+		MCHBAR32(0x4230 + channel * 0x400) = 0xc01 | (ctrl->tMOD << 16);
+		MCHBAR32(0x4200 + channel * 0x400) =
 			(slotrank << 24) | 0x360004;
-		MCHBAR32(0x4210 + 0x400 * channel) = 0;
+		MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 		/* DRAM command RD */
-		MCHBAR32(0x4224 + 0x400 * channel) = 0x1f105;
-		MCHBAR32(0x4234 + 0x400 * channel) = 0x40411f4;
-		MCHBAR32(0x4204 + 0x400 * channel) = slotrank << 24;
-		MCHBAR32(0x4214 + 0x400 * channel) = 0;
+		MCHBAR32(0x4224 + channel * 0x400) = 0x1f105;
+		MCHBAR32(0x4234 + channel * 0x400) = 0x40411f4;
+		MCHBAR32(0x4204 + channel * 0x400) = slotrank << 24;
+		MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 		/* DRAM command RD */
-		MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-		MCHBAR32(0x4238 + 0x400 * channel) =
+		MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+		MCHBAR32(0x4238 + channel * 0x400) =
 			0x1001 | ((ctrl->CAS + 8) << 16);
-		MCHBAR32(0x4208 + 0x400 * channel) = (slotrank << 24) | 0x60000;
-		MCHBAR32(0x4218 + 0x400 * channel) = 0;
+		MCHBAR32(0x4208 + channel * 0x400) = (slotrank << 24) | 0x60000;
+		MCHBAR32(0x4218 + channel * 0x400) = 0;
 
 		/* DRAM command MRS
 		 * MR3 disable MPR */
-		MCHBAR32(0x422c + 0x400 * channel) = 0x1f000;
-		MCHBAR32(0x423c + 0x400 * channel) = 0xc01 | (ctrl->tMOD << 16);
-		MCHBAR32(0x420c + 0x400 * channel) =
+		MCHBAR32(0x422c + channel * 0x400) = 0x1f000;
+		MCHBAR32(0x423c + channel * 0x400) = 0xc01 | (ctrl->tMOD << 16);
+		MCHBAR32(0x420c + channel * 0x400) =
 			(slotrank << 24) | 0x360000;
-		MCHBAR32(0x421c + 0x400 * channel) = 0;
+		MCHBAR32(0x421c + channel * 0x400) = 0;
 
 		// execute command queue
-		MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 		wait_428c(channel);
 
 		FOR_ALL_LANES {
 			statistics[lane][edge] =
-				MCHBAR32(0x4340 + 0x400 * channel + lane * 4);
+				MCHBAR32(0x4340 + channel * 0x400 + lane * 4);
 		}
 	}
 	FOR_ALL_LANES {
@@ -2444,14 +2444,14 @@
 	toggle_io_reset();
 
 	FOR_ALL_POPULATED_CHANNELS FOR_ALL_LANES {
-		MCHBAR32(4 * lane + 0x400 * channel + 0x4080) = 0;
+		MCHBAR32(0x4080 + channel * 0x400 + lane * 4) = 0;
 	}
 
 	FOR_ALL_POPULATED_CHANNELS {
 		fill_pattern0(ctrl, channel, 0, 0);
-		MCHBAR32(0x4288 + (channel << 10)) = 0;
+		MCHBAR32(0x4288 + channel * 0x400) = 0;
 		FOR_ALL_LANES {
-			MCHBAR32(0x400 * channel + lane * 4 + 0x4140);
+			MCHBAR32(0x4140 + channel * 0x400 + lane * 4);
 		}
 
 		FOR_ALL_POPULATED_RANKS FOR_ALL_LANES {
@@ -2471,39 +2471,39 @@
 			 * write MR3 MPR enable
 			 * in this mode only RD and RDA are allowed
 			 * all reads return a predefined pattern */
-			MCHBAR32(0x4220 + 0x400 * channel) = 0x1f000;
-			MCHBAR32(0x4230 + 0x400 * channel) =
+			MCHBAR32(0x4220 + channel * 0x400) = 0x1f000;
+			MCHBAR32(0x4230 + channel * 0x400) =
 				0xc01 | (ctrl->tMOD << 16);
-			MCHBAR32(0x4200 + 0x400 * channel) =
+			MCHBAR32(0x4200 + channel * 0x400) =
 				(slotrank << 24) | 0x360004;
-			MCHBAR32(0x4210 + 0x400 * channel) = 0;
+			MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 			/* DRAM command RD */
-			MCHBAR32(0x4224 + 0x400 * channel) = 0x1f105;
-			MCHBAR32(0x4234 + 0x400 * channel) = 0x4041003;
-			MCHBAR32(0x4204 + 0x400 * channel) =
+			MCHBAR32(0x4224 + channel * 0x400) = 0x1f105;
+			MCHBAR32(0x4234 + channel * 0x400) = 0x4041003;
+			MCHBAR32(0x4204 + channel * 0x400) =
 				(slotrank << 24) | 0;
-			MCHBAR32(0x4214 + 0x400 * channel) = 0;
+			MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 			/* DRAM command RD */
-			MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-			MCHBAR32(0x4238 + 0x400 * channel) =
+			MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+			MCHBAR32(0x4238 + channel * 0x400) =
 				0x1001 | ((ctrl->CAS + 8) << 16);
-			MCHBAR32(0x4208 + 0x400 * channel) =
+			MCHBAR32(0x4208 + channel * 0x400) =
 				(slotrank << 24) | 0x60000;
-			MCHBAR32(0x4218 + 0x400 * channel) = 0;
+			MCHBAR32(0x4218 + channel * 0x400) = 0;
 
 			/* DRAM command MRS
 			 * MR3 disable MPR */
-			MCHBAR32(0x422c + 0x400 * channel) = 0x1f000;
-			MCHBAR32(0x423c + 0x400 * channel) =
+			MCHBAR32(0x422c + channel * 0x400) = 0x1f000;
+			MCHBAR32(0x423c + channel * 0x400) =
 				0xc01 | (ctrl->tMOD << 16);
-			MCHBAR32(0x420c + 0x400 * channel) =
+			MCHBAR32(0x420c + channel * 0x400) =
 				(slotrank << 24) | 0x360000;
-			MCHBAR32(0x421c + 0x400 * channel) = 0;
+			MCHBAR32(0x421c + channel * 0x400) = 0;
 
 			// execute command queue
-			MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+			MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 			wait_428c(channel);
 		}
@@ -2527,39 +2527,39 @@
 			 * write MR3 MPR enable
 			 * in this mode only RD and RDA are allowed
 			 * all reads return a predefined pattern */
-			MCHBAR32(0x4220 + 0x400 * channel) = 0x1f000;
-			MCHBAR32(0x4230 + 0x400 * channel) =
+			MCHBAR32(0x4220 + channel * 0x400) = 0x1f000;
+			MCHBAR32(0x4230 + channel * 0x400) =
 				0xc01 | (ctrl->tMOD << 16);
-			MCHBAR32(0x4200 + 0x400 * channel) =
+			MCHBAR32(0x4200 + channel * 0x400) =
 				(slotrank << 24) | 0x360004;
-			MCHBAR32(0x4210 + 0x400 * channel) = 0;
+			MCHBAR32(0x4210 + channel * 0x400) = 0;
 
 			/* DRAM command RD */
-			MCHBAR32(0x4224 + 0x400 * channel) = 0x1f105;
-			MCHBAR32(0x4234 + 0x400 * channel) = 0x4041003;
-			MCHBAR32(0x4204 + 0x400 * channel) =
+			MCHBAR32(0x4224 + channel * 0x400) = 0x1f105;
+			MCHBAR32(0x4234 + channel * 0x400) = 0x4041003;
+			MCHBAR32(0x4204 + channel * 0x400) =
 				(slotrank << 24) | 0;
-			MCHBAR32(0x4214 + 0x400 * channel) = 0;
+			MCHBAR32(0x4214 + channel * 0x400) = 0;
 
 			/* DRAM command RD */
-			MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-			MCHBAR32(0x4238 + 0x400 * channel) =
+			MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+			MCHBAR32(0x4238 + channel * 0x400) =
 				0x1001 | ((ctrl->CAS + 8) << 16);
-			MCHBAR32(0x4208 + 0x400 * channel) =
+			MCHBAR32(0x4208 + channel * 0x400) =
 				(slotrank << 24) | 0x60000;
-			MCHBAR32(0x4218 + 0x400 * channel) = 0;
+			MCHBAR32(0x4218 + channel * 0x400) = 0;
 
 			/* DRAM command MRS
 			 * MR3 disable MPR */
-			MCHBAR32(0x422c + 0x400 * channel) = 0x1f000;
-			MCHBAR32(0x423c + 0x400 * channel) =
+			MCHBAR32(0x422c + channel * 0x400) = 0x1f000;
+			MCHBAR32(0x423c + channel * 0x400) =
 				0xc01 | (ctrl->tMOD << 16);
-			MCHBAR32(0x420c + 0x400 * channel) =
+			MCHBAR32(0x420c + channel * 0x400) =
 				(slotrank << 24) | 0x360000;
-			MCHBAR32(0x421c + 0x400 * channel) = 0;
+			MCHBAR32(0x421c + channel * 0x400) = 0;
 
 			// execute command queue
-			MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+			MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 			wait_428c(channel);
 		}
@@ -2567,13 +2567,13 @@
 		/* XXX: check any measured value ? */
 
 		FOR_ALL_LANES {
-			MCHBAR32(0x4080 + 0x400 * channel + lane * 4) =
-				~MCHBAR32(0x4040 + 0x400 * channel + lane * 4)
+			MCHBAR32(0x4080 + channel * 0x400 + lane * 4) =
+				~MCHBAR32(0x4040 + channel * 0x400 + lane * 4)
 					& 0xff;
 		}
 
 		fill_pattern0(ctrl, channel, 0, 0xffffffff);
-		MCHBAR32(0x4288 + (channel << 10)) = 0;
+		MCHBAR32(0x4288 + channel * 0x400) = 0;
 	}
 
 	/* FIXME: under some conditions (older chipsets?) vendor BIOS sets both edges to the same value.  */
@@ -2611,7 +2611,7 @@
 	}
 
 	FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS FOR_ALL_LANES {
-		MCHBAR32(0x4080 + 0x400 * channel + 4 * lane) = 0;
+		MCHBAR32(0x4080 + channel * 0x400 + lane * 4) = 0;
 	}
 	return 0;
 }
@@ -2634,12 +2634,12 @@
 	}
 
 	for (i = 0; i < 3; i++) {
-		MCHBAR32(0x3000 + 0x100 * channel) = reg3000b24[i] << 24;
+		MCHBAR32(0x3000 + channel * 0x100) = reg3000b24[i] << 24;
 		printram("[%x] = 0x%08x\n",
-		       0x3000 + 0x100 * channel, reg3000b24[i] << 24);
+		       0x3000 + channel * 0x100, reg3000b24[i] << 24);
 		for (pat = 0; pat < NUM_PATTERNS; pat++) {
 			fill_pattern5(ctrl, channel, pat);
-			MCHBAR32(0x4288 + 0x400 * channel) = 0x1f;
+			MCHBAR32(0x4288 + channel * 0x400) = 0x1f;
 			printram("using pattern %d\n", pat);
 			for (edge = 0; edge <= MAX_EDGE_TIMING; edge++) {
 				FOR_ALL_LANES {
@@ -2651,59 +2651,56 @@
 				program_timings(ctrl, channel);
 
 				FOR_ALL_LANES {
-					MCHBAR32(0x4340 + 0x400 * channel +
-						4 * lane) = 0;
-					MCHBAR32(0x400 * channel +
-						4 * lane + 0x4140);
+					MCHBAR32(0x4340 + channel * 0x400 + lane * 4) = 0;
+					MCHBAR32(0x4140 + channel * 0x400 + lane * 4);
 				}
 				wait_428c(channel);
 
 				/* DRAM command ACT */
-				MCHBAR32(0x4220 + 0x400 * channel) = 0x1f006;
-				MCHBAR32(0x4230 + 0x400 * channel) =
+				MCHBAR32(0x4220 + channel * 0x400) = 0x1f006;
+				MCHBAR32(0x4230 + channel * 0x400) =
 					0x4 | (ctrl->tRCD << 16) |
 					(MAX(ctrl->tRRD, (ctrl->tFAW >> 2) + 1)
 					<< 10);
-				MCHBAR32(0x4200 + 0x400 * channel) =
+				MCHBAR32(0x4200 + channel * 0x400) =
 					(slotrank << 24) | 0x60000;
-				MCHBAR32(0x4210 + 0x400 * channel) = 0x240;
+				MCHBAR32(0x4210 + channel * 0x400) = 0x240;
 
 				/* DRAM command WR */
-				MCHBAR32(0x4224 + 0x400 * channel) = 0x1f201;
-				MCHBAR32(0x4234 + 0x400 * channel) = 0x8005020 |
+				MCHBAR32(0x4224 + channel * 0x400) = 0x1f201;
+				MCHBAR32(0x4234 + channel * 0x400) = 0x8005020 |
 					((ctrl->tWTR + ctrl->CWL + 8) << 16);
-				MCHBAR32(0x4204 + 0x400 * channel) =
+				MCHBAR32(0x4204 + channel * 0x400) =
 					slotrank << 24;
-				MCHBAR32(0x4214 + 0x400 * channel) = 0x242;
+				MCHBAR32(0x4214 + channel * 0x400) = 0x242;
 
 				/* DRAM command RD */
-				MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-				MCHBAR32(0x4238 + 0x400 * channel) =
+				MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+				MCHBAR32(0x4238 + channel * 0x400) =
 					0x4005020 | (MAX(ctrl->tRTP, 8) << 16);
-				MCHBAR32(0x4208 + 0x400 * channel) =
+				MCHBAR32(0x4208 + channel * 0x400) =
 					slotrank << 24;
-				MCHBAR32(0x4218 + 0x400 * channel) = 0x242;
+				MCHBAR32(0x4218 + channel * 0x400) = 0x242;
 
 				/* DRAM command PRE */
-				MCHBAR32(0x422c + 0x400 * channel) = 0x1f002;
-				MCHBAR32(0x423c + 0x400 * channel) =
+				MCHBAR32(0x422c + channel * 0x400) = 0x1f002;
+				MCHBAR32(0x423c + channel * 0x400) =
 					0xc01 | (ctrl->tRP << 16);
-				MCHBAR32(0x420c + 0x400 * channel) =
+				MCHBAR32(0x420c + channel * 0x400) =
 					(slotrank << 24) | 0x60400;
-				MCHBAR32(0x421c + 0x400 * channel) = 0;
+				MCHBAR32(0x421c + channel * 0x400) = 0;
 
 				// execute command queue
-				MCHBAR32(0x4284 + 0x400 * channel) =
+				MCHBAR32(0x4284 + channel * 0x400) =
 					RUN_QUEUE_4284(4);
 
 				wait_428c(channel);
 				FOR_ALL_LANES {
-					MCHBAR32(0x4340 +
-					       0x400 * channel + lane * 4);
+					MCHBAR32(0x4340 + channel * 0x400 + lane * 4);
 				}
 
 				raw_statistics[edge] =
-					MCHBAR32(0x436c + 0x400 * channel);
+					MCHBAR32(0x436c + channel * 0x400);
 			}
 			FOR_ALL_LANES {
 				struct run rn;
@@ -2776,7 +2773,7 @@
 		program_timings(ctrl, channel);
 
 	FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS FOR_ALL_LANES {
-		MCHBAR32(0x4080 + 0x400 * channel + 4 * lane) = 0;
+		MCHBAR32(0x4080 + channel * 0x400 + lane * 4) = 0;
 	}
 	return 0;
 }
@@ -2785,36 +2782,36 @@
 {
 	wait_428c(channel);
 	/* DRAM command ACT */
-	MCHBAR32(0x4220 + 0x400 * channel) = 0x1f006;
-	MCHBAR32(0x4230 + 0x400 * channel) =
+	MCHBAR32(0x4220 + channel * 0x400) = 0x1f006;
+	MCHBAR32(0x4230 + channel * 0x400) =
 		(MAX((ctrl->tFAW >> 2) + 1, ctrl->tRRD)
 		 << 10) | (ctrl->tRCD << 16) | 4;
-	MCHBAR32(0x4200 + 0x400 * channel) =
+	MCHBAR32(0x4200 + channel * 0x400) =
 		(slotrank << 24) | 0x60000;
-	MCHBAR32(0x4210 + 0x400 * channel) = 0x244;
+	MCHBAR32(0x4210 + channel * 0x400) = 0x244;
 
 	/* DRAM command WR */
-	MCHBAR32(0x4224 + 0x400 * channel) = 0x1f201;
-	MCHBAR32(0x4234 + 0x400 * channel) =
+	MCHBAR32(0x4224 + channel * 0x400) = 0x1f201;
+	MCHBAR32(0x4234 + channel * 0x400) =
 		0x80011e0 | ((ctrl->tWTR + ctrl->CWL + 8) << 16);
-	MCHBAR32(0x4204 + 0x400 * channel) = slotrank << 24;
-	MCHBAR32(0x4214 + 0x400 * channel) = 0x242;
+	MCHBAR32(0x4204 + channel * 0x400) = slotrank << 24;
+	MCHBAR32(0x4214 + channel * 0x400) = 0x242;
 
 	/* DRAM command RD */
-	MCHBAR32(0x4228 + 0x400 * channel) = 0x1f105;
-	MCHBAR32(0x4238 + 0x400 * channel) =
+	MCHBAR32(0x4228 + channel * 0x400) = 0x1f105;
+	MCHBAR32(0x4238 + channel * 0x400) =
 		0x40011e0 | (MAX(ctrl->tRTP, 8) << 16);
-	MCHBAR32(0x4208 + 0x400 * channel) = slotrank << 24;
-	MCHBAR32(0x4218 + 0x400 * channel) = 0x242;
+	MCHBAR32(0x4208 + channel * 0x400) = slotrank << 24;
+	MCHBAR32(0x4218 + channel * 0x400) = 0x242;
 
 	/* DRAM command PRE */
-	MCHBAR32(0x422c + 0x400 * channel) = 0x1f002;
-	MCHBAR32(0x423c + 0x400 * channel) = 0x1001 | (ctrl->tRP << 16);
-	MCHBAR32(0x420c + 0x400 * channel) = (slotrank << 24) | 0x60400;
-	MCHBAR32(0x421c + 0x400 * channel) = 0;
+	MCHBAR32(0x422c + channel * 0x400) = 0x1f002;
+	MCHBAR32(0x423c + channel * 0x400) = 0x1001 | (ctrl->tRP << 16);
+	MCHBAR32(0x420c + channel * 0x400) = (slotrank << 24) | 0x60400;
+	MCHBAR32(0x421c + channel * 0x400) = 0;
 
 	// execute command queue
-	MCHBAR32(0x4284 + 0x400 * channel) = RUN_QUEUE_4284(4);
+	MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 	wait_428c(channel);
 }
@@ -2851,7 +2848,7 @@
 					statistics[MAX_TIMC] = 1;
 
 					fill_pattern5(ctrl, channel, pat);
-					MCHBAR32(0x4288 + 0x400 * channel) =
+					MCHBAR32(0x4288 + channel * 0x400) =
 						0x1f;
 					for (timC = 0; timC < MAX_TIMC; timC++) {
 						FOR_ALL_LANES
@@ -2861,7 +2858,7 @@
 						test_timC_write (ctrl, channel, slotrank);
 
 						raw_statistics[timC] =
-							MCHBAR32(0x436c + 0x400 * channel);
+							MCHBAR32(0x436c + channel * 0x400);
 					}
 					FOR_ALL_LANES {
 						struct run rn;
@@ -2895,7 +2892,7 @@
 		}
 
 	FOR_ALL_CHANNELS {
-		MCHBAR32_AND((channel * 0x100) + 0xe3c, ~0x3f000000);
+		MCHBAR32_AND(0xe3c + (channel * 0x100), ~0x3f000000);
 		udelay(2);
 	}
 
@@ -2949,9 +2946,9 @@
 	int channel, slotrank;
 
 	FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS {
-		MCHBAR32(0x0004 + (channel << 8) + lane_registers[slotrank]) =
+		MCHBAR32(0x0004 + channel * 0x100 + lane_registers[slotrank]) =
 			make_mr0(ctrl, slotrank);
-		MCHBAR32(0x0008 + (channel << 8) + lane_registers[slotrank]) =
+		MCHBAR32(0x0008 + channel * 0x100 + lane_registers[slotrank]) =
 			make_mr1(ctrl, slotrank, channel);
 	}
 }
@@ -2962,7 +2959,7 @@
 
 	slotrank = 0;
 	FOR_ALL_POPULATED_CHANNELS
-		if (MCHBAR32(0x42a0 + (channel << 10)) & 0xa000) {
+		if (MCHBAR32(0x42a0 + channel * 0x400) & 0xa000) {
 			printk(BIOS_EMERG, "Mini channel test failed (1): %d\n",
 			       channel);
 			return MAKE_ERR;
@@ -2970,7 +2967,7 @@
 	FOR_ALL_POPULATED_CHANNELS {
 		fill_pattern0(ctrl, channel, 0x12345678, 0x98765432);
 
-		MCHBAR32(0x4288 + (channel << 10)) = 0;
+		MCHBAR32(0x4288 + channel * 0x400) = 0;
 	}
 
 	for (slotrank = 0; slotrank < 4; slotrank++)
@@ -2983,39 +2980,39 @@
 		wait_428c(channel);
 
 		/* DRAM command ACT */
-		MCHBAR32(0x4220 + (channel << 10)) = 0x0001f006;
-		MCHBAR32(0x4230 + (channel << 10)) = 0x0028a004;
-		MCHBAR32(0x4200 + (channel << 10)) =
+		MCHBAR32(0x4220 + channel * 0x400) = 0x0001f006;
+		MCHBAR32(0x4230 + channel * 0x400) = 0x0028a004;
+		MCHBAR32(0x4200 + channel * 0x400) =
 			0x00060000 | (slotrank << 24);
-		MCHBAR32(0x4210 + (channel << 10)) = 0x00000244;
+		MCHBAR32(0x4210 + channel * 0x400) = 0x00000244;
 
 		/* DRAM command WR */
-		MCHBAR32(0x4224 + (channel << 10)) = 0x0001f201;
-		MCHBAR32(0x4234 + (channel << 10)) = 0x08281064;
-		MCHBAR32(0x4204 + (channel << 10)) =
+		MCHBAR32(0x4224 + channel * 0x400) = 0x0001f201;
+		MCHBAR32(0x4234 + channel * 0x400) = 0x08281064;
+		MCHBAR32(0x4204 + channel * 0x400) =
 			0x00000000 | (slotrank << 24);
-		MCHBAR32(0x4214 + (channel << 10)) = 0x00000242;
+		MCHBAR32(0x4214 + channel * 0x400) = 0x00000242;
 
 		/* DRAM command RD */
-		MCHBAR32(0x4228 + (channel << 10)) = 0x0001f105;
-		MCHBAR32(0x4238 + (channel << 10)) = 0x04281064;
-		MCHBAR32(0x4208 + (channel << 10)) =
+		MCHBAR32(0x4228 + channel * 0x400) = 0x0001f105;
+		MCHBAR32(0x4238 + channel * 0x400) = 0x04281064;
+		MCHBAR32(0x4208 + channel * 0x400) =
 			0x00000000 | (slotrank << 24);
-		MCHBAR32(0x4218 + (channel << 10)) = 0x00000242;
+		MCHBAR32(0x4218 + channel * 0x400) = 0x00000242;
 
 		/* DRAM command PRE */
-		MCHBAR32(0x422c + (channel << 10)) = 0x0001f002;
-		MCHBAR32(0x423c + (channel << 10)) = 0x00280c01;
-		MCHBAR32(0x420c + (channel << 10)) =
+		MCHBAR32(0x422c + channel * 0x400) = 0x0001f002;
+		MCHBAR32(0x423c + channel * 0x400) = 0x00280c01;
+		MCHBAR32(0x420c + channel * 0x400) =
 			0x00060400 | (slotrank << 24);
-		MCHBAR32(0x421c + (channel << 10)) = 0x00000240;
+		MCHBAR32(0x421c + channel * 0x400) = 0x00000240;
 
 		// execute command queue
-		MCHBAR32(0x4284 + (channel << 10)) = RUN_QUEUE_4284(4);
+		MCHBAR32(0x4284 + channel * 0x400) = RUN_QUEUE_4284(4);
 
 		wait_428c(channel);
 		FOR_ALL_LANES
-			if (MCHBAR32(0x4340 + (channel << 10) + 4 * lane)) {
+			if (MCHBAR32(0x4340 + channel * 0x400 + lane * 4)) {
 				printk(BIOS_EMERG, "Mini channel test failed (2): %d, %d, %d\n",
 				       channel, slotrank, lane);
 				return MAKE_ERR;
@@ -3035,10 +3032,10 @@
 		{0x00028bfa, 0x53fe4b49, 0x19ed5483}
 	};
 	FOR_ALL_POPULATED_CHANNELS {
-		MCHBAR32(0x4020 + 0x400 * channel) &= ~0x10000000;
-		MCHBAR32(0x4034 + 0x400 * channel) = seeds[channel][0];
-		MCHBAR32(0x403c + 0x400 * channel) = seeds[channel][1];
-		MCHBAR32(0x4038 + 0x400 * channel) = seeds[channel][2];
+		MCHBAR32(0x4020 + channel * 0x400) &= ~0x10000000;
+		MCHBAR32(0x4034 + channel * 0x400) = seeds[channel][0];
+		MCHBAR32(0x403c + channel * 0x400) = seeds[channel][1];
+		MCHBAR32(0x4038 + channel * 0x400) = seeds[channel][2];
 	}
 }
 
@@ -3060,7 +3057,7 @@
 
 	FOR_ALL_POPULATED_CHANNELS {
 		// Always drive command bus
-		MCHBAR32_OR(0x4004 + 0x400 * channel, 0x20000000);
+		MCHBAR32_OR(0x4004 + channel * 0x400, 0x20000000);
 	}
 
 	udelay(1);
@@ -3096,7 +3093,7 @@
 
 		dram_odt_stretch(ctrl, channel);
 
-		MCHBAR32(0x4008 + (channel << 10)) =
+		MCHBAR32(0x4008 + channel * 0x400) =
 			0x0a000000 | (b20 << 20) |
 			((ctrl->ref_card_offset[channel] + 2) << 16) | b4_8_12;
 	}
@@ -3106,9 +3103,9 @@
 {
 	int channel;
 	FOR_ALL_POPULATED_CHANNELS {
-		MCHBAR32(0x42a0 + 0x400 * channel) =
+		MCHBAR32(0x42a0 + channel * 0x400) =
 			0x00001000 | ctrl->rankmap[channel];
-		MCHBAR32_AND(0x4004 + 0x400 * channel, ~0x20000000);
+		MCHBAR32_AND(0x4004 + channel * 0x400, ~0x20000000);
 	}
 }
 
@@ -3130,7 +3127,7 @@
 	MCHBAR32(0x4cd4) = 0x00000046;
 
 	FOR_ALL_CHANNELS
-		MCHBAR32_AND_OR(0x400c + 0x400 * channel, 0xFFFFCFFF, 0x1000);
+		MCHBAR32_AND_OR(0x400c + channel * 0x400, 0xFFFFCFFF, 0x1000);
 
 	if (is_mobile)
 		/* APD - DLL Off, 64 DCLKs until idle, decision per rank */
@@ -3169,7 +3166,7 @@
 	MCHBAR32_AND(MEM_TRML_INTERRUPT, ~0x1f);
 
 	FOR_ALL_CHANNELS
-		MCHBAR32_AND_OR(TC_RFP_C0 + 0x400 * channel, ~0x30000, 1 << 16);
+		MCHBAR32_AND_OR(TC_RFP_C0 + channel * 0x400, ~0x30000, 1 << 16);
 
 	MCHBAR32_OR(0x5030, 1);
 	MCHBAR32_OR(0x5030, 0x80);
@@ -3183,7 +3180,7 @@
 	r32 = MCHBAR32(0x5064);
 	if (r32 & 0x20000)
 		t1_cycles += (r32 & 0xfff);
-	t1_cycles += MCHBAR32(channel * 0x400 + 0x42a4) & 0xfff;
+	t1_cycles += MCHBAR32(0x42a4 + channel * 0x400) & 0xfff;
 	t1_ns = t1_cycles * ctrl->tCK / 256 + 544;
 	if (!(r32 & 0x20000))
 		t1_ns += 500;
@@ -3211,7 +3208,7 @@
 	int channel, slotrank, lane;
 
 	FOR_ALL_POPULATED_CHANNELS
-	    MCHBAR32(0x4004 + 0x400 * channel) =
+	    MCHBAR32(0x4004 + channel * 0x400) =
 		ctrl->tRRD
 		| (ctrl->tRTP << 4)
 		| (ctrl->tCKE << 8)
@@ -3227,15 +3224,15 @@
 	}
 
 	FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS FOR_ALL_LANES {
-		MCHBAR32(0x4080 + 0x400 * channel + 4 * lane) = 0;
+		MCHBAR32(0x4080 + channel * 0x400 + lane * 4) = 0;
 	}
 
 	FOR_ALL_POPULATED_CHANNELS
-		MCHBAR32_OR(0x4008 + 0x400 * channel, 0x8000000);
+		MCHBAR32_OR(0x4008 + channel * 0x400, 0x8000000);
 
 	FOR_ALL_POPULATED_CHANNELS {
 		udelay (1);
-		MCHBAR32_OR(0x4020 + 0x400 * channel, 0x200000);
+		MCHBAR32_OR(0x4020 + channel * 0x400, 0x200000);
 	}
 
 	printram("CPE\n");
@@ -3267,7 +3264,7 @@
 		// Set valid rank CKE
 		reg = 0;
 		reg = (reg & ~0xf) | ctrl->rankmap[channel];
-		addr = 0x400 * channel + 0x42a0;
+		addr = 0x42a0 + channel * 0x400;
 		MCHBAR32(addr) = reg;
 
 		// Wait 10ns for ranks to settle
@@ -3288,7 +3285,7 @@
 	MCHBAR32(0x3000) = 0;
 
 	FOR_ALL_CHANNELS {
-		MCHBAR32_AND(channel * 0x100 + 0xe3c, ~0x3f000000);
+		MCHBAR32_AND(0xe3c + channel * 0x100, ~0x3f000000);
 		udelay(2);
 	}