Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 241856
b: refs/heads/master
c: 2d351df
h: refs/heads/master
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Mar 21, 2011
1 parent d1566f4 commit bcbf7d7
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 20 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: 0ae79d993cd5ce425bedebcbd2f8c4fa310acfe6
refs/heads/master: 2d351df443b0b324a440b5fd053074562d36a7f5
9 changes: 6 additions & 3 deletions trunk/drivers/media/common/tuners/tda9887.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ struct tda9887_priv {
unsigned int mode;
unsigned int audmode;
v4l2_std_id std;

bool standby;
};

/* ---------------------------------------------------------------------- */
Expand Down Expand Up @@ -568,7 +570,7 @@ static void tda9887_configure(struct dvb_frontend *fe)
tda9887_do_config(fe);
tda9887_set_insmod(fe);

if (priv->mode == T_STANDBY)
if (priv->standby)
priv->data[1] |= cForcedMuteAudioON;

tuner_dbg("writing: b=0x%02x c=0x%02x e=0x%02x\n",
Expand Down Expand Up @@ -616,7 +618,7 @@ static void tda9887_standby(struct dvb_frontend *fe)
{
struct tda9887_priv *priv = fe->analog_demod_priv;

priv->mode = T_STANDBY;
priv->standby = true;

tda9887_configure(fe);
}
Expand All @@ -626,6 +628,7 @@ static void tda9887_set_params(struct dvb_frontend *fe,
{
struct tda9887_priv *priv = fe->analog_demod_priv;

priv->standby = false;
priv->mode = params->mode;
priv->audmode = params->audmode;
priv->std = params->std;
Expand Down Expand Up @@ -686,7 +689,7 @@ struct dvb_frontend *tda9887_attach(struct dvb_frontend *fe,
return NULL;
case 1:
fe->analog_demod_priv = priv;
priv->mode = T_STANDBY;
priv->standby = true;
tuner_info("tda988[5/6/7] found\n");
break;
default:
Expand Down
33 changes: 28 additions & 5 deletions trunk/drivers/media/common/tuners/tea5761.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ struct tea5761_priv {
struct tuner_i2c_props i2c_props;

u32 frequency;
bool standby;
};

/*****************************************************************************/
Expand Down Expand Up @@ -135,26 +136,27 @@ static void tea5761_status_dump(unsigned char *buffer)
}

/* Freq should be specifyed at 62.5 Hz */
static int set_radio_freq(struct dvb_frontend *fe,
struct analog_parameters *params)
static int __set_radio_freq(struct dvb_frontend *fe,
unsigned int freq,
bool mono)
{
struct tea5761_priv *priv = fe->tuner_priv;
unsigned int frq = params->frequency;
unsigned int frq = freq;
unsigned char buffer[7] = {0, 0, 0, 0, 0, 0, 0 };
unsigned div;
int rc;

tuner_dbg("radio freq counter %d\n", frq);

if (params->mode == T_STANDBY) {
if (priv->standby) {
tuner_dbg("TEA5761 set to standby mode\n");
buffer[5] |= TEA5761_TNCTRL_MU;
} else {
buffer[4] |= TEA5761_TNCTRL_PUPD_0;
}


if (params->audmode == V4L2_TUNER_MODE_MONO) {
if (mono) {
tuner_dbg("TEA5761 set to mono\n");
buffer[5] |= TEA5761_TNCTRL_MST;
} else {
Expand All @@ -176,6 +178,26 @@ static int set_radio_freq(struct dvb_frontend *fe,
return 0;
}

static int set_radio_freq(struct dvb_frontend *fe,
struct analog_parameters *params)
{
struct tea5761_priv *priv = fe->analog_demod_priv;

priv->standby = false;

return __set_radio_freq(fe, params->frequency,
params->audmode == V4L2_TUNER_MODE_MONO);
}

static int set_radio_sleep(struct dvb_frontend *fe)
{
struct tea5761_priv *priv = fe->analog_demod_priv;

priv->standby = true;

return __set_radio_freq(fe, priv->frequency, false);
}

static int tea5761_read_status(struct dvb_frontend *fe, char *buffer)
{
struct tea5761_priv *priv = fe->tuner_priv;
Expand Down Expand Up @@ -284,6 +306,7 @@ static struct dvb_tuner_ops tea5761_tuner_ops = {
.name = "tea5761", // Philips TEA5761HN FM Radio
},
.set_analog_params = set_radio_freq,
.sleep = set_radio_sleep,
.release = tea5761_release,
.get_frequency = tea5761_get_frequency,
.get_status = tea5761_get_status,
Expand Down
12 changes: 1 addition & 11 deletions trunk/include/media/tuner.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

#ifndef _TUNER_H
#define _TUNER_H
#ifdef __KERNEL__

#include <linux/videodev2.h>

Expand Down Expand Up @@ -157,13 +158,10 @@
#define TDA9887_GAIN_NORMAL (1<<20)
#define TDA9887_RIF_41_3 (1<<21) /* radio IF1 41.3 vs 33.3 */

#ifdef __KERNEL__

enum tuner_mode {
T_RADIO = 1 << V4L2_TUNER_RADIO,
T_ANALOG_TV = 1 << V4L2_TUNER_ANALOG_TV,
T_DIGITAL_TV = 1 << V4L2_TUNER_DIGITAL_TV,
T_STANDBY = 1 << 31
};

/* Older boards only had a single tuner device. Nowadays multiple tuner
Expand Down Expand Up @@ -193,11 +191,3 @@ struct tuner_setup {
#endif /* __KERNEL__ */

#endif /* _TUNER_H */

/*
* Overrides for Emacs so that we follow Linus's tabbing style.
* ---------------------------------------------------------------------------
* Local variables:
* c-basic-offset: 8
* End:
*/

0 comments on commit bcbf7d7

Please sign in to comment.