Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ba71978 authored by Sasha Khapyorsky's avatar Sasha Khapyorsky Committed by Jaroslav Kysela
Browse files

[ALSA] Removing obsolete AC97_SHARED_TYPES



This patch cleans last ac97 audio/modem codec interception in
initialization procedures (ac97_mixer_new()) and removes obsolete
SHARED_TYPE 'locking' which prevents from AMC codecs to function
correctly.

Signed-off-by: default avatarSasha Khapyorsky <sashak@smlink.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 6632d198
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -387,15 +387,6 @@
#define AC97_RATES_MIC_ADC	4
#define AC97_RATES_SPDIF	5

/* shared controllers */
enum {
	AC97_SHARED_TYPE_NONE,
	AC97_SHARED_TYPE_ICH,
	AC97_SHARED_TYPE_ATIIXP,
	AC97_SHARED_TYPE_VIA,
	AC97_SHARED_TYPES
};

/*
 *
 */
@@ -468,7 +459,6 @@ struct _snd_ac97_bus {
	unsigned short used_slots[2][4]; /* actually used PCM slots */
	unsigned short pcms_count; /* count of PCMs */
	struct ac97_pcm *pcms;
	unsigned int shared_type;	/* type of shared controller betwen audio and modem */
	ac97_t *codec[4];
	snd_info_entry_t *proc;
};
+2 −36
Original line number Diff line number Diff line
@@ -220,12 +220,6 @@ const char *snd_ac97_stereo_enhancements[] =
  /*  31 */ "Reserved 31"
};

/*
 * Shared AC97 controllers (ICH, ATIIXP...)
 */
static DECLARE_MUTEX(shared_codec_mutex);
static ac97_t *shared_codec[AC97_SHARED_TYPES][4];


/*
 *  I/O routines
@@ -996,14 +990,8 @@ static int snd_ac97_free(ac97_t *ac97)
{
	if (ac97) {
		snd_ac97_proc_done(ac97);
		if (ac97->bus) {
		if (ac97->bus)
			ac97->bus->codec[ac97->num] = NULL;
			if (ac97->bus->shared_type) {
				down(&shared_codec_mutex);
				shared_codec[ac97->bus->shared_type-1][ac97->num] = NULL;
				up(&shared_codec_mutex);
			}
		}
		if (ac97->private_free)
			ac97->private_free(ac97);
		kfree(ac97);
@@ -1889,21 +1877,6 @@ int snd_ac97_mixer(ac97_bus_t *bus, ac97_template_t *template, ac97_t **rac97)
	snd_assert(bus != NULL && template != NULL, return -EINVAL);
	snd_assert(template->num < 4 && bus->codec[template->num] == NULL, return -EINVAL);

	snd_assert(bus->shared_type <= AC97_SHARED_TYPES, return -EINVAL);
	if (bus->shared_type) {
		/* already shared? */
		down(&shared_codec_mutex);
		ac97 = shared_codec[bus->shared_type-1][template->num];
		if (ac97) {
			if ((ac97_is_audio(ac97) && (template->scaps & AC97_SCAP_SKIP_AUDIO)) ||
			    (ac97_is_modem(ac97) && (template->scaps & AC97_SCAP_SKIP_MODEM))) {
				up(&shared_codec_mutex);
				return -EACCES; /* skip this */
			}
		}
		up(&shared_codec_mutex);
	}

	card = bus->card;
	ac97 = kzalloc(sizeof(*ac97), GFP_KERNEL);
	if (ac97 == NULL)
@@ -2153,7 +2126,7 @@ int snd_ac97_mixer(ac97_bus_t *bus, ac97_template_t *template, ac97_t **rac97)
		}
	}
	/* make sure the proper powerdown bits are cleared */
	if (ac97->scaps) {
	if (ac97->scaps && ac97_is_audio(ac97)) {
		reg = snd_ac97_read(ac97, AC97_EXTENDED_STATUS);
		if (ac97->scaps & AC97_SCAP_SURROUND_DAC) 
			reg &= ~AC97_EA_PRJ;
@@ -2167,13 +2140,6 @@ int snd_ac97_mixer(ac97_bus_t *bus, ac97_template_t *template, ac97_t **rac97)
		return err;
	}
	*rac97 = ac97;

	if (bus->shared_type) {
		down(&shared_codec_mutex);
		shared_codec[bus->shared_type-1][ac97->num] = ac97;
		up(&shared_codec_mutex);
	}

	return 0;
}

+0 −1
Original line number Diff line number Diff line
@@ -1372,7 +1372,6 @@ static int __devinit snd_atiixp_mixer_new(atiixp_t *chip, int clock, const char
	if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &pbus)) < 0)
		return err;
	pbus->clock = clock;
	pbus->shared_type = AC97_SHARED_TYPE_ATIIXP;	/* shared with modem driver */
	chip->ac97_bus = pbus;

	codec_count = 0;
+0 −1
Original line number Diff line number Diff line
@@ -1068,7 +1068,6 @@ static int __devinit snd_atiixp_mixer_new(atiixp_t *chip, int clock)
	if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &pbus)) < 0)
		return err;
	pbus->clock = clock;
	pbus->shared_type = AC97_SHARED_TYPE_ATIIXP;	/* shared with audio driver */
	chip->ac97_bus = pbus;

	codec_count = 0;
+0 −1
Original line number Diff line number Diff line
@@ -2022,7 +2022,6 @@ static int __devinit snd_intel8x0_mixer(intel8x0_t *chip, int ac97_clock, const
	if ((err = snd_ac97_bus(chip->card, 0, ops, chip, &pbus)) < 0)
		goto __err;
	pbus->private_free = snd_intel8x0_mixer_free_ac97_bus;
	pbus->shared_type = AC97_SHARED_TYPE_ICH;	/* shared with modem driver */
	if (ac97_clock >= 8000 && ac97_clock <= 48000)
		pbus->clock = ac97_clock;
	/* FIXME: my test board doesn't work well with VRA... */
Loading