Bug 14945 - Colors are too bright with KMS on Radeon 9xxx
Colors are too bright with KMS on Radeon 9xxx
Status: RESOLVED CODE_FIX
Product: Drivers
Classification: Unclassified
Component: Video(DRI - non Intel)
All Linux
: P1 normal
Assigned To: drivers_video-dri
https://bugzilla.redhat.com/show_bug....
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2009-12-29 13:45 UTC by Samuel Lidén Borell
Modified: 2013-02-27 17:04 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.32
Tree: Mainline
Regression: No


Attachments
Test case (449 bytes, application/x-sh)
2009-12-29 13:45 UTC, Samuel Lidén Borell
Details
Output from dmesg (32.11 KB, text/plain)
2009-12-29 13:46 UTC, Samuel Lidén Borell
Details
Output from "radeontool regs" with KMS disabled and enabled (1.46 KB, text/plain)
2009-12-29 14:21 UTC, Samuel Lidén Borell
Details
fix primary dac adj values (2.77 KB, patch)
2009-12-29 17:08 UTC, Alex Deucher
Details | Diff
Dump of video BIOS (52.00 KB, application/octet-stream)
2009-12-29 21:49 UTC, Samuel Lidén Borell
Details
ATI Radeon 9100 registers (with and without KMS) (619 bytes, application/x-gzip)
2013-02-27 10:27 UTC, Алексей Шилин
Details
ATI Radeon 9100 BIOS dump (52.00 KB, application/octet-stream)
2013-02-27 10:30 UTC, Алексей Шилин
Details
add quirk for 9100 board (1.19 KB, patch)
2013-02-27 17:04 UTC, Alex Deucher
Details | Diff

Description Samuel Lidén Borell 2009-12-29 13:45:09 UTC
Created attachment 24344 [details]
Test case

The colors on my monitor are too bright when KMS is enabled, both in the console and in Xorg. I have a Radeon 9500 PRO, but Radeon 9000 is also affected[1].

I've attached a script to test the behavior in the console. It should display a gradient with yellow colors, and all colors should be distinguishable (except possibly the first two depending on the monitor settings). With KMS enabled, the colors are too bright and all but the last two are indistinguishable.

I'm using Ubuntu 10.04 (alpha version with latest upgrades) with this kernel: 

Linux crashie2 2.6.32-9-generic #13-Ubuntu SMP Thu Dec 17 17:02:51 UTC 2009 i686 GNU/Linux

[1] https://bugzilla.redhat.com/show_bug.cgi?id=505903
Comment 1 Samuel Lidén Borell 2009-12-29 13:46:05 UTC
Created attachment 24345 [details]
Output from dmesg
Comment 2 Samuel Lidén Borell 2009-12-29 14:21:43 UTC
Created attachment 24346 [details]
Output from "radeontool regs" with KMS disabled and enabled

Here's the output from "radeontool regs" with KMS disabled and enabled, respective. As you can see there are a few registers that differ:

-RADEON_DAC_MACRO_CNTL	00000808
+RADEON_DAC_MACRO_CNTL	00000000

-RADEON_TV_DAC_CNTL	07000040
+RADEON_TV_DAC_CNTL	07780142

-RADEON_CRTC_EXT_CNTL	00008040
+RADEON_CRTC_EXT_CNTL	0d008040

Maybe this is somehow related to this bug?
Comment 3 Alex Deucher 2009-12-29 17:08:01 UTC
Created attachment 24351 [details]
fix primary dac adj values

