Skip to content

Commit

Permalink
V4L/DVB (6228): dvb-pll: add module option to specify rf input
Browse files Browse the repository at this point in the history
Add a module option to dvb-pll, called "input" to specify which rf
input to use on devices with multiple rf inputs.  If the module option
is not specified, then the driver will autoselect the rf input, as per
previous behavior.

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Michael Krufky authored and Mauro Carvalho Chehab committed Oct 10, 2007
1 parent a27e5e7 commit 05a4611
Showing 1 changed file with 53 additions and 29 deletions.
82 changes: 53 additions & 29 deletions drivers/media/dvb/frontends/dvb-pll.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,36 @@

#include "dvb-pll.h"

struct dvb_pll_priv {
/* pll number */
int nr;

/* i2c details */
int pll_i2c_address;
struct i2c_adapter *i2c;

/* the PLL descriptor */
struct dvb_pll_desc *pll_desc;

/* cached frequency/bandwidth */
u32 frequency;
u32 bandwidth;
};

#define DVB_PLL_MAX 16

static unsigned int dvb_pll_devcount;

static int debug = 0;
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "enable verbose debug messages");

static unsigned int input[DVB_PLL_MAX] = { [ 0 ... (DVB_PLL_MAX-1) ] = 0 };
module_param_array(input, int, NULL, 0644);
MODULE_PARM_DESC(input,"specify rf input choice, 0 for autoselect (default)");

/* ----------------------------------------------------------- */

struct dvb_pll_desc {
char *name;
u32 min;
Expand Down Expand Up @@ -362,14 +392,32 @@ static struct dvb_pll_desc dvb_pll_tdhu2 = {
static void tuv1236d_rf(struct dvb_frontend *fe, u8 *buf,
const struct dvb_frontend_parameters *params)
{
switch (params->u.vsb.modulation) {
case QAM_64:
case QAM_256:
struct dvb_pll_priv *priv = fe->tuner_priv;
unsigned int new_rf = input[priv->nr];

if ((new_rf == 0) || (new_rf > 2)) {
switch (params->u.vsb.modulation) {
case QAM_64:
case QAM_256:
new_rf = 1;
break;
case VSB_8:
default:
new_rf = 2;
}
}

switch (new_rf) {
case 1:
buf[3] |= 0x08;
break;
case VSB_8:
default:
case 2:
buf[3] &= ~0x08;
break;
default:
printk(KERN_WARNING
"%s: unhandled rf input selection: %d",
__FUNCTION__, new_rf);
}
}

Expand Down Expand Up @@ -553,33 +601,9 @@ static struct dvb_pll_desc *pll_list[] = {
[DVB_PLL_FCV1236D] = &dvb_pll_fcv1236d,
};

/* ----------------------------------------------------------- */

struct dvb_pll_priv {
/* pll number */
int nr;

/* i2c details */
int pll_i2c_address;
struct i2c_adapter *i2c;

/* the PLL descriptor */
struct dvb_pll_desc *pll_desc;

/* cached frequency/bandwidth */
u32 frequency;
u32 bandwidth;
};

/* ----------------------------------------------------------- */
/* code */

static int debug = 0;
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "enable verbose debug messages");

static unsigned int dvb_pll_devcount;

static int dvb_pll_configure(struct dvb_frontend *fe, u8 *buf,
const struct dvb_frontend_parameters *params)
{
Expand Down

0 comments on commit 05a4611

Please sign in to comment.