Also, you probably didn't program the MRS on the memory.
Yes, I'm quite sure I messed that up. In general, in do_ram_command () I have to set DRAMC bits 7-5 to the respective command and then read32 () from some memory location for the change to "take effect", right? If so, which memory location is that? Does it depend on some input data?
I still don't really understand this part of the RAM init, so the code might be very, very wrong...
It looks reasonable. You want to shift by 3 though, not 23, not 15, so you read from 0x1d0 for writing to the MRS.
It seems the i440 might want the address bits inverted on the high banks in some configurations, btw; so if it won't work, you can try 0x1d0 ^ 0xff8 or so.
From the comments it seems you used the DDR-II spec, not the SDRAM spec; but the code looks okay.
Segher