{ "spdif-out", NULL, "Playback" },
 };
 
-static struct snd_soc_codec_driver soc_codec_spdif_dit = {
-       .component_driver = {
-               .dapm_widgets           = dit_widgets,
-               .num_dapm_widgets       = ARRAY_SIZE(dit_widgets),
-               .dapm_routes            = dit_routes,
-               .num_dapm_routes        = ARRAY_SIZE(dit_routes),
-       },
+static struct snd_soc_component_driver soc_codec_spdif_dit = {
+       .dapm_widgets           = dit_widgets,
+       .num_dapm_widgets       = ARRAY_SIZE(dit_widgets),
+       .dapm_routes            = dit_routes,
+       .num_dapm_routes        = ARRAY_SIZE(dit_routes),
+       .idle_bias_on           = 1,
+       .use_pmdown_time        = 1,
+       .endianness             = 1,
+       .non_legacy_dai_naming  = 1,
 };
 
 static struct snd_soc_dai_driver dit_stub_dai = {
 
 static int spdif_dit_probe(struct platform_device *pdev)
 {
-       return snd_soc_register_codec(&pdev->dev, &soc_codec_spdif_dit,
+       return devm_snd_soc_register_component(&pdev->dev,
+                       &soc_codec_spdif_dit,
                        &dit_stub_dai, 1);
 }
 
-static int spdif_dit_remove(struct platform_device *pdev)
-{
-       snd_soc_unregister_codec(&pdev->dev);
-       return 0;
-}
-
 #ifdef CONFIG_OF
 static const struct of_device_id spdif_dit_dt_ids[] = {
        { .compatible = "linux,spdif-dit", },
 
 static struct platform_driver spdif_dit_driver = {
        .probe          = spdif_dit_probe,
-       .remove         = spdif_dit_remove,
        .driver         = {
                .name   = DRV_NAME,
                .of_match_table = of_match_ptr(spdif_dit_dt_ids),