On Sat, 2008-12-20 at 19:48 +0100, Bernhard R. Link wrote: > Looking at the radeon_drv sources, it looks like those are only > accessing 8 bit at RADEON_CLOCK_CNTL_INDEX and not the whole int that > radeontool is writing, changing that in the driver via > > --- xserver-xorg-video-ati-6.9.0/src/radeon_driver.c 2008-12-20 > 19:06:32.000000000 +0100 > +++ xserver-xorg-video-ati-6.9.0/src/radeon_driver.c 2008-12-20 > 18:29:24.000000000 +0100 > @@ -544,7 +544,7 @@ > unsigned char *RADEONMMIO = info->MMIO; > uint32_t data; > > - OUTREG8(RADEON_CLOCK_CNTL_INDEX, addr & 0x3f); > + OUTREG(RADEON_CLOCK_CNTL_INDEX, addr & 0x3f); > RADEONPllErrataAfterIndex(info); > data = INREG(RADEON_CLOCK_CNTL_DATA); > RADEONPllErrataAfterData(info); > @@ -558,7 +558,7 @@ > RADEONInfoPtr info = RADEONPTR(pScrn); > unsigned char *RADEONMMIO = info->MMIO; > > - OUTREG8(RADEON_CLOCK_CNTL_INDEX, (((addr) & 0x3f) | > + OUTREG(RADEON_CLOCK_CNTL_INDEX, (((addr) & 0x3f) | > RADEON_PLL_WR_EN)); > RADEONPllErrataAfterIndex(info); > OUTREG(RADEON_CLOCK_CNTL_DATA, data); > > fixes my problem (i.e. I get a working display, and it still works after > switching to virtual console and back and changing resolutions and all those > things). > > I fear that might be the case because it is overwriting some other data > in there that causes this, but I guess to know this someone with > knowledge about this registers is needed...
Register specs are available from http://developer.amd.com/documentation/guides/Pages/default.aspx#open_gpu or http://www.x.org/docs/AMD/ . As can be seen there, CLOCK_CNTL_INDEX is indeed a 32 bit register with more than 8 functional bits, so this looks like a valid fix. In fact, I can't seem to find any non-32-bit MMIO registers we would (need to) use, so I'm not sure the IN/OUTREG8 and IN/OUTREG16 macros have any reason to live. -- Earthling Michel Dänzer | http://www.vmware.com Libre software enthusiast | Debian, X and DRI developer -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org