OK, I'm done for a while. This thing is working well enough, I have some other things to do, and I think it is an ok example (criticism is welcome and appreciated, as long as it comes with suggestions for how to improve things).
I did put some timing test and control in raminit.c, and it computes what looks like OK timing numbers, but if I use those numbers the machine locks up. You can see the code if interested in CVS.
That's what i remember about this north bridge -- it's tricky to get it right. I think we should just leave it at the most conservative timings for now.
I would like to know if there are other SPD parameters we ought to try to compute besides MA. Size was an important one to figure out, and it works now, but there are others we might want.
Note that right now, due to space limitations, only the first two DRAM slots are getting configured. Please let me know if this is an issue for anyone.
ron