|
@@ -1388,6 +1388,9 @@ static int saa711x_command(struct i2c_client *client, unsigned int cmd, void *ar
|
|
|
{
|
|
|
struct v4l2_sliced_vbi_data *data = arg;
|
|
|
|
|
|
+ /* Note: the internal field ID is inverted for NTSC,
|
|
|
+ so data->field 0 maps to the saa7115 even field,
|
|
|
+ whereas for PAL it maps to the saa7115 odd field. */
|
|
|
switch (data->id) {
|
|
|
case V4L2_SLICED_WSS_625:
|
|
|
if (saa711x_read(client, 0x6b) & 0xc0)
|
|
@@ -1398,17 +1401,17 @@ static int saa711x_command(struct i2c_client *client, unsigned int cmd, void *ar
|
|
|
case V4L2_SLICED_CAPTION_525:
|
|
|
if (data->field == 0) {
|
|
|
/* CC */
|
|
|
- if (saa711x_read(client, 0x66) & 0xc0)
|
|
|
+ if (saa711x_read(client, 0x66) & 0x30)
|
|
|
return -EIO;
|
|
|
- data->data[0] = saa711x_read(client, 0x67);
|
|
|
- data->data[1] = saa711x_read(client, 0x68);
|
|
|
+ data->data[0] = saa711x_read(client, 0x69);
|
|
|
+ data->data[1] = saa711x_read(client, 0x6a);
|
|
|
return 0;
|
|
|
}
|
|
|
/* XDS */
|
|
|
- if (saa711x_read(client, 0x66) & 0x30)
|
|
|
+ if (saa711x_read(client, 0x66) & 0xc0)
|
|
|
return -EIO;
|
|
|
- data->data[0] = saa711x_read(client, 0x69);
|
|
|
- data->data[1] = saa711x_read(client, 0x6a);
|
|
|
+ data->data[0] = saa711x_read(client, 0x67);
|
|
|
+ data->data[1] = saa711x_read(client, 0x68);
|
|
|
return 0;
|
|
|
default:
|
|
|
return -EINVAL;
|