Actually, lets get some more debugging info, in case that doesn't work. One quick question though:<br><br>
60: 08 10 12 12 12 12 00 00 00 00 00 00 00 00 00 00<br><br>Are 0x64 and 0x65 also DRBs? Or they just happen to also be 0x12? Either way, this should work, but it will only work for up to 2 sticks. I've gotten rid of the dual sided junk, I'm about 98% sure it's not necessary, so it now just reads the start of the dimm (instead of row) and reads from that. Please try a memtest payload, if this boots, just to make sure it's working right.<br>
<br>       read32(0 + addr_offset);<br>       /* See if there are 2 sticks */<br>       reg8 = pci_read_config8(ctrl->d0, DRB + 1);<br>       reg8_2 = pci_read_config8(ctrl->d0, DRB + 2);<br>       if(reg8 != reg8_2) {<br>
              PRINT_DEBUG("Sending command to DIMM1 at 0x");<br>              PRINT_DEBUG_HEX32((reg8 * 32 * 1024 * 1024) + addr_offset);<br>              PRINT_DEBUG("/r/n);<br>              read32((reg8 * 32 * 1024 * 1024) + addr_offset);<br>
       }<br><br>-Corey<br><br><div class="gmail_quote">On Tue, May 27, 2008 at 11:40 PM, Corey Osgood <<a href="mailto:corey.osgood@gmail.com">corey.osgood@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br><div class="gmail_quote"><div class="Ih2E3d">On Tue, May 27, 2008 at 10:27 PM, Joseph Smith <<a href="mailto:joe@settoplinux.org" target="_blank">joe@settoplinux.org</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>
Hello,<br>
Now that I got coreboot running on the IP1000, I finally am able to test<br>
out the so-dimm socket. I maxed out the slot with a big 512MB so-dimm. I<br>
don't think the "for" statement we came up with is working correctly:<br>
<br>
        /* NOTE: Dual-sided ready. */<br>
        read32(0 + addr_offset);<br>
        for (i = 0; i < 4; i++) {<br>
                reg8 = pci_read_config8(ctrl->d0, DRB + i);<br>
                if (reg8 != reg8_2)<br>
                        read32(reg8 * 32 * 1024 * 1024);<br>
                reg8_2 = reg8;<br>
        }<br>
<br>
The memory is detecting correctly, but I don't think coreboot can find the<br>
end of the side of the so-dimm, thus causing a lockup after Jumping to<br>
coreboot. I think I need to setup something more like the E7501<br>
do_ram_command() but I want to keep it simple. Here is the bootlog, Help??<br>
</blockquote></div><div><br><br>You're right, change <br><div class="Ih2E3d"><br>read32(reg8 * 32 * 1024 * 1024);<br><br></div>to<br><br>read32((reg8 * 32 * 1024 * 1024) + addr_offset);<br><br>also, make sure reg8_2 is 0'd before entering the for loop.<br>

<br>-Corey<br></div></div>
</blockquote></div><br>