Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 76601
b: refs/heads/master
c: 710401b
h: refs/heads/master
i:
  76599: 841fefa
v: v3
  • Loading branch information
Michael Krufky authored and Mauro Carvalho Chehab committed Jan 25, 2008
1 parent fc9929d commit 0141f83
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 30 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: f1c9a281005f714fdc57c830a23f2b6bd6e2b714
refs/heads/master: 710401b837f8849dc9c28385eb5298746b811305
47 changes: 30 additions & 17 deletions trunk/drivers/media/video/tda9887.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ struct tda9887_priv {
struct tuner_i2c_props i2c_props;

unsigned char data[4];
unsigned int config;

struct tuner *t;
};
Expand Down Expand Up @@ -473,31 +474,31 @@ static int tda9887_set_insmod(struct dvb_frontend *fe)
return 0;
}

static int tda9887_set_config(struct dvb_frontend *fe)
static int tda9887_do_config(struct dvb_frontend *fe)
{
struct tda9887_priv *priv = fe->analog_demod_priv;
struct tuner *t = priv->t;
char *buf = priv->data;

if (t->tda9887_config & TDA9887_PORT1_ACTIVE)
if (priv->config & TDA9887_PORT1_ACTIVE)
buf[1] &= ~cOutputPort1Inactive;
if (t->tda9887_config & TDA9887_PORT1_INACTIVE)
if (priv->config & TDA9887_PORT1_INACTIVE)
buf[1] |= cOutputPort1Inactive;
if (t->tda9887_config & TDA9887_PORT2_ACTIVE)
if (priv->config & TDA9887_PORT2_ACTIVE)
buf[1] &= ~cOutputPort2Inactive;
if (t->tda9887_config & TDA9887_PORT2_INACTIVE)
if (priv->config & TDA9887_PORT2_INACTIVE)
buf[1] |= cOutputPort2Inactive;

if (t->tda9887_config & TDA9887_QSS)
if (priv->config & TDA9887_QSS)
buf[1] |= cQSS;
if (t->tda9887_config & TDA9887_INTERCARRIER)
if (priv->config & TDA9887_INTERCARRIER)
buf[1] &= ~cQSS;

if (t->tda9887_config & TDA9887_AUTOMUTE)
if (priv->config & TDA9887_AUTOMUTE)
buf[1] |= cAutoMuteFmActive;
if (t->tda9887_config & TDA9887_DEEMPHASIS_MASK) {
if (priv->config & TDA9887_DEEMPHASIS_MASK) {
buf[2] &= ~0x60;
switch (t->tda9887_config & TDA9887_DEEMPHASIS_MASK) {
switch (priv->config & TDA9887_DEEMPHASIS_MASK) {
case TDA9887_DEEMPHASIS_NONE:
buf[2] |= cDeemphasisOFF;
break;
Expand All @@ -509,21 +510,22 @@ static int tda9887_set_config(struct dvb_frontend *fe)
break;
}
}
if (t->tda9887_config & TDA9887_TOP_SET) {
if (priv->config & TDA9887_TOP_SET) {
buf[2] &= ~cTopMask;
buf[2] |= (t->tda9887_config >> 8) & cTopMask;
buf[2] |= (priv->config >> 8) & cTopMask;
}
if ((t->tda9887_config & TDA9887_INTERCARRIER_NTSC) && (t->std & V4L2_STD_NTSC))
if ((priv->config & TDA9887_INTERCARRIER_NTSC) &&
(t->std & V4L2_STD_NTSC))
buf[1] &= ~cQSS;
if (t->tda9887_config & TDA9887_GATING_18)
if (priv->config & TDA9887_GATING_18)
buf[3] &= ~cGating_36;

if (t->mode == V4L2_TUNER_RADIO) {
if (t->tda9887_config & TDA9887_RIF_41_3) {
if (priv->config & TDA9887_RIF_41_3) {
buf[3] &= ~cVideoIFMask;
buf[3] |= cRadioIF_41_30;
}
if (t->tda9887_config & TDA9887_GAIN_NORMAL)
if (priv->config & TDA9887_GAIN_NORMAL)
buf[3] &= ~cTunerGainLow;
}

Expand Down Expand Up @@ -570,7 +572,7 @@ static void tda9887_configure(struct dvb_frontend *fe)
priv->data[1] |= cOutputPort1Inactive;
priv->data[1] |= cOutputPort2Inactive;

tda9887_set_config(fe);
tda9887_do_config(fe);
tda9887_set_insmod(fe);

if (t->mode == T_STANDBY) {
Expand Down Expand Up @@ -629,6 +631,16 @@ static void tda9887_set_params(struct dvb_frontend *fe,
tda9887_configure(fe);
}

static int tda9887_set_config(struct dvb_frontend *fe, void *priv_cfg)
{
struct tda9887_priv *priv = fe->analog_demod_priv;

priv->config = *(unsigned int *)priv_cfg;
tda9887_configure(fe);

return 0;
}

static void tda9887_release(struct dvb_frontend *fe)
{
kfree(fe->analog_demod_priv);
Expand All @@ -644,6 +656,7 @@ static struct analog_tuner_ops tda9887_tuner_ops = {
.tuner_status = tda9887_tuner_status,
.get_afc = tda9887_get_afc,
.release = tda9887_release,
.set_config = tda9887_set_config,
};

int tda9887_attach(struct tuner *t)
Expand Down
12 changes: 3 additions & 9 deletions trunk/drivers/media/video/tuner-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -833,25 +833,19 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
#endif
case TUNER_SET_CONFIG:
{
struct dvb_tuner_ops *fe_tuner_ops = &t->fe.ops.tuner_ops;
struct analog_tuner_ops *ops = t->fe.ops.analog_demod_ops;
struct v4l2_priv_tun_config *cfg = arg;

if (t->type != cfg->tuner)
break;

if (t->type == TUNER_TDA9887) {
t->tda9887_config = *(unsigned int *)cfg->priv;
set_freq(client, t->tv_freq);
break;
}

if (NULL == fe_tuner_ops->set_config) {
if ((NULL == ops) || (NULL == ops->set_config)) {
tuner_warn("Tuner frontend module has no way to "
"set config\n");
break;
}
fe_tuner_ops->set_config(&t->fe, cfg->priv);

ops->set_config(&t->fe, cfg->priv);
break;
}
/* --- v4l ioctls --- */
Expand Down
3 changes: 0 additions & 3 deletions trunk/drivers/media/video/tuner-driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,6 @@ struct tuner {

struct dvb_frontend fe;

/* used by tda9887 */
unsigned int tda9887_config;

unsigned int config;
int (*tuner_callback) (void *dev, int command,int arg);
};
Expand Down

0 comments on commit 0141f83

Please sign in to comment.