/* I2C **********************************************************************/
 /****************************************************************************/
 
-static int i2c_read1(struct i2c_adapter *adapter, u8 adr, u8 *val)
+static int drxk_i2c_transfer(struct drxk_state *state, struct i2c_msg *msgs,
+                            unsigned len)
+{
+       return i2c_transfer(state->i2c, msgs, len);
+}
+
+static int i2c_read1(struct drxk_state *state, u8 adr, u8 *val)
 {
        struct i2c_msg msgs[1] = { {.addr = adr, .flags = I2C_M_RD,
                                    .buf = val, .len = 1}
        };
 
-       return i2c_transfer(adapter, msgs, 1);
+       return drxk_i2c_transfer(state, msgs, 1);
 }
 
-static int i2c_write(struct i2c_adapter *adap, u8 adr, u8 *data, int len)
+static int i2c_write(struct drxk_state *state, u8 adr, u8 *data, int len)
 {
        int status;
        struct i2c_msg msg = {
                        printk(KERN_CONT " %02x", data[i]);
                printk(KERN_CONT "\n");
        }
-       status = i2c_transfer(adap, &msg, 1);
+       status = drxk_i2c_transfer(state, &msg, 1);
        if (status >= 0 && status != 1)
                status = -EIO;
 
        return status;
 }
 
-static int i2c_read(struct i2c_adapter *adap,
+static int i2c_read(struct drxk_state *state,
                    u8 adr, u8 *msg, int len, u8 *answ, int alen)
 {
        int status;
                 .buf = answ, .len = alen}
        };
 
-       status = i2c_transfer(adap, msgs, 2);
+       status = drxk_i2c_transfer(state, msgs, 2);
        if (status != 2) {
                if (debug > 2)
                        printk(KERN_CONT ": ERROR!\n");
                len = 2;
        }
        dprintk(2, "(0x%08x, 0x%02x)\n", reg, flags);
-       status = i2c_read(state->i2c, adr, mm1, len, mm2, 2);
+       status = i2c_read(state, adr, mm1, len, mm2, 2);
        if (status < 0)
                return status;
        if (data)
                len = 2;
        }
        dprintk(2, "(0x%08x, 0x%02x)\n", reg, flags);
-       status = i2c_read(state->i2c, adr, mm1, len, mm2, 4);
+       status = i2c_read(state, adr, mm1, len, mm2, 4);
        if (status < 0)
                return status;
        if (data)
        mm[len + 1] = (data >> 8) & 0xff;
 
        dprintk(2, "(0x%08x, 0x%04x, 0x%02x)\n", reg, data, flags);
-       return i2c_write(state->i2c, adr, mm, len + 2);
+       return i2c_write(state, adr, mm, len + 2);
 }
 
 static int write16(struct drxk_state *state, u32 reg, u16 data)
        mm[len + 3] = (data >> 24) & 0xff;
        dprintk(2, "(0x%08x, 0x%08x, 0x%02x)\n", reg, data, flags);
 
-       return i2c_write(state->i2c, adr, mm, len + 4);
+       return i2c_write(state, adr, mm, len + 4);
 }
 
 static int write32(struct drxk_state *state, u32 reg, u32 data)
                                        printk(KERN_CONT " %02x", pBlock[i]);
                        printk(KERN_CONT "\n");
                }
-               status = i2c_write(state->i2c, state->demod_address,
+               status = i2c_write(state, state->demod_address,
                                   &state->Chunk[0], Chunk + AdrLength);
                if (status < 0) {
                        printk(KERN_ERR "drxk: %s: i2c write error at addr 0x%02x\n",
 
        dprintk(1, "\n");
 
-       status = i2c_read1(state->i2c, state->demod_address, &data);
+       status = i2c_read1(state, state->demod_address, &data);
        if (status < 0) {
                do {
                        data = 0;
-                       status = i2c_write(state->i2c, state->demod_address,
+                       status = i2c_write(state, state->demod_address,
                                           &data, 1);
                        msleep(10);
                        retryCount++;
                        if (status < 0)
                                continue;
-                       status = i2c_read1(state->i2c, state->demod_address,
+                       status = i2c_read1(state, state->demod_address,
                                           &data);
                } while (status < 0 &&
                         (retryCount < DRXK_MAX_RETRIES_POWERUP));