In r600_rlc_init, it seems that the firmware would be stored as big endian dwords, and are programmed using cpu endianness? I thought the GPU worked only in little endian? What is the story about this?
The driver code seems to read 32-bit words from the microcode image in memory and write them to the GPU memory mapped register without any intermediate processing, which I *think* avoids endianness issues. I'm a bit rusty on programming on big-endian parts though... I think the 68020 was the last big-endian part I worked on.