Re: [PATCH v6] drm/radeon: fix internal display on iMac11,1 (RV770/DCE3.1)

Lukas Wunner <[email protected]>
Newsgroups org.freedesktop.lists.amd-gfx,org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
On Mon, Aug 17, 2026 at 02:43:26AM +0200, Gilles Risch 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]>

Reviewed-by: Lukas Wunner <[email protected]>

> Good morning,
> 
> this is v6 of the patch, rebased on top of amd-staging-drm-next
> (agd5f/linux).
> 
> There are no functional or code changes since v5.
> 
> Regarding Lukas Wunner's previous Reviewed-by (which was provided on v2),
> I have kept him in CC so he can confirm if his review still stands given
> the changes between v2 and v5.
> 
> Could you have a look at this when you have a spare moment?
> 
> Regards,
> Gilles
> 
> Changes in v6:
> - Rebased on amd-staging-drm-next (no functional/code changes since v5)
> ---

Put additional information like this below the three dashes
so that it's not committed to the git repo when the maintainer
applies your patch.

> -	if (ASIC_IS_DCE32(rdev)) {
> -		if (dmi_match(DMI_PRODUCT_NAME, "iMac10,1") ||
> -		    dmi_match(DMI_PRODUCT_NAME, "iMac11,2"))
> -			enc_idx = (dig->linkb) ? 1 : 0;
> -		else
> -			enc_idx = radeon_crtc->crtc_id;
> +	if (dmi_match(DMI_PRODUCT_NAME, "iMac10,1") ||
> +	    dmi_match(DMI_PRODUCT_NAME, "iMac11,1") ||
> +	    dmi_match(DMI_PRODUCT_NAME, "iMac11,2")) {
> +		enc_idx = (dig->linkb) ? 1 : 0;
> +		goto assigned;
> +	}

Nit:
If the number of dmi_match() calls exceeds one or two, for readability
it's usually a good idea to create a table and match against that with
dmi_check_system().

Thanks,

Lukas
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.