Update of /cvsroot/alsa/alsa-kernel/pci In directory sc8-pr-cvs1:/tmp/cvs-serv8626
Modified Files: fm801.c Log Message: - support pause of pcm. - added IEC958 playback switch (experimental, untested). Index: fm801.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/pci/fm801.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- fm801.c 18 Dec 2002 14:27:37 -0000 1.25 +++ fm801.c 18 Dec 2002 14:28:58 -0000 1.26 @@ -312,48 +312,66 @@ int cmd) { fm801_t *chip = snd_pcm_substream_chip(substream); - int result = 0; spin_lock(&chip->reg_lock); - if (cmd == SNDRV_PCM_TRIGGER_START) { + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: chip->ply_ctrl &= ~(FM801_BUF1_LAST | FM801_BUF2_LAST | FM801_PAUSE); chip->ply_ctrl |= FM801_START | FM801_IMMED_STOP; - outw(chip->ply_ctrl, FM801_REG(chip, PLY_CTRL)); - } else if (cmd == SNDRV_PCM_TRIGGER_STOP) { - chip->ply_ctrl &= ~FM801_START; - outw(chip->ply_ctrl, FM801_REG(chip, PLY_CTRL)); - } else { - result = -EINVAL; + break; + case SNDRV_PCM_TRIGGER_STOP: + chip->ply_ctrl &= ~(FM801_START | FM801_PAUSE); + break; + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: + chip->cap_ctrl |= FM801_PAUSE; + break; + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + chip->cap_ctrl &= ~FM801_PAUSE; + break; + default: + spin_unlock(&chip->reg_lock); + snd_BUG(); + return -EINVAL; } + outw(chip->ply_ctrl, FM801_REG(chip, PLY_CTRL)); spin_unlock(&chip->reg_lock); - return result; + return 0; } static int snd_fm801_capture_trigger(snd_pcm_substream_t * substream, int cmd) { fm801_t *chip = snd_pcm_substream_chip(substream); - int result = 0; spin_lock(&chip->reg_lock); - if (cmd == SNDRV_PCM_TRIGGER_START) { + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: chip->cap_ctrl &= ~(FM801_BUF1_LAST | FM801_BUF2_LAST | FM801_PAUSE); chip->cap_ctrl |= FM801_START | FM801_IMMED_STOP; - outw(chip->cap_ctrl, FM801_REG(chip, CAP_CTRL)); - } else if (cmd == SNDRV_PCM_TRIGGER_STOP) { - chip->cap_ctrl &= ~FM801_START; - outw(chip->cap_ctrl, FM801_REG(chip, CAP_CTRL)); - } else { - result = -EINVAL; + break; + case SNDRV_PCM_TRIGGER_STOP: + chip->cap_ctrl &= ~(FM801_START | FM801_PAUSE); + break; + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: + chip->cap_ctrl |= FM801_PAUSE; + break; + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + chip->cap_ctrl &= ~FM801_PAUSE; + break; + default: + spin_unlock(&chip->reg_lock); + snd_BUG(); + return -EINVAL; } + outw(chip->cap_ctrl, FM801_REG(chip, CAP_CTRL)); spin_unlock(&chip->reg_lock); - return result; + return 0; } static int snd_fm801_hw_params(snd_pcm_substream_t * substream, @@ -513,6 +531,7 @@ { .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | + SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_MMAP_VALID), .formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE, .rates = SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_8000_48000, @@ -532,6 +551,7 @@ { .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | + SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_MMAP_VALID), .formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE, .rates = SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_8000_48000, @@ -819,6 +839,7 @@ FM801_SINGLE("IEC958 Capture Switch", FM801_I2S_MODE, 8, 1, 0), FM801_SINGLE("IEC958 Raw Data Playback Switch", FM801_I2S_MODE, 9, 1, 0), FM801_SINGLE("IEC958 Raw Data Capture Switch", FM801_I2S_MODE, 10, 1, 0), +FM801_SINGLE("IEC958 Playback Switch", FM801_GEN_CTRL, 2, 1, 0), }; static void snd_fm801_mixer_free_ac97(ac97_t *ac97) ------------------------------------------------------- This sf.net email is sponsored by: With Great Power, Comes Great Responsibility Learn to use your power at OSDN's High Performance Computing Channel http://hpc.devchannel.org/ _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog