int ret = 0;
  
        if (!cpu_dai->active) {
-               priv->dev.port = cpu_dai->id + 1;
-               priv->dev.irq = NO_IRQ;
-               clk_enable(priv->dev.ssp->clk);
-               ssp_disable(&priv->dev);
+               clk_enable(ssp->clk);
+               ssp_disable(ssp);
        }
  
 -      if (cpu_dai->dma_data) {
 -              kfree(cpu_dai->dma_data);
 -              cpu_dai->dma_data = NULL;
 -      }
 +      kfree(snd_soc_dai_get_dma_data(cpu_dai, substream));
 +      snd_soc_dai_set_dma_data(cpu_dai, substream, NULL);
 +
        return ret;
  }
  
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
        struct ssp_priv *priv = cpu_dai->private_data;
+       struct ssp_device *ssp = priv->ssp;
  
        if (!cpu_dai->active) {
-               ssp_disable(&priv->dev);
-               clk_disable(priv->dev.ssp->clk);
+               ssp_disable(ssp);
+               clk_disable(ssp->clk);
        }
  
 -      if (cpu_dai->dma_data) {
 -              kfree(cpu_dai->dma_data);
 -              cpu_dai->dma_data = NULL;
 -      }
 +      kfree(snd_soc_dai_get_dma_data(cpu_dai, substream));
 +      snd_soc_dai_set_dma_data(cpu_dai, substream, NULL);
  }
  
  #ifdef CONFIG_PM