[PATCH] drm/radeon/kms: workaround invalid AVI infoframe checksum issue

Rafał Miłecki zajec5 at gmail.com
Fri Dec 23 11:39:33 PST 2011


W dniu 23 grudnia 2011 20:32 użytkownik Rafał Miłecki
<zajec5 at gmail.com> napisał:
>
> Cc: stable at vger.kernel.org
> Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
> ---
> I'd like to propose taking this patch into older releases. It's really
> trivial while it fixes important feature.
>
> This change was verified to fix both issues with no video I've
> investigated. I've also checked checksum calculation with fglrx on:
> RV620, HD54xx, HD5450, HD6310, HD6320.

My cases I've used to check fglrx behavior:


[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



[Rafał Miłecki][HD6320] fglrx:
0x7c84: 00 A8 5E FE	R600_HDMI_VIDEOINFOFRAME_0
0x7c88: 00 1C 00 04	R600_HDMI_VIDEOINFOFRAME_1
0x7c8c: 00 32 02 D2	R600_HDMI_VIDEOINFOFRAME_2
0x7c90: 02 00 06 3F	R600_HDMI_VIDEOINFOFRAME_3
===================
(0x82 + 0x2 + 0xD) + 0x273 = 0x304
-0x304 = 0xFC



[Nirbheek C.][HD5450] fglrx:
0x10884 00 a8 5e 4f	R600_HDMI_VIDEOINFOFRAME_0
0x10888 00 2b 00 10	R600_HDMI_VIDEOINFOFRAME_1
0x1088c 00 4c 04 3b	R600_HDMI_VIDEOINFOFRAME_2
0x10890 02 00 08 4c	R600_HDMI_VIDEOINFOFRAME_3
===================
(0x82 + 0x2 + 0xD) + 0x222 = 0x2B3
-0x2B3 = 0x4D



[Radu A.][HD5400] fglrx:
0x10884 00 08 1e 22	R600_HDMI_VIDEOINFOFRAME_0
0x10888 00 00 00 00	R600_HDMI_VIDEOINFOFRAME_1
0x1088c 00 00 03 1c	R600_HDMI_VIDEOINFOFRAME_2
0x10890 02 00 07 01	R600_HDMI_VIDEOINFOFRAME_3
===================
(0x82 + 0x2 + 0xD) + 0x4F = 0xE0
-0xE0 = 0x20



[Zveroy][HD6310] fglrx:
0x7c84 00 08 1e 30	R600_HDMI_VIDEOINFOFRAME_0
0x7c88 00 00 00 00	R600_HDMI_VIDEOINFOFRAME_1
0x7c8c 00 00 03 1f	R600_HDMI_VIDEOINFOFRAME_2
0x7c90 02 00 06 f1	R600_HDMI_VIDEOINFOFRAME_3
===================
(0x82 + 0x2 + 0xD) + 0x141= 0x1D2
-0x1D2 = 0x2E


As you can see, the checksum we calculate is always too low by 0x2 in
comparison to fglrx.

-- 
Rafał


More information about the dri-devel mailing list