Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 366966
b: refs/heads/master
c: 48a8a03
h: refs/heads/master
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Apr 8, 2013
1 parent ef94456 commit b5aadb3
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 13 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: a9bd87c232b87014b20fdf52416f80c5c1e869fc
refs/heads/master: 48a8a03b5806179f12dd6994a6957f797c13675f
4 changes: 2 additions & 2 deletions trunk/drivers/media/common/b2c2/flexcop-fe-tuner.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ static int skystar2_rev27_attach(struct flexcop_device *fc,
/* enable no_base_addr - no repeated start when reading */
fc->fc_i2c_adap[2].no_base_addr = 1;
if (!dvb_attach(isl6421_attach, fc->fe, &fc->fc_i2c_adap[2].i2c_adap,
0x08, 1, 1)) {
0x08, 1, 1, false)) {
err("ISL6421 could NOT be attached");
goto fail_isl;
}
Expand Down Expand Up @@ -391,7 +391,7 @@ static int skystar2_rev28_attach(struct flexcop_device *fc,

fc->fc_i2c_adap[2].no_base_addr = 1;
if (!dvb_attach(isl6421_attach, fc->fe, &fc->fc_i2c_adap[2].i2c_adap,
0x08, 0, 0)) {
0x08, 0, 0, false)) {
err("ISL6421 could NOT be attached");
fc->fc_i2c_adap[2].no_base_addr = 0;
return 0;
Expand Down
28 changes: 27 additions & 1 deletion trunk/drivers/media/dvb-frontends/isl6421.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,30 @@ static int isl6421_enable_high_lnb_voltage(struct dvb_frontend *fe, long arg)
return (i2c_transfer(isl6421->i2c, &msg, 1) == 1) ? 0 : -EIO;
}

static int isl6421_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone)
{
struct isl6421 *isl6421 = (struct isl6421 *) fe->sec_priv;
struct i2c_msg msg = { .addr = isl6421->i2c_addr, .flags = 0,
.buf = &isl6421->config,
.len = sizeof(isl6421->config) };

switch (tone) {
case SEC_TONE_ON:
isl6421->config |= ISL6421_ENT1;
break;
case SEC_TONE_OFF:
isl6421->config &= ~ISL6421_ENT1;
break;
default:
return -EINVAL;
}

isl6421->config |= isl6421->override_or;
isl6421->config &= isl6421->override_and;

return (i2c_transfer(isl6421->i2c, &msg, 1) == 1) ? 0 : -EIO;
}

static void isl6421_release(struct dvb_frontend *fe)
{
/* power off */
Expand All @@ -100,7 +124,7 @@ static void isl6421_release(struct dvb_frontend *fe)
}

struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
u8 override_set, u8 override_clear)
u8 override_set, u8 override_clear, bool override_tone)
{
struct isl6421 *isl6421 = kmalloc(sizeof(struct isl6421), GFP_KERNEL);
if (!isl6421)
Expand Down Expand Up @@ -131,6 +155,8 @@ struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter
/* override frontend ops */
fe->ops.set_voltage = isl6421_set_voltage;
fe->ops.enable_high_lnb_voltage = isl6421_enable_high_lnb_voltage;
if (override_tone)
fe->ops.set_tone = isl6421_set_tone;

return fe;
}
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/media/dvb-frontends/isl6421.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@
#if IS_ENABLED(CONFIG_DVB_ISL6421)
/* override_set and override_clear control which system register bits (above) to always set & clear */
extern struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
u8 override_set, u8 override_clear);
u8 override_set, u8 override_clear, bool override_tone);
#else
static inline struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
u8 override_set, u8 override_clear)
u8 override_set, u8 override_clear, bool override_tone)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
return NULL;
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/media/pci/cx88/cx88-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -2855,6 +2855,7 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data)
core->board.tuner_type = tv.tuner_type;
core->tuner_formats = tv.tuner_formats;
core->board.radio.type = tv.has_radio ? CX88_RADIO : 0;
core->model = tv.model;

/* Make sure we support the board model */
switch (tv.model)
Expand Down
16 changes: 12 additions & 4 deletions trunk/drivers/media/pci/cx88/cx88-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1042,7 +1042,7 @@ static int dvb_register(struct cx8802_dev *dev)
if (!dvb_attach(isl6421_attach,
fe0->dvb.frontend,
&dev->core->i2c_adap,
0x08, ISL6421_DCL, 0x00))
0x08, ISL6421_DCL, 0x00, false))
goto frontend_detach;
}
/* MFE frontend 2 */
Expand Down Expand Up @@ -1279,8 +1279,16 @@ static int dvb_register(struct cx8802_dev *dev)
&hauppauge_novas_config,
&core->i2c_adap);
if (fe0->dvb.frontend) {
bool override_tone;

if (core->model == 92001)
override_tone = true;
else
override_tone = false;

if (!dvb_attach(isl6421_attach, fe0->dvb.frontend,
&core->i2c_adap, 0x08, ISL6421_DCL, 0x00))
&core->i2c_adap, 0x08, ISL6421_DCL, 0x00,
override_tone))
goto frontend_detach;
}
break;
Expand Down Expand Up @@ -1403,7 +1411,7 @@ static int dvb_register(struct cx8802_dev *dev)
if (!dvb_attach(isl6421_attach,
fe0->dvb.frontend,
&dev->core->i2c_adap,
0x08, ISL6421_DCL, 0x00))
0x08, ISL6421_DCL, 0x00, false))
goto frontend_detach;
}
/* MFE frontend 2 */
Expand Down Expand Up @@ -1431,7 +1439,7 @@ static int dvb_register(struct cx8802_dev *dev)
if (!dvb_attach(isl6421_attach,
fe0->dvb.frontend,
&dev->core->i2c_adap,
0x08, ISL6421_DCL, 0x00))
0x08, ISL6421_DCL, 0x00, false))
goto frontend_detach;
}
break;
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/media/pci/cx88/cx88.h
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ struct cx88_core {
/* board name */
int nr;
char name[32];
u32 model;

/* pci stuff */
int pci_bus;
Expand Down
8 changes: 5 additions & 3 deletions trunk/drivers/media/pci/saa7134/saa7134-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1391,8 +1391,9 @@ static int dvb_init(struct saa7134_dev *dev)
wprintk("%s: Lifeview Trio, No tda826x found!\n", __func__);
goto detach_frontend;
}
if (dvb_attach(isl6421_attach, fe0->dvb.frontend, &dev->i2c_adap,
0x08, 0, 0) == NULL) {
if (dvb_attach(isl6421_attach, fe0->dvb.frontend,
&dev->i2c_adap,
0x08, 0, 0, false) == NULL) {
wprintk("%s: Lifeview Trio, No ISL6421 found!\n", __func__);
goto detach_frontend;
}
Expand Down Expand Up @@ -1509,7 +1510,8 @@ static int dvb_init(struct saa7134_dev *dev)
goto detach_frontend;
}
if (dvb_attach(isl6421_attach, fe0->dvb.frontend,
&dev->i2c_adap, 0x08, 0, 0) == NULL) {
&dev->i2c_adap,
0x08, 0, 0, false) == NULL) {
wprintk("%s: No ISL6421 found!\n", __func__);
goto detach_frontend;
}
Expand Down

0 comments on commit b5aadb3

Please sign in to comment.