On Jun 26, 09 13:56:22 -0400, Dariem Pérez Herrera wrote:
Interesting... but then... why function RHDMCIdleWait() didn't stopped execution when idling MC failed (before I changed the registers) and instead some later assertion stopped the execution because of the same problem (MC was not idle), and then, when I changed the registers addresses, now RHDMCIdleWait() correctly reports "MC is not idle" before the later assertion which I think should never had been triggered??
Because when you changed the register addresses, you disabled MC programming, which stay in their original setting. Thus are idle (somewhat). But this may introduce other issues (which, I don't know).
The problem is as you explained before, radeonhd use a different register space than radeon, so if that is the case, I don't have any documentation or information about the addresses used by RS600 over PCIe register space, and I can't use radeon driver as example which uses MMIO.... am I correct? So, what can I do?
I actually wanted to re-program the MC setup to use the same registers as radeon in the MMIO space, but never got around to that. If you want to experiment a little, please try to do that, and check whether that works for you.
Sorry, there's just the code. And the MC code is one of the scariest places, even with the abstraction level we have in radeonhd.
I would like to help, but without any documentation or specification, what can I do? BTW, how do you get the specification for coding this driver?
They are basically at http://www.x.org/docs/AMD/ as described on the
wiki. We have received a little bit of additional information from AMD,
but that is not opened up yet :-( Also, all this information has to be
taken with a grain of salt, the open source guys have a difficult time
at extracting the relevant (and even more difficult: correct)
information from the engineers.
Matthias
--
Matthias Hopf