• Alex Deucher's avatar
    drm/radeon: fix AVI infoframe generation · 9f7fbcd6
    Alex Deucher authored
    commit f100380e upstream.
    
    - remove adding 2 to checksum, this is incorrect.
    
    This was incorrectly introduced in:
    92db7f6c
    http://lists.freedesktop.org/archives/dri-devel/2011-December/017717.html
    However, the off by 2 was due to adding the version twice.
    From the examples in the URL above:
    
    [Rafał Miłecki][RV620] fglrx:
    0x7454: 00 A8 5E 79     R600_HDMI_VIDEOINFOFRAME_0
    0x7458: 00 28 00 10     R600_HDMI_VIDEOINFOFRAME_1
    0x745C: 00 48 00 28     R600_HDMI_VIDEOINFOFRAME_2
    0x7460: 02 00 00 48     R600_HDMI_VIDEOINFOFRAME_3
    ===================
    (0x82 + 0x2 + 0xD) + 0x1F8 = 0x289
    -0x289 = 0x77
    
    However, the payload sum is not 0x1f8, it's 0x1f6.
    00 + A8 + 5E + 00 +
    00 + 28 + 00 + 10 +
    00 + 48 + 00 + 28 +
    00 + 48 =
    0x1f6
    
    Bits 25:24 of HDMI_VIDEOINFOFRAME_3 are the packet version, not part
    of the payload.  So the total would be:
    (0x82 + 0x2 + 0xD) + 0x1f6 = 0x287
    -0x287 = 0x79
    
    - properly emit the AVI infoframe version.  This was not being
    emitted previous which is probably what caused the issue above.
    
    This should fix blank screen when HDMI audio is enabled on
    certain monitors.
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Cc: Rafał Miłecki <zajec5@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    9f7fbcd6
evergreen_hdmi.c 10.5 KB