struct rsrc_card_dai {
        unsigned int fmt;
        unsigned int sysclk;
+       unsigned int tx_slot_mask;
+       unsigned int rx_slot_mask;
+       int slots;
+       int slot_width;
        struct clk *clk;
        char dai_name[DAI_NAME_NUM];
 };
                }
        }
 
+       if (dai_props->slots) {
+               ret = snd_soc_dai_set_tdm_slot(dai,
+                                              dai_props->tx_slot_mask,
+                                              dai_props->rx_slot_mask,
+                                              dai_props->slots,
+                                              dai_props->slot_width);
+               if (ret && ret != -ENOTSUPP) {
+                       dev_err(dai->dev, "set_tdm_slot error\n");
+                       goto err;
+               }
+       }
+
        ret = 0;
 
 err:
        if (ret)
                return ret;
 
+       /* Parse TDM slot */
+       ret = snd_soc_of_parse_tdm_slot(np,
+                                       &dai_props->tx_slot_mask,
+                                       &dai_props->rx_slot_mask,
+                                       &dai_props->slots,
+                                       &dai_props->slot_width);
+       if (ret)
+               return ret;
+
        if (is_fe) {
                /* BE is dummy */
                dai_link->codec_of_node         = NULL;