diff options
author | Takashi Iwai <tiwai@suse.de> | 2017-02-07 07:53:42 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2017-02-10 04:21:47 -0500 |
commit | 3fe2cf7eb21ada0a9683b26c1ae309e7f5e90131 (patch) | |
tree | cecb8e29b0dfc6e5c7fe3db90e3b817dd23c4156 /sound/x86 | |
parent | 85bd8748ca23a25f6dc56154d9a61d87ae07a807 (diff) |
ALSA: x86: Support S16 format
Now we support S16 PCM format in addition. For this, we need to set
packet_mode=1 in AUD_CONFIG register.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/x86')
-rw-r--r-- | sound/x86/intel_hdmi_audio.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c index e8f8be2f590b..c0a080e5d1f4 100644 --- a/sound/x86/intel_hdmi_audio.c +++ b/sound/x86/intel_hdmi_audio.c | |||
@@ -135,7 +135,8 @@ static const struct snd_pcm_hardware had_pcm_hardware = { | |||
135 | SNDRV_PCM_INFO_MMAP | | 135 | SNDRV_PCM_INFO_MMAP | |
136 | SNDRV_PCM_INFO_MMAP_VALID | | 136 | SNDRV_PCM_INFO_MMAP_VALID | |
137 | SNDRV_PCM_INFO_NO_PERIOD_WAKEUP), | 137 | SNDRV_PCM_INFO_NO_PERIOD_WAKEUP), |
138 | .formats = (SNDRV_PCM_FMTBIT_S24_LE | | 138 | .formats = (SNDRV_PCM_FMTBIT_S16_LE | |
139 | SNDRV_PCM_FMTBIT_S24_LE | | ||
139 | SNDRV_PCM_FMTBIT_S32_LE), | 140 | SNDRV_PCM_FMTBIT_S32_LE), |
140 | .rates = SNDRV_PCM_RATE_32000 | | 141 | .rates = SNDRV_PCM_RATE_32000 | |
141 | SNDRV_PCM_RATE_44100 | | 142 | SNDRV_PCM_RATE_44100 | |
@@ -290,12 +291,10 @@ static int had_prog_status_reg(struct snd_pcm_substream *substream, | |||
290 | AUD_CH_STATUS_0, ch_stat0.regval); | 291 | AUD_CH_STATUS_0, ch_stat0.regval); |
291 | 292 | ||
292 | switch (substream->runtime->format) { | 293 | switch (substream->runtime->format) { |
293 | #if 0 /* FIXME: not supported yet */ | ||
294 | case SNDRV_PCM_FORMAT_S16_LE: | 294 | case SNDRV_PCM_FORMAT_S16_LE: |
295 | ch_stat1.regx.max_wrd_len = MAX_SMPL_WIDTH_20; | 295 | ch_stat1.regx.max_wrd_len = MAX_SMPL_WIDTH_20; |
296 | ch_stat1.regx.wrd_len = SMPL_WIDTH_16BITS; | 296 | ch_stat1.regx.wrd_len = SMPL_WIDTH_16BITS; |
297 | break; | 297 | break; |
298 | #endif | ||
299 | case SNDRV_PCM_FORMAT_S24_LE: | 298 | case SNDRV_PCM_FORMAT_S24_LE: |
300 | case SNDRV_PCM_FORMAT_S32_LE: | 299 | case SNDRV_PCM_FORMAT_S32_LE: |
301 | ch_stat1.regx.max_wrd_len = MAX_SMPL_WIDTH_24; | 300 | ch_stat1.regx.max_wrd_len = MAX_SMPL_WIDTH_24; |
@@ -336,6 +335,9 @@ static int had_init_audio_ctrl(struct snd_pcm_substream *substream, | |||
336 | else | 335 | else |
337 | cfg_val.regx.layout = LAYOUT1; | 336 | cfg_val.regx.layout = LAYOUT1; |
338 | 337 | ||
338 | if (substream->runtime->format == SNDRV_PCM_FORMAT_S16_LE) | ||
339 | cfg_val.regx.packet_mode = 1; | ||
340 | |||
339 | if (substream->runtime->format == SNDRV_PCM_FORMAT_S32_LE) | 341 | if (substream->runtime->format == SNDRV_PCM_FORMAT_S32_LE) |
340 | cfg_val.regx.left_align = 1; | 342 | cfg_val.regx.left_align = 1; |
341 | 343 | ||