Re: [PATCH v5] drm/radeon: fix internal display on iMac11,1 (RV770/DCE3.1)
Erik Gregg <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <010001a01df94f48-3026542f-b8eb-4661-868e-1d35cfd0254b-000000@email.amazonses.com> |
On Mon, 1 Jun 2026 23:19:32 +0200, Gilles Risch <[email protected]> wrote: > The Apple iMac11,1 (27-inch, Late 2009) uses a Mobility Radeon HD 4850 > (RV770/DCE3.1) with a 2560x1440 internal panel on an internal > DisplayPort path. Without this fix the display stays dark under KMS. > > This machine suffers from the same issue as iMac10,1 and iMac11,2: > Apple routes the internal display through Link B of the DIG encoder > instead of Link A. Add iMac11,1 to the existing DMI quirk and move > the Apple-specific encoder assignment into its own block, independent > of the DCE version check. > > Additionally, the 2560x1440 panel requires RADEON_PLL_USE_FRAC_FB_DIV > and ATOM_ENCODER_CMD_DP_VIDEO_ON, limited to iMac11,1 via dmi_match() > to avoid affecting other boards. > > Signed-off-by: Gilles Risch <[email protected]> I tested this patch on top of 7.1.7-arch1 on a Late 2009 27" iMac11,1 with the Mobility Radeon HD 4850. With nomodeset the machine boots with a working (efifb) console. On vanilla 7.1.7 without nomodeset the panel stays completely black (backlight off) and no radeon init is visible in dmesg over SSH. With the patch and without nomodeset, radeon initializes normally per dmesg, but at the fbcon modeset (~4s) the panel goes blank and then shows flashing horizontal lines that start at the top and sweep down at regular intervals. It never recovers. The logs below are from that case, gathered by logging in blind on the console and running commands blind. I tried radeon.dpm=0, radeon.audio=0, video=eDP-1:2560x1440@60 and radeon.modeset=1, with no change. Renderer: AMD RV770 (DRM 2.51.0 / 7.1.7-arch1-1-imac), Mesa 26.1.6 [ 3.028962] radeon 0000:02:00.0: fence driver on ring 3 uses gpu addr 0x0000000020000c0c [ 3.029207] radeon 0000:02:00.0: fence driver on ring 5 uses gpu addr 0x0000000000056230 [ 3.030250] radeon 0000:02:00.0: radeon: using MSI. [ 3.030275] [drm] radeon: irq initialized. [ 3.076796] [drm] ring test on 0 succeeded in 1 usecs [ 3.076803] [drm] ring test on 3 succeeded in 2 usecs [ 3.252855] radeon 0000:02:00.0: [drm] ring test on 5 succeeded in 1 usecs [ 3.252861] radeon 0000:02:00.0: [drm] UVD initialized successfully. [ 3.253264] [drm] ib test on ring 0 succeeded in 0 usecs [ 3.253283] [drm] ib test on ring 3 succeeded in 0 usecs [ 3.906199] radeon 0000:02:00.0: [drm] ib test on ring 5 succeeded [ 3.906669] [drm] radeon atom DIG backlight initialized [ 3.906672] radeon 0000:02:00.0: [drm] Radeon Display Connectors [ 3.906674] radeon 0000:02:00.0: [drm] Connector 0: [ 3.906676] radeon 0000:02:00.0: [drm] DP-1 [ 3.906677] radeon 0000:02:00.0: [drm] HPD2 [ 3.906679] radeon 0000:02:00.0: [drm] DDC: 0x7e60 0x7e60 0x7e64 0x7e64 0x7e68 0x7e68 0x7e6c 0x7e6c [ 3.906682] radeon 0000:02:00.0: [drm] Encoders: [ 3.906683] radeon 0000:02:00.0: [drm] DFP1: INTERNAL_UNIPHY [ 3.906685] radeon 0000:02:00.0: [drm] Connector 1: [ 3.906687] radeon 0000:02:00.0: [drm] eDP-1 [ 3.906688] radeon 0000:02:00.0: [drm] HPD3 [ 3.906689] radeon 0000:02:00.0: [drm] DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c [ 3.906692] radeon 0000:02:00.0: [drm] Encoders: [ 3.906693] radeon 0000:02:00.0: [drm] LCD1: INTERNAL_UNIPHY [ 3.906695] radeon 0000:02:00.0: [drm] Connector 2: [ 3.906697] radeon 0000:02:00.0: [drm] VGA-1 [ 3.906698] radeon 0000:02:00.0: [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c [ 3.906701] radeon 0000:02:00.0: [drm] Encoders: [ 3.906702] radeon 0000:02:00.0: [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 3.915213] [drm] Initialized radeon 2.51.0 for 0000:02:00.0 on minor 0 [ 3.988184] [drm] fb mappable at 0xC0347000 [ 3.988187] [drm] vram apper at 0xC0000000 [ 3.988188] [drm] size 14745600 [ 3.988189] [drm] fb depth is 24 [ 3.988190] [drm] pitch is 10240 [ 3.988263] fbcon: radeondrmfb (fb0) is primary device [ 4.026022] radeon 0000:02:00.0: [drm] fb0: radeondrmfb frame buffer device [ 5.366673] systemd[1]: Load Kernel Module drm skipped, unmet condition check ConditionKernelModuleLoaded=!drm [ 8.464118] snd_hda_intel 0000:02:00.1: bound 0000:02:00.0 (ops radeon_audio_component_bind_ops [radeon]) Happy to test further patches or gather more logs. Regards, Erik