Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 61280
b: refs/heads/master
c: b7754d7
h: refs/heads/master
v: v3
  • Loading branch information
Trent Piepho authored and Mauro Carvalho Chehab committed Jul 18, 2007
1 parent d743368 commit 72b3536
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 203 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: 4919c49278b3299c1373912dec9c3d9cf27ec56d
refs/heads/master: b7754d74d20b701603eacf587a92ec6f71a302e1
10 changes: 2 additions & 8 deletions trunk/drivers/media/dvb/dvb-usb/cxusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -354,14 +354,8 @@ static struct mt352_config cxusb_mt352_config = {
/* Callbacks for DVB USB */
static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_adapter *adap)
{
u8 bpll[4] = { 0x0b, 0xdc, 0x9c, 0xa0 };
adap->pll_addr = 0x61;
memcpy(adap->pll_init, bpll, 4);
adap->pll_desc = &dvb_pll_fmd1216me;

adap->fe->ops.tuner_ops.init = dvb_usb_tuner_init_i2c;
adap->fe->ops.tuner_ops.set_params = dvb_usb_tuner_set_params_i2c;

dvb_attach(dvb_pll_attach, adap->fe, 0x61, &adap->dev->i2c_adap,
&dvb_pll_fmd1216me);
return 0;
}

Expand Down
8 changes: 8 additions & 0 deletions trunk/drivers/media/dvb/frontends/dvb-pll.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@
0x50 = AGC Take over point = 103 dBuV */
static u8 tua603x_agc103[] = { 2, 0x80|0x40|0x18|0x06|0x01, 0x00|0x50 };

/* 0x04 = 166.67 kHz divider
0x80 = AGC Time constant 50ms Iagc = 9 uA
0x20 = AGC Take over point = 112 dBuV */
static u8 tua603x_agc112[] = { 2, 0x80|0x40|0x18|0x04|0x01, 0x80|0x20 };

struct dvb_pll_desc dvb_pll_thomson_dtt7579 = {
.name = "Thomson dtt7579",
.min = 177000000,
Expand Down Expand Up @@ -285,6 +291,8 @@ struct dvb_pll_desc dvb_pll_fmd1216me = {
.max = 858000000,
.iffreq= 36125000,
.set = fmd1216me_bw,
.initdata = tua603x_agc112,
.sleepdata = (u8[]){ 4, 0x9c, 0x60, 0x85, 0x54 },
.count = 7,
.entries = {
{ 143870000, 166667, 0xbc, 0x41 },
Expand Down
61 changes: 2 additions & 59 deletions trunk/drivers/media/video/cx88/cx88-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,62 +221,6 @@ static int dntv_live_dvbt_pro_demod_init(struct dvb_frontend* fe)
return 0;
}

static int philips_fmd1216_pll_init(struct dvb_frontend *fe)
{
struct cx8802_dev *dev= fe->dvb->priv;

/* this message is to set up ATC and ALC */
static u8 fmd1216_init[] = { 0x0b, 0xdc, 0x9c, 0xa0 };
struct i2c_msg msg =
{ .addr = dev->core->pll_addr, .flags = 0,
.buf = fmd1216_init, .len = sizeof(fmd1216_init) };
int err;

if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(&dev->core->i2c_adap, &msg, 1)) != 1) {
if (err < 0)
return err;
else
return -EREMOTEIO;
}

return 0;
}

static int dntv_live_dvbt_pro_tuner_set_params(struct dvb_frontend* fe,
struct dvb_frontend_parameters* params)
{
struct cx8802_dev *dev= fe->dvb->priv;
u8 buf[4];
struct i2c_msg msg =
{ .addr = dev->core->pll_addr, .flags = 0,
.buf = buf, .len = 4 };
int err;

/* Switch PLL to DVB mode */
err = philips_fmd1216_pll_init(fe);
if (err)
return err;

/* Tune PLL */
dvb_pll_configure(dev->core->pll_desc, buf, params);
if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
if ((err = i2c_transfer(&dev->core->i2c_adap, &msg, 1)) != 1) {

printk(KERN_WARNING "cx88-dvb: %s error "
"(addr %02x <- %02x, err = %i)\n",
__FUNCTION__, dev->core->pll_addr, buf[0], err);
if (err < 0)
return err;
else
return -EREMOTEIO;
}

return 0;
}

