snd_printk("FIXME: SNDRV_PCM_TRIGGER_PAUSE_RELEASE NIY!\n"); 
snd_printk(KERN_ERR "FIXME: SNDRV_PCM_TRIGGER_PAUSE_RELEASE NIY!\n"); 
static int snd_azf3328_playback_trigger(snd_pcm_substream_t * substream, int cmd){	azf3328_t *chip = snd_pcm_substream_chip(substream);	snd_pcm_runtime_t *runtime = substream->runtime;	int result = 0;	unsigned int status1;	snd_azf3328_dbgcalls("snd_azf3328_playback_trigger cmd %d\n", cmd);	switch (cmd) {	case SNDRV_PCM_TRIGGER_START:		snd_azf3328_dbgio(chip, "trigger1");		/* mute WaveOut */		snd_azf3328_mixer_set_mute(chip, IDX_MIXER_WAVEOUT, 1);		snd_azf3328_setfmt(chip, IDX_IO_PLAY_SOUNDFORMAT, runtime->rate, snd_pcm_format_width(runtime->format), runtime->channels);		spin_lock(&chip->reg_lock);		/* stop playback */		status1 = inw(chip->codec_port+IDX_IO_PLAY_FLAGS);		status1 &= ~DMA_RESUME;		outw(status1, chip->codec_port+IDX_IO_PLAY_FLAGS);	    		/* FIXME: clear interrupts or what??? */		outw(0xffff, chip->codec_port+IDX_IO_PLAY_IRQMASK);		spin_unlock(&chip->reg_lock);		snd_azf3328_setdmaa(chip, runtime->dma_addr, snd_pcm_lib_period_bytes(substream), snd_pcm_lib_buffer_bytes(substream), 0);		spin_lock(&chip->reg_lock);#ifdef WIN9X		/* FIXME: enable playback/recording??? */		status1 |= DMA_PLAY_SOMETHING1 | DMA_PLAY_SOMETHING2;		outw(status1, chip->codec_port+IDX_IO_PLAY_FLAGS);		/* start playback again */		/* FIXME: what is this value (0x0010)??? */		status1 |= DMA_RESUME | DMA_EPILOGUE_SOMETHING;		outw(status1, chip->codec_port+IDX_IO_PLAY_FLAGS);#else /* NT4 */		outw(0x00, chip->codec_port+IDX_IO_PLAY_FLAGS);		outw(DMA_PLAY_SOMETHING1, chip->codec_port+IDX_IO_PLAY_FLAGS);		outw(DMA_PLAY_SOMETHING1|DMA_PLAY_SOMETHING2, chip->codec_port+IDX_IO_PLAY_FLAGS);		outw(DMA_RESUME|SOMETHING_ALMOST_ALWAYS_SET|DMA_EPILOGUE_SOMETHING|DMA_SOMETHING_ELSE, chip->codec_port+IDX_IO_PLAY_FLAGS);#endif		spin_unlock(&chip->reg_lock);		/* now unmute WaveOut */		snd_azf3328_mixer_set_mute(chip, IDX_MIXER_WAVEOUT, 0);		snd_azf3328_dbgio(chip, "trigger2");		chip->is_playing = 1;		break;        case SNDRV_PCM_TRIGGER_STOP:		/* mute WaveOut */		snd_azf3328_mixer_set_mute(chip, IDX_MIXER_WAVEOUT, 1);		spin_lock(&chip->reg_lock);		/* stop playback */		status1 = inw(chip->codec_port+IDX_IO_PLAY_FLAGS);		status1 &= ~DMA_RESUME;		outw(status1, chip->codec_port+IDX_IO_PLAY_FLAGS);		status1 |= DMA_PLAY_SOMETHING1;		outw(status1, chip->codec_port+IDX_IO_PLAY_FLAGS);		status1 &= ~DMA_PLAY_SOMETHING1;		outw(status1, chip->codec_port+IDX_IO_PLAY_FLAGS);		spin_unlock(&chip->reg_lock);	    		/* now unmute WaveOut */		snd_azf3328_mixer_set_mute(chip, IDX_MIXER_WAVEOUT, 0);		chip->is_playing = 0;		break;        case SNDRV_PCM_TRIGGER_PAUSE_PUSH:		snd_printk("FIXME: SNDRV_PCM_TRIGGER_PAUSE_PUSH NIY!\n");                break;        case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:		snd_printk("FIXME: SNDRV_PCM_TRIGGER_PAUSE_RELEASE NIY!\n");                break;        default:                return -EINVAL;	}		snd_azf3328_dbgcallleave();	return result;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/99b359ba10a582148c6725f428a33ba5356dd993/azt3328.c/clean/sound/pci/azt3328.c