Radeon S-Video Out has become black and white. Worked fine in 2.6.37
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
High
|
Unassigned |
Bug Description
The S-Video out of Radeon driver has become black and white in kernel 2.6.38.6. The regression happened around 2.6.37.2 as the driver worked fine in 2.6.37 but not in 2.6.37.2 I have a Radeon HD4850 card.
Here is the difference in the dmesg output from the two kernels. I can hardly notice any difference, other than timestamps.
2.6.38-6-generic
[ 9.422549] [drm] Initialized drm 1.1.0 20060810
[ 10.094022] [drm] radeon defaulting to kernel modesetting.
[ 10.094024] [drm] radeon kernel modesetting enabled.
[ 10.094105] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver
[ 10.095453] [drm] initializing kernel modesetting (RV770 0x1002:0x9442).
[ 10.095475] [drm] register mmio base: 0xFDFE0000
[ 10.095476] [drm] register mmio size: 65536
[ 10.097903] [drm] Detected VRAM RAM=512M, BAR=256M
[ 10.097906] [drm] RAM width 256bits DDR
[ 10.098018] [drm] radeon: 512M of VRAM memory ready
[ 10.098020] [drm] radeon: 512M of GTT memory ready.
[ 10.098033] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[ 10.098034] [drm] Driver supports precise vblank timestamp query.
[ 10.098097] [drm] radeon: irq initialized.
[ 10.098099] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 10.098748] [drm] Loading RV770 Microcode
[ 11.480076] [drm] ring test succeeded in 1 usecs
[ 11.480146] [drm] radeon: ib pool ready.
[ 11.480196] [drm] ib test succeeded in 0 usecs
[ 11.480198] [drm] Enabling audio support
[ 11.480389] [drm] Radeon Display Connectors
[ 11.480390] [drm] Connector 0:
[ 11.480391] [drm] DVI-I
[ 11.480392] [drm] HPD1
[ 11.480394] [drm] DDC: 0x7e60 0x7e60 0x7e64 0x7e64 0x7e68 0x7e68 0x7e6c 0x7e6c
[ 11.480395] [drm] Encoders:
[ 11.480396] [drm] DFP1: INTERNAL_UNIPHY
[ 11.480397] [drm] CRT2: INTERNAL_
[ 11.480398] [drm] Connector 1:
[ 11.480399] [drm] DIN
[ 11.480400] [drm] Encoders:
[ 11.480400] [drm] TV1: INTERNAL_
[ 11.480401] [drm] Connector 2:
[ 11.480402] [drm] DVI-I
[ 11.480403] [drm] HPD2
[ 11.480404] [drm] DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c
[ 11.480405] [drm] Encoders:
[ 11.480406] [drm] CRT1: INTERNAL_
[ 11.480407] [drm] DFP2: INTERNAL_
[ 11.536188] [drm] Internal thermal controller with fan control
[ 11.536219] [drm] radeon: power management initialized
[ 11.638668] [drm] fb mappable at 0xD0142000
[ 11.638669] [drm] vram apper at 0xD0000000
[ 11.638670] [drm] size 8294400
[ 11.638671] [drm] fb depth is 24
[ 11.638672] [drm] pitch is 7680
[ 11.638789] fb0: radeondrmfb frame buffer device
[ 11.638790] drm: registered panic notifier
[ 11.638794] [drm] Initialized radeon 2.8.0 20080528 for 0000:01:00.0 on minor 0
[ 22.170538] [drm:drm_
2.6.37-
[ 15.278388] [drm] Initialized drm 1.1.0 20060810
[ 15.654177] [drm] radeon defaulting to kernel modesetting.
[ 15.654178] [drm] radeon kernel modesetting enabled.
[ 15.654692] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver
[ 15.656087] [drm] initializing kernel modesetting (RV770 0x1002:0x9442).
[ 15.660089] [drm] register mmio base: 0xFDFE0000
[ 15.660090] [drm] register mmio size: 65536
[ 15.662457] [drm] Detected VRAM RAM=512M, BAR=256M
[ 15.662460] [drm] RAM width 256bits DDR
[ 15.670407] [drm] radeon: 512M of VRAM memory ready
[ 15.670408] [drm] radeon: 512M of GTT memory ready.
[ 15.670477] [drm] radeon: irq initialized.
[ 15.670479] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 15.671039] [drm] Loading RV770 Microcode
[ 15.870579] [drm] ring test succeeded in 1 usecs
[ 15.870647] [drm] radeon: ib pool ready.
[ 15.870699] [drm] ib test succeeded in 0 usecs
[ 15.870701] [drm] Enabling audio support
[ 15.870886] [drm] Radeon Display Connectors
[ 15.870887] [drm] Connector 0:
[ 15.870888] [drm] DVI-I
[ 15.870889] [drm] HPD1
[ 15.870890] [drm] DDC: 0x7e60 0x7e60 0x7e64 0x7e64 0x7e68 0x7e68 0x7e6c 0x7e6c
[ 15.870891] [drm] Encoders:
[ 15.870892] [drm] DFP1: INTERNAL_UNIPHY
[ 15.870893] [drm] CRT2: INTERNAL_
[ 15.870894] [drm] Connector 1:
[ 15.870895] [drm] DIN
[ 15.870896] [drm] Encoders:
[ 15.870897] [drm] TV1: INTERNAL_
[ 15.870898] [drm] Connector 2:
[ 15.870898] [drm] DVI-I
[ 15.870899] [drm] HPD2
[ 15.870901] [drm] DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c
[ 15.870902] [drm] Encoders:
[ 15.870903] [drm] CRT1: INTERNAL_
[ 15.870904] [drm] DFP2: INTERNAL_
[ 15.936495] [drm] Internal thermal controller with fan control
[ 15.936529] [drm] radeon: power management initialized
[ 16.028673] [drm] fb mappable at 0xD0142000
[ 16.028674] [drm] vram apper at 0xD0000000
[ 16.028675] [drm] size 8294400
[ 16.028676] [drm] fb depth is 24
[ 16.028677] [drm] pitch is 7680
[ 16.028790] fb0: radeondrmfb frame buffer device
[ 16.028792] drm: registered panic notifier
[ 16.028795] [drm] Initialized radeon 2.7.0 20080528 for 0000:01:00.0 on minor 0
[ 20.216393] [drm:drm_
[ 20.981880] Modules linked in: nfs lockd fscache nfs_acl auth_rpcgss sunrpc
snd_hda_codec_hdmi tuner_simple tuner_types wm8775 tda9887 tda8290
snd_hda_
snd_hda_codec snd_seq_midi btusb bluetooth v4l2_common snd_rawmidi videodev
snd_hwdep snd_seq_midi_event v4l1_compat v4l2_compat_ioctl32 tveeprom snd_pcm
snd_seq ttm joydev hid_topseed drm_kms_helper serio_raw drm hid_logitech
i2c_piix4 ff_memless lp ppdev parport_pc parport snd_seq_device snd_timer
i2c_algo_bit k10temp edac_core edac_mce_amd cdc_acm usblp shpchp snd soundcore
snd_page_alloc usbhid hid usb_storage uas firewire_ohci ahci firewire_core
crc_itu_t r8169 pata_atiixp libahci
ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: linux-image-
Regression: Yes
Reproducible: Yes
ProcVersionSign
Uname: Linux 2.6.38-6-generic x86_64
AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.23.
Architecture: amd64
AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/by-path', '/dev/snd/
CRDA: Error: [Errno 2] No such file or directory
Card0.Amixer.info:
Card hw:0 'SB'/'HDA ATI SB at 0xfe024000 irq 16'
Mixer name : 'Realtek ALC888'
Components : 'HDA:10ec0888,
Controls : 38
Simple ctrls : 21
Card1.Amixer.info:
Card hw:1 'HDMI'/'HDA ATI HDMI at 0xfdffc000 irq 44'
Mixer name : 'ATI R6xx HDMI'
Components : 'HDA:1002aa01,
Controls : 4
Simple ctrls : 1
Card1.Amixer.
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
CheckboxSubmission: 8d81d8a2e14e805
CheckboxSystem: 4ed15c40009aa6f
Date: Mon Mar 14 12:04:19 2011
HibernationDevice: RESUME=
IwConfig:
lo no wireless extensions.
eth0 no wireless extensions.
MachineType: Gigabyte Technology Co., Ltd. GA-MA770T-UD3P
ProcEnviron:
LANGUAGE=en_GB:en
PATH=(custom, user)
LANG=en_GB.UTF-8
SHELL=/bin/bash
ProcKernelCmdLine: BOOT_IMAGE=
RelatedPackageV
linux-
linux-
linux-firmware 1.48
RfKill:
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 06/28/2010
dmi.bios.vendor: Award Software International, Inc.
dmi.bios.version: F9
dmi.board.name: GA-MA770T-UD3P
dmi.board.vendor: Gigabyte Technology Co., Ltd.
dmi.chassis.type: 3
dmi.chassis.vendor: Gigabyte Technology Co., Ltd.
dmi.modalias: dmi:bvnAwardSof
dmi.product.name: GA-MA770T-UD3P
dmi.sys.vendor: Gigabyte Technology Co., Ltd.
Changed in linux (Ubuntu): | |
importance: | Undecided → High |
Changed in linux (Ubuntu): | |
status: | New → Confirmed |
Changed in linux (Ubuntu): | |
status: | Confirmed → Fix Released |
The patch from this thread https:/ /bugzilla. kernel. org/show_ bug.cgi? id=30832 seems to fix it. I have tested with mainline 2.6.38 smf 2.6.37.4
Some boards seem to prefer the legacy pll algo for tv-out.
Fixes: /bugzilla. kernel. org/show_ bug.cgi? id=30832
https:/
Signed-off-by: Alex Deucher <email address hidden>
--- gpu/drm/ radeon/ atombios_ crtc.c | 6 +++++-
drivers/
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/drivers/ gpu/drm/ radeon/ atombios_ crtc.c b/drivers/ gpu/drm/ radeon/ atombios_ crtc.c gpu/drm/ radeon/ atombios_ crtc.c gpu/drm/ radeon/ atombios_ crtc.c crtc_set_ pll(struct drm_crtc *crtc, struct drm_display_mode adjust_ pll(crtc, mode, pll, ss_enabled, &ss);
index c74f646..80e26c0 100644
--- a/drivers/
+++ b/drivers/
@@ -957,7 +957,11 @@ static void atombios_
/* adjust pixel clock as needed */
adjusted_clock = atombios_
- if (ASIC_IS_ AVIVO(rdev) ) encoder- >active_ device & (ATOM_DEVICE_ TV_SUPPORT) ) compute_ pll_legacy( pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div, AVIVO(rdev) ) compute_ pll_avivo( pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div,
+ if (radeon_
+ /* TV seems to prefer the legacy algo on some boards */
+ radeon_
+ &ref_div, &post_div);
+ else if (ASIC_IS_
radeon_
&ref_div, &post_div);
else