aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2012-09-05 09:38:10 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-10-01 16:12:51 -0400
commit30634e8e41d413b0084ba29f843361a1fd9fbdce (patch)
tree0712b67462e242c926502ff697beed75b6f078d6 /drivers/media
parent34a6b7d093d8fe738ada191b36648d00bc18b7eb (diff)
[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: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/i2c/cx25840/cx25840-vbi.c3
-rw-r--r--drivers/media/i2c/saa7115.c3
-rw-r--r--drivers/media/i2c/saa7127.c2
-rw-r--r--drivers/media/i2c/tvp5150.c2
-rw-r--r--drivers/media/pci/cx18/cx18-av-vbi.c4
-rw-r--r--drivers/media/pci/cx18/cx18-ioctl.c4
-rw-r--r--drivers/media/pci/ivtv/ivtv-ioctl.c1
7 files changed, 10 insertions, 9 deletions
diff --git a/drivers/media/i2c/cx25840/cx25840-vbi.c b/drivers/media/i2c/cx25840/cx25840-vbi.c
index 64a4004f8a97..c39e91dc1137 100644
--- a/drivers/media/i2c/cx25840/cx25840-vbi.c
+++ b/drivers/media/i2c/cx25840/cx25840-vbi.c
@@ -96,7 +96,8 @@ int cx25840_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *
96 int is_pal = !(state->std & V4L2_STD_525_60); 96 int is_pal = !(state->std & V4L2_STD_525_60);
97 int i; 97 int i;
98 98
99 memset(svbi, 0, sizeof(*svbi)); 99 memset(svbi->service_lines, 0, sizeof(svbi->service_lines));
100 svbi->service_set = 0;
100 /* we're done if raw VBI is active */ 101 /* we're done if raw VBI is active */
101 if ((cx25840_read(client, 0x404) & 0x10) == 0) 102 if ((cx25840_read(client, 0x404) & 0x10) == 0)
102 return 0; 103 return 0;
diff --git a/drivers/media/i2c/saa7115.c b/drivers/media/i2c/saa7115.c
index 2107336cd836..6b6788cd08f6 100644
--- a/drivers/media/i2c/saa7115.c
+++ b/drivers/media/i2c/saa7115.c
@@ -1066,7 +1066,8 @@ static int saa711x_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_f
1066 }; 1066 };
1067 int i; 1067 int i;
1068 1068
1069 memset(sliced, 0, sizeof(*sliced)); 1069 memset(sliced->service_lines, 0, sizeof(sliced->service_lines));
1070 sliced->service_set = 0;
1070 /* done if using raw VBI */ 1071 /* done if using raw VBI */
1071 if (saa711x_read(sd, R_80_GLOBAL_CNTL_1) & 0x10) 1072 if (saa711x_read(sd, R_80_GLOBAL_CNTL_1) & 0x10)
1072 return 0; 1073 return 0;
diff --git a/drivers/media/i2c/saa7127.c b/drivers/media/i2c/saa7127.c
index 8ecb6564a315..b745f68fbc92 100644
--- a/drivers/media/i2c/saa7127.c
+++ b/drivers/media/i2c/saa7127.c
@@ -625,7 +625,7 @@ static int saa7127_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_f
625{ 625{
626 struct saa7127_state *state = to_state(sd); 626 struct saa7127_state *state = to_state(sd);
627 627
628 memset(fmt, 0, sizeof(*fmt)); 628 memset(fmt->service_lines, 0, sizeof(fmt->service_lines));
629 if (state->vps_enable) 629 if (state->vps_enable)
630 fmt->service_lines[0][16] = V4L2_SLICED_VPS; 630 fmt->service_lines[0][16] = V4L2_SLICED_VPS;
631 if (state->wss_enable) 631 if (state->wss_enable)
diff --git a/drivers/media/i2c/tvp5150.c b/drivers/media/i2c/tvp5150.c
index b5b1792479d0..31104a960652 100644
--- a/drivers/media/i2c/tvp5150.c
+++ b/drivers/media/i2c/tvp5150.c
@@ -1020,7 +1020,7 @@ static int tvp5150_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_f
1020{ 1020{
1021 int i, mask = 0; 1021 int i, mask = 0;
1022 1022
1023 memset(svbi, 0, sizeof(*svbi)); 1023 memset(svbi->service_lines, 0, sizeof(svbi->service_lines));
1024 1024
1025 for (i = 0; i <= 23; i++) { 1025 for (i = 0; i <= 23; i++) {
1026 svbi->service_lines[0][i] = 1026 svbi->service_lines[0][i] =
diff --git a/drivers/media/pci/cx18/cx18-av-vbi.c b/drivers/media/pci/cx18/cx18-av-vbi.c
index baa36fbcd4d4..246982841fec 100644
--- a/drivers/media/pci/cx18/cx18-av-vbi.c
+++ b/drivers/media/pci/cx18/cx18-av-vbi.c
@@ -143,7 +143,9 @@ int cx18_av_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *
143 int is_pal = !(state->std & V4L2_STD_525_60); 143 int is_pal = !(state->std & V4L2_STD_525_60);
144 int i; 144 int i;
145 145
146 memset(svbi, 0, sizeof(*svbi)); 146 memset(svbi->service_lines, 0, sizeof(svbi->service_lines));
147 svbi->service_set = 0;
148
147 /* we're done if raw VBI is active */ 149 /* we're done if raw VBI is active */
148 if ((cx18_av_read(cx, 0x404) & 0x10) == 0) 150 if ((cx18_av_read(cx, 0x404) & 0x10) == 0)
149 return 0; 151 return 0;
diff --git a/drivers/media/pci/cx18/cx18-ioctl.c b/drivers/media/pci/cx18/cx18-ioctl.c
index bb5073f72c42..cd8d2c2b1624 100644
--- a/drivers/media/pci/cx18/cx18-ioctl.c
+++ b/drivers/media/pci/cx18/cx18-ioctl.c
@@ -210,10 +210,6 @@ static int cx18_g_fmt_sliced_vbi_cap(struct file *file, void *fh,
210 if (v4l2_subdev_call(cx->sd_av, vbi, g_sliced_fmt, &fmt->fmt.sliced)) 210 if (v4l2_subdev_call(cx->sd_av, vbi, g_sliced_fmt, &fmt->fmt.sliced))
211 return -EINVAL; 211 return -EINVAL;
212 212
213 /* Ensure V4L2 spec compliant output */
214 vbifmt->reserved[0] = 0;
215 vbifmt->reserved[1] = 0;
216 vbifmt->io_size = sizeof(struct v4l2_sliced_vbi_data) * 36;
217 vbifmt->service_set = cx18_get_service_set(vbifmt); 213 vbifmt->service_set = cx18_get_service_set(vbifmt);
218 return 0; 214 return 0;
219} 215}
diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c b/drivers/media/pci/ivtv/ivtv-ioctl.c
index ed6dcc7e61bc..4e40c4e301ed 100644
--- a/drivers/media/pci/ivtv/ivtv-ioctl.c
+++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
@@ -326,6 +326,7 @@ static int ivtv_g_fmt_sliced_vbi_out(struct file *file, void *fh, struct v4l2_fo
326 if (!(itv->v4l2_cap & V4L2_CAP_SLICED_VBI_OUTPUT)) 326 if (!(itv->v4l2_cap & V4L2_CAP_SLICED_VBI_OUTPUT))
327 return -EINVAL; 327 return -EINVAL;
328 vbifmt->io_size = sizeof(struct v4l2_sliced_vbi_data) * 36; 328 vbifmt->io_size = sizeof(struct v4l2_sliced_vbi_data) * 36;
329 memset(vbifmt->service_lines, 0, sizeof(vbifmt->service_lines));
329 if (itv->is_60hz) { 330 if (itv->is_60hz) {
330 vbifmt->service_lines[0][21] = V4L2_SLICED_CAPTION_525; 331 vbifmt->service_lines[0][21] = V4L2_SLICED_CAPTION_525;
331 vbifmt->service_lines[1][21] = V4L2_SLICED_CAPTION_525; 332 vbifmt->service_lines[1][21] = V4L2_SLICED_CAPTION_525;