unsigned int frame_clk_inv:1;
        unsigned int bit_clk_master:1;
        unsigned int frame_clk_master:1;
+       /* bit_fmt could be standard PCM format or
+        * IEC958 encoded format. ALSA IEC958 plugin will pass
+        * IEC958_SUBFRAME format to the underneath driver.
+        */
+       snd_pcm_format_t bit_fmt;
 };
 
 /*
 
        hp.sample_rate = params_rate(params);
        hp.channels = params_channels(params);
 
+       cf->bit_fmt = params_format(params);
        return hcp->hcd.ops->hw_params(dai->dev->parent, hcp->hcd.data,
                                       cf, &hp);
 }
                         SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S20_3BE |\
                         SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_3BE |\
                         SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_BE |\
-                        SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE)
+                        SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE |\
+                        SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
 
 static int hdmi_codec_pcm_new(struct snd_soc_pcm_runtime *rtd,
                              struct snd_soc_dai *dai)