This patch should fix it.
Comment 4 Samuel Lidén Borell 2009-12-29 21:17:58 UTC
No, I still have the same problem with your patch (tried it with both the Ubuntu DRM modules and the latest modules in Linus' tree).

And the radeontool regs still have the same values.
Comment 5 Alex Deucher 2009-12-29 21:42:42 UTC
Can you attach a copy of your video bios?  (as root):
cd /sys/bus/pci/devices/<pci bus id>
echo 1 > rom
cat rom > /tmp/vbios.rom
echo 0 > rom
Comment 6 Samuel Lidén Borell 2009-12-29 21:49:21 UTC
Created attachment 24362 [details]
Dump of video BIOS
Comment 7 Samuel Lidén Borell 2010-06-04 19:27:51 UTC
Fixed in 2.6.34. Thank you!
Comment 8 Алексей Шилин 2013-02-27 10:18:26 UTC
I'm experiencing the same issue with Linux 3.2.

Here is some info:
---------- 8< ----------
$ uname -r
3.2.0-4-686-pae
$ dmesg | grep -Ei drm\|radeon
[   29.378928] [drm] Initialized drm 1.1.0 20060810
[   29.555938] [drm] radeon kernel modesetting enabled.
[   29.557914] [drm] initializing kernel modesetting (R200 0x1002:0x514D 0x174B:0x7149).
[   29.557957] [drm] register mmio base: 0xE9000000
[   29.557960] [drm] register mmio size: 65536
[   29.559998] radeon 0000:02:00.0: putting AGP V2 device into 4x mode
[   29.568192] radeon 0000:02:00.0: GTT: 128M 0xE0000000 - 0xE7FFFFFF
[   29.568207] radeon 0000:02:00.0: VRAM: 256M 0x00000000D0000000 - 0x00000000DFFFFFFF (128M used)
[   29.568226] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[   29.568229] [drm] Driver supports precise vblank timestamp query.
[   29.568265] [drm] radeon: irq initialized.
[   29.568460] [drm] Detected VRAM RAM=256M, BAR=256M
[   29.568466] [drm] RAM width 128bits DDR
[   29.569943] [drm] radeon: 128M of VRAM memory ready
[   29.569947] [drm] radeon: 128M of GTT memory ready.
[   29.571440] radeon 0000:02:00.0: WB disabled
[   29.572956] [drm] Loading R200 Microcode
[   29.649424] platform radeon_cp.0: firmware: agent loaded radeon/R200_cp.bin into memory
[   29.649935] [drm] radeon: ring at 0x00000000E0001000
[   29.649956] [drm] ring test succeeded in 0 usecs
[   29.650307] [drm] radeon: ib pool ready.
[   29.650420] [drm] ib test succeeded in 0 usecs
[   29.651533] [drm] Radeon Display Connectors
[   29.651538] [drm] Connector 0:
[   29.651540] [drm]   VGA
[   29.651544] [drm]   DDC: 0x60 0x60 0x60 0x60 0x60 0x60 0x60 0x60
[   29.651547] [drm]   Encoders:
[   29.651549] [drm]     CRT1: INTERNAL_DAC1
[   29.651552] [drm] Connector 1:
[   29.651553] [drm]   DVI-D
[   29.651555] [drm]   HPD1
[   29.651559] [drm]   DDC: 0x64 0x64 0x64 0x64 0x64 0x64 0x64 0x64
[   29.651561] [drm]   Encoders:
[   29.651563] [drm]     DFP1: INTERNAL_TMDS1
[   29.893561] [drm] fb mappable at 0xD0040000
[   29.893566] [drm] vram apper at 0xD0000000
[   29.893569] [drm] size 5242880
[   29.893571] [drm] fb depth is 24
[   29.893574] [drm]    pitch is 5120
[   29.894525] fbcon: radeondrmfb (fb0) is primary device
[   29.895295] fb0: radeondrmfb frame buffer device
[   29.895297] drm: registered panic notifier
[   29.895312] [drm] Initialized radeon 2.12.0 20080528 for 0000:02:00.0 on minor 0
# lspci -vvvs 02:00.0
02:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Radeon R200 QM [Radeon 9100] (rev 80) (prog-if 00 [VGA controller])
        Subsystem: PC Partner Limited Device 7149
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 32 (2000ns min), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 19
        Region 0: Memory at d0000000 (32-bit, prefetchable) [size=256M]
        Region 1: I/O ports at c000 [size=256]
        Region 2: Memory at e9000000 (32-bit, non-prefetchable) [size=64K]
        [virtual] Expansion ROM at e8000000 [disabled] [size=128K]
        Capabilities: [58] AGP version 2.0
                Status: RQ=48 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
                Command: RQ=32 ArqSz=0 Cal=0 SBA+ AGP+ GART64- 64bit- FW- Rate=x4
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: radeon
---------- >8 ----------
Comment 9 Алексей Шилин 2013-02-27 10:27:38 UTC
Created attachment 94171 [details]
ATI Radeon 9100 registers (with and without KMS)

I've tried `radeontool regs' both with and without KMS. The outputs are in the attached archive.
Execution of `radeontool regset DAC_MACRO_CNTL 2056' fixes the problem.
Comment 10 Алексей Шилин 2013-02-27 10:30:02 UTC
Created attachment 94181 [details]
ATI Radeon 9100 BIOS dump
Comment 11 Alex Deucher 2013-02-27 17:04:56 UTC
Created attachment 94191 [details]
add quirk for 9100 board

This should fix your board.

Note You need to log in before you can comment on or make changes to this bug.