Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 173899
b: refs/heads/master
c: 496e905
h: refs/heads/master
i:
  173897: 5950f67
  173895: 7bd7d33
v: v3
  • Loading branch information
Devin Heitmueller authored and Mauro Carvalho Chehab committed Dec 5, 2009
1 parent 09427c8 commit cfac0fa
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 4 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: d7009cdc286d7c9714b357b0e85b3fcbbf9e03a4
refs/heads/master: 496e9057adf55d0e6c9be3805f0bc61288409317
25 changes: 22 additions & 3 deletions trunk/drivers/media/common/tuners/xc5000.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ struct xc5000_priv {
u32 bandwidth;
u8 video_standard;
u8 rf_mode;
u8 radio_input;
};

/* Misc Defines */
Expand Down Expand Up @@ -829,17 +830,32 @@ static int xc5000_set_radio_freq(struct dvb_frontend *fe,
{
struct xc5000_priv *priv = fe->tuner_priv;
int ret = -EINVAL;
u8 radio_input;

dprintk(1, "%s() frequency=%d (in units of khz)\n",
__func__, params->frequency);

if (priv->radio_input == XC5000_RADIO_NOT_CONFIGURED) {
dprintk(1, "%s() radio input not configured\n", __func__);
return -EINVAL;
}

if (priv->radio_input == XC5000_RADIO_FM1)
radio_input = FM_Radio_INPUT1;
else if (priv->radio_input == XC5000_RADIO_FM2)
radio_input = FM_Radio_INPUT2;
else {
dprintk(1, "%s() unknown radio input %d\n", __func__,
priv->radio_input);
return -EINVAL;
}

priv->freq_hz = params->frequency * 125 / 2;

priv->rf_mode = XC_RF_MODE_AIR;

ret = xc_SetTVStandard(priv,
XC5000_Standard[FM_Radio_INPUT1].VideoMode,
XC5000_Standard[FM_Radio_INPUT1].AudioMode);
ret = xc_SetTVStandard(priv, XC5000_Standard[radio_input].VideoMode,
XC5000_Standard[radio_input].AudioMode);

if (ret != XC_RESULT_SUCCESS) {
printk(KERN_ERR "xc5000: xc_SetTVStandard failed\n");
Expand Down Expand Up @@ -1058,6 +1074,9 @@ struct dvb_frontend *xc5000_attach(struct dvb_frontend *fe,
priv->if_khz = cfg->if_khz;
}

if (priv->radio_input == 0)
priv->radio_input = cfg->radio_input;

/* Check if firmware has been loaded. It is possible that another
instance of the driver has loaded the firmware.
*/
Expand Down
6 changes: 6 additions & 0 deletions trunk/drivers/media/common/tuners/xc5000.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,17 @@ struct i2c_adapter;
struct xc5000_config {
u8 i2c_address;
u32 if_khz;
u8 radio_input;
};

/* xc5000 callback command */
#define XC5000_TUNER_RESET 0

/* Possible Radio inputs */
#define XC5000_RADIO_NOT_CONFIGURED 0
#define XC5000_RADIO_FM1 1
#define XC5000_RADIO_FM2 2

/* For each bridge framework, when it attaches either analog or digital,
* it has to store a reference back to its _core equivalent structure,
* so that it can service the hardware by steering gpio's etc.
Expand Down

0 comments on commit cfac0fa

Please sign in to comment.