struct snd_ac97 *ac97;  /* for ad-hoc ac97 devices */
        unsigned int active;
        unsigned int pcm_devs;
-       void *private_data;
+       void *drvdata;
 
        /* codec IO */
        void *control_data; /* codec control (i2c/3wire) data */
        return codec->write(codec, reg, val);
 }
 
+static inline void snd_soc_codec_set_drvdata(struct snd_soc_codec *codec,
+                                            void *data)
+{
+       codec->drvdata = data;
+}
+
+static inline void *snd_soc_codec_get_drvdata(struct snd_soc_codec *codec)
+{
+       return codec->drvdata;
+}
+
 #include <sound/soc-dai.h>
 
 #endif
 
        mutex_init(&codec->mutex);
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
-       codec->private_data = ad1836;
+       snd_soc_codec_set_drvdata(codec, ad1836);
        codec->reg_cache = ad1836->reg_cache;
        codec->reg_cache_size = AD1836_NUM_REGS;
        codec->name = "AD1836";
 
        mutex_init(&codec->mutex);
        codec->control_data = ctrl_data;
        codec->dev = dev;
-       codec->private_data = ad193x;
+       snd_soc_codec_set_drvdata(codec, ad193x);
        codec->reg_cache = ad193x->reg_cache;
        codec->reg_cache_size = AD193X_NUM_REGS;
        codec->name = "AD193X";
 
        codec->owner = THIS_MODULE;
        codec->dai = &ak4104_dai;
        codec->num_dai = 1;
-       codec->private_data = ak4104;
+       snd_soc_codec_set_drvdata(codec, ak4104);
        codec->control_data = spi;
        codec->reg_cache = ak4104->reg_cache;
        codec->reg_cache_size = AK4104_NUM_REGS;
 
        int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct ak4535_priv *ak4535 = codec->private_data;
+       struct ak4535_priv *ak4535 = snd_soc_codec_get_drvdata(codec);
 
        ak4535->sysclk = freq;
        return 0;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct ak4535_priv *ak4535 = codec->private_data;
+       struct ak4535_priv *ak4535 = snd_soc_codec_get_drvdata(codec);
        u8 mode2 = ak4535_read_reg_cache(codec, AK4535_MODE2) & ~(0x3 << 5);
        int rate = params_rate(params), fs = 256;
 
                return -ENOMEM;
        }
 
-       codec->private_data = ak4535;
+       snd_soc_codec_set_drvdata(codec, ak4535);
        socdev->card->codec = codec;
        mutex_init(&codec->mutex);
        INIT_LIST_HEAD(&codec->dapm_widgets);
 #endif
 
        if (ret != 0) {
-               kfree(codec->private_data);
+               kfree(snd_soc_codec_get_drvdata(codec));
                kfree(codec);
        }
        return ret;
                i2c_unregister_device(codec->control_data);
        i2c_del_driver(&ak4535_i2c_driver);
 #endif
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
        kfree(codec);
 
        return 0;
 
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data     = ak4642;
+       snd_soc_codec_set_drvdata(codec, ak4642);
        codec->name             = "AK4642";
        codec->owner            = THIS_MODULE;
        codec->read             = ak4642_read_reg_cache;
 
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = ak4671;
+       snd_soc_codec_set_drvdata(codec,  ak4671);
        codec->name = "AK4671";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
                                 int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
        unsigned int rates = 0;
        unsigned int rate_min = -1;
        unsigned int rate_max = 0;
                              unsigned int format)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
        int ret = 0;
 
        /* set DAI format */
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
        int ret;
        unsigned int i;
        unsigned int rate;
 static int cs4270_dai_mute(struct snd_soc_dai *dai, int mute)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
        int reg6;
 
        reg6 = snd_soc_read(codec, CS4270_MUTE);
                                struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
        int left = !ucontrol->value.integer.value[0];
        int right = !ucontrol->value.integer.value[1];
 
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = cs4270_codec;
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
        int i, ret;
 
        /* Connect the codec to the socdev.  snd_soc_new_pcms() needs this. */
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = cs4270_codec;
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
 
        snd_soc_free_pcms(socdev);
        regulator_bulk_disable(ARRAY_SIZE(cs4270->supplies), cs4270->supplies);
        codec->owner = THIS_MODULE;
        codec->dai = &cs4270_dai;
        codec->num_dai = 1;
-       codec->private_data = cs4270;
+       snd_soc_codec_set_drvdata(codec, cs4270);
        codec->control_data = i2c_client;
        codec->read = cs4270_read_reg_cache;
        codec->write = cs4270_i2c_write;
 static int cs4270_soc_suspend(struct platform_device *pdev, pm_message_t mesg)
 {
        struct snd_soc_codec *codec = cs4270_codec;
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
        int reg, ret;
 
        reg = snd_soc_read(codec, CS4270_PWRCTL) | CS4270_PWRCTL_PDN_ALL;
 static int cs4270_soc_resume(struct platform_device *pdev)
 {
        struct snd_soc_codec *codec = cs4270_codec;
-       struct cs4270_private *cs4270 = codec->private_data;
+       struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec);
        struct i2c_client *i2c_client = codec->control_data;
        int reg;
 
 
 
        codec->name = "CX20442";
        codec->owner = THIS_MODULE;
-       codec->private_data = cx20442;
+       snd_soc_codec_set_drvdata(codec, cx20442);
 
        codec->dai = &cx20442_dai;
        codec->num_dai = 1;
 
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data     = da7210;
+       snd_soc_codec_set_drvdata(codec, da7210);
        codec->name             = "DA7210";
        codec->owner            = THIS_MODULE;
        codec->read             = da7210_read;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct ssm2602_priv *ssm2602 = codec->private_data;
+       struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
        struct i2c_client *i2c = codec->control_data;
        u16 iface = ssm2602_read_reg_cache(codec, SSM2602_IFACE) & 0xfff3;
        int i = get_coeff(ssm2602->sysclk, params_rate(params));
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct ssm2602_priv *ssm2602 = codec->private_data;
+       struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
        struct i2c_client *i2c = codec->control_data;
        struct snd_pcm_runtime *master_runtime;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct ssm2602_priv *ssm2602 = codec->private_data;
+       struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
 
        /* deactivate */
        if (!codec->active)
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct ssm2602_priv *ssm2602 = codec->private_data;
+       struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
        switch (freq) {
        case 11289600:
        case 12000000:
                return -ENOMEM;
        }
 
-       codec->private_data = ssm2602;
+       snd_soc_codec_set_drvdata(codec, ssm2602);
        socdev->card->codec = codec;
        mutex_init(&codec->mutex);
        INIT_LIST_HEAD(&codec->dapm_widgets);
        i2c_unregister_device(codec->control_data);
        i2c_del_driver(&ssm2602_i2c_driver);
 #endif
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
        kfree(codec);
 
        return 0;
 
 pcm_err:
        snd_soc_free_ac97_codec(codec);
 codec_err:
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
 cache_err:
        kfree(socdev->card->codec);
        socdev->card->codec = NULL;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct aic3x_priv *aic3x = codec->private_data;
+       struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
        int codec_clk = 0, bypass_pll = 0, fsref, last_clk = 0;
        u8 data, j, r, p, pll_q, pll_p = 1, pll_r = 1, pll_j = 1;
        u16 d, pll_d = 1;
                                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct aic3x_priv *aic3x = codec->private_data;
+       struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
 
        aic3x->sysclk = freq;
        return 0;
                             unsigned int fmt)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct aic3x_priv *aic3x = codec->private_data;
