On Sep 18, 09 13:54:16 -0600, Ales Fiala wrote:
What is the meaning of the RV515_MC_STATUS:MC_IDLE bit?
The RV515/516 spec says it "Indicates that there are no pending or in-process requests in the MC."
There is code in RHDMCSetup() and RHDRestoreMC() that does the following: ASSERT((RHDRegRead(rhdPtr, D1VGA_CONTROL) & D1VGA_MODE_ENABLE) != D1VGA_MODE_ENABLE); ASSERT((RHDRegRead(rhdPtr, D2VGA_CONTROL) & D2VGA_MODE_ENABLE) != D2VGA_MODE_ENABLE); ASSERT((RHDRegRead(rhdPtr, D1CRTC_CONTROL) & 0x1) != 0x1); ASSERT((RHDRegRead(rhdPtr, D2CRTC_CONTROL) & 0x1) != 0x1); ASSERT(RHDMCIdle(rhdPtr, 1));
Hm. The code doesn't exist in the way you wrote it here. Either you are using pseudocode, or you're running on an old git version. If the later is the case, please try again with latest git. If the former is the case, I assume you're talking about RV515MCWaitIdle().
I am getting infrequent failures in the last assertion, indicating that the MC is not idle. I verified that both the VGA anc CRTC controllers are indeed disabled, Yet the MC_IDLE bit is still wiggling. I wrote a little piece of code that reads it in a tight loop and indeed it comes on every 10-20 reads and then immediately goes off.
I assume you waited long enough so that there are definitely no acceleration commands left in the queue?
So if the CRTC and VGA controllers are not reading the memory, why is the MC not idle? Could it be that even if the screen is not being refreshed, the dynamic RAM still needs to be refreshed to keep it from losing its contents?
Sounds reasonable to me - but I guess only Alex can confirm or deny.
If this is the case, I think that this code is flawed. It shouldn't assume that the MC is idle when the CRTC and VGA controllers are disabled.
Actually, e.g. for changing the memory access speed you *have* to wait
for the MC to be idle. That said, we don't change the speed yet :-/
One possibility for the meantime would be to use a short loop in order
to test whether the MC would get idle at all. Dunno, but Luc probably
has a different look on the whole thing.
Matthias
--
Matthias Hopf