Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 92415
b: refs/heads/master
c: 23fb348
h: refs/heads/master
i:
  92413: 7119409
  92411: 03400d7
  92407: 1b54202
  92399: 0464461
  92383: ef10dee
  92351: 97aee39
  92287: 86611ad
  92159: 1c9e807
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Apr 24, 2008
1 parent d93d694 commit e2d8c90
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 28 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: 64016330b60e44db1383122a11611073fe98f261
refs/heads/master: 23fb348d00da9c1558b4a9b234b9ac941091b0f1
58 changes: 31 additions & 27 deletions trunk/drivers/media/video/cx88/cx88-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -452,11 +452,33 @@ static struct zl10353_config cx88_geniatech_x8000_mt = {
.no_tuner = 1,
};

static int attach_xc3028(u8 addr, struct cx8802_dev *dev)
{
struct dvb_frontend *fe;
struct xc2028_config cfg = {
.i2c_adap = &dev->core->i2c_adap,
.i2c_addr = addr,
.video_dev = dev->core,
};

fe = dvb_attach(xc2028_attach, dev->dvb.frontend, &cfg);
if (!fe) {
printk(KERN_ERR "%s/2: xc3028 attach failed\n",
dev->core->name);
dvb_frontend_detach(dev->dvb.frontend);
dvb_unregister_frontend(dev->dvb.frontend);
dev->dvb.frontend = NULL;
return -EINVAL;
}

printk(KERN_INFO "%s/2: xc3028 attached\n",
dev->core->name);

return 0;
}

static int dvb_register(struct cx8802_dev *dev)
{
int attach_xc3028 = 0;

/* init struct videobuf_dvb */
dev->dvb.name = dev->core->name;
dev->ts_gen_cntrl = 0x0c;
Expand Down Expand Up @@ -595,8 +617,8 @@ static int dvb_register(struct cx8802_dev *dev)
*/
if (dev->dvb.frontend)
dev->dvb.frontend->ops.i2c_gate_ctrl = NULL;

attach_xc3028 = 1;
if (attach_xc3028(0x61, dev) < 0)
return -EINVAL;
break;
case CX88_BOARD_PCHDTV_HD3000:
dev->dvb.frontend = dvb_attach(or51132_attach, &pchdtv_hd3000,
Expand Down Expand Up @@ -770,15 +792,17 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = dvb_attach(zl10353_attach,
&cx88_geniatech_x8000_mt,
&dev->core->i2c_adap);
attach_xc3028 = 1;
if (attach_xc3028(0x61, dev) < 0)
return -EINVAL;
break;
case CX88_BOARD_GENIATECH_X8000_MT:
dev->ts_gen_cntrl = 0x00;

dev->dvb.frontend = dvb_attach(zl10353_attach,
&cx88_geniatech_x8000_mt,
&dev->core->i2c_adap);
attach_xc3028 = 1;
if (attach_xc3028(0x61, dev) < 0)
return -EINVAL;
break;
default:
printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card isn't supported yet\n",
Expand All @@ -789,27 +813,7 @@ static int dvb_register(struct cx8802_dev *dev)
printk(KERN_ERR
"%s/2: frontend initialization failed\n",
dev->core->name);
return -1;
}

if (attach_xc3028) {
struct dvb_frontend *fe;
struct xc2028_config cfg = {
.i2c_adap = &dev->core->i2c_adap,
.i2c_addr = 0x61,
.video_dev = dev->core,
};
fe = dvb_attach(xc2028_attach, dev->dvb.frontend, &cfg);
if (!fe) {
printk(KERN_ERR "%s/2: xc3028 attach failed\n",
dev->core->name);
dvb_frontend_detach(dev->dvb.frontend);
dvb_unregister_frontend(dev->dvb.frontend);
dev->dvb.frontend = NULL;
return -1;
}
printk(KERN_INFO "%s/2: xc3028 attached\n",
dev->core->name);
return -EINVAL;
}

/* Ensure all frontends negotiate bus access */
Expand Down

0 comments on commit e2d8c90

Please sign in to comment.