+       struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
        u8 iface_areg, iface_breg;
        int delay = 0;
 
 static int aic3x_set_bias_level(struct snd_soc_codec *codec,
                                enum snd_soc_bias_level level)
 {
-       struct aic3x_priv *aic3x = codec->private_data;
+       struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
        u8 reg;
 
        switch (level) {
 
        codec = &aic3x->codec;
        codec->dev = &i2c->dev;
-       codec->private_data = aic3x;
+       snd_soc_codec_set_drvdata(codec, aic3x);
        codec->control_data = i2c;
        codec->hw_write = (hw_write_t) i2c_master_send;
 
 
 static int dac33_read(struct snd_soc_codec *codec, unsigned int reg,
                      u8 *value)
 {
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        int val;
 
        *value = reg & 0xff;
 static int dac33_write(struct snd_soc_codec *codec, unsigned int reg,
                       unsigned int value)
 {
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        u8 data[2];
        int ret = 0;
 
 static int dac33_write_locked(struct snd_soc_codec *codec, unsigned int reg,
                       unsigned int value)
 {
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        int ret;
 
        mutex_lock(&dac33->mutex);
 static int dac33_write16(struct snd_soc_codec *codec, unsigned int reg,
                       unsigned int value)
 {
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        u8 data[3];
        int ret = 0;
 
 
 static void dac33_restore_regs(struct snd_soc_codec *codec)
 {
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        u8 *cache = codec->reg_cache;
        u8 data[2];
        int i, ret;
 
 static int dac33_hard_power(struct snd_soc_codec *codec, int power)
 {
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        int ret;
 
        mutex_lock(&dac33->mutex);
                         struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 
        ucontrol->value.integer.value[0] = dac33->nsample;
 
                         struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        int ret = 0;
 
        if (dac33->nsample == ucontrol->value.integer.value[0])
                         struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 
        ucontrol->value.integer.value[0] = dac33->fifo_mode;
 
                         struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        int ret = 0;
 
        if (dac33->fifo_mode == ucontrol->value.integer.value[0])
 static irqreturn_t dac33_interrupt_handler(int irq, void *dev)
 {
        struct snd_soc_codec *codec = dev;
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
 
        queue_work(dac33->dac33_wq, &dac33->work);
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        unsigned int oscset, ratioset, pwr_ctrl, reg_tmp;
        u8 aictrl_a, aictrl_b, fifoctrl_a;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        unsigned int nsample_limit;
 
        /* Number of samples (16bit, stereo) in one period */
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        int ret = 0;
 
        switch (cmd) {
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        u8 ioc_reg, asrcb_reg;
 
        ioc_reg = dac33_read_reg_cache(codec, DAC33_INT_OSC_CTRL);
                             unsigned int fmt)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct tlv320dac33_priv *dac33 = codec->private_data;
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
        u8 aictrl_a, aictrl_b;
 
        aictrl_a = dac33_read_reg_cache(codec, DAC33_SER_AUDIOIF_CTRL_A);
 
        codec = tlv320dac33_codec;
        socdev->card->codec = codec;
-       dac33 = codec->private_data;
+       dac33 = snd_soc_codec_get_drvdata(codec);
 
        /* Power up the codec */
        dac33_hard_power(codec, 1);
                return -ENOMEM;
 
        codec = &dac33->codec;
-       codec->private_data = dac33;
+       snd_soc_codec_set_drvdata(codec, dac33);
        codec->control_data = client;
 
        mutex_init(&codec->mutex);
 
 static int twl4030_write(struct snd_soc_codec *codec,
                        unsigned int reg, unsigned int value)
 {
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
        int write_to_reg = 0;
 
        twl4030_write_reg_cache(codec, reg, value);
 
 static void twl4030_codec_enable(struct snd_soc_codec *codec, int enable)
 {
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
        int mode;
 
        if (enable == twl4030->codec_powered)
 
 static void twl4030_apll_enable(struct snd_soc_codec *codec, int enable)
 {
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
        int status;
 
        if (enable == twl4030->apll_enabled)
 
 static void twl4030_power_up(struct snd_soc_codec *codec)
 {
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
        u8 anamicl, regmisc1, byte;
        int i = 0;
 
 static int pin_name##pga_event(struct snd_soc_dapm_widget *w,          \
                struct snd_kcontrol *kcontrol, int event)               \
 {                                                                      \
-       struct twl4030_priv *twl4030 = w->codec->private_data;          \
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(w->codec); \
                                                                        \
        switch (event) {                                                \
        case SND_SOC_DAPM_POST_PMU:                                     \
        struct twl4030_setup_data *setup = socdev->codec_data;
 
        unsigned char hs_gain, hs_pop;
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
        /* Base values for ramp delay calculation: 2^19 - 2^26 */
        unsigned int ramp_base[] = {524288, 1048576, 2097152, 4194304,
                                    8388608, 16777216, 33554432, 67108864};
 static int headsetlpga_event(struct snd_soc_dapm_widget *w,
                struct snd_kcontrol *kcontrol, int event)
 {
-       struct twl4030_priv *twl4030 = w->codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(w->codec);
 
        switch (event) {
        case SND_SOC_DAPM_POST_PMU:
 static int headsetrpga_event(struct snd_soc_dapm_widget *w,
                struct snd_kcontrol *kcontrol, int event)
 {
-       struct twl4030_priv *twl4030 = w->codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(w->codec);
 
        switch (event) {
        case SND_SOC_DAPM_POST_PMU:
        struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
        struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
        unsigned short val;
        unsigned short mask, bitmask;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 
        if (twl4030->master_substream) {
                twl4030->slave_substream = substream;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 
        if (twl4030->master_substream == substream)
                twl4030->master_substream = twl4030->slave_substream;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
        u8 mode, old_mode, format, old_format;
 
         /* If the substream has 4 channel, do the necessary setup */
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
 
        switch (freq) {
        case 19200000:
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct twl4030_priv *twl4030 = codec->private_data;
+       struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
        u8 mode;
 
        /* If the system master clock is not 26MHz, the voice PCM interface is
        BUG_ON(!twl4030_codec);
 
        codec = twl4030_codec;
-       twl4030 = codec->private_data;
+       twl4030 = snd_soc_codec_get_drvdata(codec);
        socdev->card->codec = codec;
 
        /* Configuration for headset ramp delay from setup data */
        }
 
        codec = &twl4030->codec;
-       codec->private_data = twl4030;
+       snd_soc_codec_set_drvdata(codec, twl4030);
        codec->dev = &pdev->dev;
        twl4030_dai[0].dev = &pdev->dev;
        twl4030_dai[1].dev = &pdev->dev;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
        struct snd_pcm_runtime *master_runtime;
 
        if (uda134x->master_substream) {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 
        if (uda134x->master_substream == substream)
                uda134x->master_substream = uda134x->slave_substream;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
        u8 hw_params;
 
        if (substream == uda134x->slave_substream) {
                                  int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 
        pr_debug("%s clk_id: %d, freq: %u, dir: %d\n", __func__,
                 clk_id, freq, dir);
                               unsigned int fmt)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 
        pr_debug("%s fmt: %08X\n", __func__, fmt);
 
        uda134x = kzalloc(sizeof(struct uda134x_priv), GFP_KERNEL);
        if (uda134x == NULL)
                goto priv_err;
-       codec->private_data = uda134x;
+       snd_soc_codec_set_drvdata(codec, uda134x);
 
        codec->reg_cache = kmemdup(uda134x_reg, sizeof(uda134x_reg),
                                   GFP_KERNEL);
 pcm_err:
        kfree(codec->reg_cache);
 reg_err:
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
 priv_err:
        kfree(codec);
        return ret;
        snd_soc_free_pcms(socdev);
        snd_soc_dapm_free(socdev);
 
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
        kfree(codec->reg_cache);
        kfree(codec);
 
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct uda1380_priv *uda1380 = codec->private_data;
+       struct uda1380_priv *uda1380 = snd_soc_codec_get_drvdata(codec);
        int mixer = uda1380_read_reg_cache(codec, UDA1380_MIXER);
 
        switch (cmd) {
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = uda1380;
+       snd_soc_codec_set_drvdata(codec, uda1380);
        codec->name = "UDA1380";
        codec->owner = THIS_MODULE;
        codec->read = uda1380_read_reg_cache;
 
  */
 static inline int wm8350_out1_ramp_step(struct snd_soc_codec *codec)
 {
-       struct wm8350_data *wm8350_data = codec->private_data;
+       struct wm8350_data *wm8350_data = snd_soc_codec_get_drvdata(codec);
        struct wm8350_output *out1 = &wm8350_data->out1;
        struct wm8350 *wm8350 = codec->control_data;
        int left_complete = 0, right_complete = 0;
  */
 static inline int wm8350_out2_ramp_step(struct snd_soc_codec *codec)
 {
-       struct wm8350_data *wm8350_data = codec->private_data;
+       struct wm8350_data *wm8350_data = snd_soc_codec_get_drvdata(codec);
        struct wm8350_output *out2 = &wm8350_data->out2;
        struct wm8350 *wm8350 = codec->control_data;
        int left_complete = 0, right_complete = 0;
 {
        struct snd_soc_codec *codec =
            container_of(work, struct snd_soc_codec, delayed_work.work);
-       struct wm8350_data *wm8350_data = codec->private_data;
+       struct wm8350_data *wm8350_data = snd_soc_codec_get_drvdata(codec);
        struct wm8350_output *out1 = &wm8350_data->out1,
            *out2 = &wm8350_data->out2;
        int i, out1_complete, out2_complete;
                     struct snd_kcontrol *kcontrol, int event)
 {
        struct snd_soc_codec *codec = w->codec;
-       struct wm8350_data *wm8350_data = codec->private_data;
+       struct wm8350_data *wm8350_data = snd_soc_codec_get_drvdata(codec);
        struct wm8350_output *out;
 
        switch (w->shift) {
                                  struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8350_data *wm8350_priv = codec->private_data;
+       struct wm8350_data *wm8350_priv = snd_soc_codec_get_drvdata(codec);
        struct wm8350_output *out = NULL;
        struct soc_mixer_control *mc =
                (struct soc_mixer_control *)kcontrol->private_value;
                               struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8350_data *wm8350_priv = codec->private_data;
+       struct wm8350_data *wm8350_priv = snd_soc_codec_get_drvdata(codec);
        struct wm8350_output *out1 = &wm8350_priv->out1;
        struct wm8350_output *out2 = &wm8350_priv->out2;
        struct soc_mixer_control *mc =
 {
        struct snd_soc_codec *codec = codec_dai->codec;
        struct wm8350 *wm8350 = codec->control_data;
-       struct wm8350_data *priv = codec->private_data;
+       struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);
        struct _fll_div fll_div;
        int ret = 0;
        u16 fll_1, fll_4;
                                 enum snd_soc_bias_level level)
 {
        struct wm8350 *wm8350 = codec->control_data;
-       struct wm8350_data *priv = codec->private_data;
+       struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);
        struct wm8350_audio_platform_data *platform =
                wm8350->codec.platform_data;
        u16 pm1;
 int wm8350_hp_jack_detect(struct snd_soc_codec *codec, enum wm8350_jack which,
                          struct snd_soc_jack *jack, int report)
 {
-       struct wm8350_data *priv = codec->private_data;
+       struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);
        struct wm8350 *wm8350 = codec->control_data;
        int irq;
        int ena;
                           struct snd_soc_jack *jack,
                           int detect_report, int short_report)
 {
-       struct wm8350_data *priv = codec->private_data;
+       struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);
        struct wm8350 *wm8350 = codec->control_data;
 
        priv->mic.jack = jack;
        socdev->card->codec = wm8350_codec;
        codec = socdev->card->codec;
        wm8350 = codec->control_data;
-       priv = codec->private_data;
+       priv = snd_soc_codec_get_drvdata(codec);
 
        /* Enable the codec */
        wm8350_set_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA);
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
        struct wm8350 *wm8350 = codec->control_data;
-       struct wm8350_data *priv = codec->private_data;
+       struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);
        int ret;
 
        wm8350_clear_bits(wm8350, WM8350_JACK_DETECT,
        codec->dai = &wm8350_dai;
        codec->num_dai = 1;
        codec->reg_cache_size = WM8350_MAX_REGISTER;
-       codec->private_data = priv;
+       snd_soc_codec_set_drvdata(codec, priv);
        codec->control_data = wm8350;
 
        /* Put the codec into reset if it wasn't already */
 {
        struct wm8350 *wm8350 = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = wm8350->codec.codec;
-       struct wm8350_data *priv = codec->private_data;
+       struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);
 
        snd_soc_unregister_dai(&wm8350_dai);
        snd_soc_unregister_codec(codec);
 
 static inline unsigned int wm8400_read(struct snd_soc_codec *codec,
                                       unsigned int reg)
 {
-       struct wm8400_priv *wm8400 = codec->private_data;
+       struct wm8400_priv *wm8400 = snd_soc_codec_get_drvdata(codec);
 
        if (reg == WM8400_INTDRIVBITS)
                return wm8400->fake_register;
 static int wm8400_write(struct snd_soc_codec *codec, unsigned int reg,
        unsigned int value)
 {
-       struct wm8400_priv *wm8400 = codec->private_data;
+       struct wm8400_priv *wm8400 = snd_soc_codec_get_drvdata(codec);
 
        if (reg == WM8400_INTDRIVBITS) {
                wm8400->fake_register = value;
 
 static void wm8400_codec_reset(struct snd_soc_codec *codec)
 {
-       struct wm8400_priv *wm8400 = codec->private_data;
+       struct wm8400_priv *wm8400 = snd_soc_codec_get_drvdata(codec);
 
        wm8400_reset_codec_reg_cache(wm8400->wm8400);
 }
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8400_priv *wm8400 = codec->private_data;
+       struct wm8400_priv *wm8400 = snd_soc_codec_get_drvdata(codec);
 
        wm8400->sysclk = freq;
        return 0;
                              unsigned int freq_out)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8400_priv *wm8400 = codec->private_data;
+       struct wm8400_priv *wm8400 = snd_soc_codec_get_drvdata(codec);
        struct fll_factors factors;
        int ret;
        u16 reg;
 static int wm8400_set_bias_level(struct snd_soc_codec *codec,
                                 enum snd_soc_bias_level level)
 {
-       struct wm8400_priv *wm8400 = codec->private_data;
+       struct wm8400_priv *wm8400 = snd_soc_codec_get_drvdata(codec);
        u16 val;
        int ret;
 
                return -ENOMEM;
 
        codec = &priv->codec;
-       codec->private_data = priv;
+       snd_soc_codec_set_drvdata(codec, priv);
        codec->control_data = dev_get_drvdata(&dev->dev);
        priv->wm8400 = dev_get_drvdata(&dev->dev);
 
 
 static int __exit wm8400_codec_remove(struct platform_device *dev)
 {
-       struct wm8400_priv *priv = wm8400_codec->private_data;
+       struct wm8400_priv *priv = snd_soc_codec_get_drvdata(wm8400_codec);
        u16 reg;
 
        snd_soc_unregister_dai(&wm8400_dai);
 
                          struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8523_priv *wm8523 = codec->private_data;
+       struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec);
 
        /* The set of sample rates that can be supported depends on the
         * MCLK supplied to the CODEC - enforce this.
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8523_priv *wm8523 = codec->private_data;
+       struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec);
        int i;
        u16 aifctrl1 = snd_soc_read(codec, WM8523_AIF_CTRL1);
        u16 aifctrl2 = snd_soc_read(codec, WM8523_AIF_CTRL2);
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8523_priv *wm8523 = codec->private_data;
+       struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec);
        unsigned int val;
        int i;
 
 static int wm8523_set_bias_level(struct snd_soc_codec *codec,
                                 enum snd_soc_bias_level level)
 {
-       struct wm8523_priv *wm8523 = codec->private_data;
+       struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec);
        int ret, i;
 
        switch (level) {
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8523;
+       snd_soc_codec_set_drvdata(codec, wm8523);
        codec->name = "WM8523";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
 {
        int offset;
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8580_priv *wm8580 = codec->private_data;
+       struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
        struct pll_state *state;
        struct _pll_div pll_div;
        unsigned int reg;
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8580;
+       snd_soc_codec_set_drvdata(codec, wm8580);
        codec->name = "WM8580";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
        struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8711_priv *wm8711 = codec->private_data;
+       struct wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec);
        u16 iface = snd_soc_read(codec, WM8711_IFACE) & 0xfffc;
        int i = get_coeff(wm8711->sysclk, params_rate(params));
        u16 srate = (coeff_div[i].sr << 2) |
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8711_priv *wm8711 = codec->private_data;
+       struct wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec);
 
        switch (freq) {
        case 11289600:
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8711;
+       snd_soc_codec_set_drvdata(codec, wm8711);
        codec->name = "WM8711";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8731_priv *wm8731 = codec->private_data;
+       struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
        u16 iface = snd_soc_read(codec, WM8731_IFACE) & 0xfff3;
        int i = get_coeff(wm8731->sysclk, params_rate(params));
        u16 srate = (coeff_div[i].sr << 2) |
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8731_priv *wm8731 = codec->private_data;
+       struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
 
        switch (freq) {
        case 11289600:
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8731_priv *wm8731 = codec->private_data;
+       struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
 
        snd_soc_write(codec, WM8731_ACTIVE, 0x0);
        wm8731_set_bias_level(codec, SND_SOC_BIAS_OFF);
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8731_priv *wm8731 = codec->private_data;
+       struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
        int i, ret;
        u8 data[2];
        u16 *cache = codec->reg_cache;
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8731;
+       snd_soc_codec_set_drvdata(codec, wm8731);
        codec->name = "WM8731";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8750_priv *wm8750 = codec->private_data;
+       struct wm8750_priv *wm8750 = snd_soc_codec_get_drvdata(codec);
 
        switch (freq) {
        case 11289600:
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8750_priv *wm8750 = codec->private_data;
+       struct wm8750_priv *wm8750 = snd_soc_codec_get_drvdata(codec);
        u16 iface = snd_soc_read(codec, WM8750_IFACE) & 0x1f3;
        u16 srate = snd_soc_read(codec, WM8750_SRATE) & 0x1c0;
        int coeff = get_coeff(wm8750->sysclk, params_rate(params));
        codec->set_bias_level = wm8750_set_bias_level;
        codec->dai = &wm8750_dai;
        codec->num_dai = 1;
-       codec->private_data = wm8750;
        codec->reg_cache_size = ARRAY_SIZE(wm8750->reg_cache) + 1;
        codec->reg_cache = &wm8750->reg_cache;
-       codec->private_data = wm8750;
+       snd_soc_codec_set_drvdata(codec, wm8750);
 
        memcpy(codec->reg_cache, wm8750_reg, sizeof(wm8750->reg_cache));
 
 
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8753_priv *wm8753 = codec->private_data;
+       struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
 
        switch (freq) {
        case 11289600:
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8753_priv *wm8753 = codec->private_data;
+       struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
        u16 voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x01f3;
        u16 srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x017f;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8753_priv *wm8753 = codec->private_data;
+       struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec);
        u16 srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x01c0;
        u16 hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x01f3;
        int coeff;
        codec->num_dai = 2;
        codec->reg_cache_size = ARRAY_SIZE(wm8753->reg_cache) + 1;
        codec->reg_cache = &wm8753->reg_cache;
-       codec->private_data = wm8753;
+       snd_soc_codec_set_drvdata(codec, wm8753);
 
        memcpy(codec->reg_cache, wm8753_reg, sizeof(wm8753->reg_cache));
        INIT_DELAYED_WORK(&codec->delayed_work, wm8753_work);
 
                            struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8776_priv *wm8776 = codec->private_data;
+       struct wm8776_priv *wm8776 = snd_soc_codec_get_drvdata(codec);
        int iface_reg, iface;
        int ratio_shift, master;
        int i;
                             int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8776_priv *wm8776 = codec->private_data;
+       struct wm8776_priv *wm8776 = snd_soc_codec_get_drvdata(codec);
 
        BUG_ON(dai->id >= ARRAY_SIZE(wm8776->sysclk));
 
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8776;
+       snd_soc_codec_set_drvdata(codec, wm8776);
        codec->name = "WM8776";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
 static int wm8900_set_fll(struct snd_soc_codec *codec,
        int fll_id, unsigned int freq_in, unsigned int freq_out)
 {
-       struct wm8900_priv *wm8900 = codec->private_data;
+       struct wm8900_priv *wm8900 = snd_soc_codec_get_drvdata(codec);
        struct _fll_div fll_div;
        unsigned int reg;
 
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8900_priv *wm8900 = codec->private_data;
+       struct wm8900_priv *wm8900 = snd_soc_codec_get_drvdata(codec);
        int fll_out = wm8900->fll_out;
        int fll_in  = wm8900->fll_in;
        int ret;
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8900_priv *wm8900 = codec->private_data;
+       struct wm8900_priv *wm8900 = snd_soc_codec_get_drvdata(codec);
        u16 *cache;
        int i, ret;
 
                return -ENOMEM;
 
        codec = &wm8900->codec;
-       codec->private_data = wm8900;
+       snd_soc_codec_set_drvdata(codec, wm8900);
        codec->reg_cache = &wm8900->reg_cache[0];
        codec->reg_cache_size = WM8900_MAXREG;
 
        wm8900_set_bias_level(wm8900_codec, SND_SOC_BIAS_OFF);
 
        wm8900_dai.dev = NULL;
-       kfree(wm8900_codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(wm8900_codec));
        wm8900_codec = NULL;
 
        return 0;
 
 {
        u16 reg[5];
        struct i2c_client *i2c = codec->control_data;
-       struct wm8903_priv *wm8903 = codec->private_data;
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 
        BUG_ON(start > 48);
 
 {
        struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
        struct snd_soc_codec *codec = widget->codec;
-       struct wm8903_priv *wm8903 = codec->private_data;
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
        struct i2c_client *i2c = codec->control_data;
        u16 reg;
        int ret;
                                 int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8903_priv *wm8903 = codec->private_data;
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 
        wm8903->sysclk = freq;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8903_priv *wm8903 = codec->private_data;
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
        struct i2c_client *i2c = codec->control_data;
        struct snd_pcm_runtime *master_runtime;
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8903_priv *wm8903 = codec->private_data;
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 
        if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
                wm8903->playback_active--;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8903_priv *wm8903 = codec->private_data;
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
        struct i2c_client *i2c = codec->control_data;
        int fs = params_rate(params);
        int bclk;
 int wm8903_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
                      int det, int shrt)
 {
-       struct wm8903_priv *wm8903 = codec->private_data;
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
        int irq_mask = WM8903_MICDET_EINT | WM8903_MICSHRT_EINT;
 
        dev_dbg(codec->dev, "Enabling microphone detection: %x %x\n",
        codec->num_dai = 1;
        codec->reg_cache_size = ARRAY_SIZE(wm8903->reg_cache);
        codec->reg_cache = &wm8903->reg_cache[0];
-       codec->private_data = wm8903;
+       snd_soc_codec_set_drvdata(codec, wm8903);
        codec->volatile_register = wm8903_volatile_register;
        init_completion(&wm8903->wseq);
 
 static __devexit int wm8903_i2c_remove(struct i2c_client *client)
 {
        struct snd_soc_codec *codec = i2c_get_clientdata(client);
-       struct wm8903_priv *priv = codec->private_data;
+       struct wm8903_priv *priv = snd_soc_codec_get_drvdata(codec);
 
        snd_soc_unregister_dai(&wm8903_dai);
        snd_soc_unregister_codec(codec);
        if (client->irq)
                free_irq(client->irq, priv);
 
-       kfree(codec->private_data);
+       kfree(priv);
 
        wm8903_codec = NULL;
        wm8903_dai.dev = NULL;
 
 
 static int wm8904_configure_clocking(struct snd_soc_codec *codec)
 {
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        unsigned int clock0, clock2, rate;
 
        /* Gate the clock while we're updating to avoid misclocking */
 
 static void wm8904_set_drc(struct snd_soc_codec *codec)
 {
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        struct wm8904_pdata *pdata = wm8904->pdata;
        int save, i;
 
                               struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8904_priv *wm8904 = codec->private_data;       
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);  
        struct wm8904_pdata *pdata = wm8904->pdata;
        int value = ucontrol->value.integer.value[0];
 
                               struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 
        ucontrol->value.enumerated.item[0] = wm8904->drc_cfg;
 
 
 static void wm8904_set_retune_mobile(struct snd_soc_codec *codec)
 {
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        struct wm8904_pdata *pdata = wm8904->pdata;
        int best, best_val, save, i, cfg;
 
                                         struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8904_priv *wm8904 = codec->private_data;       
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);  
        struct wm8904_pdata *pdata = wm8904->pdata;
        int value = ucontrol->value.integer.value[0];
 
                                         struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 
        ucontrol->value.enumerated.item[0] = wm8904->retune_mobile_cfg;
 
 
 static int wm8904_set_deemph(struct snd_soc_codec *codec)
 {
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        int val, i, best;
 
        /* If we're using deemphasis select the nearest available sample 
                             struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 
        return wm8904->deemph;
 }
                              struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        int deemph = ucontrol->value.enumerated.item[0];
 
        if (deemph > 1)
                         struct snd_kcontrol *kcontrol, int event)
 {
        struct snd_soc_codec *codec = w->codec;
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 
        switch (event) {
        case SND_SOC_DAPM_PRE_PMU:
                         struct snd_kcontrol *kcontrol, int event)
 {
        struct snd_soc_codec *codec = w->codec;
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        int reg, val;
        int dcs_mask;
        int dcs_l, dcs_r;
 
 static int wm8904_add_widgets(struct snd_soc_codec *codec)
 {
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
 
        snd_soc_dapm_new_controls(codec, wm8904_core_dapm_widgets,
                                  ARRAY_SIZE(wm8904_core_dapm_widgets));
                            struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        int ret, i, best, best_val, cur_val;
        unsigned int aif1 = 0;
        unsigned int aif2 = 0;
                             unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8904_priv *priv = codec->private_data;
+       struct wm8904_priv *priv = snd_soc_codec_get_drvdata(codec);
 
        switch (clk_id) {
        case WM8904_CLK_MCLK:
                               unsigned int rx_mask, int slots, int slot_width)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        int aif1 = 0;
 
        /* Don't need to validate anything if we're turning off TDM */
                          unsigned int Fref, unsigned int Fout)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        struct _fll_div fll_div;
        int ret, val;
        int clock2, fll1;
 
 static void wm8904_sync_cache(struct snd_soc_codec *codec)
 {
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        int i;
 
        if (!codec->cache_sync)
 static int wm8904_set_bias_level(struct snd_soc_codec *codec,
                                 enum snd_soc_bias_level level)
 {
-       struct wm8904_priv *wm8904 = codec->private_data;
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
        int ret;
 
        switch (level) {
                goto pcm_err;
        }
 
-       wm8904_handle_pdata(codec->private_data);
+       wm8904_handle_pdata(snd_soc_codec_get_drvdata(codec));
 
        wm8904_add_widgets(codec);
 
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8904;
+       snd_soc_codec_set_drvdata(codec, wm8904);
        codec->name = "WM8904";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
                                 int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8940_priv *wm8940 = codec->private_data;
+       struct wm8940_priv *wm8940 = snd_soc_codec_get_drvdata(codec);
 
        switch (freq) {
        case 11289600:
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8940;
+       snd_soc_codec_set_drvdata(codec, wm8940);
        codec->name = "WM8940";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
 
 static int wm8955_configure_clocking(struct snd_soc_codec *codec)
 {
-       struct wm8955_priv *wm8955 = codec->private_data;
+       struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
        int i, ret, val;
        int clocking = 0;
        int srate = 0;
 
 static int wm8955_set_deemph(struct snd_soc_codec *codec)
 {
-       struct wm8955_priv *wm8955 = codec->private_data;
+       struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
        int val, i, best;
 
        /* If we're using deemphasis select the nearest available sample
                             struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8955_priv *wm8955 = codec->private_data;
+       struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
 
        return wm8955->deemph;
 }
                             struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8955_priv *wm8955 = codec->private_data;
+       struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
        int deemph = ucontrol->value.enumerated.item[0];
 
        if (deemph > 1)
                            struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8955_priv *wm8955 = codec->private_data;
+       struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
        int ret;
        int wl;
 
                             unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8955_priv *priv = codec->private_data;
+       struct wm8955_priv *priv = snd_soc_codec_get_drvdata(codec);
        int div;
 
        switch (clk_id) {
 static int wm8955_set_bias_level(struct snd_soc_codec *codec,
                                 enum snd_soc_bias_level level)
 {
-       struct wm8955_priv *wm8955 = codec->private_data;
+       struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
        int ret, i;
 
        switch (level) {
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8955;
+       snd_soc_codec_set_drvdata(codec, wm8955);
        codec->name = "WM8955";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
 static int wm8960_add_widgets(struct snd_soc_codec *codec)
 {
        struct wm8960_data *pdata = codec->dev->platform_data;
-       struct wm8960_priv *wm8960 = codec->private_data;
+       struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
        struct snd_soc_dapm_widget *w;
 
        snd_soc_dapm_new_controls(codec, wm8960_dapm_widgets,
 static int wm8960_set_bias_level_capless(struct snd_soc_codec *codec,
                                         enum snd_soc_bias_level level)
 {
-       struct wm8960_priv *wm8960 = codec->private_data;
+       struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
        int reg;
 
        switch (level) {
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8960;
+       snd_soc_codec_set_drvdata(codec, wm8960);
        codec->name = "WM8960";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
                            struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8961_priv *wm8961 = codec->private_data;
+       struct wm8961_priv *wm8961 = snd_soc_codec_get_drvdata(codec);
        int i, best, target, fs;
        u16 reg;
 
                             int dir)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8961_priv *wm8961 = codec->private_data;
+       struct wm8961_priv *wm8961 = snd_soc_codec_get_drvdata(codec);
        u16 reg = snd_soc_read(codec, WM8961_CLOCKING1);
 
        if (freq > 33000000) {
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8961;
+       snd_soc_codec_set_drvdata(codec, wm8961);
        codec->name = "WM8961";
        codec->owner = THIS_MODULE;
        codec->dai = &wm8961_dai;
 
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8971_priv *wm8971 = codec->private_data;
+       struct wm8971_priv *wm8971 = snd_soc_codec_get_drvdata(codec);
 
        switch (freq) {
        case 11289600:
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8971_priv *wm8971 = codec->private_data;
+       struct wm8971_priv *wm8971 = snd_soc_codec_get_drvdata(codec);
        u16 iface = snd_soc_read(codec, WM8971_IFACE) & 0x1f3;
        u16 srate = snd_soc_read(codec, WM8971_SRATE) & 0x1c0;
        int coeff = get_coeff(wm8971->sysclk, params_rate(params));
                return -ENOMEM;
        }
 
-       codec->private_data = wm8971;
+       snd_soc_codec_set_drvdata(codec, wm8971);
        socdev->card->codec = codec;
        mutex_init(&codec->mutex);
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_DELAYED_WORK(&codec->delayed_work, wm8971_work);
        wm8971_workq = create_workqueue("wm8971");
        if (wm8971_workq == NULL) {
-               kfree(codec->private_data);
+               kfree(snd_soc_codec_get_drvdata(codec));
                kfree(codec);
                return -ENOMEM;
        }
 
        if (ret != 0) {
                destroy_workqueue(wm8971_workq);
-               kfree(codec->private_data);
+               kfree(snd_soc_codec_get_drvdata(codec));
                kfree(codec);
        }
 
        i2c_unregister_device(codec->control_data);
        i2c_del_driver(&wm8971_i2c_driver);
 #endif
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
        kfree(codec);
 
        return 0;
 
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8974;
+       snd_soc_codec_set_drvdata(codec, wm8974);
        codec->name = "WM8974";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
  */
 static int wm8978_configure_pll(struct snd_soc_codec *codec)
 {
-       struct wm8978_priv *wm8978 = codec->private_data;
+       struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
        struct wm8978_pll_div pll_div;
        unsigned int f_opclk = wm8978->f_opclk, f_mclk = wm8978->f_mclk,
                f_256fs = wm8978->f_256fs;
                                 int div_id, int div)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8978_priv *wm8978 = codec->private_data;
+       struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
        int ret = 0;
 
        switch (div_id) {
                                 unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8978_priv *wm8978 = codec->private_data;
+       struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
        int ret = 0;
 
        dev_dbg(codec->dev, "%s: ID %d, freq %u\n", __func__, clk_id, freq);
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8978_priv *wm8978 = codec->private_data;
+       struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
        /* Word length mask = 0x60 */
        u16 iface_ctl = snd_soc_read(codec, WM8978_AUDIO_INTERFACE) & ~0x60;
        /* Sampling rate mask = 0xe (for filters) */
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8978_priv *wm8978 = codec->private_data;
+       struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
        int i;
        u16 *cache = codec->reg_cache;
 
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8978;
+       snd_soc_codec_set_drvdata(codec, wm8978);
        codec->name = "WM8978";
        codec->owner = THIS_MODULE;
        codec->bias_level = SND_SOC_BIAS_OFF;
 
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8988_priv *wm8988 = codec->private_data;
+       struct wm8988_priv *wm8988 = snd_soc_codec_get_drvdata(codec);
 
        switch (freq) {
        case 11289600:
                              struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8988_priv *wm8988 = codec->private_data;
+       struct wm8988_priv *wm8988 = snd_soc_codec_get_drvdata(codec);
 
        /* The set of sample rates that can be supported depends on the
         * MCLK supplied to the CODEC - enforce this.
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8988_priv *wm8988 = codec->private_data;
+       struct wm8988_priv *wm8988 = snd_soc_codec_get_drvdata(codec);
        u16 iface = snd_soc_read(codec, WM8988_IFACE) & 0x1f3;
        u16 srate = snd_soc_read(codec, WM8988_SRATE) & 0x180;
        int coeff;
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8988;
+       snd_soc_codec_set_drvdata(codec, wm8988);
        codec->name = "WM8988";
        codec->owner = THIS_MODULE;
        codec->dai = &wm8988_dai;
 
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8990_priv *wm8990 = codec->private_data;
+       struct wm8990_priv *wm8990 = snd_soc_codec_get_drvdata(codec);
 
        wm8990->sysclk = freq;
        return 0;
                return -ENOMEM;
        }
 
-       codec->private_data = wm8990;
+       snd_soc_codec_set_drvdata(codec, wm8990);
        socdev->card->codec = codec;
        mutex_init(&codec->mutex);
        INIT_LIST_HEAD(&codec->dapm_widgets);
 #endif
 
        if (ret != 0) {
-               kfree(codec->private_data);
+               kfree(snd_soc_codec_get_drvdata(codec));
                kfree(codec);
        }
        return ret;
        i2c_unregister_device(codec->control_data);
        i2c_del_driver(&wm8990_i2c_driver);
 #endif
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
        kfree(codec);
 
        return 0;
 
                          unsigned int Fref, unsigned int Fout)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        u16 reg1, reg4, reg5;
        struct _fll_div fll_div;
        int ret;
 
 static int configure_clock(struct snd_soc_codec *codec)
 {
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        unsigned int reg;
 
        /* This should be done on init() for bypass paths */
 {
        struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
        struct snd_soc_codec *codec = widget->codec;
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        int ret;
 
        /* Turn it off if we're using the main output mixer */
 static int wm8993_set_bias_level(struct snd_soc_codec *codec,
                                 enum snd_soc_bias_level level)
 {
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        int ret;
 
        switch (level) {
                             int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
 
        switch (clk_id) {
        case WM8993_SYSCLK_MCLK:
                              unsigned int fmt)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        unsigned int aif1 = snd_soc_read(codec, WM8993_AUDIO_INTERFACE_1);
        unsigned int aif4 = snd_soc_read(codec, WM8993_AUDIO_INTERFACE_4);
 
                            struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        int ret, i, best, best_val, cur_val;
        unsigned int clocking1, clocking3, aif1, aif4;
 
                               unsigned int rx_mask, int slots, int slot_width)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        int aif1 = 0;
        int aif2 = 0;
 
 
        socdev->card->codec = wm8993_codec;
        codec = wm8993_codec;
-       wm8993 = codec->private_data;
+       wm8993 = snd_soc_codec_get_drvdata(codec);
 
        ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
        if (ret < 0) {
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        int fll_fout = wm8993->fll_fout;
        int fll_fref  = wm8993->fll_fref;
        int ret;
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8993_priv *wm8993 = codec->private_data;
+       struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
        int ret;
 
        wm8993_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
        codec->set_bias_level = wm8993_set_bias_level;
        codec->dai = &wm8993_dai;
        codec->num_dai = 1;
-       codec->private_data = wm8993;
+       snd_soc_codec_set_drvdata(codec, wm8993);
 
        wm8993->hubs_data.hp_startup_mode = 1;
        wm8993->hubs_data.dcs_codes = -2;
 
 static int wm8994_write(struct snd_soc_codec *codec, unsigned int reg,
        unsigned int value)
 {
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 
        BUG_ON(reg > WM8994_MAX_REGISTER);
 
 
 static int configure_aif_clock(struct snd_soc_codec *codec, int aif)
 {
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        int rate;
        int reg1 = 0;
        int offset;
 
 static int configure_clock(struct snd_soc_codec *codec)
 {
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        int old, new;
 
        /* Bring up the AIF clocks first */
 
 static void wm8994_set_drc(struct snd_soc_codec *codec, int drc)
 {
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        struct wm8994_pdata *pdata = wm8994->pdata;
        int base = wm8994_drc_base[drc];
        int cfg = wm8994->drc_cfg[drc];
                               struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8994_priv *wm8994 = codec->private_data;       
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);  
        struct wm8994_pdata *pdata = wm8994->pdata;
        int drc = wm8994_get_drc(kcontrol->id.name);
        int value = ucontrol->value.integer.value[0];
                               struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        int drc = wm8994_get_drc(kcontrol->id.name);
 
        ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc];
 
 static void wm8994_set_retune_mobile(struct snd_soc_codec *codec, int block)
 {
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        struct wm8994_pdata *pdata = wm8994->pdata;
        int base = wm8994_retune_mobile_base[block];
        int iface, best, best_val, save, i, cfg;
                                         struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8994_priv *wm8994 = codec->private_data;       
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);  
        struct wm8994_pdata *pdata = wm8994->pdata;
        int block = wm8994_get_retune_mobile_block(kcontrol->id.name);
        int value = ucontrol->value.integer.value[0];
                                         struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        int block = wm8994_get_retune_mobile_block(kcontrol->id.name);
 
        ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block];
                          unsigned int freq_in, unsigned int freq_out)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        int reg_offset, ret;
        struct fll_div fll;
        u16 reg, aif1, aif2;
                int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 
        switch (dai->id) {
        case 1:
                            struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        int aif1_reg;
        int bclk_reg;
        int lrclk_reg;
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        int i, ret;
 
        for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) {
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        u16 *reg_cache = codec->reg_cache;
        int i, ret;
 
                return ret;
        }
 
-       wm8994_handle_pdata(codec->private_data);
+       wm8994_handle_pdata(snd_soc_codec_get_drvdata(codec));
 
        wm_hubs_add_analogue_controls(codec);
        snd_soc_add_controls(codec, wm8994_snd_controls,
 int wm8994_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
                      int micbias, int det, int shrt)
 {
-       struct wm8994_priv *wm8994 = codec->private_data;
+       struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
        struct wm8994_micdet *micdet;
        int reg;
 
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm8994;
+       snd_soc_codec_set_drvdata(codec, wm8994);
        codec->control_data = dev_get_drvdata(pdev->dev.parent);
        codec->name = "WM8994";
        codec->owner = THIS_MODULE;
 
 static int wm9081_set_fll(struct snd_soc_codec *codec, int fll_id,
                          unsigned int Fref, unsigned int Fout)
 {
-       struct wm9081_priv *wm9081 = codec->private_data;
+       struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec);
        u16 reg1, reg4, reg5;
        struct _fll_div fll_div;
        int ret;
 
 static int configure_clock(struct snd_soc_codec *codec)
 {
-       struct wm9081_priv *wm9081 = codec->private_data;
+       struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec);
        int new_sysclk, i, target;
        unsigned int reg;
        int ret = 0;
                         struct snd_kcontrol *kcontrol, int event)
 {
        struct snd_soc_codec *codec = w->codec;
-       struct wm9081_priv *wm9081 = codec->private_data;
+       struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec);
 
        /* This should be done on init() for bypass paths */
        switch (wm9081->sysclk_source) {
                              unsigned int fmt)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm9081_priv *wm9081 = codec->private_data;
+       struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec);
        unsigned int aif2 = snd_soc_read(codec, WM9081_AUDIO_INTERFACE_2);
 
        aif2 &= ~(WM9081_AIF_BCLK_INV | WM9081_AIF_LRCLK_INV |
                            struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm9081_priv *wm9081 = codec->private_data;
+       struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec);
        int ret, i, best, best_val, cur_val;
        unsigned int clk_ctrl2, aif1, aif2, aif3, aif4;
 
                             int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct wm9081_priv *wm9081 = codec->private_data;
+       struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec);
 
        switch (clk_id) {
        case WM9081_SYSCLK_MCLK:
        unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width)
 {
        struct snd_soc_codec *codec = dai->codec;
-       struct wm9081_priv *wm9081 = codec->private_data;
+       struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec);
        unsigned int aif1 = snd_soc_read(codec, WM9081_AUDIO_INTERFACE_1);
 
        aif1 &= ~(WM9081_AIFDAC_TDM_SLOT_MASK | WM9081_AIFDAC_TDM_MODE_MASK);
 
        socdev->card->codec = wm9081_codec;
        codec = wm9081_codec;
-       wm9081 = codec->private_data;
+       wm9081 = snd_soc_codec_get_drvdata(codec);
 
        /* register pcms */
        ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
-       codec->private_data = wm9081;
+       snd_soc_codec_set_drvdata(codec, wm9081);
        codec->name = "WM9081";
        codec->owner = THIS_MODULE;
        codec->dai = &wm9081_dai;
 
 static int wm9713_set_pll(struct snd_soc_codec *codec,
        int pll_id, unsigned int freq_in, unsigned int freq_out)
 {
-       struct wm9713_priv *wm9713 = codec->private_data;
+       struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec);
        u16 reg, reg2;
        struct _pll_div pll_div;
 
 {
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct wm9713_priv *wm9713 = codec->private_data;
+       struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec);
        int i, ret;
        u16 *cache = codec->reg_cache;
 
        codec->reg_cache_size = sizeof(wm9713_reg);
        codec->reg_cache_step = 2;
 
-       codec->private_data = kzalloc(sizeof(struct wm9713_priv), GFP_KERNEL);
-       if (codec->private_data == NULL) {
+       snd_soc_codec_set_drvdata(codec, kzalloc(sizeof(struct wm9713_priv),
+                                                GFP_KERNEL));
+       if (snd_soc_codec_get_drvdata(codec) == NULL) {
                ret = -ENOMEM;
                goto priv_err;
        }
        snd_soc_free_ac97_codec(codec);
 
 codec_err:
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
 
 priv_err:
        kfree(codec->reg_cache);
        snd_soc_dapm_free(socdev);
        snd_soc_free_pcms(socdev);
        snd_soc_free_ac97_codec(codec);
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
        kfree(codec->reg_cache);
        kfree(codec);
        return 0;
 
  */
 static void calibrate_dc_servo(struct snd_soc_codec *codec)
 {
-       struct wm_hubs_data *hubs = codec->private_data;
+       struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec);
        u16 reg, reg_l, reg_r, dcs_cfg;
 
        /* Set for 32 series updates */
                               struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-       struct wm_hubs_data *hubs = codec->private_data;
+       struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec);
        int ret;
 
        ret = snd_soc_put_volsw_2r(kcontrol, ucontrol);
                           struct snd_kcontrol *kcontrol, int event)
 {
        struct snd_soc_codec *codec = w->codec;
-       struct wm_hubs_data *hubs = codec->private_data;
+       struct wm_hubs_data *hubs = snd_soc_codec_get_drvdata(codec);
 
        switch (event) {
        case SND_SOC_DAPM_PRE_PMU: