Here is NXTV's ramini.c to be placed in version 1 of linuxbios
src/northbridge/via/vt8623/raminit.inc
It was written by Felipe Rodriguez for NXTV and is now being contributed
back to the linuxbios project. His email address is included in the
comments in the file.
It assumes the SPD contents on the module are valid, and it sets up
the CLE266 DDR controller appropriately.
Features:
o Detects number of ram banks
o Properly tunes tunables
o Detects column and row address sizes
o Works for every 128M DDR module we've tried as well as one 256M
module, correctly setting the available memory in linux.
o Lots of comments for reference
Now if someone else wants to convert this X86 code to C code for romcc
in version 2, that would be great.
Enjoy!
-Dave
begin 644 raminit.inc.gz
M'XL(",-`F4$``W)A;6EN:70N:6YC`.T[^W/;QM$_$W_%-HG'9#Z*Q).BE#I3
M6I(=345)):7&GL2#P>,HP@$!%@#U\%_?W3N\"4)B7'\SG:G:>,B[O=V]O7W<
M[AZ'/TKP(T36R(a)N\9.`%SC'`21(a)LO+M-Q.`^&8\T#2)VY\4)BV*$%?_OW"R]
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
+4_HWRK@*]<`\````
`
end