Peter Stuge wrote:
> I suggest that this patch does not change how the code works.

This time with attachment.

//Peter
Index: raminit.c
===================================================================
--- raminit.c   (revision 1157)
+++ raminit.c   (working copy)
@@ -345,40 +345,42 @@
 
        /* DIMM 0 */
        casmap0 = spd_read_byte(dimm0, SPD_ACCEPTABLE_CAS_LATENCIES);
-       if (casmap0 != 0xFF) {
-               /* If -.5 timing is supported, check -.5 timing > GeodeLink. */
-               /* EEPROM byte usage: (23) SDRAM Minimum Clock Cycle Time @ CLX 
-.5 */
-               spd_byte = spd_read_byte(dimm0, SPD_SDRAM_CYCLE_TIME_2ND);
-               if (spd_byte != 0) {
-                       /* Turn SPD ns time into MHz. Check what the asm does
-                        * to this math.
-                        */
-                       dimm_speed = 20000 / (((spd_byte >> 4) * 10) + 
(spd_byte & 0x0F));
-                       if (dimm_speed >= glspeed) {
-                               /* If -1 timing is supported, check -1 timing > 
GeodeLink. */
-                               /* EEPROM byte usage: (25) SDRAM Minimum Clock 
Cycle Time @ CLX -1 */
-                               spd_byte = spd_read_byte(dimm0, 
SPD_SDRAM_CYCLE_TIME_3RD);
-                               if (spd_byte != 0) {
-                                       /* Turn SPD ns time into MHz. Check 
what the asm does to this math. */
-                                       dimm_speed = 20000 / (((spd_byte >> 4) 
* 10) + (spd_byte & 0x0F));
-                                       if (dimm_speed <= glspeed) {
-                                               /* Set we can use -.5 timing 
but not -1. */
-                                               spd_byte = 31 - 
__builtin_clz((u32) casmap0);
-                                               /* Just want bits in the lower 
byte since we have to cast to a 32. */
-                                               casmap0 &= 0xFF << (--spd_byte);
-                                       }
-                               }       /* MIN_CYCLE_10 != 0 */
-                       } else {
-                               /* Timing_05 < GLspeed, can't use -.5 or -1 
timing. */
-                               spd_byte = 31 - __builtin_clz((u32) casmap0);
-                               /* Just want bits in the lower byte since we 
have to cast to a 32. */
-                               casmap0 &= 0xFF << (spd_byte);
-                       }
-               }               /* MIN_CYCLE_05 != 0 */
-       } else {                /* No DIMM */
+       if (0xff == casmap0) {  /* No DIMM */
                casmap0 = 0;
+               goto dimm1;
        }
 
+       /* If -.5 timing is supported, check -.5 timing > GeodeLink. */
+       /* EEPROM byte usage: (23) SDRAM Minimum Clock Cycle Time @ CLX -.5 */
+       spd_byte = spd_read_byte(dimm0, SPD_SDRAM_CYCLE_TIME_2ND);
+       if (0 == spd_byte)
+               goto dimm1;
+
+       /* Turn SPD ns time into MHz. Check what the asm does to this math. */
+       dimm_speed = 20000 / (((spd_byte >> 4) * 10) + (spd_byte & 0x0F));
+       if (dimm_speed >= glspeed) {
+               /* If -1 timing is supported, check -1 timing > GeodeLink. */
+               /* EEPROM byte usage: (25) SDRAM Minimum Clock Cycle Time @ CLX 
-1 */
+               spd_byte = spd_read_byte(dimm0, SPD_SDRAM_CYCLE_TIME_3RD);
+               if (0 == spd_byte)
+                       goto dimm1;
+
+               /* Turn SPD ns time into MHz. Check what the asm does to this 
math. */
+               dimm_speed = 20000 / (((spd_byte >> 4) * 10) + (spd_byte & 
0x0F));
+               if (dimm_speed > glspeed)
+                       goto dimm1;
+
+               --spd_byte;
+               /* MIN_CYCLE_10 != 0 */
+       }
+
+       /* Set we can use -.5 timing but not -1. */
+       spd_byte = 31 - __builtin_clz((u32) casmap0);
+       /* Just want bits in the lower byte since we have to cast to a 32. */
+       casmap0 &= 0xFF << (spd_byte);
+       /* MIN_CYCLE_05 != 0 */
+
+dimm1:
        /* DIMM 1 */
        casmap1 = spd_read_byte(dimm1, SPD_ACCEPTABLE_CAS_LATENCIES);
        if (casmap1 != 0xFF) {
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to