Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 21579
b: refs/heads/master
c: 2701dac
h: refs/heads/master
i:
  21577: 110f484
  21575: d621fc6
v: v3
  • Loading branch information
Mauro Carvalho Chehab authored and Mauro Carvalho Chehab committed Jan 23, 2006
1 parent 6bca327 commit bdaff2c
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 6 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: 10b7a903072eb066b17cc9049d6ea55dd044f4c3
refs/heads/master: 2701dacb5ae5e7ecab4131605bdbcedd92bbaf82
47 changes: 42 additions & 5 deletions trunk/drivers/media/video/tvp5150.c
Original file line number Diff line number Diff line change
Expand Up @@ -637,12 +637,15 @@ static void tvp5150_vbi_get_cap(const struct i2c_vbi_ram_value *regs,
* LSB = field1
* MSB = field2
*/
static int tvp5150_set_vbi(struct i2c_client *c, unsigned int type,
u8 flags, int line, const int fields)
static int tvp5150_set_vbi(struct i2c_client *c,
const struct i2c_vbi_ram_value *regs,
unsigned int type,u8 flags, int line,
const int fields)
{
struct tvp5150 *decoder = i2c_get_clientdata(c);
v4l2_std_id std=decoder->norm;
u8 reg;
int pos=0;

if (std == V4L2_STD_ALL) {
tvp5150_err("VBI can't be configured without knowing number of lines\n");
Expand All @@ -653,9 +656,23 @@ static int tvp5150_set_vbi(struct i2c_client *c, unsigned int type,
}

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

type=type | (flags & 0xf0);
while (regs->reg != (u16)-1 ) {
if ((type & regs->type.vbi_type) &&
(line>=regs->type.ini_line) &&
(line<=regs->type.end_line)) {
type=regs->type.vbi_type;
break;
}

regs++;
pos++;
}
if (regs->reg == (u16)-1)
return 0;

type=pos | (flags & 0xf0);
reg=((line-6)<<1)+TVP5150_LINE_MODE_INI;

if (fields&1) {
Expand All @@ -666,7 +683,7 @@ static int tvp5150_set_vbi(struct i2c_client *c, unsigned int type,
tvp5150_write(c, reg+1, type);
}

return 0;
return type;
}

static int tvp5150_set_std(struct i2c_client *c, v4l2_std_id std)
Expand Down Expand Up @@ -821,7 +838,27 @@ static int tvp5150_command(struct i2c_client *c,
tvp5150_vbi_get_cap(vbi_ram_default, cap);
break;
}
case VIDIOC_S_FMT:
{
struct v4l2_format *fmt;
struct v4l2_sliced_vbi_format *svbi;
int i;

fmt = arg;
if (fmt->type != V4L2_BUF_TYPE_SLICED_VBI_CAPTURE)
return -EINVAL;
svbi = &fmt->fmt.sliced;
if (svbi->service_set != 0) {
for (i = 0; i <= 23; i++) {
svbi->service_lines[1][i] = 0;

svbi->service_lines[0][i]=tvp5150_set_vbi(c,
vbi_ram_default,
svbi->service_lines[0][i],0xf0,i,3);
}
}
break;
}
#ifdef CONFIG_VIDEO_ADV_DEBUG
case VIDIOC_INT_G_REGISTER:
{
Expand Down

0 comments on commit bdaff2c

Please sign in to comment.