brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · aeba684 Raw
46 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Vortex Mixer support.4 *5 * There is much more than just the AC97 mixer...6 *7 */8 9#include <linux/time.h>10#include <linux/init.h>11#include <sound/core.h>12#include "au88x0.h"13 14static int remove_ctl(struct snd_card *card, const char *name)15{16	struct snd_ctl_elem_id id;17	memset(&id, 0, sizeof(id));18	strcpy(id.name, name);19	id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;20	return snd_ctl_remove_id(card, &id);21}22 23static int snd_vortex_mixer(vortex_t *vortex)24{25	struct snd_ac97_bus *pbus;26	struct snd_ac97_template ac97;27	int err;28	static const struct snd_ac97_bus_ops ops = {29		.write = vortex_codec_write,30		.read = vortex_codec_read,31	};32 33	err = snd_ac97_bus(vortex->card, 0, &ops, NULL, &pbus);34	if (err < 0)35		return err;36	memset(&ac97, 0, sizeof(ac97));37	// Initialize AC97 codec stuff.38	ac97.private_data = vortex;39	ac97.scaps = AC97_SCAP_NO_SPDIF;40	err = snd_ac97_mixer(pbus, &ac97, &vortex->codec);41	vortex->isquad = ((vortex->codec == NULL) ?  0 : (vortex->codec->ext_id&0x80));42	remove_ctl(vortex->card, "Master Mono Playback Volume");43	remove_ctl(vortex->card, "Master Mono Playback Switch");44	return err;45}46