.pointer        = xtfpga_pcm_pointer,
 };
 
-static const struct snd_soc_platform_driver xtfpga_soc_platform = {
-       .pcm_new        = xtfpga_pcm_new,
-       .ops            = &xtfpga_pcm_ops,
-};
-
 static const struct snd_soc_component_driver xtfpga_i2s_component = {
        .name           = DRV_NAME,
+       .pcm_new        = xtfpga_pcm_new,
+       .ops            = &xtfpga_pcm_ops,
 };
 
 static const struct snd_soc_dai_ops xtfpga_i2s_dai_ops = {
                goto err;
        }
 
-       err = snd_soc_register_platform(&pdev->dev, &xtfpga_soc_platform);
-       if (err < 0) {
-               dev_err(&pdev->dev, "couldn't register platform\n");
-               goto err;
-       }
        err = devm_snd_soc_register_component(&pdev->dev,
                                              &xtfpga_i2s_component,
                                              xtfpga_i2s_dai,
                                              ARRAY_SIZE(xtfpga_i2s_dai));
        if (err < 0) {
                dev_err(&pdev->dev, "couldn't register component\n");
-               goto err_unregister_platform;
+               goto err;
        }
 
        pm_runtime_enable(&pdev->dev);
 
 err_pm_disable:
        pm_runtime_disable(&pdev->dev);
-err_unregister_platform:
-       snd_soc_unregister_platform(&pdev->dev);
 err:
        dev_err(&pdev->dev, "%s: err = %d\n", __func__, err);
        return err;
 {
        struct xtfpga_i2s *i2s = dev_get_drvdata(&pdev->dev);
 
-       snd_soc_unregister_platform(&pdev->dev);
        if (i2s->regmap && !IS_ERR(i2s->regmap)) {
                regmap_write(i2s->regmap, XTFPGA_I2S_CONFIG, 0);
                regmap_write(i2s->regmap, XTFPGA_I2S_INT_MASK, 0);