memory epia-m 127M != 512M

ron minnich rminnich at lanl.gov
Thu Sep 25 09:17:00 CEST 2003


On Thu, 25 Sep 2003, Ian Smith wrote:

> Blows a hole in my theory about the 128MB being detected....

sorry, but those registers you are mentioning have *zero* impact on size 
detection. That's not what's going on here. Size detect is via SPD.

We wrote a lot of that code here 3 years ago, and it was a hack then in an
attempt to get the 8601 to work at all.

If you look at how it works now:

        // Initial setting, 256MB in each bank, will be rewritten later.
        CS_WRITE($0x5A, $0x20)
        CS_WRITE($0x5B, $0x40)
        CS_WRITE($0x5C, $0x60)
        CS_WRITE($0x5D, $0x80)
        CS_WRITE($0x5E, $0xA0)
        CS_WRITE($0x5F, $0xC0)


So the ram size is set to 256MB per bank. Then we proceed to initialize 
all the DRAM as though it were there. It is sufficient for SDRAM to do 
this. It is probably not sufficient for DDR to do this. 

Then, later, in C, we size it up via SPD (I think SONE did this work?) and
set the right values in.

Anyone who is setting values in just by jamming things in registers is 
going at it the wrong way and is doomed to fail. There are complex 
problems with the 8601, such as buffer strength issues, that require more 
sophistication. 

The right thing to do here is cut to freebios2 ASAP and write all this in 
C. It's just too hard in assembly. 

ron




More information about the coreboot mailing list