Commit 3fe2cf7e authored by Takashi Iwai's avatar Takashi Iwai

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: default avatarTakashi Iwai <tiwai@suse.de>
parent 85bd8748
...@@ -135,7 +135,8 @@ static const struct snd_pcm_hardware had_pcm_hardware = { ...@@ -135,7 +135,8 @@ static const struct snd_pcm_hardware had_pcm_hardware = {
SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP |
SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_MMAP_VALID |
SNDRV_PCM_INFO_NO_PERIOD_WAKEUP), SNDRV_PCM_INFO_NO_PERIOD_WAKEUP),
.formats = (SNDRV_PCM_FMTBIT_S24_LE | .formats = (SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S32_LE), SNDRV_PCM_FMTBIT_S32_LE),
.rates = SNDRV_PCM_RATE_32000 | .rates = SNDRV_PCM_RATE_32000 |
SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_44100 |
...@@ -290,12 +291,10 @@ static int had_prog_status_reg(struct snd_pcm_substream *substream, ...@@ -290,12 +291,10 @@ static int had_prog_status_reg(struct snd_pcm_substream *substream,
AUD_CH_STATUS_0, ch_stat0.regval); AUD_CH_STATUS_0, ch_stat0.regval);
switch (substream->runtime->format) { switch (substream->runtime->format) {
#if 0 /* FIXME: not supported yet */
case SNDRV_PCM_FORMAT_S16_LE: case SNDRV_PCM_FORMAT_S16_LE:
ch_stat1.regx.max_wrd_len = MAX_SMPL_WIDTH_20; ch_stat1.regx.max_wrd_len = MAX_SMPL_WIDTH_20;
ch_stat1.regx.wrd_len = SMPL_WIDTH_16BITS; ch_stat1.regx.wrd_len = SMPL_WIDTH_16BITS;
break; break;
#endif
case SNDRV_PCM_FORMAT_S24_LE: case SNDRV_PCM_FORMAT_S24_LE:
case SNDRV_PCM_FORMAT_S32_LE: case SNDRV_PCM_FORMAT_S32_LE:
ch_stat1.regx.max_wrd_len = MAX_SMPL_WIDTH_24; 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,6 +335,9 @@ static int had_init_audio_ctrl(struct snd_pcm_substream *substream,
else else
cfg_val.regx.layout = LAYOUT1; cfg_val.regx.layout = LAYOUT1;
if (substream->runtime->format == SNDRV_PCM_FORMAT_S16_LE)
cfg_val.regx.packet_mode = 1;
if (substream->runtime->format == SNDRV_PCM_FORMAT_S32_LE) if (substream->runtime->format == SNDRV_PCM_FORMAT_S32_LE)
cfg_val.regx.left_align = 1; cfg_val.regx.left_align = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment