• Mario Kleiner's avatar
    drm/radeon: Fix eDP for single-display iMac10,1 (v2) · 661a5bc3
    Mario Kleiner authored
    [ Upstream commit 564d8a2c ]
    
    The late 2009, 27 inch Apple iMac10,1 has an
    internal eDP display and an external Mini-
    Displayport output, driven by a DCE-3.2, RV730
    Radeon Mobility HD-4670.
    
    The machine worked fine in a dual-display setup
    with eDP panel + externally connected HDMI
    or DVI-D digital display sink, connected via
    MiniDP to DVI or HDMI adapter.
    
    However, booting the machine single-display with
    only eDP panel results in a completely black
    display - even backlight powering off, as soon as
    the radeon modesetting driver loads.
    
    This patch fixes the single dispay eDP case by
    assigning encoders based on dig->linkb, similar
    to DCE-4+. While this should not be generally
    necessary (Alex: "...atom on normal boards
    should be able to handle any mapping."), Apple
    seems to use some special routing here.
    
    One remaining problem not solved by this patch
    is that an external Minidisplayport->DP sink
    does still not work on iMac10,1, whereas external
    DVI and HDMI sinks continue to work.
    
    The problem affects at least all tested kernels
    since Linux 3.13 - didn't test earlier kernels, so
    backporting to stable probably makes sense.
    
    v2: With the original patch from 2016, Alex was worried it
        will break other DCE3.2 systems. Use dmi_match() to
        apply this special encoder assignment only for the
        Apple iMac 10,1 from late 2009.
    Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: Michel Dänzer <michel.daenzer@amd.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
    661a5bc3
atombios_encoders.c 89.4 KB