|Summary:||DisplayPort no longer working after patch|
|Product:||Drivers||Reporter:||Kjell Rune Skaaraas (temp9476-kernel)|
|Component:||Video(DRI - non Intel)||Assignee:||Jean Delvare (jdelvare)|
|Bug Depends on:|
Description Kjell Rune Skaaraas 2010-11-19 23:40:53 UTC
With a Radeon HD5850 on the open source radeon drivers my DisplayPort monitor stopped working between rc1 and rc2. The card is reported as having only three outputs now, HDMI and 2xDVI. I did a bisect and the cause is this commit: 2236baa75f704851d3cd3310569058151acb1f06 is the first bad commit commit 2236baa75f704851d3cd3310569058151acb1f06 Author: Jean Delvare <email@example.com> Date: Mon Nov 15 22:40:38 2010 +0100 i2c: Sanity checks on adapter registration Make sure I2C adapters being registered have the required struct fields set. If they don't, problems will happen later. Signed-off-by: Jean Delvare <firstname.lastname@example.org> :040000 040000 d56136ee874424d0d5e11a6483ea1f393b35edb8 0cf1eaab8f5fd4a1b1786e7c745cb709ade50c28 M drivers I don't know what "problems" will happen later, I have not noticed any problems except it's sometimes a bit hard to make it wake after sleeping. Let me know what more details you need. Regards, Kjell Rune
Comment 1 Kjell Rune Skaaraas 2010-11-19 23:46:49 UTC
Ah, looked at commit, then searched dmesg. I outlined it with ***: [ 3.820055] [drm] radeon defaulting to kernel modesetting. [ 3.820057] [drm] radeon kernel modesetting enabled. [ 3.820091] radeon 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.820094] radeon 0000:01:00.0: setting latency timer to 64 [ 3.821271] [drm] initializing kernel modesetting (CYPRESS 0x1002:0x6899). [ 3.821550] [drm] register mmio base: 0xFBBC0000 [ 3.821553] [drm] register mmio size: 131072 [ 3.821645] ATOM BIOS: CYPRESS [ 3.821661] radeon 0000:01:00.0: VRAM: 1024M 0x00000000 - 0x3FFFFFFF (1024M used) [ 3.821663] radeon 0000:01:00.0: GTT: 512M 0x40000000 - 0x5FFFFFFF [ 3.821666] mtrr: type mismatch for e0000000,10000000 old: write-back new: write-combining [ 3.821668] [drm] Detected VRAM RAM=1024M, BAR=256M [ 3.821669] [drm] RAM width 256bits DDR [ 3.821818] [TTM] Zone kernel: Available graphics memory: 4094930 kiB. [ 3.821819] [TTM] Zone dma32: Available graphics memory: 2097152 kiB. [ 3.821820] [TTM] Initializing pool allocator. [ 3.821829] [drm] radeon: 1024M of VRAM memory ready [ 3.821830] [drm] radeon: 512M of GTT memory ready. [ 3.821869] radeon 0000:01:00.0: irq 46 for MSI/MSI-X [ 3.821873] radeon 0000:01:00.0: radeon: using MSI. [ 3.821902] [drm] radeon: irq initialized. [ 3.821903] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 3.822357] [drm] Loading CYPRESS Microcode [ 3.826259] radeon 0000:01:00.0: WB enabled [ 3.842864] [drm] ring test succeeded in 1 usecs [ 3.842932] [drm] radeon: ib pool ready. [ 3.843067] [drm] ib test succeeded in 0 usecs [ 3.843076] failed to evaluate ATIF got AE_BAD_PARAMETER ***[ 3.844511] i2c-core: Attempt to register an adapter with no name! [ 3.844550] [drm] Failed to register i2c DP-auxch [ 3.844603] [drm] Radeon Display Connectors [ 3.844604] [drm] Connector 0: [ 3.844605] [drm] HDMI-A [ 3.844606] [drm] HPD5 [ 3.844607] [drm] DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c [ 3.844608] [drm] Encoders: [ 3.844609] [drm] DFP2: INTERNAL_UNIPHY2 [ 3.844610] [drm] Connector 1: [ 3.844611] [drm] DVI-I [ 3.844611] [drm] HPD1 [ 3.844612] [drm] DDC: 0x6450 0x6450 0x6454 0x6454 0x6458 0x6458 0x645c 0x645c [ 3.844613] [drm] Encoders: [ 3.844614] [drm] DFP3: INTERNAL_UNIPHY1 [ 3.844615] [drm] CRT2: INTERNAL_KLDSCP_DAC2 [ 3.844616] [drm] Connector 2: [ 3.844617] [drm] DVI-I [ 3.844617] [drm] HPD6 [ 3.844619] [drm] DDC: 0x6470 0x6470 0x6474 0x6474 0x6478 0x6478 0x647c 0x647c [ 3.844620] [drm] Encoders: [ 3.844620] [drm] DFP4: INTERNAL_UNIPHY [ 3.844621] [drm] CRT1: INTERNAL_KLDSCP_DAC1
Comment 2 Kjell Rune Skaaraas 2010-11-20 00:03:38 UTC
Turns out it's actually a bug in the radeon driver, it has the name just forgets to set it before calling, duh. This patch will fix it. Also changing to DRI (non-intel) where it belongs... diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c index 0cfbba0..d71d693 100644 --- a/drivers/gpu/drm/radeon/radeon_i2c.c +++ b/drivers/gpu/drm/radeon/radeon_i2c.c @@ -947,6 +947,7 @@ struct radeon_i2c_chan *radeon_i2c_create_dp(struct drm_device *dev, i2c->adapter.owner = THIS_MODULE; i2c->dev = dev; i2c_set_adapdata(&i2c->adapter, i2c); + sprintf(i2c->adapter.name, "Radeon i2c dp bus %s", name); i2c->adapter.algo_data = &i2c->algo.dp; i2c->algo.dp.aux_ch = radeon_dp_i2c_aux_ch; i2c->algo.dp.address = 0;
Comment 3 Kjell Rune Skaaraas 2010-11-20 00:04:15 UTC
Turns out I can't change the assignee so you must do it...
Comment 4 Kjell Rune Skaaraas 2010-11-20 00:24:26 UTC
Meh, and according to this the fix is already going into rc3 according to http://lists.freedesktop.org/archives/dri-devel/2010-November/005596.html Alex Deucher (12): drm/radeon/kms: register an i2c adapter name for the dp aux bus So... if I can set it resolved I will now, if not you do it...
Comment 5 Rafael J. Wysocki 2010-11-20 01:41:42 UTC
First-Bad-Commit : 2236baa75f704851d3cd3310569058151acb1f06
Comment 6 Rafael J. Wysocki 2010-12-02 21:21:54 UTC
Fixed by commit a5193fe .