[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#572311: No display output from Radeon RV610 on Alpha



On 10/03/10 05:17, Matt Turner wrote:
On Mon, Mar 8, 2010 at 6:30 PM, Michael Cree<mcree@orcon.net.nz>  wrote:
On 9/03/2010, at 5:41 AM, Alex Deucher wrote:

On Sun, Mar 7, 2010 at 3:47 AM, Michael Cree<mcree@orcon.net.nz>  wrote:

Thanks, that hint was helpful.  I have drummed up a patch (attached) that
replaces some use of the UINT16LE_TO_CPU(), etc., macros with generic
interfaces from the Xserver's compiler.h header file.  Now works
correctly
on RV610 video card on an Alpha XP1000.  Have also verified that the
driver
still works on an RV710 card on AMD64 architecture.

The patch applies cleanly against the 6.12.5 branch and also upstream git
master.

Alex: may I presume that you will handle getting it upstream for review
and
hopefully acceptance into the fdo git master.

I'll take a look at it.  My only concern would be making sure these
changes don't break big endian which is the reason the macros were
added in the first place.

It should work, but worth running a check.  My understanding is that the
ldw_u(), etc., macros/functions in compiler.h are supposed to handle all
architectural issues, including endianess, alignment, and certain hardware
limitations on byte/word access.

I'm not sure they cover endianness. I cleaned them up last
summer--there are no #ifdef BIGENDIANs in there.

Bother, it looks like you are right. On re-looking at compiler.h I now see that there is only one definition of them and it doesn't appear to address endianess. Double bother!

So what do you recommend we use to access the AtomBios that will handle both endianess and alignment issues? The alignment issue on Alpha only occurs when one can't use BWX instructions which is the case for Debian as it is compiled for generic Alpha architecture.

Could we use the MMIO_IN/OUT routines and pass the address as the base and a zero offset?

Cheers
Michael.



Reply to: