I have been going over the vt8601 code, although only the stuff in raminit.c as I assume that is probably where the problem lies. I did pull off rev 1179 (not 100% sure) managed to build it ok, but when I booted it, it was coming up with smbus errors. Then tries version 1159, this wouldn't build, there were files missing.
Yea! A hacker who has the hardware.
I have found a slight problem, maybe stack related ( what does linuxbios do for a stack before ram is initialised ? )
Just like the matrix.. There is no stack. oh wait, that was spoon. sorry.
Seriously. Thats waht romcc does. It compiles code that runs only with CPU registers. No stack. No RAM of any kind.
At this point register 0x64 has 0xec in it, which it shouldn't. The extra bit(b3) is not used and should be 0. Now no where in the code is this set so whats happening ?
Thats actually a good sign. Perhaps you are finding some of the problems.
I put a print at the end of the sdram_set_registers() function and it is wrong there also. However putting in that extra print hangs the code. So I am thinking maybe its a stack issue.
print_* uses a lot of resources. You may be running out of registers or the romcc maybe corrupting the register that has the return address.
Try to be much simpler about things. Like hook up a serial terminal that can display hex values and just out() the value directly.
romcc does amazing things but its still pretty easy to trip it up.
Have been through the vt8601 datasheet quite a few times now, must be one of the worst I have seen, anyway does anyone have any idea what the "DRAM Controller Command Register Output" bit is used for ?
Ron said that the datasheet is also incorrect in some places. If you do it like the data sheet says then it doesn't work. Thats why we need to find a working version so we can figure what the magic incantation is.
Also are the any utilities to dump the northbridge register contents on a running system ?
'lspci -s 0:0.0 -xxx' will dump the entire northbridge pci space. man lspci for more details.
What sort of tools are we talking about to compile the earlier stuff ?
Older toolchains. gcc-2.95, gcc-3.x, and the various binutils that came with them. Basically grabbing some older distributions and using their toolchain.
Newer toolchains have issues with older romcc. Newer romcc's have issues with the constructs in older revs.