.ops = &fsl_asrc_dai_ops,
 };
 
-static const struct snd_soc_component_driver fsl_asrc_component = {
-       .name = "fsl-asrc-dai",
-};
-
 static bool fsl_asrc_readable_reg(struct device *dev, unsigned int reg)
 {
        switch (reg) {
                return ret;
        }
 
-       ret = devm_snd_soc_register_platform(&pdev->dev, &fsl_asrc_platform);
-       if (ret) {
-               dev_err(&pdev->dev, "failed to register ASoC platform\n");
-               return ret;
-       }
-
        return 0;
 }
 
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct fsl_asrc_pair *pair = runtime->private_data;
-       struct device *dev = rtd->platform->dev;
+       struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
+       struct device *dev = component->dev;
        unsigned long flags = DMA_CTRL_ACK;
 
        /* Prepare and submit Front-End DMA channel */
        bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
        struct snd_dmaengine_dai_dma_data *dma_params_fe = NULL;
        struct snd_dmaengine_dai_dma_data *dma_params_be = NULL;
+       struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct fsl_asrc_pair *pair = runtime->private_data;
        struct fsl_asrc *asrc_priv = pair->asrc_priv;
        struct dma_slave_config config_fe, config_be;
        enum asrc_pair_index index = pair->index;
-       struct device *dev = rtd->platform->dev;
+       struct device *dev = component->dev;
        int stream = substream->stream;
        struct imx_dma_data *tmp_data;
        struct snd_soc_dpcm *dpcm;
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_pcm_runtime *runtime = substream->runtime;
-       struct device *dev = rtd->platform->dev;
+       struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
+       struct device *dev = component->dev;
        struct fsl_asrc *asrc_priv = dev_get_drvdata(dev);
        struct fsl_asrc_pair *pair;
 
        }
 }
 
-struct snd_soc_platform_driver fsl_asrc_platform = {
+struct snd_soc_component_driver fsl_asrc_component = {
+       .name           = DRV_NAME,
        .ops            = &fsl_asrc_dma_pcm_ops,
        .pcm_new        = fsl_asrc_dma_pcm_new,
        .pcm_free       = fsl_asrc_dma_pcm_free,
 };
-EXPORT_SYMBOL_GPL(fsl_asrc_platform);
+EXPORT_SYMBOL_GPL(fsl_asrc_component);