[coreboot] ram init help on the i82830

Corey Osgood corey.osgood at gmail.com
Wed May 28 06:04:14 CEST 2008


Actually, lets get some more debugging info, in case that doesn't work. One
quick question though:

60: 08 10 12 12 12 12 00 00 00 00 00 00 00 00 00 00

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.

       read32(0 + addr_offset);
       /* See if there are 2 sticks */
       reg8 = pci_read_config8(ctrl->d0, DRB + 1);
       reg8_2 = pci_read_config8(ctrl->d0, DRB + 2);
       if(reg8 != reg8_2) {
             PRINT_DEBUG("Sending command to DIMM1 at 0x");
             PRINT_DEBUG_HEX32((reg8 * 32 * 1024 * 1024) + addr_offset);
             PRINT_DEBUG("/r/n);
             read32((reg8 * 32 * 1024 * 1024) + addr_offset);
       }

-Corey

On Tue, May 27, 2008 at 11:40 PM, Corey Osgood <corey.osgood at gmail.com>
wrote:

>
>
> On Tue, May 27, 2008 at 10:27 PM, Joseph Smith <joe at settoplinux.org>
> wrote:
>
>>
>> Hello,
>> Now that I got coreboot running on the IP1000, I finally am able to test
>> out the so-dimm socket. I maxed out the slot with a big 512MB so-dimm. I
>> don't think the "for" statement we came up with is working correctly:
>>
>>        /* NOTE: Dual-sided ready. */
>>        read32(0 + addr_offset);
>>        for (i = 0; i < 4; i++) {
>>                reg8 = pci_read_config8(ctrl->d0, DRB + i);
>>                if (reg8 != reg8_2)
>>                        read32(reg8 * 32 * 1024 * 1024);
>>                reg8_2 = reg8;
>>        }
>>
>> The memory is detecting correctly, but I don't think coreboot can find the
>> end of the side of the so-dimm, thus causing a lockup after Jumping to
>> coreboot. I think I need to setup something more like the E7501
>> do_ram_command() but I want to keep it simple. Here is the bootlog, Help??
>>
>
>
> You're right, change
>
> read32(reg8 * 32 * 1024 * 1024);
>
> to
>
> read32((reg8 * 32 * 1024 * 1024) + addr_offset);
>
> also, make sure reg8_2 is 0'd before entering the for loop.
>
> -Corey
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20080528/f1ee11fa/attachment.html>


More information about the coreboot mailing list