init_viadev(chip, chip->multi_devno, VIA_REG_MULTPLAY_STATUS, 0);
init_viadev(chip, chip->multi_devno, VIA_REG_MULTPLAY_STATUS, 4, 0);
static int __devinit snd_via8233_pcm_new(via82xx_t *chip){	snd_pcm_t *pcm;	int i, err;	chip->playback_devno = 0;	/* x 4 */	chip->multi_devno = 4;		/* x 1 */	chip->capture_devno = 5;	/* x 2 */	chip->num_devs = 7;	chip->intr_mask = 0x33033333; /* FLAG|EOL for rec0-1, mc, sdx0-3 */	/* PCM #0:  4 DSX playbacks and 1 capture */	err = snd_pcm_new(chip->card, chip->card->shortname, 0, 4, 1, &pcm);	if (err < 0)		return err;	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_via8233_playback_ops);	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_via8233_capture_ops);	pcm->private_data = chip;	strcpy(pcm->name, chip->card->shortname);	chip->pcms[0] = pcm;	/* set up playbacks */	for (i = 0; i < 4; i++)		init_viadev(chip, i, 0x10 * i, 0);	/* capture */	init_viadev(chip, chip->capture_devno, VIA_REG_CAPTURE_8233_STATUS, 1);	if ((err = snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG,							 snd_dma_pci_data(chip->pci), 64*1024, 128*1024)) < 0)		return err;	/* PCM #1:  multi-channel playback and 2nd capture */	err = snd_pcm_new(chip->card, chip->card->shortname, 1, 1, 1, &pcm);	if (err < 0)		return err;	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_via8233_multi_ops);	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_via8233_capture_ops);	pcm->private_data = chip;	strcpy(pcm->name, chip->card->shortname);	chip->pcms[1] = pcm;	/* set up playback */	init_viadev(chip, chip->multi_devno, VIA_REG_MULTPLAY_STATUS, 0);	/* set up capture */	init_viadev(chip, chip->capture_devno + 1, VIA_REG_CAPTURE_8233_STATUS + 0x10, 1);	if ((err = snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG,						         snd_dma_pci_data(chip->pci), 64*1024, 128*1024)) < 0)		return err;	return 0;}