/* terminate a voice if free flag is true, call free_voice after termination  */
static void terminate_voice(struct snd_emux *emu, struct snd_emux_voice *vp, int free)
/* terminate a voice if free flag is true, call free_voice after termination  */
static void terminate_voice(struct snd_emux *emu, struct snd_emux_voice *vp, int free)
{
	emu->ops.terminate(vp);
	vp->time = emu->use_time++;
	vp->chan = NULL;
	vp->port = NULL;
	vp->zone = NULL;
	vp->block = NULL;
	vp->state = SNDRV_EMUX_ST_OFF;
	if (free && emu->ops.free_voice)
		emu->ops.free_voice(vp);
}