Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 21587
b: refs/heads/master
c: 12db560
h: refs/heads/master
i:
  21585: 142526f
  21583: 059ca6f
v: v3
  • Loading branch information
Mauro Carvalho Chehab authored and Mauro Carvalho Chehab committed Jan 23, 2006
1 parent 5f0bcb9 commit e473856
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4d0dddb10723cee2b3048bd2389673703bc228e4
refs/heads/master: 12db56071b473a59c550d0aa70db6972a49d73af
70 changes: 68 additions & 2 deletions trunk/drivers/media/video/tvp5150.c
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ static struct i2c_vbi_ram_value vbi_ram_default[] =
0x69, 0x8c, 0x09, 0x00, 0x00, 0x00, 0x27, 0x00 }
},
{0x110, /* Wide Screen Signal, PAL/SECAM */
{V4L2_SLICED_WSS_625,20,21,1},
{V4L2_SLICED_WSS_625,23,23,1},
{ 0x5b, 0x55, 0xc5, 0xff, 0x00, 0x71, 0x6e, 0x42,
0xa6, 0xcd, 0x0f, 0x00, 0x00, 0x00, 0x3a, 0x00 }
},
Expand Down Expand Up @@ -649,7 +649,7 @@ static int tvp5150_set_vbi(struct i2c_client *c,

if (std == V4L2_STD_ALL) {
tvp5150_err("VBI can't be configured without knowing number of lines\n");
return -EINVAL;
return 0;
} else if (std && V4L2_STD_625_50) {
/* Don't follow NTSC Line number convension */
line += 3;
Expand Down Expand Up @@ -686,6 +686,37 @@ static int tvp5150_set_vbi(struct i2c_client *c,
return type;
}

static int tvp5150_get_vbi(struct i2c_client *c,
const struct i2c_vbi_ram_value *regs, int line)
{
struct tvp5150 *decoder = i2c_get_clientdata(c);
v4l2_std_id std=decoder->norm;
u8 reg;
int pos, type=0;

if (std == V4L2_STD_ALL) {
tvp5150_err("VBI can't be configured without knowing number of lines\n");
return 0;
} else if (std && V4L2_STD_625_50) {
/* Don't follow NTSC Line number convension */
line += 3;
}

if (line<6||line>27)
return 0;

reg=((line-6)<<1)+TVP5150_LINE_MODE_INI;

pos=tvp5150_read(c, reg)&0x0f;
if (pos<0x0f)
type=regs[pos].type.vbi_type;

pos=tvp5150_read(c, reg+1)&0x0f;
if (pos<0x0f)
type|=regs[pos].type.vbi_type;

return type;
}
static int tvp5150_set_std(struct i2c_client *c, v4l2_std_id std)
{
struct tvp5150 *decoder = i2c_get_clientdata(c);
Expand Down Expand Up @@ -856,9 +887,43 @@ static int tvp5150_command(struct i2c_client *c,
vbi_ram_default,
svbi->service_lines[0][i],0xf0,i,3);
}
/* Enables FIFO */
tvp5150_write(c, TVP5150_FIFO_OUT_CTRL,1);
} else {
/* Disables FIFO*/
tvp5150_write(c, TVP5150_FIFO_OUT_CTRL,0);

/* Disable Full Field */
tvp5150_write(c, TVP5150_FULL_FIELD_ENA, 0);

/* Disable Line modes */
for (i=TVP5150_LINE_MODE_INI; i<=TVP5150_LINE_MODE_END; i++)
tvp5150_write(c, i, 0xff);
}
break;
}
case VIDIOC_G_FMT:
{
struct v4l2_format *fmt;
struct v4l2_sliced_vbi_format *svbi;

int i, mask=0;

fmt = arg;
if (fmt->type != V4L2_BUF_TYPE_SLICED_VBI_CAPTURE)
return -EINVAL;
svbi = &fmt->fmt.sliced;
memset(svbi, 0, sizeof(*svbi));

for (i = 0; i <= 23; i++) {
svbi->service_lines[0][i]=tvp5150_get_vbi(c,
vbi_ram_default,i);
mask|=svbi->service_lines[0][i];
}
svbi->service_set=mask;
break;
}

#ifdef CONFIG_VIDEO_ADV_DEBUG
case VIDIOC_INT_G_REGISTER:
{
Expand All @@ -883,6 +948,7 @@ static int tvp5150_command(struct i2c_client *c,
}
#endif

case VIDIOC_LOG_STATUS:
case DECODER_DUMP:
dump_reg(c);
break;
Expand Down
3 changes: 2 additions & 1 deletion trunk/include/media/v4l2-common.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,8 @@ struct msp_matrix {

/* Used to generate VBI signals on a video signal. v4l2_sliced_vbi_data is
filled with the data packets that should be output. Note that if you set
the line field to 0, then that VBI signal is disabled. */
the line field to 0, then that VBI signal is disabled. If no
valid VBI data was found, then the type field is set to 0 on return. */
#define VIDIOC_INT_S_VBI_DATA _IOW ('d', 105, struct v4l2_sliced_vbi_data)

/* Used to obtain the sliced VBI packet from a readback register. Not all
Expand Down

0 comments on commit e473856

Please sign in to comment.