};
 
 /*
- *             snd_soc_platform
+ *             snd_soc_component
  */
 
 #define PREALLOC_BUFFER                (32 * 1024)
        },
 };
 
-static const struct snd_soc_platform_driver fsi_soc_platform = {
-       .ops            = &fsi_pcm_ops,
-       .pcm_new        = fsi_pcm_new,
-};
-
 static const struct snd_soc_component_driver fsi_soc_component = {
        .name           = "fsi",
+       .ops            = &fsi_pcm_ops,
+       .pcm_new        = fsi_pcm_new,
 };
 
 /*
                goto exit_fsib;
        }
 
-       ret = snd_soc_register_platform(&pdev->dev, &fsi_soc_platform);
-       if (ret < 0) {
-               dev_err(&pdev->dev, "cannot snd soc register\n");
-               goto exit_fsib;
-       }
-
-       ret = snd_soc_register_component(&pdev->dev, &fsi_soc_component,
+       ret = devm_snd_soc_register_component(&pdev->dev, &fsi_soc_component,
                                    fsi_soc_dai, ARRAY_SIZE(fsi_soc_dai));
        if (ret < 0) {
                dev_err(&pdev->dev, "cannot snd component register\n");
-               goto exit_snd_soc;
+               goto exit_fsib;
        }
 
        return ret;
 
-exit_snd_soc:
-       snd_soc_unregister_platform(&pdev->dev);
 exit_fsib:
        pm_runtime_disable(&pdev->dev);
        fsi_stream_remove(&master->fsib);
 
        pm_runtime_disable(&pdev->dev);
 
-       snd_soc_unregister_component(&pdev->dev);
-       snd_soc_unregister_platform(&pdev->dev);
-
        fsi_stream_remove(&master->fsia);
        fsi_stream_remove(&master->fsib);