Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b60908a4 authored by Martin Bugge's avatar Martin Bugge Committed by Mauro Carvalho Chehab
Browse files

[media] adv7842: log-status for Audio Video Info frames (AVI)



Clear any pending AVI checksum-errors.
To be able to display last received AVI.

Signed-off-by: default avatarMartin Bugge <marbugge@cisco.com>
Cc: Mats Randgaard <matrandg@cisco.com>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 81ba0a4e
Loading
Loading
Loading
Loading
+12 −9
Original line number Original line Diff line number Diff line
@@ -2191,7 +2191,8 @@ static void print_avi_infoframe(struct v4l2_subdev *sd)
{
{
	int i;
	int i;
	uint8_t buf[14];
	uint8_t buf[14];
	uint8_t avi_inf_len;
	u8 avi_len;
	u8 avi_ver;
	struct avi_info_frame avi;
	struct avi_info_frame avi;


	if (!(hdmi_read(sd, 0x05) & 0x80)) {
	if (!(hdmi_read(sd, 0x05) & 0x80)) {
@@ -2204,18 +2205,20 @@ static void print_avi_infoframe(struct v4l2_subdev *sd)
	}
	}


	if (io_read(sd, 0x88) & 0x10) {
	if (io_read(sd, 0x88) & 0x10) {
		/* Note: the ADV7842 calculated incorrect checksums for InfoFrames
		v4l2_info(sd, "AVI infoframe checksum error has occurred earlier\n");
		   with a length of 14 or 15. See the ADV7842 Register Settings
		io_write(sd, 0x8a, 0x10); /* clear AVI_INF_CKS_ERR_RAW */
		   Recommendations document for more details. */
		if (io_read(sd, 0x88) & 0x10) {
		v4l2_info(sd, "AVI infoframe checksum error\n");
			v4l2_info(sd, "AVI infoframe checksum error still present\n");
		return;
			io_write(sd, 0x8a, 0x10); /* clear AVI_INF_CKS_ERR_RAW */
		}
	}
	}


	avi_inf_len = infoframe_read(sd, 0xe2);
	avi_len = infoframe_read(sd, 0xe2);
	avi_ver = infoframe_read(sd, 0xe1);
	v4l2_info(sd, "AVI infoframe version %d (%d byte)\n",
	v4l2_info(sd, "AVI infoframe version %d (%d byte)\n",
		  infoframe_read(sd, 0xe1), avi_inf_len);
		  avi_ver, avi_len);


	if (infoframe_read(sd, 0xe1) != 0x02)
	if (avi_ver != 0x02)
		return;
		return;


	for (i = 0; i < 14; i++)
	for (i = 0; i < 14; i++)