kfree(stream);
 }
 
+static int rt1308_sdw_set_tdm_slot(struct snd_soc_dai *dai,
+                                  unsigned int tx_mask,
+                                  unsigned int rx_mask,
+                                  int slots, int slot_width)
+{
+       struct snd_soc_component *component = dai->component;
+       struct rt1308_sdw_priv *rt1308 =
+               snd_soc_component_get_drvdata(component);
+
+       if (tx_mask)
+               return -EINVAL;
+
+       if (slots > 2)
+               return -EINVAL;
+
+       rt1308->rx_mask = rx_mask;
+       rt1308->slots = slots;
+       /* slot_width is not used since it's irrelevant for SoundWire */
+
+       return 0;
+}
+
 static int rt1308_sdw_hw_params(struct snd_pcm_substream *substream,
        struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
 {
        .hw_free        = rt1308_sdw_pcm_hw_free,
        .set_sdw_stream = rt1308_set_sdw_stream,
        .shutdown       = rt1308_sdw_shutdown,
+       .set_tdm_slot   = rt1308_sdw_set_tdm_slot,
 };
 
 #define RT1308_STEREO_RATES SNDRV_PCM_RATE_48000