• A
    drm/radeon: fix AVI infoframe generation · f100380e
    Alex Deucher 提交于
    - 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: NAlex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Cc: Rafał Miłecki <zajec5@gmail.com>
    f100380e
r600_hdmi.c 16.8 KB