Bug 22093 - Detecting PANEL modes fails after connecting VGA-1
Summary: Detecting PANEL modes fails after connecting VGA-1
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/radeonhd (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Luc Verhaegen
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-06-04 12:36 UTC by Rafał Miłecki
Modified: 2009-06-09 09:46 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Parts of Xorg.0.log from calling "xrandr" (36.80 KB, text/html)
2009-06-04 12:50 UTC, Rafał Miłecki
no flags Details
Full, fat Xorg.0.log :) logverbose 7 (152.19 KB, text/plain)
2009-06-04 13:16 UTC, Rafał Miłecki
no flags Details
Hack for rhd_monitor.c (385 bytes, patch)
2009-06-04 14:25 UTC, Rafał Miłecki
no flags Details | Splinter Review
My M82's rom (63.50 KB, application/octet-stream)
2009-06-05 08:11 UTC, Rafał Miłecki
no flags Details
Quick fix (874 bytes, patch)
2009-06-05 10:25 UTC, Matthias Hopf
no flags Details | Splinter Review

Description Rafał Miłecki 2009-06-04 12:36:22 UTC
01:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon HD 3400 Series

If I don't have VGA monitor connected to VGA-1, xrandr displays modes correctly:

> xrandr
Screen 0: minimum 320 x 200, current 1600 x 900, maximum 2560 x 2560
VGA_1 disconnected (normal left inverted right x axis y axis)
PANEL connected 1600x900+0+0 (normal left inverted right x axis y axis) 423mm x 238mm
   1600x900       60.0*+
   2560x2048Scaled   60.5
   2560x1600Scaled   60.5
   2048x1536      60.0
   2048x1536Scaled   60.5
   1920x1440      60.0
   1856x1392      60.0
   1792x1344      60.0
   1920x1200Scaled   60.4
   1920x1080Scaled   60.5
   1600x1200      60.0
   1600x1200Scaled   60.4
   1680x1050Scaled   60.3
   1400x1050      60.0
   1400x1050Scaled   60.3
   1440x960Scaled   60.4
   1280x1024      60.0
   1280x1024Scaled   60.5
   1280x960       60.0
   1280x960Scaled   60.4
   1280x854Scaled   60.4
   1280x720Scaled   60.4
   1152x768Scaled   60.3
   1024x768       60.0
   1024x768Scaled   60.4
   800x600        60.3     56.2
   800x600Scaled   60.3
   768x576Scaled   60.4
   854x480Scaled   59.8
   720x480Scaled   59.8
   640x480        59.9
   640x480Scaled   60.1
   320x240Scaled   57.6
   320x200Scaled   55.7
DVI-D_1 disconnected (normal left inverted right x axis y axis)

it goes wrong after I just connect VGA-1:

> xrandr
Screen 0: minimum 320 x 200, current 1600 x 900, maximum 2560 x 2560
VGA_1 connected (normal left inverted right x axis y axis)
   1280x1024      60.0 +   75.0     59.9
   1152x864       75.0     74.9
   1024x768       75.1     70.1     60.0
   832x624        74.6
   800x600        72.2     75.0     60.3     56.2
   640x480        75.0     72.8     66.7     60.0
   720x400        70.1
PANEL connected 1600x900+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
   800x600Scaled   60.3
   768x576Scaled   60.4
   854x480Scaled   59.8
   720x480Scaled   59.8
   640x480Scaled   60.1
DVI-D_1 disconnected (normal left inverted right x axis y axis)
  1600x900 (0x3e)   88.5MHz
        h: width  1600 start 1614 end 1626 total 1630 skew    0 clock   54.3KHz
        v: height  900 start  902 end  904 total  906           clock   60.0Hz

Didn't do anything more. Just plugged cable to VGA-1 connector.
Comment 1 Rafał Miłecki 2009-06-04 12:50:18 UTC
Created attachment 26441 [details]
Parts of Xorg.0.log from calling "xrandr"

