/*
         * set CPU and CODEC DAI configuration
         */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai, fmt);
+       ret = snd_soc_dai_set_fmt(codec_dai, fmt);
        if (ret < 0) {
                pr_warning("playpaq_wm8510: "
                           "Failed to set CODEC DAI format (%d)\n",
                           ret);
                return ret;
        }
-       ret = cpu_dai->dai_ops.set_fmt(cpu_dai, fmt);
+       ret = snd_soc_dai_set_fmt(cpu_dai, fmt);
        if (ret < 0) {
                pr_warning("playpaq_wm8510: "
                           "Failed to set CPU DAI format (%d)\n",
        cd = playpaq_wm8510_calc_ssc_clock(params, cpu_dai);
        pr_debug("playpaq_wm8510: cmr_div = %d, period = %d\n",
                 cd.cmr_div, cd.period);
-       ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai,
-                                         AT32_SSC_CMR_DIV, cd.cmr_div);
+       ret = snd_soc_dai_set_clkdiv(cpu_dai, AT32_SSC_CMR_DIV, cd.cmr_div);
        if (ret < 0) {
                pr_warning("playpaq_wm8510: Failed to set CPU CMR_DIV (%d)\n",
                           ret);
                return ret;
        }
-       ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, AT32_SSC_TCMR_PERIOD,
+       ret = snd_soc_dai_set_clkdiv(cpu_dai, AT32_SSC_TCMR_PERIOD,
                                          cd.period);
        if (ret < 0) {
                pr_warning("playpaq_wm8510: "
 
 
 #if !defined CONFIG_SND_AT32_SOC_PLAYPAQ_SLAVE
-       ret = codec_dai->dai_ops.set_clkdiv(codec_dai, WM8510_BCLKDIV, bclk);
+       ret = snd_soc_dai_set_clkdiv(codec_dai, WM8510_BCLKDIV, bclk);
        if (ret < 0) {
                pr_warning
                    ("playpaq_wm8510: Failed to set CODEC DAI BCLKDIV (%d)\n",
 #endif /* CONFIG_SND_AT32_SOC_PLAYPAQ_SLAVE */
 
 
-       ret = codec_dai->dai_ops.set_pll(codec_dai, 0,
+       ret = snd_soc_dai_set_pll(codec_dai, 0,
                                         clk_get_rate(CODEC_CLK), pll_out);
        if (ret < 0) {
                pr_warning("playpaq_wm8510: Failed to set CODEC DAI PLL (%d)\n",
        }
 
 
-       ret = codec_dai->dai_ops.set_clkdiv(codec_dai,
-                                           WM8510_MCLKDIV, mclk_div);
+       ret = snd_soc_dai_set_clkdiv(codec_dai, WM8510_MCLKDIV, mclk_div);
        if (ret < 0) {
                pr_warning("playpaq_wm8510: Failed to set CODEC MCLKDIV (%d)\n",
                           ret);
 
        int ret;
 
        /* cpu clock is the AT91 master clock sent to the SSC */
-       ret = cpu_dai->dai_ops.set_sysclk(cpu_dai, AT91_SYSCLK_MCK,
+       ret = snd_soc_dai_set_sysclk(cpu_dai, AT91_SYSCLK_MCK,
                60000000, SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        /* codec system clock is supplied by PCK1, set to 12MHz */
-       ret = codec_dai->dai_ops.set_sysclk(codec_dai, WM8731_SYSCLK,
+       ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK,
                12000000, SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
        int cmr_div, period;
 
        /* set codec DAI configuration */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
 
        /* set cpu DAI configuration */
-       ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
        }
 
        /* set the MCK divider for BCLK */
-       ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, AT91SSC_CMR_DIV, cmr_div);
+       ret = snd_soc_dai_set_clkdiv(cpu_dai, AT91SSC_CMR_DIV, cmr_div);
        if (ret < 0)
                return ret;
 
        if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
                /* set the BCLK divider for DACLRC */
-               ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai,
+               ret = snd_soc_dai_set_clkdiv(cpu_dai,
                                                AT91SSC_TCMR_PERIOD, period);
        } else {
                /* set the BCLK divider for ADCLRC */
-               ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai,
+               ret = snd_soc_dai_set_clkdiv(cpu_dai,
                                                AT91SSC_RCMR_PERIOD, period);
        }
        if (ret < 0)
         */
 
        /* set codec DAI configuration */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
        if (ret < 0)
                return ret;
 
        /* set cpu DAI configuration */
-       ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
        if (ret < 0)
                return ret;
 
        int ret = 0;
 
        /* set codec DAI configuration */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
                                         SND_SOC_DAIFMT_CBM_CFM);
        if (ret < 0)
                return ret;
 
        /* set cpu DAI configuration */
-       ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_CBM_CFM |
+       ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_CBM_CFM |
                                       SND_SOC_DAIFMT_IB_NF);
        if (ret < 0)
                return ret;
 
        /* set the codec system clock */
-       ret = codec_dai->dai_ops.set_sysclk(codec_dai, 0, EVM_CODEC_CLOCK,
+       ret = snd_soc_dai_set_sysclk(codec_dai, 0, EVM_CODEC_CLOCK,
                                            SND_SOC_CLOCK_OUT);
        if (ret < 0)
                return ret;
 
        int ret = 0;
 
        /* Tell the CPU driver what the serial protocol is. */
-       if (cpu_dai->dai_ops.set_fmt) {
-               ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
-                       machine_data->dai_format);
-               if (ret < 0) {
-                       dev_err(substream->pcm->card->dev,
-                               "could not set CPU driver audio format\n");
-                       return ret;
-               }
+       ret = snd_soc_dai_set_fmt(cpu_dai, machine_data->dai_format);
+       if (ret < 0) {
+               dev_err(substream->pcm->card->dev,
+                       "could not set CPU driver audio format\n");
+               return ret;
        }
 
        /* Tell the codec driver what the serial protocol is. */
-       if (codec_dai->dai_ops.set_fmt) {
-               ret = codec_dai->dai_ops.set_fmt(codec_dai,
-                       machine_data->dai_format);
-               if (ret < 0) {
-                       dev_err(substream->pcm->card->dev,
-                               "could not set codec driver audio format\n");
-                       return ret;
-               }
+       ret = snd_soc_dai_set_fmt(codec_dai, machine_data->dai_format);
+       if (ret < 0) {
+               dev_err(substream->pcm->card->dev,
+                       "could not set codec driver audio format\n");
+               return ret;
        }
 
        /*
         * Tell the CPU driver what the clock frequency is, and whether it's a
         * slave or master.
         */
-       if (cpu_dai->dai_ops.set_sysclk) {
-               ret = cpu_dai->dai_ops.set_sysclk(cpu_dai, 0,
-                       machine_data->clk_frequency,
-                       machine_data->cpu_clk_direction);
-               if (ret < 0) {
-                       dev_err(substream->pcm->card->dev,
-                               "could not set CPU driver clock parameters\n");
-                       return ret;
-               }
+       ret = snd_soc_dai_set_sysclk(cpu_dai, 0,
+                                       machine_data->clk_frequency,
+                                       machine_data->cpu_clk_direction);
+       if (ret < 0) {
+               dev_err(substream->pcm->card->dev,
+                       "could not set CPU driver clock parameters\n");
+               return ret;
        }
 
        /*
         * Tell the codec driver what the MCLK frequency is, and whether it's
         * a slave or master.
         */
-       if (codec_dai->dai_ops.set_sysclk) {
-               ret = codec_dai->dai_ops.set_sysclk(codec_dai, 0,
-                       machine_data->clk_frequency,
-                       machine_data->codec_clk_direction);
-               if (ret < 0) {
-                       dev_err(substream->pcm->card->dev,
-                               "could not set codec driver clock params\n");
-                       return ret;
-               }
+       ret = snd_soc_dai_set_sysclk(codec_dai, 0,
+                                       machine_data->clk_frequency,
+                                       machine_data->codec_clk_direction);
+       if (ret < 0) {
+               dev_err(substream->pcm->card->dev,
+                       "could not set codec driver clock params\n");
+               return ret;
        }
 
        return 0;
 
        int err;
 
        /* Set codec DAI configuration */
-       err = codec_dai->dai_ops.set_fmt(codec_dai,
+       err = snd_soc_dai_set_fmt(codec_dai,
                                         SND_SOC_DAIFMT_I2S |
                                         SND_SOC_DAIFMT_NB_NF |
                                         SND_SOC_DAIFMT_CBM_CFM);
                return err;
 
        /* Set cpu DAI configuration */
-       err = cpu_dai->dai_ops.set_fmt(cpu_dai,
+       err = snd_soc_dai_set_fmt(cpu_dai,
                                       SND_SOC_DAIFMT_I2S |
                                       SND_SOC_DAIFMT_NB_NF |
                                       SND_SOC_DAIFMT_CBM_CFM);
                return err;
 
        /* Set the codec system clock for DAC and ADC */
-       err = codec_dai->dai_ops.set_sysclk(codec_dai, 0, 12000000,
+       err = snd_soc_dai_set_sysclk(codec_dai, 0, 12000000,
                                            SND_SOC_CLOCK_IN);
 
        return err;
 
        }
 
        /* set codec DAI configuration */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
 
        /* set cpu DAI configuration */
-       ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
 
        /* set the codec system clock for DAC and ADC */
-       ret = codec_dai->dai_ops.set_sysclk(codec_dai, WM8731_SYSCLK, clk,
+       ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK, clk,
                SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        /* set the I2S system clock as input (unused) */
-       ret = cpu_dai->dai_ops.set_sysclk(cpu_dai, PXA2XX_I2S_SYSCLK, 0,
+       ret = snd_soc_dai_set_sysclk(cpu_dai, PXA2XX_I2S_SYSCLK, 0,
                SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        }
 
        /* set codec DAI configuration */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
 
        /* set cpu DAI configuration */
-       ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
 
        /* set the codec system clock for DAC and ADC */
-       ret = codec_dai->dai_ops.set_sysclk(codec_dai, WM8731_SYSCLK, clk,
+       ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK, clk,
                SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        /* set the I2S system clock as input (unused) */
-       ret = cpu_dai->dai_ops.set_sysclk(cpu_dai, PXA2XX_I2S_SYSCLK, 0,
+       ret = snd_soc_dai_set_sysclk(cpu_dai, PXA2XX_I2S_SYSCLK, 0,
                SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        }
 
        /* set codec DAI configuration */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
 
        /* set cpu DAI configuration */
-       ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
+       ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
 
        /* set the codec system clock for DAC and ADC */
-       ret = codec_dai->dai_ops.set_sysclk(codec_dai, WM8750_SYSCLK, clk,
+       ret = snd_soc_dai_set_sysclk(codec_dai, WM8750_SYSCLK, clk,
                SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        /* set the I2S system clock as input (unused) */
-       ret = cpu_dai->dai_ops.set_sysclk(cpu_dai, PXA2XX_I2S_SYSCLK, 0,
+       ret = snd_soc_dai_set_sysclk(cpu_dai, PXA2XX_I2S_SYSCLK, 0,
                SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        }
 
        /* set codec DAI configuration */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai,
+       ret = snd_soc_dai_set_fmt(codec_dai,
                SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
                SND_SOC_DAIFMT_CBM_CFM);
        if (ret < 0)
                return ret;
 
        /* set cpu DAI configuration */
-       ret = cpu_dai->dai_ops.set_fmt(cpu_dai,
+       ret = snd_soc_dai_set_fmt(cpu_dai,
                SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
                SND_SOC_DAIFMT_CBM_CFM);
        if (ret < 0)
                return ret;
 
        /* set the codec system clock for DAC and ADC */
-       ret = codec_dai->dai_ops.set_sysclk(codec_dai, WM8753_MCLK, pll_out,
+       ret = snd_soc_dai_set_sysclk(codec_dai, WM8753_MCLK, pll_out,
                SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        /* set MCLK division for sample rate */
-       ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK,
+       ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK,
                S3C2410_IISMOD_32FS);
        if (ret < 0)
                return ret;
 
        /* set codec BCLK division for sample rate */
-       ret = codec_dai->dai_ops.set_clkdiv(codec_dai, WM8753_BCLKDIV, bclk);
+       ret = snd_soc_dai_set_clkdiv(codec_dai, WM8753_BCLKDIV, bclk);
        if (ret < 0)
                return ret;
 
        /* set prescaler division for sample rate */
-       ret = cpu_dai->dai_ops.set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER,
+       ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER,
                S3C24XX_PRESCALE(4, 4));
        if (ret < 0)
                return ret;
 
        /* codec PLL input is PCLK/4 */
-       ret = codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL1,
+       ret = snd_soc_dai_set_pll(codec_dai, WM8753_PLL1,
                iis_clkrate / 4, pll_out);
        if (ret < 0)
                return ret;
        DBG("Entered %s\n", __func__);
 
        /* disable the PLL */
-       return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL1, 0, 0);
+       return snd_soc_dai_set_pll(codec_dai, WM8753_PLL1, 0, 0);
 }
 
 /*
 
        /* todo: gg check mode (DSP_B) against CSR datasheet */
        /* set codec DAI configuration */
-       ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
+       ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
                SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);
        if (ret < 0)
                return ret;
 
        /* set the codec system clock for DAC and ADC */
-       ret = codec_dai->dai_ops.set_sysclk(codec_dai, WM8753_PCMCLK, 12288000,
+       ret = snd_soc_dai_set_sysclk(codec_dai, WM8753_PCMCLK, 12288000,
                SND_SOC_CLOCK_IN);
        if (ret < 0)
                return ret;
 
        /* set codec PCM division for sample rate */
-       ret = codec_dai->dai_ops.set_clkdiv(codec_dai, WM8753_PCMDIV, pcmdiv);
+       ret = snd_soc_dai_set_clkdiv(codec_dai, WM8753_PCMDIV, pcmdiv);
        if (ret < 0)
                return ret;
 
        /* configue and enable PLL for 12.288MHz output */
-       ret = codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL2,
+       ret = snd_soc_dai_set_pll(codec_dai, WM8753_PLL2,
                iis_clkrate / 4, 12288000);
        if (ret < 0)
                return ret;
        DBG("Entered %s\n", __func__);
 
        /* disable the PLL */
-       return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL2, 0, 0);
+       return snd_soc_dai_set_pll(codec_dai, WM8753_PLL2, 0, 0);
 }
 
 static struct snd_soc_ops neo1973_voice_ops = {