data[2] = 0x80 | ((div & 0x18000) >> 10) | 4;
        data[3] = (params->frequency > 1530000) ? 0xE0 : 0xE4;
 
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        ret = i2c_transfer(i2c, &msg, 1);
        return (ret != 1) ? -EIO : 0;
 }
 
        if (params->frequency > 1530000)
                buf[3] = 0xc0;
 
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if (i2c_transfer(i2c, &msg, 1) != 1)
                return -EIO;
        return 0;
 
        int err;
 
        dvb_pll_configure(&dvb_pll_lg_tdvs_h06xf, buf, params->frequency, 0);
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) {
                printk(KERN_WARNING "lg_h06xf: %s error "
                        "(addr %02x <- %02x, err = %i)\n",
        buf[0] |= 0x18;
        buf[1] = 0x50;
        msg.len = 2;
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if ((err = i2c_transfer(i2c_adap, &msg, 1)) != 1) {
                printk(KERN_WARNING "lg_h06xf: %s error "
                        "(addr %02x <- %02x, err = %i)\n",
 
        struct stv0299_state* state = fe->demodulator_priv;
 
        if (enable) {
-               return stv0299_writeregI(state, 0x05, 0xb5);
+               stv0299_writeregI(state, 0x05, 0xb5);
        } else {
-               return stv0299_writeregI(state, 0x05, 0x35);
+               stv0299_writeregI(state, 0x05, 0x35);
        }
+       udelay(1);
+       return 0;
 }
 
 static int stv0299_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* fesettings)
 
        data[2] = ((div >> 10) & 0x60) | 0x85;
        data[3] = params->frequency < 592000000 ? 0x40 : 0x80;
 
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1) return -EIO;
        return 0;
 }
        struct i2c_msg tuner_msg = { .addr=0x60, .flags=0, .buf=td1316_init, .len=sizeof(td1316_init) };
 
        // setup PLL configuration
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) return -EIO;
        msleep(1);
 
        tuner_msg.addr = 0x65;
        tuner_msg.buf = disable_mc44BC374c;
        tuner_msg.len = sizeof(disable_mc44BC374c);
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1) {
                i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1);
        }
        tuner_buf[2] = 0xca;
        tuner_buf[3] = (cp << 5) | (filter << 3) | band;
 
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if (i2c_transfer(&ttusb->i2c_adap, &tuner_msg, 1) != 1)
                return -EIO;
 
        if (ttusb->revision == TTUSB_REV_2_2)
                buf[3] |= 0x20;
 
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1)
                return -EIO;
 
        buf[2] = 0x8e;
        buf[3] = 0x00;
 
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if (i2c_transfer(&ttusb->i2c_adap, &msg, 1) != 1)
                return -EIO;
 
        data[2] = 0x85 | ((div >> 10) & 0x60);
        data[3] = (params->frequency < 174000000 ? 0x88 : params->frequency < 470000000 ? 0x84 : 0x81);
 
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        if (i2c_transfer (&ttusb->i2c_adap, &msg, 1) != 1)
                return -EIO;
 
 
        f.tuner     = 0;
        f.type      = V4L2_TUNER_DIGITAL_TV;
        f.frequency = params->frequency / 1000 * 16 / 1000;
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        i2c_transfer(&dev->i2c_adap, &msg, 1);
        saa7134_i2c_call_clients(dev,VIDIOC_S_FREQUENCY,&f);
        msg.buf = on;
+       if (fe->ops->i2c_gate_ctrl)
+               fe->ops->i2c_gate_ctrl(fe, 1);
        i2c_transfer(&dev->i2c_adap, &msg, 1);
 
        pinnacle_antenna_pwr(dev, antenna_pwr);