V4L/DVB (9462): Allow specifying clock per device
authorManu Abraham <abraham.manu@gmail.com>
Tue, 4 Mar 2008 22:19:58 +0000 (19:19 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 29 Dec 2008 19:53:23 +0000 (17:53 -0200)
Optimizations galore: Blistering barnacles! The KNC1 and friends
like 90 Mhz clock much better rather than running at a higher
throttle, for almost similar hardware. he exact cause unknown,
possibly due to a lower voltage applied for the demod power supply.

Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/stb0899_drv.c
drivers/media/dvb/frontends/stb0899_drv.h
drivers/media/dvb/ttpci/budget-av.c
drivers/media/dvb/ttpci/budget-ci.c

index deeec34fc47ace678a84289d3a9f01cc36ef9252..38d9fa9c0ac11f63bcaac6c6bca1d8c365cab353 100644 (file)
@@ -1534,6 +1534,7 @@ static enum dvbfe_search stb0899_search(struct dvb_frontend *fe, struct dvbfe_pa
        struct stb0899_state *state = fe->demodulator_priv;
        struct stb0899_params *i_params = &state->params;
        struct stb0899_internal *internal = &state->internal;
+       struct stb0899_config *config = state->config;
 
        u32 SearchRange, gain;
 
@@ -1575,9 +1576,9 @@ static enum dvbfe_search stb0899_search(struct dvb_frontend *fe, struct dvbfe_pa
                }
 
                if (i_params->srate <= 5000000)
-                       stb0899_set_mclk(state, 76500000);
+                       stb0899_set_mclk(state, config->lo_clk);
                else
-                       stb0899_set_mclk(state, 99000000);
+                       stb0899_set_mclk(state, config->hi_clk);
 
                switch (state->delsys) {
                case DVBFE_DELSYS_DVBS:
index 45136d9aaeb704864677a5c2f0da105636391e3e..98b200ce0c345460a773010a984cff99d9469367 100644 (file)
@@ -117,6 +117,8 @@ struct stb0899_config {
        u8      out_rate_comp;
        u8      i2c_repeater;
 //     int     inversion;
+       int     lo_clk;
+       int     hi_clk;
 
        u32     esno_ave;
        u32     esno_quant;
index 24123715f19747ee1ebfe7fe826e50459b21ebce..f996cef79ec1ff0930060f338aa43135074eeb07 100644 (file)
@@ -1127,6 +1127,9 @@ static struct stb0899_config knc1_dvbs2_config = {
        .xtal_freq              = 27000000,
        .inversion              = IQ_SWAP_OFF, /* 1 */
 
+       .lo_clk                 = 76500000,
+       .hi_clk                 = 90000000,
+
        .esno_ave               = STB0899_DVBS2_ESNO_AVE,
        .esno_quant             = STB0899_DVBS2_ESNO_QUANT,
        .avframes_coarse        = STB0899_DVBS2_AVFRAMES_COARSE,
index ebe8210b123d0c4195ba1bfb6554509471291f76..497f584e1bd63ad179abcc283758be50777dd6bb 100644 (file)
@@ -1312,6 +1312,9 @@ static struct stb0899_config tt3200_config = {
        .xtal_freq              = 27000000,
        .inversion              = IQ_SWAP_ON, /* 1 */
 
+       .lo_clk                 = 76500000,
+       .hi_clk                 = 99000000,
+
        .esno_ave               = STB0899_DVBS2_ESNO_AVE,
        .esno_quant             = STB0899_DVBS2_ESNO_QUANT,
        .avframes_coarse        = STB0899_DVBS2_AVFRAMES_COARSE,