return 0;
 }
 
+static const struct snd_soc_dai_ops dummy_dai_ops = {
+       .probe  = sun4i_codec_dai_probe,
+};
+
 static struct snd_soc_dai_driver dummy_cpu_dai = {
        .name   = "sun4i-codec-cpu-dai",
-       .probe  = sun4i_codec_dai_probe,
        .playback = {
                .stream_name    = "Playback",
                .channels_min   = 1,
                .formats        = SUN4I_CODEC_FORMATS,
                .sig_bits       = 24,
         },
+       .ops = &dummy_dai_ops,
 };
 
 static struct snd_soc_dai_link *sun4i_codec_create_link(struct device *dev,
 
        return 0;
 }
 
-static const struct snd_soc_dai_ops sun4i_i2s_dai_ops = {
-       .hw_params      = sun4i_i2s_hw_params,
-       .set_fmt        = sun4i_i2s_set_fmt,
-       .set_sysclk     = sun4i_i2s_set_sysclk,
-       .set_tdm_slot   = sun4i_i2s_set_tdm_slot,
-       .trigger        = sun4i_i2s_trigger,
-};
-
 static int sun4i_i2s_dai_probe(struct snd_soc_dai *dai)
 {
        struct sun4i_i2s *i2s = snd_soc_dai_get_drvdata(dai);
        return 0;
 }
 
+static const struct snd_soc_dai_ops sun4i_i2s_dai_ops = {
+       .probe          = sun4i_i2s_dai_probe,
+       .hw_params      = sun4i_i2s_hw_params,
+       .set_fmt        = sun4i_i2s_set_fmt,
+       .set_sysclk     = sun4i_i2s_set_sysclk,
+       .set_tdm_slot   = sun4i_i2s_set_tdm_slot,
+       .trigger        = sun4i_i2s_trigger,
+};
+
 #define SUN4I_FORMATS  (SNDRV_PCM_FMTBIT_S16_LE | \
                         SNDRV_PCM_FMTBIT_S20_LE | \
                         SNDRV_PCM_FMTBIT_S24_LE)
 
 static struct snd_soc_dai_driver sun4i_i2s_dai = {
-       .probe = sun4i_i2s_dai_probe,
        .capture = {
                .stream_name = "Capture",
                .channels_min = 1,
 
 }
 
 static const struct snd_soc_dai_ops sun4i_spdif_dai_ops = {
+       .probe          = sun4i_spdif_soc_dai_probe,
        .startup        = sun4i_spdif_startup,
        .trigger        = sun4i_spdif_trigger,
        .hw_params      = sun4i_spdif_hw_params,
                .rates = SUN4I_RATES,
                .formats = SUN4I_FORMATS,
        },
-       .probe = sun4i_spdif_soc_dai_probe,
        .ops = &sun4i_spdif_dai_ops,
        .name = "spdif",
 };
 
 }
 
 static const struct snd_soc_dai_ops sun50i_dmic_dai_ops = {
+       .probe          = sun50i_dmic_soc_dai_probe,
        .startup        = sun50i_dmic_startup,
        .trigger        = sun50i_dmic_trigger,
        .hw_params      = sun50i_dmic_hw_params,
                .formats = SUN50I_DMIC_FORMATS,
                .sig_bits = 21,
        },
-       .probe = sun50i_dmic_soc_dai_probe,
        .ops = &sun50i_dmic_dai_ops,
        .name = "dmic",
 };