-#define WM8731_DAIFMT \
- (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
- SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
- SND_SOC_DAIFMT_IB_IF)
-
-#define WM8731_DIR \
- (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-
-#define WM8731_RATES \
- (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
- SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
- SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-
-#define WM8731_HIFI_BITS \
- (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
- SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-
-static struct snd_soc_dai_mode wm8731_modes[] = {
- /* codec frame and clock master modes */
- /* 8k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_8000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 1536,
- .bfs = 64,
- },
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_8000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 2304,
- .bfs = 64,
- },
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_8000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 1408,
- .bfs = 64,
- },
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_8000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 2112,
- .bfs = 64,
- },
-
- /* 32k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_32000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 384,
- .bfs = 64,
- },
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_32000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 576,
- .bfs = 64,
- },
-
- /* 44.1k & 48k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 256,
- .bfs = 64,
- },
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 384,
- .bfs = 64,
- },
-
- /* 88.2 & 96k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 128,
- .bfs = 64,
- },
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_RATE,
- .fs = 192,
- .bfs = 64,
- },
-
- /* USB codec frame and clock master modes */
- /* 8k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_8000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_DIV,
- .fs = 1500,
- .bfs = SND_SOC_FSBD(1),
- },
-
- /* 44.1k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_44100,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_DIV,
- .fs = 272,
- .bfs = SND_SOC_FSBD(1),
- },
-
- /* 48k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_48000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_DIV,
- .fs = 250,
- .bfs = SND_SOC_FSBD(1),
- },
-
- /* 88.2k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_88200,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_DIV,
- .fs = 136,
- .bfs = SND_SOC_FSBD(1),
- },
-
- /* 96k */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = SNDRV_PCM_RATE_96000,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_DIV,
- .fs = 125,
- .bfs = SND_SOC_FSBD(1),
- },
-
- /* codec frame and clock slave modes */
- {
- .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
- .pcmfmt = WM8731_HIFI_BITS,
- .pcmrate = WM8731_RATES,
- .pcmdir = WM8731_DIR,
- .flags = SND_SOC_DAI_BFS_DIV,
- .fs = SND_SOC_FS_ALL,
- .bfs = SND_SOC_FSB_ALL,
- },
-};
-