<p>Felix Held has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27724">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sandybridge/raminit_common: use MCHBAR AND/OR/AND_OR macros [1/2]<br><br>When using timeless builds and coreboot crossgcc 6.3.0, the checksum of the<br>resulting binary doesn't change with applying this commit.<br><br>Change-Id: I2b1dc8befa3381f3edac06704e31e7ef50f86fa4<br>Signed-off-by: Felix Held <felix-coreboot@felixheld.de><br>---<br>M src/northbridge/intel/sandybridge/raminit_common.c<br>1 file changed, 26 insertions(+), 39 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/24/27724/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/northbridge/intel/sandybridge/raminit_common.c b/src/northbridge/intel/sandybridge/raminit_common.c</span><br><span>index 8165dc1..b21b5ac 100644</span><br><span>--- a/src/northbridge/intel/sandybridge/raminit_common.c</span><br><span>+++ b/src/northbridge/intel/sandybridge/raminit_common.c</span><br><span>@@ -1947,17 +1947,15 @@</span><br><span>      volatile u32 tmp;</span><br><span> </span><br><span>        FOR_ALL_POPULATED_CHANNELS</span><br><span style="color: hsl(0, 100%, 40%);">-              MCHBAR32(0x4008 + 0x400 * channel) =</span><br><span style="color: hsl(0, 100%, 40%);">-                    MCHBAR32(0x4008 + 0x400 * channel) | 0x8000000;</span><br><span style="color: hsl(120, 100%, 40%);">+               MCHBAR32_OR(0x4008 + 0x400 * channel, 0x8000000);</span><br><span> </span><br><span>        FOR_ALL_POPULATED_CHANNELS {</span><br><span>                 write_op(ctrl, channel);</span><br><span style="color: hsl(0, 100%, 40%);">-                MCHBAR32(0x4020 + 0x400 * channel) =</span><br><span style="color: hsl(0, 100%, 40%);">-                    MCHBAR32(0x4020 + 0x400 * channel) | 0x200000;</span><br><span style="color: hsl(120, 100%, 40%);">+                MCHBAR32_OR(0x4020 + 0x400 * channel, 0x200000);</span><br><span>     }</span><br><span> </span><br><span>        /* refresh disable */</span><br><span style="color: hsl(0, 100%, 40%);">-   MCHBAR32(0x5030) = MCHBAR32(0x5030) & ~8;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x5030, ~8);</span><br><span>    FOR_ALL_POPULATED_CHANNELS {</span><br><span>                 write_op(ctrl, channel);</span><br><span>     }</span><br><span>@@ -1992,11 +1990,10 @@</span><br><span>          wait_428c(channel);</span><br><span> </span><br><span>      /* refresh enable */</span><br><span style="color: hsl(0, 100%, 40%);">-    MCHBAR32(0x5030) = MCHBAR32(0x5030) | 8;</span><br><span style="color: hsl(120, 100%, 40%);">+      MCHBAR32_OR(0x5030, 8);</span><br><span> </span><br><span>  FOR_ALL_POPULATED_CHANNELS {</span><br><span style="color: hsl(0, 100%, 40%);">-            MCHBAR32(0x4020 + 0x400 * channel) =</span><br><span style="color: hsl(0, 100%, 40%);">-                    ~0x00200000 & MCHBAR32(0x4020 + 0x400 * channel);</span><br><span style="color: hsl(120, 100%, 40%);">+         MCHBAR32_AND(0x4020 + 0x400 * channel, ~0x00200000);</span><br><span>                 tmp = MCHBAR32(0x428c + 0x400 * channel);</span><br><span>            wait_428c(channel);</span><br><span> </span><br><span>@@ -2171,12 +2168,11 @@</span><br><span> </span><br><span>                MCHBAR32(0x4284 + 0x400 * channel) = 1;</span><br><span>              wait_428c(channel);</span><br><span style="color: hsl(0, 100%, 40%);">-             MCHBAR32(0x4020 + 0x400 * channel) =</span><br><span style="color: hsl(0, 100%, 40%);">-                    MCHBAR32(0x4020 + 0x400 * channel) | 0x200000;</span><br><span style="color: hsl(120, 100%, 40%);">+                MCHBAR32_OR(0x4020 + 0x400 * channel, 0x200000);</span><br><span>     }</span><br><span> </span><br><span>        /* refresh disable */</span><br><span style="color: hsl(0, 100%, 40%);">-   MCHBAR32(0x5030) = MCHBAR32(0x5030) & ~8;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x5030, ~8);</span><br><span>    FOR_ALL_POPULATED_CHANNELS {</span><br><span>                 wait_428c(channel);</span><br><span> </span><br><span>@@ -2353,8 +2349,7 @@</span><br><span>               * in this mode only RD and RDA are allowed</span><br><span>           * all reads return a predefined pattern */</span><br><span>          MCHBAR32(0x4220 + 0x400 * channel) = 0x1f000;</span><br><span style="color: hsl(0, 100%, 40%);">-           MCHBAR32(0x4230 + 0x400 * channel) =</span><br><span style="color: hsl(0, 100%, 40%);">-                    0xc01 | (ctrl->tMOD << 16);</span><br><span style="color: hsl(120, 100%, 40%);">+          MCHBAR32(0x4230 + 0x400 * channel) = 0xc01 | (ctrl->tMOD << 16);</span><br><span>            MCHBAR32(0x4200 + 0x400 * channel) =</span><br><span>                         (slotrank << 24) | 0x360004;</span><br><span>           MCHBAR32(0x4210 + 0x400 * channel) = 0;</span><br><span>@@ -2803,10 +2798,8 @@</span><br><span> </span><br><span>         for (i = 0; i < 3; i++)</span><br><span>           FOR_ALL_POPULATED_CHANNELS {</span><br><span style="color: hsl(0, 100%, 40%);">-                    MCHBAR32(0xe3c + (channel * 0x100)) =</span><br><span style="color: hsl(0, 100%, 40%);">-                           (rege3c_b24[i] << 24) |</span><br><span style="color: hsl(0, 100%, 40%);">-                           (MCHBAR32(0xe3c + (channel * 0x100))</span><br><span style="color: hsl(0, 100%, 40%);">-                               & ~0x3f000000);</span><br><span style="color: hsl(120, 100%, 40%);">+                        MCHBAR32_AND_OR(0xe3c + (channel * 0x100), ~0x3f000000,</span><br><span style="color: hsl(120, 100%, 40%);">+                               rege3c_b24[i] << 24);</span><br><span>                  udelay(2);</span><br><span>                   for (pat = 0; pat < NUM_PATTERNS; pat++) {</span><br><span>                                FOR_ALL_POPULATED_RANKS {</span><br><span>@@ -2862,8 +2855,7 @@</span><br><span>            }</span><br><span> </span><br><span>        FOR_ALL_CHANNELS {</span><br><span style="color: hsl(0, 100%, 40%);">-              MCHBAR32((channel * 0x100) + 0xe3c) =</span><br><span style="color: hsl(0, 100%, 40%);">-                   0 | (MCHBAR32((channel * 0x100) + 0xe3c) & ~0x3f000000);</span><br><span style="color: hsl(120, 100%, 40%);">+          MCHBAR32_AND((channel * 0x100) + 0xe3c, ~0x3f000000);</span><br><span>                udelay(2);</span><br><span>   }</span><br><span> </span><br><span>@@ -3060,10 +3052,8 @@</span><br><span>               dram_odt_stretch(ctrl, channel);</span><br><span> </span><br><span>                 MCHBAR32(0x4008 + (channel << 10)) =</span><br><span style="color: hsl(0, 100%, 40%);">-                      0x0a000000</span><br><span style="color: hsl(0, 100%, 40%);">-                      | (b20 << 20)</span><br><span style="color: hsl(0, 100%, 40%);">-                     | ((ctrl->ref_card_offset[channel] + 2) << 16)</span><br><span style="color: hsl(0, 100%, 40%);">-                 | b4_8_12;</span><br><span style="color: hsl(120, 100%, 40%);">+                    0x0a000000 | (b20 << 20) |</span><br><span style="color: hsl(120, 100%, 40%);">+                      ((ctrl->ref_card_offset[channel] + 2) << 16) | b4_8_12;</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span>@@ -3073,7 +3063,7 @@</span><br><span>   FOR_ALL_POPULATED_CHANNELS {</span><br><span>                 MCHBAR32(0x42a0 + 0x400 * channel) =</span><br><span>                         0x00001000 | ctrl->rankmap[channel];</span><br><span style="color: hsl(0, 100%, 40%);">-         MCHBAR32(0x4004 + 0x400 * channel) &= ~0x20000000;  // OK</span><br><span style="color: hsl(120, 100%, 40%);">+         MCHBAR32_AND(0x4004 + 0x400 * channel, ~0x20000000);</span><br><span>         }</span><br><span> }</span><br><span> </span><br><span>@@ -3094,8 +3084,8 @@</span><br><span> </span><br><span>       MCHBAR32(0x4cd4) = 0x00000046;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      MCHBAR32(0x400c) = (MCHBAR32(0x400c) & 0xFFFFCFFF) | 0x1000;        // OK</span><br><span style="color: hsl(0, 100%, 40%);">-   MCHBAR32(0x440c) = (MCHBAR32(0x440c) & 0xFFFFCFFF) | 0x1000;        // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x400c, 0xFFFFCFFF, 0x1000);</span><br><span style="color: hsl(120, 100%, 40%);">+  MCHBAR32_AND_OR(0x440c, 0xFFFFCFFF, 0x1000);</span><br><span> </span><br><span>     if (is_mobile)</span><br><span>               /* APD - DLL Off, 64 DCLKs until idle, decision per rank */</span><br><span>@@ -3129,14 +3119,14 @@</span><br><span>        }</span><br><span> </span><br><span>        MCHBAR32(0x5880) = 0xca9171e5;</span><br><span style="color: hsl(0, 100%, 40%);">-  MCHBAR32(0x5888) = (MCHBAR32(0x5888) & ~0xffffff) | 0xe4d5d0;</span><br><span style="color: hsl(0, 100%, 40%);">-       MCHBAR32(0x58a8) = MCHBAR32(0x58a8) & ~0x1f;</span><br><span style="color: hsl(0, 100%, 40%);">-        MCHBAR32(0x4294) = (MCHBAR32(0x4294) & ~0x30000) | (1 << 16);</span><br><span style="color: hsl(0, 100%, 40%);">- MCHBAR32(0x4694) = (MCHBAR32(0x4694) & ~0x30000) | (1 << 16);</span><br><span style="color: hsl(120, 100%, 40%);">+       MCHBAR32_AND_OR(0x5888, ~0xffffff, 0xe4d5d0);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x58a8, ~0x1f);</span><br><span style="color: hsl(120, 100%, 40%);">+  MCHBAR32_AND_OR(0x4294, ~0x30000, 1 << 16);</span><br><span style="color: hsl(120, 100%, 40%);">+     MCHBAR32_AND_OR(0x4694, ~0x30000, 1 << 16);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   MCHBAR32(0x5030) |= 1;  // OK</span><br><span style="color: hsl(0, 100%, 40%);">-   MCHBAR32(0x5030) |= 0x80;       // OK</span><br><span style="color: hsl(0, 100%, 40%);">-   MCHBAR32(0x5f18) = 0xfa;        // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x5030) |= 1;</span><br><span style="color: hsl(120, 100%, 40%);">+        MCHBAR32(0x5030) |= 0x80;</span><br><span style="color: hsl(120, 100%, 40%);">+     MCHBAR32(0x5f18) = 0xfa;</span><br><span> </span><br><span>         /* Find a populated channel.  */</span><br><span>     FOR_ALL_POPULATED_CHANNELS</span><br><span>@@ -3194,13 +3184,11 @@</span><br><span>         }</span><br><span> </span><br><span>        FOR_ALL_POPULATED_CHANNELS</span><br><span style="color: hsl(0, 100%, 40%);">-              MCHBAR32(0x4008 + 0x400 * channel) =</span><br><span style="color: hsl(0, 100%, 40%);">-                    MCHBAR32(0x4008 + 0x400 * channel) | 0x8000000;</span><br><span style="color: hsl(120, 100%, 40%);">+               MCHBAR32_OR(0x4008 + 0x400 * channel, 0x8000000);</span><br><span> </span><br><span>        FOR_ALL_POPULATED_CHANNELS {</span><br><span>                 udelay (1);</span><br><span style="color: hsl(0, 100%, 40%);">-             MCHBAR32(0x4020 + 0x400 * channel) =</span><br><span style="color: hsl(0, 100%, 40%);">-                    MCHBAR32(0x4020 + 0x400 * channel) | 0x200000;</span><br><span style="color: hsl(120, 100%, 40%);">+                MCHBAR32_OR(0x4020 + 0x400 * channel, 0x200000);</span><br><span>     }</span><br><span> </span><br><span>        printram("CPE\n");</span><br><span>@@ -3253,8 +3241,7 @@</span><br><span>         MCHBAR32(0x3000) = 0;</span><br><span> </span><br><span>    FOR_ALL_CHANNELS {</span><br><span style="color: hsl(0, 100%, 40%);">-              MCHBAR32(channel * 0x100 + 0xe3c) =</span><br><span style="color: hsl(0, 100%, 40%);">-                     0 | (MCHBAR32(channel * 0x100 + 0xe3c) & ~0x3f000000);</span><br><span style="color: hsl(120, 100%, 40%);">+            MCHBAR32_AND(channel * 0x100 + 0xe3c, ~0x3f000000);</span><br><span>          udelay(2);</span><br><span>   }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27724">change 27724</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/27724"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I2b1dc8befa3381f3edac06704e31e7ef50f86fa4 </div>
<div style="display:none"> Gerrit-Change-Number: 27724 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Felix Held <felix-coreboot@felixheld.de> </div>