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

Commit 30634e8e authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

[media] sliced vbi: subdevs shouldn't clear the full v4l2_sliced_vbi_format struct



Various subdevs cleared the full v4l2_sliced_vbi_format struct, when
only the service_set/lines fields should have been cleared.
Due to this the io_size field was wrongly cleared to 0, causing a
v4l2-compliance error.

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 34a6b7d0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -96,7 +96,8 @@ int cx25840_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *
	int is_pal = !(state->std & V4L2_STD_525_60);
	int i;

	memset(svbi, 0, sizeof(*svbi));
	memset(svbi->service_lines, 0, sizeof(svbi->service_lines));
	svbi->service_set = 0;
	/* we're done if raw VBI is active */
	if ((cx25840_read(client, 0x404) & 0x10) == 0)
		return 0;
+2 −1
Original line number Diff line number Diff line
@@ -1066,7 +1066,8 @@ static int saa711x_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_f
	};
	int i;

	memset(sliced, 0, sizeof(*sliced));
	memset(sliced->service_lines, 0, sizeof(sliced->service_lines));
	sliced->service_set = 0;
	/* done if using raw VBI */
	if (saa711x_read(sd, R_80_GLOBAL_CNTL_1) & 0x10)
		return 0;
+1 −1
Original line number Diff line number Diff line
@@ -625,7 +625,7 @@ static int saa7127_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_f
{
	struct saa7127_state *state = to_state(sd);

	memset(fmt, 0, sizeof(*fmt));
	memset(fmt->service_lines, 0, sizeof(fmt->service_lines));
	if (state->vps_enable)
		fmt->service_lines[0][16] = V4L2_SLICED_VPS;
	if (state->wss_enable)
+1 −1
Original line number Diff line number Diff line
@@ -1020,7 +1020,7 @@ static int tvp5150_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_f
{
	int i, mask = 0;

	memset(svbi, 0, sizeof(*svbi));
	memset(svbi->service_lines, 0, sizeof(svbi->service_lines));

	for (i = 0; i <= 23; i++) {
		svbi->service_lines[0][i] =
+3 −1
Original line number Diff line number Diff line
@@ -143,7 +143,9 @@ int cx18_av_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *
	int is_pal = !(state->std & V4L2_STD_525_60);
	int i;

	memset(svbi, 0, sizeof(*svbi));
	memset(svbi->service_lines, 0, sizeof(svbi->service_lines));
	svbi->service_set = 0;

	/* we're done if raw VBI is active */
	if ((cx18_av_read(cx, 0x404) & 0x10) == 0)
		return 0;
Loading