You can see that with VGA-1 connected radeonhd seems to detect VGA monitor's EDID as PANEL's EDID. This "Sam" from 2004 is monitor I attached to VGA-1.
Comment 2 Rafał Miłecki 2009-06-04 13:16:12 UTC
Created attachment 26442 [details]
Full, fat Xorg.0.log :) logverbose 7
Comment 3 Rafał Miłecki 2009-06-04 14:25:37 UTC
Created attachment 26446 [details] [review]
Hack for rhd_monitor.c

The problem is that xf86DoEDID_DDC2 reads EDID of VGA, not PANEL.

If VGA is disconnected, xf86DoEDID_DDC2 returns NULL and we get PANEL info using AtomBIOS.

If VGA is connected, xf86DoEDID_DDC2 returns VGA's EDID and we treat it as PANEL's EDID... Failure guaranteed :)
Comment 4 Alex Deucher 2009-06-04 14:44:52 UTC
Can you attach your vbios?  Some laptops do have an edid wired up to a ddc line, so you still want to query it.  Might have the wrong entry for in the gpio_i2c table for LVDS or something like that.
Comment 5 Matthias Hopf 2009-06-05 02:22:05 UTC
Also, can you run conntest with and without attaching the monitor?
Comment 6 Rafał Miłecki 2009-06-05 08:10:20 UTC
Alex: sure, I know it's hack not real solution. Disabling EDID reading for everyone doesn't sound good.

Matthias: sure, I'll do this soon.

