[ALSA] hda-codec - Dell Latitude D820 + D/Port
[deliverable/linux.git] / sound / soc / codecs / wm8731.c
index cd0ece650f31796c85388b05201c625a035dcd87..8151b45a280ccff8a035d2899678cd7beb92ce47 100644 (file)
@@ -85,74 +85,169 @@ static const u16 wm8731_reg[WM8731_CACHEREGNUM] = {
 static struct snd_soc_dai_mode wm8731_modes[] = {
        /* codec frame and clock master modes */
        /* 8k */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_8000, WM8731_DIR, 0,
-               1536, SND_SOC_FSB(64)},
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_8000, WM8731_DIR, 0,
-               2304, SND_SOC_FSB(64)},
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_8000, WM8731_DIR, 0,
-               1408, SND_SOC_FSB(64)},
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_8000, WM8731_DIR, 0,
-               2112, SND_SOC_FSB(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 = 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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_32000, WM8731_DIR, 0,
-               384, SND_SOC_FSB(64)},
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_32000, WM8731_DIR, 0,
-               576, SND_SOC_FSB(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 = 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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-               WM8731_DIR, 0, 256, SND_SOC_FSB(64)},
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-               WM8731_DIR, 0, 384, SND_SOC_FSB(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 = 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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-               WM8731_DIR, 0, 128, SND_SOC_FSB(64)},
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-               WM8731_DIR, 0, 192, SND_SOC_FSB(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 = 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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_8000, WM8731_DIR,
-               SND_SOC_DAI_BFS_DIV, 1500, SND_SOC_FSBD(1)},
+       {
+               .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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_44100, WM8731_DIR,
-               SND_SOC_DAI_BFS_DIV, 272, SND_SOC_FSBD(1)},
+       {
+               .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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_48000, WM8731_DIR,
-               SND_SOC_DAI_BFS_DIV, 250, SND_SOC_FSBD(1)},
+       {
+               .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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_88200, WM8731_DIR,
-               SND_SOC_DAI_BFS_DIV, 136, SND_SOC_FSBD(1)},
+       {
+               .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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, SNDRV_PCM_RATE_96000, WM8731_DIR,
-               SND_SOC_DAI_BFS_DIV, 125, SND_SOC_FSBD(1)},
+       {
+               .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 */
-       {WM8731_DAIFMT | SND_SOC_DAIFMT_CBS_CFS, SND_SOC_DAITDM_LRDW(0,0),
-               WM8731_HIFI_BITS, WM8731_RATES, WM8731_DIR, SND_SOC_DAI_BFS_DIV,
-               SND_SOC_FS_ALL, SND_SOC_FSBD_ALL},
+       {
+               .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,
+       },
 };
 
 /*
@@ -215,8 +310,10 @@ static const struct soc_enum wm8731_enum[] = {
 
 static const struct snd_kcontrol_new wm8731_snd_controls[] = {
 
-SOC_DOUBLE_R("Playback Volume", WM8731_LOUT1V, WM8731_ROUT1V, 0, 127, 0),
-SOC_DOUBLE_R("Playback ZC Switch", WM8731_LOUT1V, WM8731_ROUT1V, 7, 1, 0),
+SOC_DOUBLE_R("Master Playback Volume", WM8731_LOUT1V, WM8731_ROUT1V,
+       0, 127, 0),
+SOC_DOUBLE_R("Master Playback ZC Switch", WM8731_LOUT1V, WM8731_ROUT1V,
+       7, 1, 0),
 
 SOC_DOUBLE_R("Capture Volume", WM8731_LINVOL, WM8731_RINVOL, 0, 31, 0),
 SOC_DOUBLE_R("Line Capture Switch", WM8731_LINVOL, WM8731_RINVOL, 7, 1, 1),
This page took 0.031837 seconds and 5 git commands to generate.