static struct mt352_config dntv_live_dvbt_pro_config = {
.demod_address = 0x0f,
.no_tuner = 1,
Expand Down Expand Up @@ -531,12 +475,11 @@ static int dvb_register(struct cx8802_dev *dev)
break;
case CX88_BOARD_DNTV_LIVE_DVB_T_PRO:
#if defined(CONFIG_VIDEO_CX88_VP3054) || (defined(CONFIG_VIDEO_CX88_VP3054_MODULE) && defined(MODULE))
dev->core->pll_addr = 0x61;
dev->core->pll_desc = &dvb_pll_fmd1216me;
dev->dvb.frontend = dvb_attach(mt352_attach, &dntv_live_dvbt_pro_config,
&((struct vp3054_i2c_state *)dev->card_priv)->adap);
if (dev->dvb.frontend != NULL) {
dev->dvb.frontend->ops.tuner_ops.set_params = dntv_live_dvbt_pro_tuner_set_params;
dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x61,
&dev->core->i2c_adap, &dvb_pll_fmd1216me);
}
#else
printk("%s: built without vp3054 support\n", dev->core->name);
Expand Down
140 changes: 5 additions & 135 deletions trunk/drivers/media/video/saa7134/saa7134-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -432,135 +432,6 @@ static struct tda1004x_config philips_europa_config = {

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

static int philips_fmd1216_tuner_init(struct dvb_frontend *fe)
{
struct saa7134_dev *dev = fe->dvb->priv;
struct tda1004x_state *state = fe->demodulator_priv;
u8 addr = state->config->tuner_address;
/* this message is to set up ATC and ALC */
static u8 fmd1216_init[] = { 0x0b, 0xdc, 0x9c, 0xa0 };
struct i2c_msg tuner_msg = {.addr = addr,.flags = 0,.buf = fmd1216_init,.len = sizeof(fmd1216_init) };

if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
return -EIO;
msleep(1);

return 0;
}

static int philips_fmd1216_tuner_sleep(struct dvb_frontend *fe)
{
struct saa7134_dev *dev = fe->dvb->priv;
struct tda1004x_state *state = fe->demodulator_priv;
u8 addr = state->config->tuner_address;
/* this message actually turns the tuner back to analog mode */
u8 fmd1216_init[] = { 0x0b, 0xdc, 0x9c, 0x60 };
struct i2c_msg tuner_msg = {.addr = addr,.flags = 0,.buf = fmd1216_init,.len = sizeof(fmd1216_init) };

if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &tuner_msg, 1);
msleep(1);
fmd1216_init[2] = 0x86;
fmd1216_init[3] = 0x54;
if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &tuner_msg, 1);
msleep(1);
return 0;
}

static int philips_fmd1216_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
{
struct saa7134_dev *dev = fe->dvb->priv;
struct tda1004x_state *state = fe->demodulator_priv;
u8 addr = state->config->tuner_address;
u8 tuner_buf[4];
struct i2c_msg tuner_msg = {.addr = addr,.flags = 0,.buf = tuner_buf,.len =
sizeof(tuner_buf) };
int tuner_frequency = 0;
int divider = 0;
u8 band, mode, cp;

/* determine charge pump */
tuner_frequency = params->frequency + 36130000;
if (tuner_frequency < 87000000)
return -EINVAL;
/* low band */
else if (tuner_frequency < 180000000) {
band = 1;
mode = 7;
cp = 0;
} else if (tuner_frequency < 195000000) {
band = 1;
mode = 6;
cp = 1;
/* mid band */
} else if (tuner_frequency < 366000000) {
if (params->u.ofdm.bandwidth == BANDWIDTH_8_MHZ) {
band = 10;
} else {
band = 2;
}
mode = 7;
cp = 0;
} else if (tuner_frequency < 478000000) {
if (params->u.ofdm.bandwidth == BANDWIDTH_8_MHZ) {
band = 10;
} else {
band = 2;
}
mode = 6;
cp = 1;
/* high band */
} else if (tuner_frequency < 662000000) {
if (params->u.ofdm.bandwidth == BANDWIDTH_8_MHZ) {
band = 12;
} else {
band = 4;
}
mode = 7;
cp = 0;
} else if (tuner_frequency < 840000000) {
if (params->u.ofdm.bandwidth == BANDWIDTH_8_MHZ) {
band = 12;
} else {
band = 4;
}
mode = 6;
cp = 1;
} else {
if (params->u.ofdm.bandwidth == BANDWIDTH_8_MHZ) {
band = 12;
} else {
band = 4;
}
mode = 7;
cp = 1;

}
/* calculate divisor */
/* ((36166000 + Finput) / 166666) rounded! */
divider = (tuner_frequency + 83333) / 166667;

/* setup tuner buffer */
tuner_buf[0] = (divider >> 8) & 0x7f;
tuner_buf[1] = divider & 0xff;
tuner_buf[2] = 0x80 | (cp << 6) | (mode << 3) | 4;
tuner_buf[3] = 0x40 | band;

if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1) {
wprintk("could not write to tuner at addr: 0x%02x\n",
addr << 1);
return -EIO;
}
return 0;
}

static struct tda1004x_config medion_cardbus = {
.demod_address = 0x08,
.invert = 1,
Expand Down Expand Up @@ -992,9 +863,8 @@ static int dvb_init(struct saa7134_dev *dev)
&medion_cardbus,
&dev->i2c_adap);
if (dev->dvb.frontend) {
dev->dvb.frontend->ops.tuner_ops.init = philips_fmd1216_tuner_init;
dev->dvb.frontend->ops.tuner_ops.sleep = philips_fmd1216_tuner_sleep;
dev->dvb.frontend->ops.tuner_ops.set_params = philips_fmd1216_tuner_set_params;
dvb_attach(dvb_pll_attach, dev->dvb.frontend, medion_cardbus.tuner_address,
&dev->i2c_adap, &dvb_pll_fmd1216me);
}
break;
case SAA7134_BOARD_PHILIPS_TOUGH:
Expand Down Expand Up @@ -1123,9 +993,9 @@ static int dvb_init(struct saa7134_dev *dev)
if (dev->dvb.frontend) {
dev->original_demod_sleep = dev->dvb.frontend->ops.sleep;
dev->dvb.frontend->ops.sleep = philips_europa_demod_sleep;
dev->dvb.frontend->ops.tuner_ops.init = philips_fmd1216_tuner_init;
dev->dvb.frontend->ops.tuner_ops.sleep = philips_fmd1216_tuner_sleep;
dev->dvb.frontend->ops.tuner_ops.set_params = philips_fmd1216_tuner_set_params;

dvb_attach(dvb_pll_attach, dev->dvb.frontend, medion_cardbus.tuner_address,
&dev->i2c_adap, &dvb_pll_fmd1216me);
}
break;
case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
Expand Down

0 comments on commit 72b3536

Please sign in to comment.