#define SIU_BRGBSEL    (0x108 / sizeof(u32))
 #define SIU_BRRB       (0x10c / sizeof(u32))
 
-extern struct snd_soc_platform_driver siu_platform;
+extern struct snd_soc_component_driver siu_component;
 extern struct siu_info *siu_i2s_data;
 
 int siu_init_port(int port, struct siu_port **port_info, struct snd_card *card);
 
        .ops = &siu_dai_ops,
 };
 
-static const struct snd_soc_component_driver siu_i2s_component = {
-       .name           = "siu-i2s",
-};
-
 static int siu_probe(struct platform_device *pdev)
 {
        const struct firmware *fw_entry;
        dev_set_drvdata(&pdev->dev, info);
 
        /* register using ARRAY version so we can keep dai name */
-       ret = devm_snd_soc_register_component(&pdev->dev, &siu_i2s_component,
+       ret = devm_snd_soc_register_component(&pdev->dev, &siu_component,
                                              &siu_i2s_dai, 1);
        if (ret < 0)
                return ret;
 
-       ret = devm_snd_soc_register_platform(&pdev->dev, &siu_platform);
-       if (ret < 0)
-               return ret;
-
        pm_runtime_enable(&pdev->dev);
 
        return 0;
 
 
 #include "siu.h"
 
+#define DRV_NAME "siu-i2s"
 #define GET_MAX_PERIODS(buf_bytes, period_bytes) \
                                ((buf_bytes) / (period_bytes))
 #define PERIOD_OFFSET(buf_addr, period_num, period_bytes) \
 {
        /* Playback / Capture */
        struct snd_soc_pcm_runtime *rtd = ss->private_data;
-       struct siu_platform *pdata = rtd->platform->dev->platform_data;
+       struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
+       struct siu_platform *pdata = component->dev->platform_data;
        struct siu_info *info = siu_i2s_data;
        struct siu_port *port_info = siu_port_info(ss);
        struct siu_stream *siu_stream;
        .pointer        = siu_pcm_pointer_dma,
 };
 
-struct snd_soc_platform_driver siu_platform = {
+struct snd_soc_component_driver siu_component = {
+       .name           = DRV_NAME,
        .ops                    = &siu_pcm_ops,
        .pcm_new        = siu_pcm_new,
        .pcm_free       = siu_pcm_free,
 };
-EXPORT_SYMBOL_GPL(siu_platform);
+EXPORT_SYMBOL_GPL(siu_component);