diff options
author | Igor M. Liplianin <liplianin@netup.ru> | 2009-07-20 00:37:09 +0400 |
---|---|---|
committer | Igor M. Liplianin <liplianin@netup.ru> | 2009-07-20 00:37:09 +0400 |
commit | 680b58a1db752ccb021764aae84f0a40b1825e7e (patch) | |
tree | 1c3ed259d594333a73673c45282e5019d664c83f /linux/drivers/media/dvb/frontends | |
parent | 8b9e242409ed16e33bc5b4e7ab3c83724a221366 (diff) | |
download | mediapointer-dvb-s2-680b58a1db752ccb021764aae84f0a40b1825e7e.tar.gz mediapointer-dvb-s2-680b58a1db752ccb021764aae84f0a40b1825e7e.tar.bz2 |
Add output clock configuration for stv6110 tuner.
From: Igor M. Liplianin <liplianin@netup.ru>
Signed-off-by: Igor M. Liplianin <liplianin@netup.ru>
Diffstat (limited to 'linux/drivers/media/dvb/frontends')
-rw-r--r-- | linux/drivers/media/dvb/frontends/stv6110.c | 10 | ||||
-rw-r--r-- | linux/drivers/media/dvb/frontends/stv6110.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/linux/drivers/media/dvb/frontends/stv6110.c b/linux/drivers/media/dvb/frontends/stv6110.c index 70efac869..5aabb782e 100644 --- a/linux/drivers/media/dvb/frontends/stv6110.c +++ b/linux/drivers/media/dvb/frontends/stv6110.c @@ -36,6 +36,7 @@ struct stv6110_priv { struct i2c_adapter *i2c; u32 mclk; + u8 clk_div; u8 regs[8]; }; @@ -221,6 +222,10 @@ static int stv6110_init(struct dvb_frontend *fe) priv->regs[RSTV6110_CTRL1] |= ((((priv->mclk / 1000000) - 16) & 0x1f) << 3); + /* divisor value for the output clock */ + priv->regs[RSTV6110_CTRL2] &= ~0xc0; + priv->regs[RSTV6110_CTRL2] |= (priv->clk_div << 6); + stv6110_write_regs(fe, &priv->regs[RSTV6110_CTRL1], RSTV6110_CTRL1, 8); msleep(1); stv6110_set_bandwidth(fe, 72000000); @@ -418,6 +423,10 @@ struct dvb_frontend *stv6110_attach(struct dvb_frontend *fe, }; int ret; + /* divisor value for the output clock */ + reg0[2] &= ~0xc0; + reg0[2] |= (config->clk_div << 6); + if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 1); @@ -436,6 +445,7 @@ struct dvb_frontend *stv6110_attach(struct dvb_frontend *fe, priv->i2c_address = config->i2c_address; priv->i2c = i2c; priv->mclk = config->mclk; + priv->clk_div = config->clk_div; memcpy(&priv->regs, ®0[1], 8); diff --git a/linux/drivers/media/dvb/frontends/stv6110.h b/linux/drivers/media/dvb/frontends/stv6110.h index 1c0314d6a..2574e1fba 100644 --- a/linux/drivers/media/dvb/frontends/stv6110.h +++ b/linux/drivers/media/dvb/frontends/stv6110.h @@ -42,6 +42,7 @@ struct stv6110_config { u8 i2c_address; u32 mclk; int iq_wiring; + u8 clk_div; /* divisor value for the output clock */ }; #if defined(CONFIG_DVB_STV6110) || (defined(CONFIG_DVB_STV6110_MODULE) \ |