#include <sound/soc.h>
 #include <sound/dmaengine_pcm.h>
 
+#define DRV_NAME "mmp-pcm"
+
 struct mmp_dma_data {
        int ssp_id;
        struct resource *dma_res;
 static int mmp_pcm_open(struct snd_pcm_substream *substream)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct platform_device *pdev = to_platform_device(rtd->platform->dev);
+       struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
+       struct platform_device *pdev = to_platform_device(component->dev);
        struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
        struct mmp_dma_data dma_data;
        struct resource *r;
        return ret;
 }
 
-static const struct snd_soc_platform_driver mmp_soc_platform = {
+static const struct snd_soc_component_driver mmp_soc_component = {
+       .name           = DRV_NAME,
        .ops            = &mmp_pcm_ops,
        .pcm_new        = mmp_pcm_new,
        .pcm_free       = mmp_pcm_free_dma_buffers,
                mmp_pcm_hardware[SNDRV_PCM_STREAM_CAPTURE].period_bytes_max =
                                                pdata->period_max_capture;
        }
-       return devm_snd_soc_register_platform(&pdev->dev, &mmp_soc_platform);
+       return devm_snd_soc_register_component(&pdev->dev, &mmp_soc_component,
+                                              NULL, 0);
 }
 
 static struct platform_driver mmp_pcm_driver = {