]> err.no Git - linux-2.6/commitdiff
V4L/DVB (7073): DiB7070: Reception quality improved
authorPatrick Boettcher <pb@linuxtv.org>
Fri, 25 Jan 2008 10:25:20 +0000 (07:25 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 25 Jan 2008 21:05:19 +0000 (19:05 -0200)
Removing two bugs to improve sensitivity for DiB7070 and Dib7000P with MT2266.

Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/dvb-usb/dib0700_devices.c
drivers/media/dvb/frontends/dib0070.c

index ffecb6ed819010f40a7e8d60a8dc5f2918da63d0..1c6843c631e19a06ba86b0f1c961544d8865041c 100644 (file)
@@ -781,6 +781,8 @@ static struct dib7000p_config dib7070p_dib7000p_config = {
        .agc_config_count = 1,
        .agc = &dib7070_agc_config,
        .bw  = &dib7070_bw_config_12_mhz,
+       .tuner_is_baseband = 1,
+       .spur_protect = 1,
 
        .gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
        .gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
@@ -820,6 +822,8 @@ static struct dib7000p_config stk7070pd_dib7000p_config[2] = {
                .agc_config_count = 1,
                .agc = &dib7070_agc_config,
                .bw  = &dib7070_bw_config_12_mhz,
+               .tuner_is_baseband = 1,
+               .spur_protect = 1,
 
                .gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
                .gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
@@ -832,6 +836,8 @@ static struct dib7000p_config stk7070pd_dib7000p_config[2] = {
                .agc_config_count = 1,
                .agc = &dib7070_agc_config,
                .bw  = &dib7070_bw_config_12_mhz,
+               .tuner_is_baseband = 1,
+               .spur_protect = 1,
 
                .gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS,
                .gpio_val = DIB7000P_GPIO_DEFAULT_VALUES,
index 481eaa684157773ae7cff688bdf5d0becdbf83bc..fe895bf7b18fbc686a7d4114d2e506bbf3b9bbe6 100644 (file)
@@ -434,9 +434,14 @@ static u16 dib0070_p1f_defaults[] =
        0,
 };
 
-static void dib0070_wbd_calibration(struct dib0070_state *state)
+static void dib0070_wbd_calibration(struct dvb_frontend *fe)
 {
        u16 wbd_offs;
+       struct dib0070_state *state = fe->tuner_priv;
+
+       if (state->cfg->sleep)
+               state->cfg->sleep(fe, 0);
+
        dib0070_write_reg(state, 0x0f, 0x6d81);
        dib0070_write_reg(state, 0x20, 0x0040 | 0x0020 | 0x0010 | 0x0008 | 0x0002 | 0x0001);
        msleep(9);
@@ -444,6 +449,10 @@ static void dib0070_wbd_calibration(struct dib0070_state *state)
        dib0070_write_reg(state, 0x20, 0);
        state->wbd_ff_offset = ((wbd_offs * 8 * 18 / 33 + 1) / 2);
        dprintk( "WBDStart = %d (Vargen) - FF = %hd", (u32) wbd_offs * 1800/1024, state->wbd_ff_offset);
+
+       if (state->cfg->sleep)
+               state->cfg->sleep(fe, 1);
+
 }
 
 u16 dib0070_wbd_offset(struct dvb_frontend *fe)
@@ -560,7 +569,7 @@ struct dvb_frontend * dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter
        if (dib0070_reset(state) != 0)
                goto free_mem;
 
-       dib0070_wbd_calibration(state);
+       dib0070_wbd_calibration(fe);
 
        printk(KERN_INFO "DiB0070: successfully identified\n");
        memcpy(&fe->ops.tuner_ops, &dib0070_ops, sizeof(struct dvb_tuner_ops));