struct cs42l51_private {
        enum snd_soc_control_type control_type;
-       void *control_data;
        unsigned int mclk;
        unsigned int audio_mode;        /* The mode (I2S or left-justified) */
        enum master_slave_mode func;
 static int cs42l51_fill_cache(struct snd_soc_codec *codec)
 {
        u8 *cache = codec->reg_cache + 1;
-       struct i2c_client *i2c_client = codec->control_data;
+       struct i2c_client *i2c_client = to_i2c_client(codec->dev);
        s32 length;
 
        length = i2c_smbus_read_i2c_block_data(i2c_client,
        struct snd_soc_dapm_context *dapm = &codec->dapm;
        int ret, reg;
 
-       codec->control_data = cs42l51->control_data;
-
        ret = cs42l51_fill_cache(codec);
        if (ret < 0) {
                dev_err(codec->dev, "failed to fill register cache\n");
        }
 
        i2c_set_clientdata(i2c_client, cs42l51);
-       cs42l51->control_data = i2c_client;
        cs42l51->control_type = SND_SOC_I2C;
 
        ret =  snd_soc_register_codec(&i2c_client->dev,