Is this possible we pass wrong argument (I2CBusPtr pBus) to xf86DoEDID_DDC2?
Comment 7 Rafał Miłecki 2009-06-05 08:11:05 UTC
Created attachment 26459 [details]
My M82's rom
Comment 8 Alex Deucher 2009-06-05 09:06:06 UTC
The LCD info in the object table doesn't actually have an i2c record associated with it, so the driver shouldn't be creating an ddc bus for the LCD.
Comment 9 Matthias Hopf 2009-06-05 09:44:16 UTC
(In reply to comment #8)
> The LCD info in the object table doesn't actually have an i2c record associated
> with it, so the driver shouldn't be creating an ddc bus for the LCD.

Hm:

(II) RADEONHD(0): Connector[0] {RHD_CONNECTOR_VGA, "VGA CRT1", RHD_DDC_0, RHD_HPD_NONE, { RHD_OUTPUT_DACA, RHD_OUTPUT_NONE } }
(II) RADEONHD(0): Connector[1] {RHD_CONNECTOR_PANEL, "LVDS LCD1", RHD_DDC_0, RHD_HPD_NONE, { RHD_OUTPUT_KLDSKP_LVTMA, RHD_OUTPUT_NONE } }
(II) RADEONHD(0): Connector[2] {RHD_CONNECTOR_DVI_SINGLE, "HDMI_TYPE_A DFP1", RHD_DDC_2, RHD_HPD_0, { RHD_OUTPUT_UNIPHYA, RHD_OUTPUT_NONE } }

So we presumably parse something wrong here. Probably a variable isn't cleared in the loop. Have to look at code.
Comment 10 Matthias Hopf 2009-06-05 10:25:53 UTC
Created attachment 26469 [details] [review]
Quick fix

Hopefully this fixes this issue.
New connectors were initialized with all '0', but DDC_NONE is 0xff...
So if there was no DDC object for a connector, it got DDC0.

It seems that only DDC has the exception that NONE is not 0. Something to think about.

Please test!
Comment 11 Rafał Miłecki 2009-06-05 12:57:25 UTC
Matthias: bingo. Can we commit this for now? Or would you like to refactor DCC_* values soon?
Comment 12 Marc Dietrich 2009-06-06 04:40:17 UTC
maybe this is a different issue, but I also having problems with a panel connected to vga. The screen looks washed out, maybe wrong timings. The radeon driver get's it right (but I have to specify the resolution). The patch doesn't help. Here is a diff between radeon and radeonhd:

--- radeon      2009-06-06 13:28:43.000104649 +0200
+++ radeonhd    2009-06-06 13:35:10.485106842 +0200
@@ -1,9 +1,9 @@                                    
 Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1280
-VGA-0 connected 1280x1024+0+0 (0x4d) normal (normal left inverted right x axis y axis) 307mm x 230mm
-       Identifier: 0x4b                                                                             
-       Timestamp:  9972487                                                                          
-       Subpixel:   no subpixels                                                                     
-       Clones:     DVI-0                                                                            
+VGA_1 connected 1280x1024+0+0 (0x3d) normal (normal left inverted right x axis y axis) 307mm x 230mm
+       Identifier: 0x3b                                                                             
+       Timestamp:  10345860                                                                         
+       Subpixel:   unknown                                                                          
+       Clones:     DVI-D_1                                                                          
        CRTC:       0                                                                                
        CRTCs:      0 1                                                                              
        Panning:    0x0+0+0                                                                          
@@ -13,82 +13,93 @@                                                                                  
                    0.000000 1.000000 0.000000                                                       
                    0.000000 0.000000 1.000000                                                       
                   filter:                                                                           
-       EDID_DATA:                                                                                   
-               00ffffffffffff0025b2108846020000                                                     
-               0b0b01022820186be80d99a057479826                                                     
-               10484cbfef80314f454f614f818f0101                                                     
-               0101010101014e0c80c020e01d103838                                                     
-               130033e610000018561320f830581f20                                                     
-               2040130033e610000018c31e00204100                                                     
-               20301060130033e610000018000000fd                                                     
-               00384b1e55ff010a2020202020200099                                                     
-       load_detection: 1 (0x00000001)  range:  (0,1)                                                
-  1280x1024 (0x4d)  135.0MHz +HSync +VSync *current +preferred                                      
+       _PanningArea:                                                                                
+       _OutputNumber: 1 (0x00000001)                                                                
+       ConnectorNumber: 1 (0x00000001)                                                              
+       ConnectorType:  VGA                                                                          
+       SignalFormat:   VGA                                                                                                                                  
+               supported: VGA                                                                                                                               
+  1280x1024 (0x3d)  139.2MHz -HSync +VSync *current +preferred                                                                                              
+        h: width  1280 start 1370 end 1507 total 1734 skew    0 clock   80.3KHz                                                                             
+        v: height 1024 start 1027 end 1034 total 1072           clock   74.9Hz                                                                              
+  1280x1024 (0x3e)  135.0MHz +HSync +VSync                                                                                                                  
         h: width  1280 start 1296 end 1440 total 1688 skew    0 clock   80.0KHz                                                                             
         v: height 1024 start 1025 end 1028 total 1066           clock   75.0Hz                                                                              
-  1152x864 (0x4e)  108.0MHz +HSync +VSync                                                                                                                   
+  1152x864 (0x3f)  108.0MHz +HSync +VSync                                                                                                                   
         h: width  1152 start 1216 end 1344 total 1600 skew    0 clock   67.5KHz                                                                             
         v: height  864 start  865 end  868 total  900           clock   75.0Hz                                                                              
-  1024x768 (0x4f)   78.8MHz -HSync -VSync                                                                                                                   
+  1024x768 (0x40)   82.2MHz -HSync +VSync                                                                                                                   
+        h: width  1024 start 1086 end 1194 total 1364 skew    0 clock   60.3KHz                                                                             
+        v: height  768 start  771 end  775 total  805           clock   74.9Hz                                                                              
+  1024x768 (0x41)   78.8MHz +HSync +VSync                                                                                                                   
+        h: width  1024 start 1040 end 1136 total 1312 skew    0 clock   60.1KHz                                                                             
+        v: height  768 start  769 end  772 total  800           clock   75.1Hz                                                                              
+  1024x768 (0x42)   78.8MHz -HSync -VSync                                                                                                                   
         h: width  1024 start 1040 end 1136 total 1312 skew    0 clock   60.0KHz                                                                             
         v: height  768 start  769 end  772 total  800           clock   75.0Hz                                                                              
-  1024x768 (0x50)   78.8MHz +HSync +VSync                                                                                                                   
-        h: width  1024 start 1040 end 1136 total 1312 skew    0 clock   60.0KHz                                                                             
-        v: height  768 start  769 end  772 total  800           clock   75.0Hz                                                                              
-  1024x768 (0x51)   75.0MHz -HSync -VSync                                                                                                                   
+  1024x768 (0x43)   75.0MHz -HSync -VSync                                                                                                                   
         h: width  1024 start 1048 end 1184 total 1328 skew    0 clock   56.5KHz                                                                             
         v: height  768 start  771 end  777 total  806           clock   70.1Hz                                                                              
-  1024x768 (0x52)   65.0MHz -HSync -VSync                                                                                                                   
+  1024x768 (0x44)   65.0MHz -HSync -VSync                                                                                                                   
         h: width  1024 start 1048 end 1184 total 1344 skew    0 clock   48.4KHz                                                                             
         v: height  768 start  771 end  777 total  806           clock   60.0Hz                                                                              
-  832x624 (0x53)   57.3MHz -HSync -VSync                                                                                                                    
+  832x624 (0x45)   57.3MHz -HSync -VSync                                                                                                                    
         h: width   832 start  864 end  928 total 1152 skew    0 clock   49.7KHz                                                                             
         v: height  624 start  625 end  628 total  667           clock   74.6Hz                                                                              
-  800x600 (0x54)   50.0MHz +HSync +VSync                                                                                                                    
+  800x600 (0x46)   50.0MHz +HSync +VSync                                                                                                                    
         h: width   800 start  856 end  976 total 1040 skew    0 clock   48.1KHz                                                                             
         v: height  600 start  637 end  643 total  666           clock   72.2Hz                                                                              
-  800x600 (0x55)   49.5MHz -HSync -VSync                                                                                                                    
-        h: width   800 start  832 end  896 total 1048 skew    0 clock   47.2KHz                                                                             
-        v: height  600 start  601 end  604 total  631           clock   74.9Hz                                                                              
-  800x600 (0x56)   49.5MHz +HSync +VSync                                                                                                                    
+  800x600 (0x47)   49.5MHz +HSync +VSync                                                                                                                    
         h: width   800 start  816 end  896 total 1056 skew    0 clock   46.9KHz                                                                             
         v: height  600 start  601 end  604 total  625           clock   75.0Hz                                                                              
-  800x600 (0x57)   40.0MHz +HSync +VSync                                                                                                                    
+  800x600 (0x48)   49.5MHz -HSync -VSync                                                                                                                    
+        h: width   800 start  832 end  896 total 1048 skew    0 clock   47.2KHz                                                                             
+        v: height  600 start  601 end  604 total  631           clock   74.9Hz                                                                              
+  800x600 (0x49)   49.2MHz -HSync +VSync                                                                                                                    
+        h: width   800 start  841 end  923 total 1046 skew    0 clock   47.1KHz                                                                             
+        v: height  600 start  603 end  607 total  629           clock   74.9Hz                                                                              
+  800x600 (0x4a)   40.0MHz +HSync +VSync                                                                                                                    
         h: width   800 start  840 end  968 total 1056 skew    0 clock   37.9KHz                                                                             
         v: height  600 start  601 end  605 total  628           clock   60.3Hz                                                                              
-  800x600 (0x58)   36.0MHz +HSync +VSync                                                                                                                    
+  800x600 (0x4b)   36.0MHz +HSync +VSync                                                                                                                    
         h: width   800 start  824 end  896 total 1024 skew    0 clock   35.2KHz                                                                             
         v: height  600 start  601 end  603 total  625           clock   56.2Hz                                                                              
-  640x480 (0x59)   31.5MHz -HSync -VSync                                                                                                                    
-        h: width   640 start  696 end  752 total  832 skew    0 clock   37.9KHz                                                                             
-        v: height  480 start  481 end  484 total  509           clock   74.4Hz                                                                              
-  640x480 (0x5a)   31.5MHz -HSync -VSync                                                                                                                    
+  640x480 (0x4c)   31.5MHz -HSync -VSync                                                                                                                    
         h: width   640 start  656 end  720 total  840 skew    0 clock   37.5KHz                                                                             
         v: height  480 start  481 end  484 total  500           clock   75.0Hz                                                                              
-  640x480 (0x5b)   31.5MHz -HSync -VSync                                                                                                                    
+  640x480 (0x4d)   31.5MHz -HSync -VSync                                                                                                                    
         h: width   640 start  664 end  704 total  832 skew    0 clock   37.9KHz                                                                             
-        v: height  480 start  489 end  492 total  520           clock   72.8Hz
-  640x480 (0x5a)   31.5MHz -HSync -VSync
-        h: width   640 start  656 end  720 total  840 skew    0 clock   37.5KHz
-        v: height  480 start  481 end  484 total  500           clock   75.0Hz
-  640x480 (0x5c)   30.2MHz -HSync -VSync
+        v: height  480 start  489 end  491 total  520           clock   72.8Hz
+  640x480 (0x4e)   31.5MHz -HSync -VSync
+        h: width   640 start  696 end  752 total  832 skew    0 clock   37.9KHz
+        v: height  480 start  481 end  484 total  509           clock   74.4Hz
+  640x480 (0x4f)   30.8MHz -HSync +VSync
+        h: width   640 start  666 end  730 total  820 skew    0 clock   37.5KHz
+        v: height  480 start  483 end  487 total  504           clock   74.4Hz
+  640x480 (0x50)   30.2MHz -HSync -VSync
         h: width   640 start  704 end  768 total  864 skew    0 clock   35.0KHz
         v: height  480 start  483 end  486 total  525           clock   66.7Hz
-  640x480 (0x5d)   25.2MHz -HSync -VSync
+  640x480 (0x51)   25.2MHz -HSync -VSync
         h: width   640 start  656 end  752 total  800 skew    0 clock   31.5KHz
-        v: height  480 start  490 end  492 total  525           clock   59.9Hz
-  720x400 (0x5e)   28.3MHz -HSync +VSync
+        v: height  480 start  490 end  492 total  525           clock   60.0Hz
+  720x400 (0x52)   28.3MHz -HSync +VSync
         h: width   720 start  738 end  846 total  900 skew    0 clock   31.5KHz
         v: height  400 start  412 end  414 total  449           clock   70.1Hz
-DVI-0 disconnected (normal left inverted right x axis y axis)
-       Identifier: 0x4c
-       Timestamp:  9972487
-       Subpixel:   horizontal rgb
-       Clones:     VGA-0
+DVI-D_1 disconnected (normal left inverted right x axis y axis)
+       Identifier: 0x3c
+       Timestamp:  10345860
+       Subpixel:   unknown
+       Clones:     VGA_1
        CRTCs:      0 1
        Transform:  1.000000 0.000000 0.000000
                    0.000000 1.000000 0.000000
                    0.000000 0.000000 1.000000
                   filter:
-       scaler: off
-       coherent_mode: 1 (0x00000001)   range:  (0,1)
+       _HDMI: 0 (0x00000000)   range:  (0,1)
+       _Coherent: 0 (0x00000000)       range:  (0,1)
+       _PanningArea:
+       _OutputNumber: 2 (0x00000002)
+       ConnectorNumber: 2 (0x00000002)
+       ConnectorType:  DVI-D
+       SignalFormat:   TMDS
+               supported: TMDS
Comment 13 Rafał Miłecki 2009-06-09 09:46:42 UTC
Fixed in 5dd9d814c8a9a35fbf5556d88297eb5e934731d7.

Marc: if you have other bug, please fill separated report for it, attaching all logs (xrandr, Xorg.0.log).


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.