struct mxl111sf_state *state = d_to_priv(d);
        int ret;
        static u8 eeprom[256];
-       struct i2c_client c;
+       u8 reg = 0;
+       struct i2c_msg msg[2] = {
+               { .addr = 0xa0 >> 1, .len = 1, .buf = ® },
+               { .addr = 0xa0 >> 1, .flags = I2C_M_RD,
+                 .len = sizeof(eeprom), .buf = eeprom },
+       };
 
        ret = get_chip_info(state);
        if (mxl_fail(ret))
        if (state->chip_rev > MXL111SF_V6)
                mxl111sf_config_pin_mux_modes(state, PIN_MUX_TS_SPI_IN_MODE_1);
 
-       c.adapter = &d->i2c_adap;
-       c.addr = 0xa0 >> 1;
-
-       ret = tveeprom_read(&c, eeprom, sizeof(eeprom));
+       ret = i2c_transfer(&d->i2c_adap, msg, 2);
        if (mxl_fail(ret))
                return 0;
-       tveeprom_hauppauge_analog(&c, &state->tv, (0x84 == eeprom[0xa0]) ?
+       tveeprom_hauppauge_analog(NULL, &state->tv, (0x84 == eeprom[0xa0]) ?
                        eeprom + 0xa0 : eeprom + 0x80);
 #if 0
        switch (state->tv.model) {